智能体评估
评估智能体质量 — 静态检查、动态测试、工具调用验证和 LLM 评判。
智能体评估
评估系统通过多阶段流水线自动检测智能体的配置质量、工具调用准确性和回答质量,生成量化评分和改进建议。
评估流水线
评估按以下阶段顺序执行,总预算 4 分钟:
触发评估
↓
1. 静态检查 — 配置 lint、业务设计检查
↓ (关键检查失败则提前终止,评分上限 0)
2. 测试用例生成 — LLM 自动生成或使用自定义用例
↓
3. 动态运行 — 逐条执行测试用例,记录响应和工具调用
↓ (动态测试未执行则评分上限 30)
4. 工具调用验证 — 端点匹配、参数 Schema 校验、语义验证
↓
5. 确定性评分 — BLEU、ROUGE、延迟等客观指标
↓
6. LLM 评判 — 多维度主观质量评分
↓
7. 聚合评分 — 三层评分体系 + 综合得分评估触发来源
| 来源 | 说明 |
|---|---|
creation | 智能体创建时自动触发 |
import | 导入模板时自动触发 |
manual | 管理员手动触发 |
update | 智能体配置变更时触发 |
评估模式
| 模式 | 说明 |
|---|---|
fast | 仅运行前 2 条测试用例,跳过 LLM 评判,适合快速验证 |
full | 完整流水线,所有阶段均执行 |
regression | 使用指定的测试用例集,适合回归测试 |
阶段详解
1. 静态检查
不运行智能体,仅分析其配置:
| 检查项 | 分类 | 说明 |
|---|---|---|
system_prompt_quality | 配置 lint | System Prompt 是否完整、清晰 |
skill_completeness | 配置 lint | 技能配置是否完备 |
tool_reachability | 配置 lint | 工具是否可达 |
config_consistency | 配置 lint | 配置项之间是否一致 |
task_card_coverage | 业务设计 | 任务卡是否覆盖核心场景 |
prompt_tool_result_mandate | 业务设计 | Prompt 是否要求工具调用后再回答 |
prompt_clarification_strategy | 业务设计 | 是否有澄清策略 |
prompt_refusal_boundary | 业务设计 | 是否定义了拒答边界 |
每项检查产生 0~100 的分数,以及 critical / warning / info 严重级别。
关键检查失败会提前终止评估,整体评分为 0,并直接输出改进建议。
2. 测试用例生成
系统从智能体的技能配置中提取 API 端点,自动生成覆盖以下场景的测试用例:
| 用例类型 | 说明 |
|---|---|
happy_path | 正常业务流程 |
edge_case | 边界情况 |
negative | 异常输入或越权请求 |
tool_specific | 针对特定工具的测试 |
每条用例包含问题、期望行为、期望调用的工具和参数。
3. 动态运行
逐条执行测试用例,记录:
- 智能体的完整响应文本
- 执行轨迹(
executionTrace):所有工具调用的名称、参数、返回结果和延迟 - 总 Token 消耗和对话轮次
- 是否成功(
success)
每条用例超时 35 秒,全局动态测试阶段使用评估总预算的 50%。
4. 工具调用验证
基于动态运行的执行轨迹,验证工具调用的正确性:
Schema 校验:
- 工具是否真实存在(非幻觉工具)
- 参数是否符合 Schema(类型、必填项)
- 是否存在未知参数
轨迹匹配:
- Tool Call F1 Score(精确率、召回率、F1)
- 参数准确率
- 步骤比例和调用比例
- 部分匹配评分
错误类型:
| 错误类型 | 严重级别 | 说明 |
|---|---|---|
hallucinated_tool | 严重 | 调用了不存在的工具 |
silent_failure | 严重 | 工具调用失败但智能体未告知用户 |
wrong_tool | 警告 | 调用了错误的工具 |
wrong_params | 警告 | 参数错误 |
missing_call | 警告 | 遗漏了应该调用的工具 |
unnecessary_call | 警告 | 不必要的工具调用 |
参数语义验证(full 模式):
在 Schema 校验之外,使用 LLM 判断参数值在语义上是否合理(如日期格式、业务逻辑等),评分 1~5。
5. 确定性评分
使用客观指标评估响应质量:
- 响应非空检查 — 智能体是否返回了有效内容
- 延迟评分 — 响应时间是否在合理范围内
- 其他文本质量指标(BLEU、ROUGE 等)
6. LLM 评判
选取成功的动态运行结果,由 LLM 从多维度评判:
- 回答的准确性和相关性
- 工具使用的合理性
- 用户体验和表达质量
- 是否遵循了 System Prompt 的约束
每个维度产生 1~5 分的评分和改进建议。
三层评分体系
最终评分由三个维度加权得出:
| 维度 | 权重 | 计算方式 |
|---|---|---|
| 能力分(capability_score) | 20% | 静态检查平均分 |
| 执行分(execution_score) | 50% | 工具调用验证 + 参数语义验证 + 确定性评分的加权平均 |
| 可靠分(reliability_score) | 30% | 延迟评分 * 0.5 + 成功率 * 0.3 + 基础设施健康度 * 0.2 |
综合评分 = 能力分 * 0.2 + 执行分 * 0.5 + 可靠分 * 0.3
通过阈值
评估通过需同时满足:
- 综合评分 >= 40
- 无
hallucinated_tool或silent_failure严重错误 - Tool Call F1 >= 0.3
- LLM 评判无低于 2 分的维度
改进建议
评估完成后,系统从各阶段收集改进建议,按优先级排列:
| 建议类别 | 来源 |
|---|---|
tool_definition | 工具调用验证 |
system_prompt | 静态检查、确定性评分、LLM 评判 |
skill_config | 静态检查 |
parameter_schema | 工具调用验证 |
每条建议包含优先级(high / medium / low)和具体说明。
REST API
触发评估
POST /api/agents/:agentId/evaluations请求体(可选):
{
"mode": "full",
"testCases": [
{
"id": "tc-1",
"type": "happy_path",
"question": "帮我查询最近的订单",
"expectedBehavior": "调用订单查询 API 并返回结果",
"expectedTools": ["GET /orders"],
"shouldSucceed": true
}
]
}空 body 时自动生成测试用例,使用 full 模式。
响应:
{
"id": "eval-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"status": "pending"
}返回 202 Accepted,评估在后台异步执行。
列出评估
GET /api/agents/:agentId/evaluations返回该智能体的所有评估记录,按时间倒序。
获取最新评估
GET /api/agents/:agentId/evaluations/latest获取指定评估
GET /api/agents/:agentId/evaluations/:evalId响应结构:
{
"id": "eval-xxx",
"agentId": "agent-1",
"triggerSource": "manual",
"status": "completed",
"overallScore": 72,
"scoreBreakdown": {
"staticAvg": 85,
"toolCallAvg": 68,
"judgeAvg": 75,
"deterministicAvg": 80,
"threeLayerScores": {
"capability_score": 85,
"execution_score": 70,
"reliability_score": 78
},
"completeness": "complete",
"coverage": {
"endpoint_coverage": { "total": 10, "called": 7, "ratio": 0.7 },
"scenario_coverage": { "happy_path": 3, "edge_case": 2, "negative": 1, "tool_specific": 2 }
}
},
"suggestions": [
{
"category": "system_prompt",
"suggestion": "建议在 System Prompt 中明确拒答边界",
"priority": "medium"
}
],
"createdAt": "2026-04-14T10:00:00.000Z",
"completedAt": "2026-04-14T10:03:30.000Z"
}