開發代理後,您可以使用 Gen AI 評估服務,評估代理完成特定用途的任務和目標的能力。
定義評估指標
請先建立空白指標清單 (即 metrics = []
),然後再新增相關指標。如要納入其他指標,請按照下列步驟操作:
最終回覆
最終回應評估程序與以模型為基準的評估程序相同。詳情請參閱「定義評估指標」。
完全比對
metrics.append("trajectory_exact_match")
如果預測軌跡與參考軌跡相同,且工具呼叫的順序完全相同,trajectory_exact_match
指標會傳回 1
分數,否則為 0
。
輸入參數:
predicted_trajectory
:服務專員用來取得最終回應的工具呼叫清單。reference_trajectory
:代理程式滿足查詢時,預期使用的工具。
排序比對
metrics.append("trajectory_in_order_match")
如果預測軌跡包含參考軌跡中的所有工具呼叫,且可能還有額外的工具呼叫,trajectory_in_order_match
指標會傳回 1
分數,否則為 0
。
輸入參數:
predicted_trajectory
:代理程式用來取得最終回應的預測軌跡。reference_trajectory
:服務專員滿足查詢時,預期的預測軌跡。
任意順序比對
metrics.append("trajectory_any_order_match")
如果預測軌跡包含參考軌跡中的所有工具呼叫,但順序不重要且可能包含額外的工具呼叫,則 trajectory_any_order_match
指標會傳回 1
分數,否則為 0
。
輸入參數:
predicted_trajectory
:服務專員用來取得最終回應的工具呼叫清單。reference_trajectory
:代理程式滿足查詢時,預期使用的工具。
精確度
metrics.append("trajectory_precision")
trajectory_precision
指標會根據參考軌跡,評估預測軌跡中實際相關或正確的工具呼叫數量。這是 [0, 1]
範圍內的 float
值:分數越高,預測軌跡就越精確。
精確度計算方式如下:計算預測軌跡中同時出現在參考軌跡中的動作數量。將該計數除以預測軌跡中的動作總數。
輸入參數:
predicted_trajectory
:服務專員用來取得最終回應的工具呼叫清單。reference_trajectory
:代理程式滿足查詢時預期使用的工具。
喚回
metrics.append("trajectory_recall")
trajectory_recall
指標會評估預測軌跡中實際擷取的參考軌跡必要工具呼叫數量。這是 float
值,範圍為 [0, 1]
:分數越高,預測軌跡的喚回率就越高。
喚回率的計算方式如下:計算參考軌跡中同時出現在預測軌跡中的動作數量。將該計數除以參考軌跡中的動作總數。
輸入參數:
predicted_trajectory
:服務專員用來取得最終回應的工具呼叫清單。reference_trajectory
:代理程式滿足查詢時預期使用的工具。
單一工具使用
from vertexai.preview.evaluation import metrics
metrics.append(metrics.TrajectorySingleToolUse(tool_name='tool_name'))
trajectory_single_tool_use
指標會檢查預測軌跡是否使用指標規格中指定的特定工具。它不會檢查工具呼叫的順序或工具的使用次數,只會檢查工具是否存在。如果工具不存在,則為 0
值,否則為 1
。
輸入參數:
predicted_trajectory
:代理程式用來取得最終回應的工具呼叫清單。
自訂
您可以按照下列方式定義自訂指標:
from vertexai.preview.evaluation import metrics
def word_count(instance):
response = instance["response"]
score = len(response.split(" "))
return {"word_count": score}
metrics.append(
metrics.CustomMetric(name="word_count", metric_function=word_count)
)
結果一律會包含下列兩個效能指標。您不需要在 EvalTask
中指定這些屬性:
latency
(float
):服務專員回應所需的時間 (以秒為單位)。failure
(bool
):如果代理程式叫用成功,則為0
;否則為1
。
準備評估用資料集
如要為最終回應或軌跡評估準備資料集,請按照下列步驟操作:
最終回覆
最終回應評估的資料架構與模型回應評估的資料架構類似。
完全比對
評估用資料集必須提供下列輸入內容:
輸入參數:
predicted_trajectory
:服務專員用來取得最終回應的工具呼叫清單。reference_trajectory
:代理程式滿足查詢時,預期使用的工具。
排序比對
評估用資料集必須提供下列輸入內容:
輸入參數:
predicted_trajectory
:代理程式用來取得最終回應的預測軌跡。reference_trajectory
:服務專員滿足查詢時,預期的預測軌跡。
任意順序比對
評估用資料集必須提供下列輸入內容:
輸入參數:
predicted_trajectory
:服務專員用來取得最終回應的工具呼叫清單。reference_trajectory
:代理程式滿足查詢時,預期使用的工具。
精確度
評估資料集必須提供下列輸入內容:
輸入參數:
predicted_trajectory
:服務專員用來取得最終回應的工具呼叫清單。reference_trajectory
:代理程式滿足查詢時預期使用的工具。
喚回
評估資料集必須提供下列輸入內容:
輸入參數:
predicted_trajectory
:服務專員用來取得最終回應的工具呼叫清單。reference_trajectory
:代理程式滿足查詢時預期使用的工具。
單一工具使用
評估用資料集必須提供下列輸入內容:
輸入參數:
predicted_trajectory
:服務專員用來取得最終回應的工具呼叫清單。
以下為評估資料集的示例,方便您瞭解相關概念。
import pandas as pd
eval_dataset = pd.DataFrame({
"predicted_trajectory": [
[ # example 1
{
"tool_name": "set_device_info",
"tool_input": {"device_id": "device_3", "updates": {"status": "OFF"}}
},
],
[ # example 2
{
"tool_name": "get_user_preferences",
"tool_input": {"user_id": "user_z"},
}, {
"tool_name": "set_temperature",
"tool_input": {"location": "Living Room", "temperature": 23},
},
]
],
"reference_trajectory": [
[ # example 1
{
"tool_name": "set_device_info",
"tool_input": {"device_id": "device_2", "updates": {"status": "OFF"}},
},
],
[ # example 2
{
"tool_name": "get_user_preferences",
"tool_input": {"user_id": "user_y"},
}, {
"tool_name": "set_temperature",
"tool_input": {"location": "Living Room", "temperature": 23},
},
],
],
})
範例資料集
我們提供以下資料集範例,說明如何評估服務專員:
"on-device"
:裝置端 Google Home 助理的評估資料集。你可以使用這項服務,執行像是「請在晚上 11 點到隔天早上 8 點之間開啟臥室的空調,並在其他時間關閉」這類查詢。"customer-support"
:客戶服務專員的評估資料集。當你提出「你能否取消任何待處理的訂單,並提報任何未解決的支援單?」等問題時,服務專員就會提供協助。"content-creation"
:行銷內容創作服務的評估資料集。代理人可協助處理查詢,例如「將廣告活動 X 重新排定為在社群媒體網站 Y 上進行的一次性廣告活動,且預算減少 50%,僅限 2024 年 12 月 25 日」。
如何匯入範例資料集:
下載評估資料集。
裝置上
gcloud storage cp gs://cloud-ai-demo-datasets/agent-eval-datasets/on-device/eval_dataset.json .
客戶服務
gcloud storage cp gs://cloud-ai-demo-datasets/agent-eval-datasets/customer-support/eval_dataset.json .
內容創作
gcloud storage cp gs://cloud-ai-demo-datasets/agent-eval-datasets/content-creation/eval_dataset.json .
載入資料集範例
import json eval_dataset = json.loads(open('eval_dataset.json').read())
產生評估結果
如要產生評估結果,請執行下列程式碼:
from vertexai.preview.evaluation import EvalTask
eval_task = EvalTask(dataset=eval_dataset, metrics=metrics)
eval_result = eval_task.evaluate(runnable=agent)
查看及解讀結果
評估結果如下所示:
評估結果包含下列資訊:
最終回覆指標
依資料列計算的指標:
response
:代理程式產生的最終回覆。latency_in_seconds
:產生回應所需的時間 (以秒為單位)。failure
:指出是否已產生有效回應。score
:針對指標規格中指定的回應計算的分數。explanation
:指標規格中指定的評分說明。
摘要指標:
mean
:所有執行個體的平均分數。standard deviation
:所有分數的標準差。
軌跡指標
依資料列計算的指標:
predicted_trajectory
:服務專員在取得最終回應前,所呼叫工具的順序。reference_trajectory
:預期工具呼叫的序列。score
:針對指標規格中指定的預測軌跡和參考軌跡計算的分數。latency_in_seconds
:產生回應所需的時間 (以秒為單位)。failure
:指出是否已產生有效回應。
摘要指標:
mean
:所有執行個體的平均分數。standard deviation
:所有分數的標準差。
後續步驟
請試試下列筆記本: