Judgeval
The continuous-improvement stack for agents — detect failures, triage root causes, and ship fixes backed by production data.
- Source repo
- JudgmentLabs/judgeval
- Stars
- ★ 1.1k
- Last updated
- 17d ago
- License
- Apache-2.0
- Primary language
- Python
- FA score
- 40/100 · Major gaps
At a glance
- How it runs
- Works with
- Universal · cross-platformOpenAI API
- Cost
- Free software; you pay for model usage
- Setup effort
- Low · running in minutes
- You'll need
- Typical use
- AI engineers building agents can detect production failures by using Judgeval's tracing to capture detailed logs and pinpoint root causes.
- Not a fit if
- Small projects that want to avoid OpenTelemetry concepts entirely
- Organizations with compliance concerns about sending production traffic data to a third-party cloud
- Source review
- 40/100 · Major gaps 2 safety controls not found
What does this agent do, and when should you use it?
Judgeval is an open-source Python SDK from Judgment Labs for agent improvement. It provides tracing and agent-judge evaluation for LLM-powered applications, helping you detect failures, understand root causes, and validate fixes against real production cases. Tracing is built on OpenTelemetry, using @Tracer.observe() to automatically capture function inputs, outputs, and token usage. Agent judges are prompt-based scorers that produce structured, scored labels for agent behaviors, accumulating into a searchable history. Online monitoring scores live traffic server-side with no latency impact and triggers Slack alerts on regressions. The SDK supports major model providers (OpenAI, Anthropic, Google GenAI, Together AI) and frameworks (LangGraph, OpenLit, Claude Agent SDK). It includes a CLI and MCP server for managing traces, judges, behaviors, and evals.
Judgeval provides a Python package installable via pip install judgeval, requiring environment variables JUDGMENT_API_KEY and JUDGMENT_ORG_ID. Core components: Tracer class initializes a project (Tracer.init(project_name=...)), @Tracer.observe() decorator captures function execution, and wrap() auto-instruments OpenAI clients. Users define prompt-based scorers ('agent judges') to evaluate agent behaviors, producing structured scored labels. JQL (Judgeval Query Language) allows querying traces via the Judgeval client, e.g., client.query(traces().where(eq("session", "session-123")).ids()). A CLI and MCP server enable terminal and AI-tool integration. The end-to-end flow: instrument code -> run agents -> traces captured -> define judges -> run evaluations online or on historical traces -> collect behavior signals -> trigger alerts or validate fixes.
- AI engineers building agents can detect production failures by using Judgeval's tracing to capture detailed logs and pinpoint root causes.
- Platform teams validating a new version can replay historical traces to confirm fixes work before deploying, avoiding regressions.
- Ops teams monitoring live traffic can set up Slack alerts to be notified when agent behavior deviates from expected norms.
- Data scientists analyzing agent behavior patterns can use JQL to query historical traces, filtering by session or other criteria.
- Developers using LangGraph or LangChain can enable auto-instrumentation without modifying business logic, gaining observability quickly.
- Organizations with existing OpenTelemetry-based observability stacks can integrate Judgeval due to its compatibility.
How do you install or deploy this agent?
Install via pip:
pip install judgevalSet environment variables:
export JUDGMENT_API_KEY=...
export JUDGMENT_ORG_ID=...How do you use this agent?
Initialize the tracer and wrap OpenAI client:
from judgeval import Tracer, wrap
from openai import OpenAI
Tracer.init(project_name="my-project")
client = wrap(OpenAI())Decorate functions to trace:
@Tracer.observe(span_type="tool")
def search(query: str) -> str:
# ...
return results
@Tracer.observe(span_type="agent")
def run_agent(question: str) -> str:
# ...
response = client.chat.completions.create(...)
return response.choices[0].message.contentRun your agent; traces are automatically captured. Query with JQL:
from judgeval import Judgeval
from judgeval.jql import eq, traces
client = Judgeval(project_name="my-project")
result = client.query(traces().where(eq("session", "session-123")).ids())Refer to the official docs for further use.
What are this agent's strengths and limitations?
- Built on OpenTelemetry, enabling seamless integration with existing observability infrastructure.
- Automatic capture of LLM token usage and inputs/outputs with minimal code changes.
- Provides JQL for flexible querying of traces and behaviors.
- Online monitoring with Slack alerts detects production issues in real-time.
- Supports major model providers and frameworks including OpenAI, Anthropic, LangGraph, and more.
- Requires a Judgment Labs cloud account and API keys, creating a cloud dependency.
- Documentation is hosted externally, potentially lacking offline or community resources.
- As a newer project, ecosystem and community support may be less mature.
- Teams need to be familiar with OpenTelemetry concepts to fully leverage the SDK.
- Automatic tracing may introduce performance overhead that needs evaluation.
How does this agent compare with similar options?
Key facts side by side with the most closely related agents.
| Agent | Source review | Form / cost | Stars | Updated | Language | Full support on |
|---|---|---|---|---|---|---|
| Judgeval This agent | 40 · Major gaps | Library / SDKFree + model costs | ★ 1.1k | 17d ago | Python | OpenAI API |
| NVIDIA NeMo Agent Toolkit | 65 · Some gaps | CLIFree + model costs | ★ 2.7k | today | Python | — |
| OpenTelemetry Agent Skills | 54 · Major gaps | Agent plugin / skillFree | ★ 112 | 2d ago | Go | Codex · Claude Code |
| Claude Code Multi-Agent Observability System | 35 · Major gaps | Self-hosted serviceFree + model costs | ★ 1.5k | 8mo ago | Python | Claude Code |
How does FollowAgents rate this agent?
Why each dimension lost points
Evidence: README mentions API keys and org ID but not permission scope; background queue and auto-tracing exist but no user confirmation mechanism; data flow described as OpenTelemetry tracing but not detailed; sensitive data handling not mentioned; dependencies have version ranges but no security audit; external effects include sending data to remote services but side effects not specified; no rollback mechanism; authors and maintainers identified in pyproject. Deductions: lack of user confirmation, insufficient data flow transparency, sensitive data handling not addressed, dependency security not audited, external effects not clarified, no rollback.
Evidence: README and pyproject descriptions consistent; CI configures multi-version tests but failure messages not detailed; dependencies have version ranges but not pinned, affecting availability; failure messages not documented. Deductions: dependency availability not pinned, failure messages not specified.
Evidence: README clearly targets LLM app developers with scenarios like monitoring and evaluation; capability boundaries not explicitly stated but integration list provided; trigger precision not detailed but JQL query example given; environment fit includes Python versions and OS but specific limitations not stated. Deductions: capability boundaries and trigger precision not detailed.
Evidence: README well-structured with install instructions and examples; naming stable but version 0.0.0 suggests instability; examples present but no FAQ; no known limitations; Apache-2.0 license complete; no changelog; maintenance responsibility by Judgment Labs but unverified. Deductions: no known limitations, no changelog, unstable version.
Evidence: Output is structured behaviors useful for monitoring; marginal value in providing tracing and evaluation features but not compared to alternatives; cost-benefit not stated but open-source free. Deductions: cost-benefit not stated.
Evidence: Claims in README lack specific evidence like test results; CI configures tests but results not provided; facts and inferences not clearly separated. Deductions: claims lack traceability, cross-validation insufficient.
- Not found in source: confirmation before actingTurn on (or add) a confirmation step before it acts, and try it in a sandbox or test environment before real data.
- Not found in source: rollback or recovery pathBack up first, or work on a git branch or snapshot, so its changes can be undone.
- The repository lacks user confirmation mechanisms; auto-tracing may collect sensitive data, use with caution.
- Dependencies are not pinned to specific versions, potentially introducing incompatibility or security risks.
- Version 0.0.0 indicates early-stage project; API may be unstable.
- No known limitations or changelog; users need to assess risks themselves.
Recent releases
Latest entries from the project's GitHub Releases. Notes are quoted from upstream as written, not rewritten or tested by FollowAgents.
-
Release notes excerpt
You can find this package release on PyPI: https://pypi.org/project/judgeval/1.3.3/ What's Changed * feat: expose public SQL and schema discovery by @JJwilkin in https://github.com/JudgmentLabs/judgeval/pull/787 Full Changelog: https://github.com/JudgmentLabs/judgeval/compare/v1.3.2...v1.3.3View on GitHub ↗ -
Release notes excerpt
You can find this package release on PyPI: https://pypi.org/project/judgeval/1.3.2/ What's Changed * feat(jql): add query scoping and offline sources by @JJwilkin in https://github.com/JudgmentLabs/judgeval/pull/776 * fix: spec use deployment.enviornment.name by @abhishekg999 in https://github.com/JudgmentLabs/judgeval/pull/770 * chore: update vulnerable dependencies by @abhishekg999 in https://github.com/JudgmentLabs/judgeval/pull/783 Full Changelog: https://github.com/JudgmentLabs/judgeval/compare/v1.3.1...v1.3.2View on GitHub ↗ -
Release notes excerpt
You can find this package release on PyPI: https://pypi.org/project/judgeval/1.3.1/ What's Changed * fix(id_generator): use os.urandom() to prevent fork-safety ID collisions (JUD-9223) by @luna-jl in https://github.com/JudgmentLabs/judgeval/pull/773 Full Changelog: https://github.com/JudgmentLabs/judgeval/compare/v1.3.0...v1.3.1View on GitHub ↗