Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

42 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿš€ OpenEval

Open-Source AI Evaluation & Quality Platform for LLM Applications

Evaluate models โ€ข Compare providers โ€ข Generate reports โ€ข Enforce quality gates


Python CI License Status


Building reproducible, comparable, and continuously evaluated AI systems.


๐Ÿ’ก Why OpenEval?

Traditional software engineering has:

Unit Tests โ†’ Integration Tests โ†’ CI/CD โ†’ Quality Gates

AI applications need the same discipline.

OpenEval provides a structured evaluation workflow for LLM applications so developers can measure model quality, compare providers, generate evaluation reports, and enforce minimum quality requirements before changes move forward.

Instead of asking:

"Does this model seem better?"

OpenEval moves toward answering:

"Did AI quality improve, regress, or fail our required threshold?"


โœจ What OpenEval Can Do Today

Capability Status
YAML-driven evaluations โœ…
CSV dataset loading โœ…
Automatic case generation โœ…
Mock execution โœ…
Local Ollama execution โœ…
OpenAI provider integration โœ…
Configurable evaluation metrics โœ…
Exact-match accuracy โœ…
Short-answer containment scoring โœ…
Provider/model comparison โœ…
Latency tracking โœ…
Quality gates โœ…
CI-compatible exit codes โœ…
HTML run reports โœ…
HTML comparison reports โœ…
GitHub Actions CI โœ…

โšก Quick Start

1. Clone OpenEval

git clone https://github.com/Harshrudrawar/OpenEval.git
cd OpenEval

2. Install

pip install -e .

3. Run an evaluation

python -m openeval.interface.cli run examples/basic/evaluation.yaml

Example:

โœ” Evaluation created successfully

Loaded 3 cases
Created 3 case results

Accuracy: 1.00
Latency: 3 ms
Quality Gate: PASSED (threshold: 0.80)

Run created successfully

Run ID: <generated-run-id>
Run Status: created

Report written to: reports/<run-id>.html

OpenEval also generates an HTML report for the run.


โš™๏ธ Evaluation Configuration

OpenEval evaluations are defined using YAML.

name: Demo Evaluation

dataset:
  version: dataset-v1
  path: examples/basic/dataset.csv

prompt:
  version: prompt-v1

target:
  provider: mock

metrics:
  - contains

gate:
  accuracy: 0.80

The configuration describes:

Dataset
   +
Prompt Version
   +
Target Provider
   +
Evaluation Metric
   +
Quality Gate

๐Ÿ”Œ Execution Providers

OpenEval separates evaluation logic from model execution.

Provider Status Use Case
Mock โœ… Deterministic tests and CI
Ollama โœ… Free local LLM evaluation
OpenAI ๐ŸŸก Cloud model evaluation
Anthropic ๐Ÿ”œ Planned
Gemini ๐Ÿ”œ Planned

Local Ollama

target:
  provider: ollama
  model: llama3

OpenAI

target:
  provider: openai
  model: gpt-4o

OpenAI execution requires API access through the OPENAI_API_KEY environment variable.

Secrets are never stored inside the evaluation YAML.


๐Ÿง  Evaluation Metrics

OpenEval currently supports deterministic metrics designed for different evaluation scenarios.

Exact-Match Accuracy

Useful when the expected and generated values should match exactly.

Expected: Paris
Actual:   Paris

Score: 1.0

Matching is normalized for casing and surrounding whitespace.

Short-Answer Containment

Useful when an LLM produces additional natural language around a correct answer.

Expected: Paris

Actual:
"The capital of France is Paris."

Score: 1.0

Configure it with:

metrics:
  - contains

The metric layer is plugin-based so additional evaluation strategies can be introduced without changing the execution pipeline.


๐Ÿ”€ Compare Models & Providers

Run the same dataset and evaluation configuration against two providers:

python -m openeval.interface.cli compare examples/basic/evaluation.yaml \
  --left-provider ollama \
  --right-provider mock

Example output:

โœ” Comparison completed successfully

Dataset Version: dataset-v1
Prompt Version: prompt-v1

Left  (ollama:llama3): 0.67
Right (mock:unknown): 1.00

Winner: mock:unknown
Margin: 0.33

Report written to:
reports/comparison-<evaluation-id>.html

This allows different providers or models to be evaluated under the same dataset and metric conditions.


๐Ÿ›ก๏ธ AI Quality Gates

Evaluation should do more than produce a number.

OpenEval can enforce minimum quality requirements:

gate:
  accuracy: 0.80

Passing evaluation

Accuracy: 0.93

Quality Gate: PASSED

Process result:

exit code 0

Failing evaluation

Accuracy: 0.72

Quality Gate: FAILED

Process result:

exit code 1

That enables OpenEval to participate directly in CI/CD:

                AI Application Change
                         โ”‚
                         โ–ผ
                    OpenEval
                         โ”‚
                         โ–ผ
                 Run Evaluation
                         โ”‚
                         โ–ผ
                  Quality Gate
                    /       \
                   /         \
                PASS         FAIL
                 โ”‚             โ”‚
                 โ–ผ             โ–ผ
            Continue CI    Exit Code 1
                               โ”‚
                               โ–ผ
                          Block Pipeline

๐Ÿ“Š HTML Reports

Every evaluation can generate a standalone HTML report containing:

  • Evaluation metadata
  • Provider and model
  • Dataset version
  • Prompt version
  • Number of evaluation cases
  • Metric score
  • Latency
  • Quality gate status
  • Run information

Comparison runs generate dedicated reports containing:

  • Both providers/models
  • Individual scores
  • Winning configuration
  • Score margin
  • Dataset version
  • Prompt version

Reports are generated locally under:

reports/

and are intentionally excluded from Git tracking.


๐Ÿ”„ Evaluation Pipeline

                     evaluation.yaml
                           โ”‚
                           โ–ผ
                  Load Configuration
                           โ”‚
                           โ–ผ
                      Load Dataset
                           โ”‚
                           โ–ผ
                    Generate Cases
                           โ”‚
                           โ–ผ
                  Create Evaluation
                           โ”‚
                           โ–ผ
                      Create Run
                           โ”‚
                           โ–ผ
                   Execute Provider
                           โ”‚
                           โ–ผ
                 Generate Case Results
                           โ”‚
                           โ–ผ
                    Evaluate Metric
                           โ”‚
                           โ–ผ
                     Quality Gate
                       /       \
                      /         \
                   PASS         FAIL
                     โ”‚            โ”‚
                     โ–ผ            โ–ผ
              Generate Report   Exit 1

๐Ÿ—๏ธ Architecture

OpenEval follows Clean Architecture, keeping evaluation rules independent from providers and infrastructure.

                    Interface
               CLI โ€ข Reports โ€ข CI
                        โ”‚
                        โ–ผ
                   Application
                    Use Cases
                        โ”‚
                        โ–ผ
                      Domain
                Evaluation Rules
                        โ”‚
                        โ–ผ
                 Infrastructure
             Providers โ€ข Metrics โ€ข Storage

Provider execution is interchangeable:

                   TargetExecutor
                         โ”‚
             โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
             โ–ผ           โ–ผ           โ–ผ
           Mock        Ollama      OpenAI

This allows new providers to be added without rewriting the evaluation pipeline.


๐Ÿ“‚ Project Structure

OpenEval/
โ”‚
โ”œโ”€โ”€ .github/
โ”‚   โ””โ”€โ”€ workflows/
โ”‚
โ”œโ”€โ”€ docs/
โ”œโ”€โ”€ examples/
โ”œโ”€โ”€ tests/
โ”‚
โ”œโ”€โ”€ openeval/
โ”‚   โ”œโ”€โ”€ application/
โ”‚   โ”œโ”€โ”€ domain/
โ”‚   โ”œโ”€โ”€ infrastructure/
โ”‚   โ””โ”€โ”€ interface/
โ”‚
โ”œโ”€โ”€ pyproject.toml
โ””โ”€โ”€ README.md

๐Ÿงช Engineering Quality

OpenEval validates every change through:

Ruff
  โ”‚
  โ–ผ
Black
  โ”‚
  โ–ผ
MyPy
  โ”‚
  โ–ผ
Pytest
  โ”‚
  โ–ผ
OpenEval Evaluation

The repository uses:

  • Ruff โ€” linting
  • Black โ€” formatting
  • MyPy โ€” strict static type checking
  • Pytest โ€” automated testing
  • GitHub Actions โ€” continuous integration

OpenEval also executes its own example evaluation inside CI.


๐Ÿ›ฃ๏ธ Roadmap

โœ… Built

  • YAML evaluation configuration
  • CSV dataset ingestion
  • Case generation
  • Evaluation execution pipeline
  • Run management
  • Mock execution
  • Ollama integration
  • OpenAI provider integration
  • Provider routing
  • Configurable metrics
  • Accuracy scoring
  • Short-answer containment scoring
  • Latency measurement
  • Quality gates
  • CI-compatible exit codes
  • HTML run reports
  • Provider/model comparison
  • HTML comparison reports
  • GitHub Actions integration
  • Automated quality-gate testing

๐Ÿšง Next

  • More robust LLM evaluation metrics
  • Better provider failure handling
  • Baseline comparison
  • Regression detection
  • Improved evaluation reports

๐Ÿ”ฎ Future

  • LLM-as-a-Judge
  • Cost tracking
  • Experiment history
  • Anthropic integration
  • Gemini integration
  • Dedicated OpenEval GitHub Action
  • Pull-request quality checks
  • Additional dataset formats
  • Extended metric plugin ecosystem

๐ŸŽฏ Vision

OpenEval aims to become:

GitHub Actions for AI Quality.

The goal is to make AI quality measurable, reproducible, comparable, versioned, and enforceable throughout the software development lifecycle.

Developer changes model / prompt / application
                    โ”‚
                    โ–ผ
                 Git Push
                    โ”‚
                    โ–ผ
                 OpenEval
                    โ”‚
          โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
          โ–ผ         โ–ผ         โ–ผ
       Dataset    Model     Metrics
          โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                    โ–ผ
              Evaluation
                    โ”‚
                    โ–ผ
               Comparison
                    โ”‚
                    โ–ผ
              Quality Gate
                /       \
             PASS       FAIL
               โ”‚          โ”‚
               โ–ผ          โ–ผ
             Merge      Block

AI quality should eventually feel as natural to enforce as unit tests.


๐Ÿค Contributing

Contributions are welcome.

OpenEval may be interesting if you work on:

  • AI Evaluation
  • AI Reliability
  • AI Infrastructure
  • LLM Engineering
  • Developer Tooling
  • Backend Engineering

Feel free to open an issue or submit a pull request.


๐Ÿ“œ License

OpenEval is licensed under the Apache License 2.0.


โญ If OpenEval looks useful, consider starring the repository.

Building reliable AI systems starts with measurable quality.

About

CI/CD and Production Quality Platform for LLM Applications

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages