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.2.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.2-py3-none-any.whl (94.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: evalora-0.1.2.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.2.tar.gz
Algorithm Hash digest
SHA256 f7d34a7e1d9940f22008965a50c655491d75c73fab1fbc8ce85d685f5e53d667
MD5 c08c116998581a64814fa02d4086cdf1
BLAKE2b-256 b388b1b1817af173f22b2eef33cdd7f6452d6bd9383995dbf42cfcaa3d0b9d2e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: evalora-0.1.2-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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 72621f56f2085f7851be61e59bc5a804b5a4afac8815011b48a56262653033f1
MD5 c2ea8c9df902b4bda51af3e5b36fe228
BLAKE2b-256 4852833db0b288deda2294e85e899c47424f752f8ac2963ee7f90f5ed52d9257

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