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.0.tar.gz (86.0 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.0-py3-none-any.whl (94.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: evalora-0.1.0.tar.gz
  • Upload date:
  • Size: 86.0 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.0.tar.gz
Algorithm Hash digest
SHA256 f6f1c2de88d7ccd1cd24759548aeb33227f2038bc90dd27eb30f2dcebba5026a
MD5 db88934876eac0d36fede12515b7bd14
BLAKE2b-256 524ab76ecec0872e6f69d8439275b803f7dd89f09c78919f72197e8ff36bfc27

See more details on using hashes here.

File details

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

File metadata

  • Download URL: evalora-0.1.0-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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 44b5003506ddea376426f0975e98567564d1e7c9c7eff143aedeb084e0f7da1d
MD5 d9bd3cd020169e81338810821f7fb701
BLAKE2b-256 1dbbf71cd629b0f0970aadb65ba71bcf3d9a2a2339b0f4b5d381b27fd8595253

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