Evaluation SDK for AI outputs
Project description
Evalytic
Evals for AI outputs. Automated quality evaluation for images, video, text, RAG, and agent runs.
Know if your AI outputs are good before your users tell you they're not. One SDK for visual generation, LLM text, RAG pipelines, and tool-using agents.
pip install evalytic
# Visual: compare image generation models
evaly bench -m flux-schnell -m flux-dev -m flux-pro \
-p "A product photo on marble countertop" --yes
# RAG: evaluate retrieval-augmented answers
evaly rag eval \
--query "What is Evalytic?" \
--response "Evalytic evaluates AI outputs." \
--context "Evalytic is an evaluation platform." \
--metrics faithfulness,answer_relevancy,contextual_relevancy,hallucination
# Text: evaluate LLM outputs
evaly text eval \
--input "Translate: Hello" --output-text "Merhaba" --expected "Merhaba" \
--metrics exact_match,semantic_similarity
# Agent: evaluate tool-using agent runs
evaly agent eval \
--input "Find the score" --final-output "0.9" \
--tool-call search --expected-tool search
What It Does
Evalytic scores AI outputs across four eval domains with the same consensus-judge architecture:
- Visual (images, video) — 7 semantic dimensions scored by VLM judges + deterministic metrics (sharpness, CLIP, LPIPS, ArcFace, NIMA, TOPIQ)
- RAG — reference-free
faithfulness,answer_relevancy,contextual_relevancy,hallucination; reference-basedcontext_precision+context_recall - Text —
factual_correctness,semantic_similarity,g_eval(custom rubric), BLEU, ROUGE, exact_match, levenshtein, string_presence - Agent —
tool_call_accuracy,goal_accuracy,step_efficiency
VLM / LLM judges (Gemini, GPT, Claude, Ollama) + local metrics work together or independently. Every domain supports consensus mode (2+1 adaptive multi-judge).
Use Cases
- Model Selection — Compare fal.ai, Parel, OpenAI, Anthropic, or local models head-to-head
- RAG Hallucination Detection — Claim-level faithfulness against retrieved context
- Prompt Optimization — Measure output quality across semantic dimensions
- Regression Detection — Catch quality drops when models, prompts, or retrievers update
- CI/CD Quality Gate — Block deploys when any metric falls below threshold (visual OR text OR agent)
- Consensus Judging — Multi-judge scoring with automatic agreement analysis
Quickstart
1. Install
pip install evalytic
2. See Real Examples (no API key needed)
evaly demo # Opens showcase with 4 real benchmark case studies
evaly demo face # Face identity preservation comparison
evaly demo flagship # Flux Schnell vs Dev vs Pro cost/quality
3. Score an Existing Image
# Local metrics only (free, no API key)
evaly eval --image output.png --prompt "A sunset over mountains" --no-judge
# With VLM judge
export GEMINI_API_KEY=your_gemini_key
evaly eval --image output.png --prompt "A sunset over mountains" --yes
4. Benchmark Models
export FAL_KEY=your_fal_key # fal.ai generation
export PAREL_API_KEY=your_parel_key # Parel generation / judging
# Text-to-image
evaly bench -m flux-schnell -m flux-dev -m flux-pro \
-p "A cat sitting on a windowsill" --yes
# Parel builtins
evaly bench -m parel/flux-schnell -m parel/gpt-image-1.5 \
-p "A product photo on marble countertop" --yes
# Image-to-image
evaly bench -m flux-kontext -m seedream-edit -m reve-edit \
--inputs product.jpg -p "Place on a marble countertop" --yes
# Metrics only, no VLM judge
evaly bench -m flux-schnell -m flux-dev -p "A cat" --no-judge
5. Interactive Setup
evaly init # Guided setup: use case, API keys, config file
CLI Commands
| Command | Domain | Description |
|---|---|---|
evaly init |
Any | Interactive setup wizard |
evaly demo |
Visual | Browse real benchmark showcases (no API key needed) |
evaly bench |
Visual | Generate, score, and report in one command |
evaly eval |
Visual | Score a single image without generation |
evaly rag eval |
RAG | Evaluate RAG answers (reference-free + reference-based) |
evaly text eval |
Text | Evaluate LLM outputs (factual, semantic, BLEU, ROUGE, G-Eval) |
evaly agent eval |
Agent | Evaluate tool-using agent runs |
evaly compare |
All | Delta between two report files (same-type only) |
evaly gate |
All | CI/CD quality gate (--threshold for visual, --metric-threshold for text/RAG/agent) |
evaly dataset |
All | Manage evaluation datasets (rag, text, agent, visual) |
Judges
Any VLM that can analyze images works as a judge:
evaly bench -m flux-schnell -p "A cat" -j gemini-2.5-flash # Default
evaly bench -m flux-schnell -p "A cat" -j openai/gpt-5.2 # OpenAI
evaly bench -m flux-schnell -p "A cat" -j anthropic/claude-sonnet-4-6 # Anthropic
evaly bench -m flux-schnell -p "A cat" -j fal/gemini-2.5-flash # Via fal.ai (single key)
evaly bench -m parel/flux-schnell -p "A cat" -j parel/gpt-5.4 # Via Parel
evaly bench -m flux-schnell -p "A cat" -j ollama/qwen2.5-vl:7b # Local
Consensus Mode
Use multiple judges for more reliable scores:
evaly bench -m flux-schnell -p "A cat" \
--judges "gemini-2.5-flash,openai/gpt-5.2"
Two judges score in parallel. If they disagree, a third breaks the tie.
Pytest Integration
Turn any metric into a pytest assertion. Fails the test when any score falls below its threshold, and reports every failing metric at once.
from evalytic.testing import assert_test
from evalytic.text.types import RAGTestCase, RetrievedChunk
def test_rag_quality():
case = RAGTestCase(
query="What is Evalytic?",
response="Evalytic evaluates AI outputs.",
contexts=[RetrievedChunk(text="Evalytic is an evaluation SDK for AI outputs.")],
)
assert_test(case, metrics={
"faithfulness": 0.8,
"hallucination": 0.9,
"contextual_relevancy": 0.75,
})
Same helper works for TextTestCase and AgentTestCase. No plugin install required. For single-metric assertions use assert_metric(case, "hallucination", threshold=0.95).
Optional Extras
pip install "evalytic[metrics]" # CLIP + LPIPS + ArcFace + NIMA + TOPIQ (~2GB)
pip install "evalytic[ocr]" # OCR text accuracy (pytesseract)
pip install "evalytic[embeddings]" # Local sentence-transformers for RAG/text embeddings (~500MB)
pip install "evalytic[all]" # Everything
For RAG answer_relevancy and text semantic_similarity, either install evalytic[embeddings] or set OPENAI_API_KEY / FAL_KEY (embeddings auto-resolve).
Configuration
Create evalytic.toml in your project root:
[keys]
fal = "your_fal_key"
parel = "your_parel_key"
gemini = "your_gemini_key"
[bench]
judge = "gemini-2.5-flash"
dimensions = ["visual_quality", "prompt_adherence"]
concurrency = 4
[bench.dimension_weights]
input_fidelity = 0.5
visual_quality = 0.1
[rag]
judge = "gemini-2.5-flash"
judges = ["gemini-2.5-flash", "openai/gpt-5.2"] # Consensus mode
[rag.thresholds]
faithfulness = 0.8
answer_relevancy = 0.7
[text.thresholds]
factual_correctness = 0.8
semantic_similarity = 0.7
[embeddings]
provider = "sentence-transformers" # or "openai" / "fal"
model = "all-MiniLM-L6-v2"
Documentation
Full docs at docs.evalytic.ai
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file evalytic-0.6.0.tar.gz.
File metadata
- Download URL: evalytic-0.6.0.tar.gz
- Upload date:
- Size: 3.4 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b44907ccd9d5e1296201ad4e3ed2adc943d6abad0419f0962fcd4d27a161636e
|
|
| MD5 |
f600d84c4e3be7f5d893245fcbdb23a6
|
|
| BLAKE2b-256 |
17f00bf3fb3d658b06af4ada38e8a7c12c7640aaafef35613e0db87be63f8972
|
File details
Details for the file evalytic-0.6.0-py3-none-any.whl.
File metadata
- Download URL: evalytic-0.6.0-py3-none-any.whl
- Upload date:
- Size: 175.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
84c65c5d446b530615bf3415f835855fc5a5d0314d017273b5b7bd6f7d542055
|
|
| MD5 |
ea07184d2d736da424ffcd90ef3c833e
|
|
| BLAKE2b-256 |
8ef41a95faf0ea3d07b0ee5100aa474c85ba006c3fcb97764390571a83d00761
|