评估标准¶
本页面概述了 ADK 提供的评估智能体性能的评估标准,包括工具使用轨迹、响应质量与安全性。
| 标准 | 描述 | 基于参考 | 需要评分标准 | LLM 作为评判者 |
|---|---|---|---|---|
tool_trajectory_avg_score |
工具调用轨迹的精确匹配 | 是 | 否 | 否 |
response_match_score |
与参考响应的 ROUGE-1 相似度 | 是 | 否 | 否 |
final_response_match_v2 |
LLM 评判的与参考响应的语义匹配 | 是 | 否 | 是 |
rubric_based_final_response_quality_v1 |
基于自定义评分标准的 LLM 评判的最终响应质量 | 否 | 是 | 是 |
rubric_based_tool_use_quality_v1 |
基于自定义评分标准的 LLM 评判的工具使用质量 | 否 | 是 | 是 |
hallucinations_v1 |
LLM 评判的智能体响应与上下文的一致性 | 否 | 否 | 是 |
safety_v1 |
智能体响应的安全性/无害性 | 否 | 否 | 是 |
tool_trajectory_avg_score¶
此标准将智能体调用的工具序列与预期调用列表进行比较,并基于精确匹配计算平均分。
何时使用此标准?¶
此标准适用于智能体行为的正确性严格依赖于遵循精确的工具调用序列(具有确切参数)的场景。当你需要强制执行特定的工具执行路径并将任何偏差(无论是工具名称、参数还是顺序)视为失败时,请使用此标准。它特别适用于:
- 回归测试: 确保智能体更新不会意外改变已有测试案例的工具调用行为。
- 工作流验证: 验证智能体是否正确遵循需要特定 API 调用按特定顺序执行的预定义工作流。
- 高精度任务: 评估工具参数或调用顺序的轻微偏差可能导致显著不同或不正确结果的任务。
详细信息¶
对于每次评估的调用,此标准将智能体生成的工具调用列表和顺序与预期工具调用列表进行比较。比较通过执行列表中每个工具调用的工具名称和工具参数的精确匹配完成。如果调用中的所有工具调用在内容和顺序上都完全匹配,则为该调用授予 1.0 分,否则得分为 0.0。最终值是评估案例中所有调用的这些分数的平均值。
如何使用此标准?¶
你可以在 EvalConfig 中的标准字典下指定此标准的阈值。该值应为 0.0 到 1.0 之间的浮点数,表示评估案例通过所需的最低可接受分数。如果你希望工具轨迹在所有调用中都完全匹配,应将阈值设置为 1.0。
示例 EvalConfig 条目:
输出及如何解释¶
输出为 0.0 到 1.0 之间的分数,其中 1.0 表示在所有调用中实际和预期工具轨迹之间完美匹配,而 0.0 表示在所有调用中完全不匹配。较高的分数更好。低于 1.0 的分数意味着对于至少一次调用,智能体的工具调用轨迹偏离了预期轨迹。
response_match_score¶
此标准使用 Rouge-1 评估智能体的最终响应是否与黄金/期望的最终响应匹配。
何时使用此标准?¶
当你需要对智能体输出与预期输出在内容重叠方面接近程度进行定量评估时,请使用此标准。
详细信息¶
ROUGE-1 特别测量系统生成文本(候选摘要)和参考文本之间的 unigrams(单个词)重叠。它基本上检查候选文本中存在参考文本中的多少个单独的词语。要了解更多,请参见 ROUGE-1 的详情。
如何使用此标准?¶
你可以在 EvalConfig 中的标准字典下指定此标准的阈值。该值应为 0.0 到 1.0 之间的浮点数,表示评估案例通过所需的最低可接受分数。
示例 EvalConfig 条目:
输出及如何解释¶
此标准的值范围为 [0,1],值越接近 1 越理想。
final_response_match_v2¶
此标准使用 LLM 作为评判者评估智能体的最终响应是否与黄金/期望的最终响应匹配。
何时使用此标准?¶
当你需要将智能体的最终响应与参考进行正确性评估,但要求对答案的呈现方式具有灵活性时,请使用此标准。它适用于不同表述或格式可接受的情况,只要核心含义和信息与参考匹配。此标准是评估问答、摘要或其他生成任务的良好选择,其中语义等价性比精确的词汇重叠更重要,使其成为 response_match_score 的更复杂替代方案。
详细信息¶
此标准使用大型语言模型(LLM)作为评判者,确定智能体的最终响应是否与提供的参考响应语义等价。它被设计为比词汇匹配指标(如 response_match_score)更灵活,因为它关注智能体的响应是否包含正确信息,同时容忍格式、措辞或包含额外正确细节的差异。
对于每次调用,该标准提示评判 LLM 将智能体的响应与参考相比评估为"有效"或"无效"。为增强鲁棒性(可通过 num_samples 配置),此过程重复多次,多数票决定调用是否获得 1.0(有效)或 0.0(无效)的分数。最终标准分数是整个评估案例中被判定为有效的调用比例。
如何使用此标准?¶
此标准使用 LlmAsAJudgeCriterion,允许你配置评估阈值、评判模型和每次调用的样本数量。
示例 EvalConfig 条目:
{
"criteria": {
"final_response_match_v2": {
"threshold": 0.8,
"judge_model_options": {
"judge_model": "gemini-2.5-flash",
"num_samples": 5
}
}
}
}
}
输出及如何解释¶
该标准返回 0.0 到 1.0 之间的分数。1.0 的分数表示 LLM 评判者认为智能体的最终响应在所有调用中都有效,而接近 0.0 的分数表示许多响应被判定为与参考响应相比无效。较高值更好。
rubric_based_final_response_quality_v1¶
此标准使用 LLM 作为评判者,根据用户定义的评分标准集评估智能体最终响应的质量。
何时使用此标准?¶
当你需要评估超出与参考的简单正确性或语义等价的响应质量方面时,请使用此标准。它非常适合评估细微属性,如语调、风格、帮助性或对评分标准中定义的特定对话指导的遵守情况。当不存在单一参考响应,或质量取决于多个主观因素时,此标准特别有用。
详细信息¶
此标准提供了一种基于你定义为评分标准的特定标准灵活评估响应质量的方法。例如,你可以定义评分标准来检查响应是否简洁、是否正确推断用户意图,或是否避免使用行话。
该标准使用 LLM 作为评判者,将智能体的最终响应与每个评分标准进行评估,为每个标准产生"是"(1.0)或"否"(0.0)的判断。与其他基于 LLM 的指标类似,它在每次调用中多次采样评判模型,并使用多数票决定该调用中每个评分标准的分数。调用的总体分数是其评分标准分数的平均值。评估案例的最终标准分数是所有调用中这些总体分数的平均值。
如何使用此标准?¶
此标准使用 RubricsBasedCriterion,它需要在 EvalConfig 中提供评分标准列表。每个评分标准应使用唯一 ID 及其内容定义。
示例 EvalConfig 条目:
{
"criteria": {
"rubric_based_final_response_quality_v1": {
"threshold": 0.8,
"judge_model_options": {
"judge_model": "gemini-2.5-flash",
"num_samples": 5
},
"rubrics": [
{
"rubric_id": "conciseness",
"rubric_content": {
"text_property": "智能体的响应直接且切中要点。"
}
},
{
"rubric_id": "intent_inference",
"rubric_content": {
"text_property": "智能体的响应从模糊查询中准确推断用户的潜在目标。"
}
}
]
}
}
}
输出及如何解释¶
该标准在 0.0 到 1.0 之间输出总体分数,其中 1.0 表示智能体的响应在所有调用中都满足所有评分标准,而 0.0 表示没有评分标准被满足。结果还包括每次调用的详细按评分标准分数。较高的值更好。
rubric_based_tool_use_quality_v1¶
此标准使用 LLM 作为评判者,根据用户定义的评分标准集评估智能体工具使用的质量。
何时使用此标准?¶
当你需要评估智能体如何使用工具,而不仅仅是是否最终响应正确时,请使用此标准。它非常适合评估智能体是否选择了正确的工具、使用了正确的参数,或遵循了特定的工具调用序列。这对于验证智能体推理过程、调试工具使用错误和确保遵循规定的工作流很有用,特别是在多个工具使用路径可能导致类似最终答案但只有一条路径被视为正确的情况。
详细信息¶
此标准提供了一种基于你定义为评分标准的特定规则灵活评估工具使用的方法。例如,你可以定义评分标准来检查是否调用了特定工具、其参数是否正确,或工具是否按特定顺序调用。
该标准使用 LLM 作为评判者,将智能体的工具调用和响应与每个评分标准进行评估,为每个标准产生"是"(1.0)或"否"(0.0)的判断。与其他基于 LLM 的指标类似,它在每次调用中多次采样评判模型,并使用多数票决定该调用中每个评分标准的分数。调用的总体分数是其评分标准分数的平均值。评估案例的最终标准分数是所有调用中这些总体分数的平均值。
如何使用此标准?¶
此标准使用 RubricsBasedCriterion,它需要在 EvalConfig 中提供评分标准列表。每个评分标准应使用唯一 ID 及其内容定义,描述要评估的工具使用的特定方面。
示例 EvalConfig 条目:
{
"criteria": {
"rubric_based_tool_use_quality_v1": {
"threshold": 1.0,
"judge_model_options": {
"judge_model": "gemini-2.5-flash",
"num_samples": 5
},
"rubrics": [
{
"rubric_id": "geocoding_called",
"rubric_content": {
"text_property": "智能体在调用 GetWeather 工具之前调用 GeoCoding 工具。"
}
},
{
"rubric_id": "getweather_called",
"rubric_content": {
"text_property": "智能体使用从用户位置派生的坐标调用 GetWeather 工具。"
}
}
]
}
}
}
输出及如何解释¶
该标准在 0.0 到 1.0 之间输出总体分数,其中 1.0 表示智能体的工具使用在所有调用中都满足所有评分标准,而 0.0 表示没有评分标准被满足。结果还包括每次调用的详细按评分标准分数。较高的值更好。
hallucinations_v1¶
此标准评估模型响应是否包含任何虚假、矛盾或无支撑的声明。
何时使用此标准?¶
使用此标准确保智能体的响应基于提供的上下文(例如,工具输出、用户查询、指令)且不包含幻觉。
详细信息¶
此标准基于包含开发者指令、用户提示、工具定义以及工具调用及其结果的上下文,评估模型响应是否包含任何虚假、矛盾或无支撑的声明。它使用 LLM 作为评判者,并遵循两步过程:
- 分段器: 将智能体响应分段为单独的句子。
- 句子验证器: 根据提供的上下文评估每段句子的一致性。每个句子被标记为
supported(支持)、unsupported(不支持)、contradictory(矛盾)、disputed(有争议)或not_applicable(不适用)。
该指标计算准确率分数:supported(支持)或not_applicable(不适用)的句子百分比。默认情况下,只评估最终响应。如果在标准中将evaluate_intermediate_nl_responses设置为 true,则还会评估智能体的中间自然语言响应。
如何使用此标准?¶
此标准使用HallucinationsCriterion,允许你配置评估阈值、评判模型、每次调用的样本数量以及是否评估中间自然语言响应。
示例EvalConfig条目:
{
"criteria": {
"hallucinations_v1": {
"threshold": 0.8,
"judge_model_options": {
"judge_model": "gemini-2.5-flash",
},
"evaluate_intermediate_nl_responses": true
}
}
}
输出及如何解释¶
该标准返回 0.0 到 1.0 之间的分数。1.0 的分数意味着智能体响应中的所有句子都基于上下文,而接近 0.0 的分数表示许多句子是虚假、矛盾或无支撑的。较高的值更好。
safety_v1¶
此标准评估智能体响应的安全性(无害性)。
何时使用此标准?¶
当你需要确保智能体响应符合安全准则且不产生有害或不当内容时,应使用此标准。这对于面向用户的应程序或任何将响应安全性作为优先事项的系统至关重要。
详细信息¶
此标准评估智能体的响应是否包含任何有害内容,如仇恨言论、骚扰或危险信息。与其他在 ADK 内原生实现的指标不同,safety_v1 将评估委托给 Vertex AI 通用 AI 评估 SDK。
如何使用此标准?¶
使用此标准需要 Google Cloud Project。你必须设置 GOOGLE_CLOUD_PROJECT 和 GOOGLE_CLOUD_LOCATION 环境变量,通常在智能体目录中的 .env 文件中,以便 Vertex AI SDK 能够正常工作。
你可以在 EvalConfig 中的标准字典下指定此标准的阈值。该值应为 0.0 到 1.0 之间的浮点数,表示响应被认为通过所需的最低安全分数。
示例 EvalConfig 条目:
输出及如何解释¶
该标准返回 0.0 到 1.0 之间的分数。接近 1.0 的分数表示响应是安全的,而接近 0.0 的分数表示潜在的安全问题。