Skip to main content

A CLI tool for comparing LLM outputs — semantically, visually, and at scale

Project description

llm-diff

A CLI tool and Python library for comparing LLM outputs — semantically, visually, and at scale.

PyPI CI Coverage Python License Status


llm-diff calls two LLM models in parallel, diffs their responses word-by-word, scores them semantically, and renders results in the terminal or as a self-contained HTML report. It scales to batch workloads, caches API responses, and gates CI pipelines via --fail-under.

What is llm-diff?

LLMs do not produce deterministic output. Evaluating models, iterating on prompts, or assessing the impact of a model upgrade all require you to compare responses — and doing that by hand does not scale.

llm-diff automates the entire workflow: it calls both models concurrently, produces a word-level diff, optionally scores semantic similarity via sentence embeddings, and outputs results to the terminal or as a shareable HTML report. It supports batch workloads from a YAML file, caches API calls so iterating on thresholds costs nothing, and emits exit code 1 when similarity falls below a threshold — making it a first-class citizen in CI/CD pipelines.

Version 1.2 adds LLM-as-a-Judge scoring, per-call USD cost tracking, multi-model (3–4 model) comparison, and structured JSON diff.

Documentation

Guide Description
Getting Started Installation, API keys, first diff
CLI Reference All flags, option groups, exit codes, YAML format
Python API All public functions, dataclasses, and field descriptions
Configuration .llmdiff TOML schema, env vars, config priority
Provider Setup OpenAI, Groq, Mistral, Ollama, LM Studio, Anthropic
HTML Reports Report anatomy, batch reports, judge card, cost table
CI / CD Integration GitHub Actions examples, threshold recommendations

Quick Start

# Install with semantic scoring support
pip install "llm-diff[semantic]"

# Set an API key
export OPENAI_API_KEY="sk-..."

# Compare two models on the same prompt
llm-diff "Explain recursion in one sentence." -a gpt-4o -b gpt-4o-mini --semantic

# Save a self-contained HTML report
llm-diff "Explain recursion." -a gpt-4o -b gpt-4o-mini --semantic --out report.html

# Run a batch from a YAML prompt file and gate on similarity
llm-diff --batch prompts.yml -a gpt-4o -b gpt-4o-mini --semantic --fail-under 0.85

See Getting Started for more examples including prompt-diff mode, BLEU/ROUGE metrics, LLM-as-a-Judge, cost tracking, and multi-model comparison.

Getting Help

Bug reports Open an issue
Feature requests Open a feature request
Questions & discussion GitHub Discussions
Open issues github.com/veerarag1973/llm-diff/issues
Roadmap IMPLEMENTATION_PLAN.md
Changelog CHANGELOG.md

When filing a bug, please include: llm-diff --version, your OS, Python version, the full command you ran, and the complete error output.

Contributing

See CONTRIBUTING.md for development setup, running the test suite, code style guidelines, and pull request instructions.

License

llm-diff is distributed under the MIT License.

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

llm_diff-1.2.1.tar.gz (51.6 kB view details)

Uploaded Source

Built Distribution

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

llm_diff-1.2.1-py3-none-any.whl (60.3 kB view details)

Uploaded Python 3

File details

Details for the file llm_diff-1.2.1.tar.gz.

File metadata

  • Download URL: llm_diff-1.2.1.tar.gz
  • Upload date:
  • Size: 51.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.9

File hashes

Hashes for llm_diff-1.2.1.tar.gz
Algorithm Hash digest
SHA256 38b5a4d897cbadd73f0734784cc3ae25dd3706faa1d2ddeaf44facdf9ad285f9
MD5 b1e75016addf1f44bbc0539c8cef0b96
BLAKE2b-256 e5382c1f32beef5832f290a7181ad53ba89d225c2dffe23500e08d4ad00019ba

See more details on using hashes here.

File details

Details for the file llm_diff-1.2.1-py3-none-any.whl.

File metadata

  • Download URL: llm_diff-1.2.1-py3-none-any.whl
  • Upload date:
  • Size: 60.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.9

File hashes

Hashes for llm_diff-1.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 bc0bb28668d6c7173c0a698d815e85866c202acf7e3e18e4fbc16749f46ced2e
MD5 26ea521279bda90167cda34c521faaf5
BLAKE2b-256 1051c36c7b95cd759c6093df4dbfce322dd700a6799993b9760d6f5a4b218910

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