Skip to main content

multiagent-eval

Propagation-aware evaluation for multi-agent AI systems.

Single-LLM eval tools (RAGAS, DeepEval) miss what actually breaks in production: errors that start in Agent 1, silently propagate through Agent 3, and surface in the final output with no trace of origin.

multiagent-eval finds where the fault began.


The Problem Nobody Is Solving

Agent 1 ──► Agent 2 ──► Agent 3 ──► Agent 4 (Writer)
   │           │           │            │
   ✓           ✗           ✗            ✗  ← Error propagates; eval sees only final failure

You run eval. Score looks good. You ship.

Three days later: a hallucination in production. You check your eval results. Everything passed.

What happened?

Your eval checked the final output. It didn't check whether Agent 2 silently corrupted the information Agent 1 found. It didn't check whether Agent 3's hallucination was its own fault, or the result of broken input from upstream.

That's the gap multiagent-eval closes.


Quickstart

git clone https://github.com/iremsusavas/multiagent-eval.git
cd multiagent-eval
pip install -e .

# Zero-dependency demo — no API key needed
python examples/quickstart_mock.py

LLM-based evaluation requires a running LLM. Supports OpenAI, Anthropic, or local models via Ollama (no API key needed):

ollama pull llama3.2

Then in eval_config.yaml:

judge:
  primary_model: "ollama/llama3.2"
  api_base: "http://localhost:11434"

For a fully zero-dependency demo (no LLM needed):

python examples/quickstart_mock.py

What Makes This Different

Propagation Judge

Detects where information corruption begins — not just that it happened. Builds a directed graph where each edge carries a fidelity score. Red edges show exactly where data was lost or distorted between agents.

Built-in Bias Detection

Every LLM judge call automatically runs:

  • Primacy bias (A/B swap permutation tests)
  • Verbosity bias (length vs. correctness)
  • Tone bias (neutral vs. apologetic framing)
  • Cascade bias (upstream error penalizing innocent agents)

CI/CD Native

Eval isn't a report. It's a gate.

# .github/workflows/multiagent-eval.yml
- name: Run evaluation
  run: multiagent-eval run --config eval_config.yaml
# eval_score < threshold → fail the PR

Statistical Rigor

Bootstrap confidence intervals and permutation p-values on every run. "Did we improve?" becomes answerable.

Failure Mode Taxonomy

Not just a score. A category:

PROPAGATION_ERROR | HALLUCINATION | CONTEXT_LOSS | ORCHESTRATION_BREAK | CASCADE_FAILURE | PII_LEAKAGE


Architecture

┌─────────────────────────────────────────────────────────────────────────┐
│                         multiagent-eval                                  │
├─────────────────────────────────────────────────────────────────────────┤
│  core/           trace, metrics, runner, state_machine, LLMGateway        │
│  judges/         LLMJudge (CoT, bias), ConsistencyJudge, PropagationJudge│
│  bias_detection/ primacy, verbosity, tone, cascade                       │
│  golden_datasets/ schema, manager, annotator, inter-rater agreement       │
│  reports/        JSON, HTML (D3.js), Streamlit dashboard                  │
│  integrations/   LangGraph, CrewAI, AutoGen, Custom adapters               │
│  telemetry/      OpenTelemetry spans → Datadog, Grafana, Jaeger          │
└─────────────────────────────────────────────────────────────────────────┘

Integrations

| LangGraph | CrewAI | AutoGen | Custom |


Production Features

  • OpenTelemetry: Real-time span emission to Datadog/Grafana/Jaeger
  • PII Detection: Email, SSN, credit card — zero-tolerance config
  • Prompt Injection Detection: Pattern-based, extensible
  • Cost Estimation: Know your budget before you run (estimate-cost --dataset ...)
  • Regression Testing: Which examples degraded between v1.1 and v1.2? (regression-diff)

CLI

multiagent-eval run --config eval_config.yaml
multiagent-eval run --all                    # All examples in golden dataset
multiagent-eval estimate-cost -d datasets/research_qa.json
multiagent-eval regression-diff -a result_v1.json -b result_v2.json
multiagent-eval report --input results.json --format html
multiagent-eval dataset add --name my_dataset
multiagent-eval dashboard

Background

Built by an ML engineer who spent months improving LLM-as-Judge agreement from 63% to 84% in production at Pipedrive — and discovered that most eval problems aren't scoring problems. They're architectural ones.

JudgeGuard (primacy bias detection) came first. multiagent-eval is what came after asking: "What happens to these biases when you have five agents?"


Roadmap

  • Leaderboard / MAE-Bench public benchmark
  • Multi-turn stateful session evaluation
  • Visual diff UI for agent output comparison
  • Automated rubric improvement suggestions
  • Native LangSmith integration

Contributing

Issues, PRs, and dataset contributions welcome. If you're building multi-agent systems and hitting eval problems — open an issue. That's how this gets better.


License

MIT

Metadata

Release files for multiagent-eval 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for multiagent-eval 0.1.0
File Size Uploaded
multiagent_eval-0.1.0.tar.gz 56.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for multiagent-eval 0.1.0
File Interpreter ABI Platform
multiagent_eval-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 123.6 kB

Release files / multiagent_eval-0.1.0.tar.gz

Download URL multiagent_eval-0.1.0.tar.gz
Size 56.6 kB
Tags Source
SHA-256 checksum
How to use checksums
12901d17a942114441ed408ffd6ef99b832446ce356359ca7f4399bd2e4ee559
BLAKE2b-256 checksum
How to use checksums
3ed5684b5c80398a6eea2fbd435fb42fa45b70089c51164e786e47b28f2ed360
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.5

Release files / multiagent_eval-0.1.0-py3-none-any.whl

Download URL multiagent_eval-0.1.0-py3-none-any.whl
Size 67.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
da34c538648f1652532dbc8d9d21619adeb2344a69bc41ec85aedc51dd161195
BLAKE2b-256 checksum
How to use checksums
dbe4c70cba0fea94a81e2cc45976e133a32619734120c5d7549eae729f7e021b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.5

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page