本頁面說明如何使用 Gen AI Evaluation Service,評估透過 Agent Platform 的 Managed Agents 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()