准备工作
在管理评估指标之前,请确保您已做好以下准备:
- 启用了 Agent Platform API 的 Google Cloud 项目。
- (可选)如果使用 Agent Platform SDK,请按照评估智能体中的说明初始化客户端。
借助指标注册表,您可以定义、存储和管理可重复使用的配置,以确定如何评估代理。您无需为每次测试运行配置标准,而是可以保存标准化指标(例如用于评估安全性的基于 LLM 的自定义评分标准或用于评估执行准确性的 Python 函数),并将其一致地应用于离线评估和持续在线监控。
指标类型
代理平台支持注册表中的三种类型的指标:
- 预定义指标:Google 提供的受管理的指标,包括用于评估任务成功情况、工具使用质量和轨迹合规性的多轮评估者。
- 自定义 LLM 指标:自然语言评分准则,其中“评判 LLM”会根据您的特定标准和评分等级评估智能体的回答。
- 自定义代码指标:以编程方式验证智能体行为的 Python 函数,例如检查特定输出格式或验证工具响应。
除了 Google 提供的受管理指标外,您还可以使用自定义的已注册指标进行评估。
预定义指标
Agent Platform 提供了一组预定义的指标,用于评估智能体。这些指标由 Google 管理,涵盖单轮和多轮智能体互动的常见评估维度。
您可以使用 types.RubricMetric.METRIC_NAME 在 SDK 中访问预定义的指标。如需详细了解所有基于评分准则的受管理指标,包括输入要求和输出格式,请参阅基于评分准则的受管理指标的详细信息。
单轮代理指标
以下指标用于评估单次智能体互动(一次提示和一次回答,可能包含中间工具调用):
| 指标 | 类型 | SDK 访问器 | 说明 |
|---|---|---|---|
| 代理最终回答质量 | 自适应评分准则 | types.RubricMetric.FINAL_RESPONSE_QUALITY |
全面评估,可根据智能体的配置(系统指令和工具声明)和用户提示自动生成评分准则。 |
| 代理幻觉 | 静态评分准则 | types.RubricMetric.HALLUCINATION |
通过将回答拆解为最基本的“原子声明”来检查真实性,并验证每项声明是否有据可依(根据中间事件中的工具使用情况)。 |
| 代理工具使用质量 | 自适应评分准则 | types.RubricMetric.TOOL_USE_QUALITY |
评估工具选择的恰当性、参数使用的正确性,以及是否遵循了指定的操作顺序。 |
| 安全 | 静态评分准则 | types.RubricMetric.SAFETY |
评估回答是否违反安全政策,包括个人身份信息和人口统计数据、仇恨言论、危险内容、骚扰内容或露骨色情内容。如果安全,则返回 1;如果不安全,则返回 0。 |
多轮对话智能体指标
以下指标用于评估多轮代理对话。它们会分析完整的对话上下文,以评估代理在多个轮次中的总体表现:
| 指标 | 类型 | SDK 访问器 | 说明 |
|---|---|---|---|
| 代理多轮任务成功率 | 自适应评分准则 | types.RubricMetric.MULTI_TURN_TASK_SUCCESS |
评估代理是否成功实现了对话的目标。这种无参考指标侧重于是否实现了目标,而不是如何实现目标。 |
| 代理多轮工具使用质量 | 自适应评分准则 | types.RubricMetric.MULTI_TURN_TOOL_USE_QUALITY |
评估多轮对话期间进行的函数调用的质量。评估智能体是否在正确的时间使用正确的实参调用了正确的工具。 |
| 代理多轮轨迹质量 | 自适应评分准则 | types.RubricMetric.MULTI_TURN_TRAJECTORY_QUALITY |
评估对话的整体轨迹(路径)。与任务成功率不同,此指标评估的是代理如何实现目标,即推理路径是否合理高效。 |
使用 SDK 中的预定义指标
from vertexai import evals, types
# Run an evaluation with predefined metrics
result = client.evals.evaluate(
dataset=eval_dataset,
metrics=[
types.RubricMetric.FINAL_RESPONSE_QUALITY,
types.RubricMetric.TOOL_USE_QUALITY,
types.RubricMetric.HALLUCINATION,
types.RubricMetric.SAFETY,
],
)
# Visualize results in Colab
result.show()
在控制台中管理指标
在 Google Cloud 控制台中,依次前往 Agent Platform > 智能体 > 评估页面。
点击指标标签页以查看注册表。
创建指标:点击新指标,然后选择自定义 LLM 指标或自定义代码指标。
定义评分准则:对于 LLM 指标,请使用示例按钮快速填充指令、标准(例如清晰度或兴奋度)和评分。
查看和修改:点击任意指标名称可在只读模式下查看其定义,或使用更多选项图标 more_vert复制或删除资源。
使用 SDK 管理指标
您可以使用 Agent Platform SDK 以编程方式注册和使用指标。
注册自定义 LLM 指标
from vertexai import evals, types
# Define a metric with a specific rubric
tone_check_metric = types.LLMMetric(
name="tone_check",
prompt_template="Analyze the tone of the response ...",
result_parsing_function="""
import json, re
def parse_results(responses):
response = json.loads(responses[0])
return {"score": response.get("score", 0.0),
"explanation": response.get("explanation", "default explanation")}
"""
)
# Register the custom metric
tone_check_metric_path = client.evals.create_evaluation_metric(
metric=tone_check_metric
)
注册自定义代码指标
from vertexai import evals, types
# Define a metric with custom python code
accuracy_metric_code = """
def evaluate(instance: dict) -> float:
agent_data = instance.get('agent_eval_data', {})
turns = agent_data.get('turns', [])
for turn in turns:
...
"""
accuracy_metric = types.CodeExecutionMetric(
name="multi_turn_accuracy",
custom_function=accuracy_metric_code
)
# Register the custom metric
accuracy_metric_path = client.evals.create_evaluation_metric(
metric=accuracy_metric
)