本页面介绍了如何使用 Gen AI Evaluation Service 评估通过 Agent Platform 上的托管式智能体 API 构建的智能体。您可以生成合成测试场景,针对这些场景运行代理,并使用预建指标对生成的对话轨迹进行评分。
准备工作
完成创建和管理代理中的步骤,以创建受管理的代理资源。
安装带有评估扩展程序的 Agent Platform SDK:
pip install google-cloud-aiplatform[evaluation]设置身份验证并配置项目:
替换以下内容:
- PROJECT_ID:您的 Google Cloud 项目 ID。
import agentplatform client = agentplatform.Client( project="PROJECT_ID", location="global", )
评估工作流
评估受管代理需要执行以下三个步骤:
- 生成场景:根据智能体的指令和工具定义自动创建多样化的多轮测试场景。
- 运行推理:针对生成的场景执行代理,以捕获对话轨迹。
- 评估:使用预构建的指标对对话轨迹进行评分。
第 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()