本页面介绍了如何使用 Gen AI Evaluation Service 评估在 Agent Platform 上使用 托管式智能体 API 构建的智能体。您可以生成合成测试场景,针对这些场景运行智能体,并使用预构建的指标对生成的对话轨迹进行评分。
准备工作
完成 创建和管理智能体 中的步骤,以创建 Managed Agent 资源。
安装带有评估扩展程序的 Agent Platform SDK:
pip install google-cloud-aiplatform[evaluation]设置身份验证并配置项目:
替换以下内容:
- PROJECT_ID:您的 Google Cloud 项目 ID。
import agentplatform client = agentplatform.Client( project="PROJECT_ID", location="global", )
评估工作流
评估 Managed Agent 需执行以下三个步骤:
- 生成场景:根据智能体的说明和工具定义自动创建各种多轮测试 场景。
- 运行推理:针对生成的场景执行智能体 以捕获对话轨迹。
- 评估:使用预构建的指标对对话轨迹进行评分。
第 1 步:生成对话场景
使用 generate_conversation_scenarios 根据智能体的配置自动创建测试场景。该方法会读取智能体的系统说明和工具,以生成真实的用户提示。
替换以下内容:
- PROJECT_ID:您的 Google Cloud 项目 ID。
- AGENT_ID:智能体资源的 ID。如需详细了解如何检索或列出自定义智能体以查找其 ID,请参阅列出智能体。
AGENT_RESOURCE = f"projects/PROJECT_ID/locations/global/agents/AGENT_ID"
scenarios = client.evals.generate_conversation_scenarios(
agent=AGENT_RESOURCE,
config={
"count": 5,
"generation_instruction": "Generate scenarios where a user asks for a refund.",
},
)
scenarios.show()
每个生成的场景都包含一个 starting_prompt,表示对话中的初始用户消息。
第 2 步:运行推理
使用 run_inference 针对生成的场景运行智能体。
智能体会执行每个场景,并生成对话轨迹,其中捕获了完整的互动,包括工具调用、中间步骤和最终回答。
inference_results = client.evals.run_inference(
agent=AGENT_RESOURCE,
src=scenarios,
config={"user_simulator_config": {"max_turn": 5}}
)
inference_results.show()
第 3 步:评估
使用 evaluate 通过预构建的指标对对话轨迹进行评分。
以下指标可用于智能体评估:
| 指标 | 说明 |
|---|---|
final_response_quality_v1 |
评估智能体是否成功完成了用户的任务。 |
safety_v1 |
评估智能体的回答是否安全。 |
multi_turn_task_success_v1 |
评估智能体是否成功完成了用户的多轮任务。 |
from agentplatform import types
eval_result = client.evals.evaluate(
dataset=inference_results,
metrics=[
types.RubricMetric.MULTI_TURN_TASK_SUCCESS,
],
agent=AGENT_RESOURCE,
)
eval_result.show()
show() 方法会显示一份交互式报告,其中包含汇总得分、每个案例的理由以及智能体的对话轨迹,包括系统拓扑(智能体工具和说明)。
评估现有互动
您还可以评估已与智能体记录的互动。这有助于评估生产对话的质量。如需了解如何向智能体发送互动以及如何检索 interaction_id,请参阅向自定义智能体发送互动。
替换以下内容:
- PROJECT_ID:您的 Google Cloud 项目 ID。
- INTERACTION_ID:已记录互动的 ID。
- AGENT_RESOURCE:智能体的完整资源名称,格式为
projects/PROJECT_ID/locations/global/agents/AGENT_ID。
interactions_dataset = types.EvaluationDataset(
eval_cases=[
types.EvalCase(
interactions_data_source=types.InteractionsDataSource(
interaction=f"projects/PROJECT_ID/locations/global/interactions/INTERACTION_ID",
gemini_agent_config=types.GeminiAgentConfig(
gemini_agent=AGENT_RESOURCE,
),
),
),
]
)
eval_result = client.evals.evaluate(
dataset=interactions_dataset,
metrics=[
types.RubricMetric.MULTI_TURN_TASK_SUCCESS,
],
agent=AGENT_RESOURCE,
)
eval_result.show()