Skip to main content

Easy AI evals — drop into any AI code in 4 lines

Project description

evalora

Dead-simple LLM evals. No account needed to start.

Install

pip install evalora

Quick Start

from evalora import Evalora

ev = Evalora()
run = ev.run()
run.check(lambda p: "4", "What is 2+2?", expected="4")
run.done()

No account, no API key. Install, run, see results.

Key Features

Modes at a Glance

Mode How it works Config
Exact match Normalized string matching (negation-aware) scoring="exact" (default)
Semantic similarity Cosine similarity via embeddings embedding_api_key="sk-..." (auto-detected)
AI judges (binary) LLM votes pass/fail with reason judges=["Accuracy", "Safety"]
AI judges (rubric) LLM scores 1-5 on criteria judges=[{..., "criteria": [...]}]
Templates Pre-configured judge + validator combos template="rag-quality"
Custom scorers Your functions return 0.0-1.0 scorers=[fn]
Validators Instant checks before judges validators=["not_empty", "is_json"]
Pairwise Head-to-head comparison of two runs run_pairwise(...)
Human review Items go to dashboard review queue Dashboard config

Examples

Basic eval

ev = Evalora()
run = ev.run(name="math test")
run.eval_each([
    ("What is 2+2?", "4"),
    ("What is 3+1?", "4"),
], fn=ask)

AI judges (string presets)

run = ev.run(
    judges=["Accuracy", "Safety", "Helpfulness"],
    provider_keys={"openai": "sk-..."},
)
run.eval_each(items, fn=ask)

Template

run = ev.run(
    template="rag-quality",
    provider_keys={"openai": "sk-..."},
)
run.eval_each("questions.csv", fn=ask)

Semantic similarity

run = ev.run(
    embedding_api_key="sk-...",  # auto-detects semantic mode
    similarity_threshold=0.85,
)
run.check(ask, "What is the capital of France?", expected="Paris is the capital")
run.done()

Ghost mode

run = ev.run(ghost="full")       # redact everything
run = ev.run(ghost="light")      # redact responses only
run = ev.run(ghost="hash")       # hash all text
run = ev.run(ghost=True, ghost_server=False)  # fully offline

Auto-log with wrap

from openai import OpenAI

client = ev.wrap(OpenAI(), run=run)
response = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "What is 2+2?"}],
)
# ^ auto-logged to the run

CI pipeline

ev = Evalora(api_key="evk_...", verbose=False)
run = ev.run(eval_id="...", name="nightly regression")
status = run.eval_each(fn=ask, raise_on_fail=True)
# Raises EvaloraError if any items fail

Connected Mode

Sign up at evalora.dev, grab an API key, and results appear in your dashboard:

ev = Evalora(api_key="evk_...")
run = ev.run(eval_id="your-eval-id", name="production check")
run.eval_each(fn=ask)

The dashboard is the source of truth for scoring mode, server judges, and human review. See Getting Started for details.

Documentation

  • Getting Started -- install, first eval, local vs connected mode
  • Scoring Modes -- exact match, semantic similarity, judges, human review
  • AI Judges -- presets, binary, rubric, majority voting, error handling
  • Validators -- built-in library, string shorthand, custom validators
  • Configuration -- all parameters for Evalora(), run(), wrap(), trend(), and eval_each()
  • Advanced -- ghost mode, templates, scorers, wrap, webhooks, file loading, async, integrations, pytest, trend, resume, pairwise
  • API Reference -- classes, methods, data types, exceptions

Dashboard

evalora.dev -- run history, comparisons, team collaboration, and webhook notifications.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

evalora-0.1.1.tar.gz (85.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

evalora-0.1.1-py3-none-any.whl (94.3 kB view details)

Uploaded Python 3

File details

Details for the file evalora-0.1.1.tar.gz.

File metadata

  • Download URL: evalora-0.1.1.tar.gz
  • Upload date:
  • Size: 85.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.7

File hashes

Hashes for evalora-0.1.1.tar.gz
Algorithm Hash digest
SHA256 082a5ea828fb5bf09a3eaba470e134d6e8d692e999b56844243871018e65b775
MD5 60f40da173038656d9208bc17ae5e1fe
BLAKE2b-256 9823ad4db730da12a02f90e3cf6d239649125a157e1200a66c786484412d1dff

See more details on using hashes here.

File details

Details for the file evalora-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: evalora-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 94.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.7

File hashes

Hashes for evalora-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7e03c67ef1ff56a0f27e47e52ddbaca8f31bdff5b5066d5b63a4c3766fbfdb38
MD5 cd990acadab5ff2c75b511fb8d83bcb6
BLAKE2b-256 8d95deba848e51217aa84903b5a5ced6a8e1a902833ab68ef3c016f51cf045cb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page