Skip to main content

Run your prompts on two LLMs and find out, with statistical confidence, what regressed.

Project description

EvalShift

Run your prompts on two LLMs and find out, with statistical confidence, what regressed.

CI License: MIT Python 3.14+ Status: alpha

EvalShift is a local-first CLI that helps engineering teams migrate safely between LLM versions (e.g. claude-4.5-sonnetclaude-5-sonnet). Point it at your prompts and a golden suite of inputs; it runs both models, scores the outputs with structural / semantic / LLM-as-judge evaluators, and produces a single-file HTML report with defensible statistics: paired tests, Cohen's d, 95% CIs, and Benjamini–Hochberg correction across every (prompt × evaluator × slice) comparison.

Status

Alpha. Every command in the pipeline is shipped and the test suite is at 95%+ coverage. APIs may still change as feedback comes in.

Install

Requires Python 3.14+.

# Recommended
uv pip install evalshift     # or: pip install evalshift

From source (for contributors):

git clone https://github.com/babaliauskas/EvalShift.git
cd EvalShift
uv venv --python 3.14
source .venv/bin/activate
uv pip install -e ".[dev]"

Quick start

# 1. Scaffold a starter project. Writes evalshift.yaml + prompts.py +
#    tools.yaml + a 40-row golden.jsonl for a customer-support agent.
mkdir my-eval && cd my-eval
evalshift init

# 2. Set whichever provider keys you'll use
export GOOGLE_API_KEY=...   # or ANTHROPIC_API_KEY / OPENAI_API_KEY

# 3. Run the whole pipeline in one command (doctor → run → evaluate
#    → analyze → report). Pass --open to launch the report.
evalshift all --yes --open

evalshift all drives the full five-stage pipeline under a single Rich Live region — stacked status rows, an inline progress bar for the run stage, and a final verdict block that tells you whether the candidate is significantly better, regressed, or showed no significant change.

If you want to drive each stage by hand (useful in CI, or when re-running just one stage after fixing config):

evalshift doctor
evalshift run --yes
evalshift evaluate <run-id>
evalshift analyze <run-id>
evalshift report <run-id> --open

Every artefact lives under .evalshift/runs/<run-id>/state.json, raw.jsonl, scores.jsonl, analysis.json, report.json, report.html. None of it leaves your machine.

Agent migrations (v0.2)

Migrating an agent (a prompt that uses tools)? EvalShift v0.2 detects regressions in which tools the new model calls, what arguments it passes, and how it sequences them. The killer scenario: a routing agent that silently stops calling notify_security_team after the migration — text-only eval reports green, v0.2 marks it CRITICAL.

The default evalshift init scaffold is an agent project — six tools plus a 40-row golden suite. Just run the quick-start above and the tool-call evaluators kick in automatically.

See docs/agents.md for the full walkthrough and the examples/agent/ directory for a runnable customer-support example.

What the report looks like

The HTML report (single file, no external assets, works offline) has:

  • Executive summary — one row per prompt with a severity badge.
  • Per-prompt deep dive — aggregate stats, per-slice breakdown, top-5 worst regressions side-by-side.
  • Methodology appendix — every test, p-value, effect size, and CI is documented.

Why local-first?

Your prompts and your suite never leave your machine. The only outbound calls are to the LLM providers you configure (Anthropic, OpenAI, Google) using your own API keys. There is no EvalShift cloud.

Documentation

Non-goals (for v0.1)

  • Hosted backend / web UI
  • Multi-criterion judge in a single call
  • Custom evaluator plugin system
  • Comparing more than 2 models in one run
  • Auto-detection of LangChain / LlamaIndex prompt patterns

These are deferred to v0.2+; see the PDF spec in the repo for the full deferred-features list.

License

MIT — free for any use.

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

evalshift-0.3.0.tar.gz (164.4 kB view details)

Uploaded Source

Built Distribution

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

evalshift-0.3.0-py3-none-any.whl (130.6 kB view details)

Uploaded Python 3

File details

Details for the file evalshift-0.3.0.tar.gz.

File metadata

  • Download URL: evalshift-0.3.0.tar.gz
  • Upload date:
  • Size: 164.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.10 {"installer":{"name":"uv","version":"0.11.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for evalshift-0.3.0.tar.gz
Algorithm Hash digest
SHA256 8f1628c86b657e77e679ad7aab2c15805e5a57d70137f6b67b2cfa31aef3718e
MD5 380d831796ceb4092c37ceec61533655
BLAKE2b-256 9b5c406616d1f57312ac8f5fc6dd92b0f594e62e87b755c33f8e9ccd62d9432b

See more details on using hashes here.

File details

Details for the file evalshift-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: evalshift-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 130.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.10 {"installer":{"name":"uv","version":"0.11.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for evalshift-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 42af7b66aef984da43dc6a7803a5e030098a2f4fd8fad48a577b1faea4f11e16
MD5 7fa3e0495e8516d1cb42e941f54067b8
BLAKE2b-256 c10c16233850b20b5802beea9bb403aef610878773ca08fbef9c6b4a104fb4c7

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