评估中心让您能够在部署到生产环境之前验证智能体质量。创建测试用例数据集,针对任何已发布的智能体运行测试,并获得包含每个用例通过/失败判决、延迟和令牌使用情况的定量报告。
为企业采购审查而设计 — 每个结果都是可审计的、可重现的,并且持久存储。
工作原理
每次评估运行都会为每个测试用例执行一个三阶段管道:
┌──────────────────────────────────────────────────────────┐
│ 阶段 1 — 智能体执行 │
│ │
│ 真实的 ReActAgent 运行测试用例提示词。 │
│ 使用与聊天相同的引擎:相同的模型、相同的工具、相同的 │
│ 指令。没有模拟,没有捷径。 │
│ │
│ → 生成:答案、延迟、令牌使用量 │
├──────────────────────────────────────────────────────────┤
│ 阶段 2 — LLM 评分 │
│ │
│ 一个独立的"评分器" LLM(快速模型)根据预期行为和 │
│ 断言来判断答案。 │
│ │
│ 输入:prompt + expected_behavior + assertions + answer │
│ 输出:{ verdict: "pass"|"fail", reasoning: "..." } │
├──────────────────────────────────────────────────────────┤
│ 阶段 3 — 持久化与聚合 │
│ │
│ 每个用例的结果被保存到数据库。 │
│ 所有用例完成后:计算通过率、平均延迟、 │
│ 总令牌数并附加到运行中。 │
└──────────────────────────────────────────────────────────┘
关键设计决策
| 决策 | 原因 |
|---|
| 真实 ReActAgent(非模拟) | 测试实际的智能体行为,包括工具调用和多步推理 |
| 独立的评分器 LLM(快速模型) | 成本低且速度快;智能体 LLM 在执行期间已消耗令牌 |
asyncio.Semaphore(5) | 将并发限制在 5 以避免向 LLM 提供商发送过多请求导致速率限制错误 |
| 每个案例都是独立的 | 案例之间没有对话历史;每个案例都获得一个新的智能体实例 |
| 后台执行 | 运行作为异步任务触发 — API 立即返回,前端每 3 秒轮询一次 |
工作流
1. 创建数据集
导航到 Eval Center → Datasets 标签页,然后点击 New Dataset。
数据集是测试用例的命名集合。为其提供一个描述性的名称(例如,“Customer Support — Tier 1 Questions”)和可选的描述。
2. 添加测试用例
点击进入您的数据集并添加测试用例。每个用例有三个字段:
| 字段 | 必需 | 描述 |
|---|
| 提示词 | 是 | 发送给智能体的确切问题或指令 |
| 预期行为 | 是 | 对正确答案应该是什么样的自然语言描述 |
| 断言 | 否 | 具体检查项列表(例如,“答案提到退款政策”、“响应少于200字”) |
编写好的测试用例:
- 提示词:要具体。“我们企业计划的退款政策是什么?“比”告诉我关于退款的事情”更好。
- 预期行为:描述结果,而不是确切的措辞。“解释30天退款窗口并提及年度计划的例外情况”。
- 断言:用于硬性要求。评分器将显式验证每个断言。
3. 启动评估
转到 Eval Runs 选项卡,然后点击 New Evaluation。选择:
- Agent — 任何您拥有的智能体
- Dataset — 任何至少包含一个测试用例的数据集
点击 Start Evaluation。您将被重定向到结果页面。
4. 查看结果
结果页面显示:
- 标题:智能体名称、数据集名称、状态徽章、通过率、平均延迟、总令牌数
- 进度条:随着用例完成而填充(绿色 = 通过比例)
- 结果表:每个测试用例一行,包含:
- 提示词(截断 — 点击展开)
- 判定:通过(绿色)、失败(红色)或错误(橙色)
- 智能体的回答(截断 — 点击展开)
- 评分器的推理(为什么通过或失败)
- 延迟(毫秒)和令牌计数
当运行进行中(pending 或 running 状态)时,页面每 3 秒自动刷新一次。如果您想实时查看结果出现,请勿离开此页面。
测试内容
包含内容
- 内置工具:计算器、网络搜索、网页获取、Python 执行、文件操作等
- 智能体指令:智能体的
extra_instructions 字段会被传递
- 智能体配置的模型:如果智能体有自定义模型配置,将使用该模型
不包括的内容(设计考虑)
- 连接器:外部 HTTP 连接器需要实时第三方服务 — 为避免测试不稳定而在评估中跳过
- MCP 服务器:原因相同 — 外部进程依赖
- 对话历史:每个案例独立运行,没有先前上下文
- 知识库:知识库检索工具在评估模式下不加载
这意味着评估结果反映的是智能体的推理和工具使用能力,而不是它与外部服务的集成。通过连接器测试功能单独测试连接器。
评分器
评分器是一个 LLM(系统的”快速”模型),它接收四条信息并返回结构化的 JSON 判决:
系统提示:
You are an impartial AI evaluator. Your job is to judge whether an AI agent’s answer meets the expected behavior for a given prompt.
Be strict but fair. A “pass” requires the answer to genuinely address the prompt according to the expected behavior. A “fail” means the answer is wrong, incomplete, off-topic, or misses key requirements.
用户消息包括:
- 原始提示
- 预期行为
- 断言列表(或”未指定”)
- 智能体的实际答案
输出架构:
{
"verdict": "pass" | "fail",
"reasoning": "Explanation of why the answer passes or fails..."
}
评分器使用 structured_llm_call 和函数调用来强制执行架构。如果评分器本身失败(网络错误、格式错误的响应),该案例被标记为 error。
最佳实践
数据集设计
- 从小处开始:5–10 个案例涵盖智能体的核心用例
- 覆盖边界情况:至少包含 2–3 个对抗性或超出范围的提示
- 在预期行为中保持具体:模糊的期望会导致评分不一致
- 使用断言来处理硬性要求:“必须提及价格”比希望评分器捕捉到它更可靠
解释结果
- 80%+ 通过率 是配置良好的智能体的良好基线
- 低通过率且高延迟 表明智能体在多步推理方面遇到困难
- 错误状态 意味着智能体或评分器崩溃 — 检查服务器日志了解详情
- 评分器分歧:如果您认为评分器有误,请阅读其推理。您可能需要优化您的预期行为描述
何时重新评估
- 更改智能体指令后
- 切换智能体的 LLM 模型后
- 添加或删除工具类别后
- 在任何生产部署前(CI/CD 集成将在未来版本中推出)
API 参考
| 方法 | 端点 | 描述 |
|---|
POST | /api/eval/datasets | 创建数据集 |
GET | /api/eval/datasets | 列出数据集(分页) |
GET | /api/eval/datasets/{id} | 获取数据集 |
PUT | /api/eval/datasets/{id} | 更新数据集 |
DELETE | /api/eval/datasets/{id} | 删除数据集(级联删除用例) |
POST | /api/eval/datasets/{id}/cases | 添加测试用例 |
GET | /api/eval/datasets/{id}/cases | 列出用例(分页) |
PUT | /api/eval/datasets/{id}/cases/{caseId} | 更新用例 |
DELETE | /api/eval/datasets/{id}/cases/{caseId} | 删除用例 |
POST | /api/eval/runs | 启动评估运行 |
GET | /api/eval/runs | 列出运行(分页) |
GET | /api/eval/runs/{id} | 获取运行 + 所有用例结果 |
DELETE | /api/eval/runs/{id} | 删除运行(级联删除结果) |
所有端点都需要 JWT 身份验证(Authorization: Bearer <token>)。