Judgeval
面向Agent的持续改进栈,通过生产数据检测失败、定位根因并上线修复。
- Star 数
- ★ 1.1k
- 最近更新
- 17 天前
- License
- Apache-2.0
- 主语言
- Python
- FA 评分
- 40/100 · 缺口较多
30 秒速览
- 运行形态
- 可在哪里用
- 通用 · 跨平台OpenAI API
- 费用
- 软件免费,模型调用费用自付
- 上手难度
- 低 · 几分钟可跑通
- 开始前需要
- 典型场景
- AI工程师在开发Agent时,需要检测生产环境中的失败案例,可以使用Judgeval的追踪功能捕获详细信息并定位根因。
- 不适合
- 希望无需 OpenTelemetry 概念即可上手的小型项目
- 对生产流量数据外发到第三方云有合规顾虑的组织
这个 Agent 能做什么,适合哪些场景?
Judgeval是Judgment Labs推出的开源Python SDK,为LLM驱动的应用提供追踪与Agent裁判评估能力。它基于OpenTelemetry实现追踪,用@Tracer.observe()装饰器即可捕获函数输入、输出和token用量。内置的Agent裁判可以基于提示词定义评分器,对Agent行为进行结构化评估,生成带标签的评分结果,并累积成可搜索的行为记录。它还支持在线监控,服务端自动对生产流量进行评分,并通过Slack告警暴露回归问题。Judgeval支持OpenAI、Anthropic、Google GenAI、Together AI等模型提供商,以及LangGraph、OpenLit、Claude Agent SDK等框架。该项目由Judgment Labs维护,采用Apache-2.0许可证。
Judgeval提供一个Python包,可通过pip install judgeval安装,并需要配置JUDGMENT_API_KEY和JUDGMENT_ORG_ID环境变量。核心组件包括:Tracer类用于初始化项目(Tracer.init(project_name=...))、@Tracer.observe()装饰器用于自动捕获函数调用、wrap()函数用于自动检测OpenAI等客户端。用户定义基于提示词的评分器(agent judges)来评估Agent行为,并生成结构化的评分结果。JQL(Judgeval Query Language)接口可通过Judgeval客户端执行查询,例如client.query(traces().where(eq("session", "session-123")).ids())。此外,它还提供CLI工具和MCP服务器,用于管理traces、judges、behaviors和evals。整体流程为:接入追踪→定义评分器→在线或离线运行评估→收集行为信号→触发告警或验证修复。
- AI工程师在开发Agent时,需要检测生产环境中的失败案例,可以使用Judgeval的追踪功能捕获详细信息并定位根因。
- 平台团队希望在大规模部署LLM应用前,用历史traces回放新版本,验证修复是否有效,避免回归。
- 运维人员需要实时监控生产流量的Agent行为,当检测到异常时通过Slack接收告警,及时响应。
- 数据科学家需要分析Agent的行为模式,利用JQL查询历史traces,筛选特定会话或条件,进行深入分析。
- 基于LangGraph或LangChain的开发者,可以利用自动检测集成,无需修改业务代码即可获得可观测性。
- 希望将Agent评估集成到已有可观测性栈的团队,因为Judgeval构建在OpenTelemetry之上,可以兼容现有工具。
如何安装或部署这个 Agent?
使用pip安装:
pip install judgeval设置环境变量:
export JUDGMENT_API_KEY=...
export JUDGMENT_ORG_ID=...如何使用这个 Agent?
初始化追踪器并封装OpenAI客户端:
from judgeval import Tracer, wrap
from openai import OpenAI
Tracer.init(project_name="my-project")
client = wrap(OpenAI())用@Tracer.observe标记需要追踪的函数:
@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.content运行Agent后,traces会被自动捕获。使用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())更多用法参见官方文档。
这个 Agent 有哪些优点和局限?
- 基于OpenTelemetry构建,可以无缝集成到现有可观测性体系。
- 自动捕获LLM的token使用和输入输出,无需手动埋点。
- 提供JQL查询语言,可以灵活查询历史traces和行为。
- 支持在线监控和Slack告警,及时发现生产问题。
- 支持主流模型提供商和框架,如OpenAI、Anthropic、LangGraph等。
- 需要注册Judgment Labs服务并配置API密钥,存在云服务依赖。
- 文档主要指向official docs,可能缺少离线或社区支持。
- 作为较新项目,生态和社区支持可能不如成熟工具。
- 使用OpenTelemetry,需要团队具备相关技术栈知识。
- 自动追踪可能增加性能开销,需要评估影响。
这个 Agent 与同类方案有什么区别?
与相关度最高的同类 agent 并排比较关键指标。
| Agent | 源码审查 | 形态 / 费用 | Star | 最近更新 | 主语言 | 完整支持的平台 |
|---|---|---|---|---|---|---|
| Judgeval 当前 | 40 · 缺口较多 | 代码库 / SDK免费 + 模型费 | ★ 1.1k | 17 天前 | Python | OpenAI API |
| NVIDIA NeMo Agent Toolkit | 65 · 存在缺口 | 命令行工具免费 + 模型费 | ★ 2.7k | 今天 | Python | — |
| OpenTelemetry 代理技能包 | 54 · 缺口较多 | Agent 插件 / 技能免费 | ★ 112 | 2 天前 | Go | Codex · Claude Code |
| Claude Code 多代理可观测性系统 | 35 · 缺口较多 | 自托管服务免费 + 模型费 | ★ 1.5k | 8 个月前 | Python | Claude Code |
FollowAgents 如何评估这个 Agent?
查看各维度的扣分理由
证据显示:README 提到需要 API 密钥和 org ID,但未说明权限范围;有后台队列和自动追踪,但未明确用户确认机制;数据流描述为 OpenTelemetry 追踪,但未详细说明数据流向和存储;敏感数据处理未提及;依赖列表有版本范围,但未提供安全审计;外部效果包括发送数据到远程服务,但未说明副作用;无回滚机制;作者和维护者信息在 pyproject 中明确。扣分:缺少用户确认、数据流透明性不足、敏感数据处理未说明、依赖安全未审计、外部效果未明确、无回滚。
证据显示:README 和 pyproject 描述一致,CI 配置了多版本测试,但未提供失败消息的详细说明;依赖有版本范围,但未锁定具体版本,可能影响可用性;失败消息未在文档中说明。扣分:依赖可用性未锁定,失败消息未说明。
证据显示:README 明确目标用户为 LLM 应用开发者,场景包括监控和评估;能力边界未明确说明,但提到集成列表;触发精度未详细说明,但 JQL 查询有示例;环境适配包括 Python 版本和操作系统,但未说明具体限制。扣分:能力边界和触发精度未详细说明。
证据显示:README 结构清晰,有安装说明和示例;命名稳定,但版本号为 0.0.0,可能不稳定;有示例但无 FAQ;无已知限制说明;Apache-2.0 许可证完整;无版本变更日志;维护责任由 Judgment Labs 承担,但未验证。扣分:无已知限制、无变更日志、版本号不稳定。
证据显示:输出为结构化行为,可用于监控;边际价值在于提供追踪和评估功能,但未与其他工具对比;成本效益未说明,但开源免费。扣分:成本效益未说明。
证据显示:README 中的声明未提供具体证据,如测试结果;CI 配置了测试,但未提供结果;事实和推断未明确区分。扣分:声明缺乏可追溯性,交叉验证不足。
- 源码中未见:执行前用户确认开启或自行加上执行前确认;先在沙箱或测试环境跑通,确认行为后再接入真实数据。
- 源码中未见:回滚或恢复路径运行前先备份,或在 git 分支、快照上操作,确保改动可以撤销。
- 该仓库未提供用户确认机制,自动追踪可能收集敏感数据,需谨慎使用。
- 依赖未锁定具体版本,可能引入不兼容或安全风险。
- 版本号为 0.0.0,表明项目处于早期阶段,API 可能不稳定。
- 无已知限制和变更日志,用户需自行评估风险。
最近版本
来自该项目 GitHub Releases 的最新发布记录,说明为上游原文摘录,未经本站改写或测试。
-
发布说明摘录
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.3在 GitHub 查看 ↗ -
发布说明摘录
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.2在 GitHub 查看 ↗ -
发布说明摘录
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.1在 GitHub 查看 ↗