跳转到主要内容
评估中心让您能够在部署到生产环境之前验证智能体质量。创建测试用例数据集,针对任何已发布的智能体运行测试,并获得包含每个用例通过/失败判决、延迟和令牌使用情况的定量报告。
为企业采购审查而设计 — 每个结果都是可审计的、可重现的,并且持久存储。

工作原理

每次评估运行都会为每个测试用例执行一个三阶段管道
┌──────────────────────────────────────────────────────────┐
│  阶段 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。选择:
  1. Agent — 任何您拥有的智能体
  2. Dataset — 任何至少包含一个测试用例的数据集
点击 Start Evaluation。您将被重定向到结果页面。

4. 查看结果

结果页面显示:
  • 标题:智能体名称、数据集名称、状态徽章、通过率、平均延迟、总令牌数
  • 进度条:随着用例完成而填充(绿色 = 通过比例)
  • 结果表:每个测试用例一行,包含:
    • 提示词(截断 — 点击展开)
    • 判定:通过(绿色)、失败(红色)或错误(橙色)
    • 智能体的回答(截断 — 点击展开)
    • 评分器的推理(为什么通过或失败)
    • 延迟(毫秒)和令牌计数
当运行进行中(pendingrunning 状态)时,页面每 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.
用户消息包括:
  1. 原始提示
  2. 预期行为
  3. 断言列表(或”未指定”)
  4. 智能体的实际答案
输出架构:
{
  "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>)。