FlexEval LLM Evals
FlexEval is a tool for designing custom metrics, completion functions, and LLM-graded rubrics for evaluating the behavior of LLM-powered systems.
Documentation: https://digitalharborfoundation.github.io/FlexEval
Additional details about FlexEval can be found in our paper at the Educational Data Mining 2024 conference.
Usage
Basic usage:
import flexeval
from flexeval.schema import Eval, EvalRun, FileDataSource, Metrics, FunctionItem, Config
data_sources = [FileDataSource(path="vignettes/conversations.jsonl")]
eval = Eval(metrics=Metrics(function=[FunctionItem(name="flesch_reading_ease")]))
config = Config(clear_tables=True)
eval_run = EvalRun(
data_sources=data_sources,
database_path="eval_results.db",
eval=eval,
config=config,
)
flexeval.run(eval_run)
This example computes Flesch reading ease for every turn in a list of conversations provided in JSONL format. The metric values are stored in an SQLite database called eval_results.db.
See additional usage examples in the vignettes.
Installation
FlexEval is on PyPI as python-flexeval. See the Installation section in the Getting Started guide.
Using pip:
pip install python-flexeval
Basic functionality
FlexEval is designed to be "batteries included" for many basic use cases. It supports the following out-of-the-box:
- scoring historical conversations - useful for monitoring live systems.
- scoring LLMs:
- locally hosted and served via an endpoint using something like LM Studio
- LLMs accessible by a REST endpoint and accessible via a network call
- any OpenAI LLM
- a set of useful rubrics
- a set of useful Python functions
Evaluation results are saved in an SQLite database. See the Metric Analysis vignette for a sample analysis demonstrating the structure and utility of the data saved by FlexEval.
Read more in the Getting Started guide.
Cite this work
If this work is useful to you, please cite our EDM 2024 paper:
S. Thomas Christie, Baptiste Moreau-Pernet, Yu Tian, & John Whitmer. (2024). FlexEval: a customizable tool for chatbot performance evaluation and dialogue analysis. Proceedings of the 17th International Conference on Educational Data Mining, 903-908. Atlanta, Georgia, USA, July 2024. https://doi.org/10.5281/zenodo.12729993
Development
Pull requests are welcome. Feel free to contribute:
- New rubrics or functions
- Bug fixes
- New features
See DEVELOPMENT.md.
Metadata
Release files for python-flexeval 0.5.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| python_flexeval-0.5.2.tar.gz | 806.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| python_flexeval-0.5.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 880.9 kB
Release files / python_flexeval-0.5.2.tar.gz
| Download URL | python_flexeval-0.5.2.tar.gz |
|---|---|
| Size | 806.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
34bd9c9c193e50c91e8573926a7119595f212278ab19ad2e4cd2424489b55345
|
|
BLAKE2b-256 checksum How to use checksums |
137e965f0ceee05bf3b5fa6352770855f6e03bcf853fcd1b3ff7abdce3b12f06
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 12, 2026.
Transparency logRelease files / python_flexeval-0.5.2-py3-none-any.whl
| Download URL | python_flexeval-0.5.2-py3-none-any.whl |
|---|---|
| Size | 74.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
655d1342dbab99b687c2ad384e632c508483815c3701232b7ccb252985f0f865
|
|
BLAKE2b-256 checksum How to use checksums |
6734cec8fc1cd8e32a0874f9461339b1319d08ce854dbf7b03a37c7d63f04fc1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 12, 2026.
Transparency log