評估代理程式

開發代理後,您可以使用 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 日」。

如何匯入範例資料集:

  1. 安裝初始化 gcloud CLI。

  2. 下載評估資料集。

    裝置上

    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 .
  3. 載入資料集範例

    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:所有分數的標準差。

後續步驟

請試試下列筆記本: