本頁面說明如何使用 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()