Important
本文中標示為預覽的項目目前仍在預覽中。 此預覽版未簽訂服務等級協議,Microsoft 不建議用於生產工作負載。 某些功能可能不被支援或功能受限。 欲了解更多資訊,請參閱Microsoft Azure預覽補充使用條款。
AI 代理是強大的生產力助理,能為企業需求創造工作流程。 然而,由於其複雜互動模式,可觀察性仍是一大挑戰。 代理評估器透過衡量品質、安全性與效能,提供系統性地觀察代理工作流程。
客服人員的工作流程通常涉及推理使用者意圖、呼叫相關工具,並利用工具結果完成如更新資料庫或撰寫報告等任務。 要打造生產準備的代理型應用程式,你不僅需要評估最終輸出,還要評估工作流程中每個步驟的品質與效率。
Foundry 內建的代理評估器,功能類似代理系統的單元測試——它們將代理訊息作為輸入與輸出的二元通過/不通過分數(或根據閾值轉換為二元分數)的輸入與輸出。 這些評估者支持兩項代理人評估的最佳實務:
- 系統評估——檢視能動系統的端到端結果。
- 流程評估——驗證逐步執行以達成成果。
| 評估員 | 最佳做法 | 何時使用 | Purpose | Output |
|---|---|---|---|---|
| 任務完成(預覽) | 系統評估 | 評估工作流程自動化、目標導向 AI 互動,或任何任務完成至關重要情境下的端到端任務成功率 | 衡量代理是否完成了請求的任務,並交付了符合所有使用者需求的可用成果 | 二元:通過/不及格 |
| 客戶滿意度(預覽版) | 系統評估 | 衡量整體用戶滿意度,偵測用戶挫折感 | 衡量六個面向的整體使用者滿意度:幫助性、完整性、清晰度、語氣、解析度與適應性 | 李克特量表 1-5 |
| 任務依附(預覽) | 系統評估 | 確保客服人員遵循系統指示,並在受規範環境中驗證合規性 | 衡量代理人的行為是否符合其根據規則、程序及政策限制,根據系統訊息及先前步驟所分配的任務 | 二元:通過/不及格 |
| 任務導航效率 | 系統評估 | 優化代理工作流程、減少不必要的步驟、驗證已知最佳路徑(需要實地驗證) | 透過比較工具序列與預期的工具序列,衡量代理人是否有效地執行工具呼叫以完成任務 | 二元:通過/不及格 |
| 意圖解析度(預覽) | 系統評估 | 客戶支援情境、對話式 AI、理解使用者意圖至關重要的常見問題系統 | 衡量代理人是否正確識別使用者意圖 | 二元:根據門檻(1-5 等級)進行通過/不通過 |
| 工具呼叫準確度 | 流程評估 | 整體工具呼叫品質評估,透過工具整合、API 互動完成任務 | 衡量代理是否以正確的參數做出正確的工具呼叫以完成任務 | 二元:根據門檻(1-5 等級)進行通過/不通過 |
| 工具選擇 | 流程評估 | 驗證編排平台中工具選擇的品質,確保工具使用效率且無冗餘 | 衡量代理人是否選擇了正確的工具,而非選擇不必要的工具 | 二元:通過/不及格 |
| 工具輸入精度 | 流程評估 | 在生產環境中嚴格驗證工具參數、API 整合測試、要求 100% 參數正確性的關鍵工作流程 | 衡量工具呼叫參數是否在六項嚴格標準中正確:基礎性、型別合規性、格式合規性、必要參數、無異常參數及值值適當性 | 二元:通過/不及格 |
| 工具輸出利用率 | 流程評估 | 驗證 API 回應的正確使用、資料庫查詢結果、代理推理與回應中的搜尋輸出 | 衡量代理人是否正確理解並使用工具呼叫,則在其推理與最終回應中呈現情境結果 | 二元:通過/不及格 |
| 工具呼叫成功率 | 流程評估 | 監控工具可靠性、偵測 API 故障、逾時問題或工具執行中的技術錯誤 | 衡量工具呼叫是否成功或導致技術錯誤或異常 | 二元:通過/不及格 |
| 品質評分器(預覽) | 品質評估 | 評估回合層級的整體回應品質,包括相關性、棄權率、回答完整性,以及可選擇的紮實性與情境覆蓋 | 能在單一評估者中進行跨多維度的品質評估,而非分別執行個別評估者 | 二元:通過/不及格 |
| 輸出品質(預覽) | 系統與品質評估 | 在多個面向評估回應品質與任務結果,同時降低評估成本與延遲 | 將一批批次的流暢度、連貫性、意圖解決、任務依從性、紮根性及任務完成,匯聚於一則 LLM 評審 | 綜合:包含通過/不通過的組成分數 |
| 工具使用品質(預覽) | 流程評估 | 評估完整的工具使用流程,同時降低評估成本與延遲 | 批次工具呼叫準確度、工具呼叫成功率、工具輸入準確度、工具輸出利用率及工具選擇,整合成一個 LLM 裁判判定 | 綜合:包含通過/不通過的組成分數 |
系統評估
系統評估檢視你代理工作流程最終結果的品質。 這些評估器適用於單一代理,在多代理系統中則適用於主要編排者或負責任務完成的最終代理:
- 任務完成 - 客服人員是否已完全完成所請求的任務?
- 客戶滿意度——使用者對客服人員的表現會有多滿意?
- 任務遵循——代理是否遵循其指示中的規則與限制?
- 任務導航效率——代理是否有效執行了預期步驟?
- 意圖解決——客服人員是否正確識別並回應使用者意圖?
具體來說,對於代理人的文字輸出,你也可以應用像 和 Relevance 這類接受代理人輸入的 RAG 品質評估器Groundedness來評估最終回應的品質。
範例:
流程評估
流程評估檢視您代理工作流程中每個步驟的品質與效率。 這些評估者專注於系統中執行的工具呼叫以完成任務:
- 工具呼叫的準確度——客服人員是否以正確的參數做出正確的工具呼叫,且沒有冗餘?
- 工具選擇——代理人是否選擇了正確且必要的工具?
- 工具輸入準確度——客服是否提供正確的工具呼叫參數?
- 工具輸出使用率——客服是否正確使用工具呼叫結果作為推理與最終回應?
- 工具呼叫成功 - 工具呼叫是否成功且沒有技術錯誤?
範例:
品質評估(預覽)
品質評估評估 AI 助理在回合層級的整體回應品質。 品質評分器評估器與Microsoft Copilot Studio代理評估中使用的品質評估器相同。 它檢視了回應品質的多個面向:
- 相關性 ——回應是否與使用者的查詢相關?
- 迴避 ——當代理人無法或不應該回答時,是否適當地棄權?
- 答案完整性 ——回答是否完全回應使用者的問題?
在提供背景資訊後,品質評分器還會評估:
- 紮根 性——回應是否紮根於所提供的情境?
- 情境覆蓋 ——回應是否在情境中運用相關資訊?
範例:
綜合評估器(預覽)
綜合評審會在一次 LLM 評審中衡量多項品質面向。 利用它們來降低分別運行對應內建評估器的成本與延遲,同時保留每個品質面向的分數與理由。
Note
使用GPT-5.6家族的模型作為綜合評估者的LLM評審。
若要選擇成本最低且能維持高評估品質的選項,請使用 gpt-5.6-luna。
輸出品質
輸出品質評估器(builtin.output_qualityOutput Quality evaluator)評估代理回應的品質及其在解決使用者任務上的成功程度。 它會將以下評估者分組成一個 LLM 評審名單:
| 元件評估器 | 它衡量的是什麼 | Score | 預設通過門檻 |
|---|---|---|---|
| 流暢度 | 文法品質與可讀性。 | 1-5 | 3 |
| 連貫性 | 邏輯流暢與組織。 | 1-5 | 3 |
| 意圖解析 | 回應是否識別並回應使用者的意圖。 | 1-5 | 3 |
| 任務遵循度 | 代理人是否遵守其指令與限制。 | 0 或 1 | 1 |
| Groundedness | 該回應是否能獲得現有情境的支持。 | 1-5 | 3 |
| 任務完成 | 代理人是否完成了請求的任務並產生可用的結果。 | 0 或 1 | 1 |
工具使用品質
工具使用品質評估器(builtin.tool_use_quality)評估代理人從工具選擇到回傳結果的使用過程。 它會將以下評估者分組成一個 LLM 評審名單:
| 元件評估器 | 它衡量的是什麼 | Score | 預設通過門檻 |
|---|---|---|---|
| 工具呼叫準確度 | 工具呼叫的整體正確性、參數與效率。 | 1-5 | 3 |
| 工具呼叫成功率 | 工具呼叫是否完成時沒有技術錯誤。 | 0 或 1 | 1 |
| 工具輸入精度 | 工具呼叫參數是否正確。 | 0 或 1 | 1 |
| 工具輸出利用率 | 代理人是否正確使用工具,決定其回應。 | 0 或 1 | 1 |
| 工具選擇 | 代理人是否選擇必要的工具,避免不必要的電話。 | 0 或 1 | 1 |
綜合結果
主output_qualitytool_use_quality結果僅在所有相關成分通過時才會通過。 不適用的元件會被跳過,且不會導致主要結果失敗。 若跳過所有分量,主要結果為 not_applicable。
每個綜合評估器會回傳一個主要二元結果及其組成評估者的結果。 嚴格品質閘使用主要結果,並用元件結果來識別導致失效的品質維度。
| Output | Description |
|---|---|
output_quality 或 tool_use_quality |
主要分數。 值 1 表示所有適用的元件都通過了。 值 0 為表示至少有一個適用元件失敗。 |
<component>_score |
來自元件評估器的數值分數。 |
<component>_result |
根據元件的門檻決定通過/不通過結果。 |
<component>_reason |
關於組成分數的說明。 |
<component>_status |
表示該元件是已完成還是被跳過。 |
<composite>_reason |
清單顯示故障元件或顯示元件被跳過。 |
<composite>_properties |
包含失敗與跳過元件清單,以及模型與代幣的元資料。 |
例如,當流暢度、一致性、意圖解決、任務依從性及任務完成通過但基礎性未通過時,輸出品質結果即告失敗。
他們 output_quality_reason 指出「接地感」是失敗的部分,並 groundedness_reason 解釋了它的分數。
配置複合評估器
這兩種綜合評估器都支援回合層級與對話層級的評估。 輸入形狀預設決定評估等級:
-
query地圖和response回合評估。 - 用於對話層級評估的地圖
messages。
將初始化參數設 evaluation_level 為 或 turnconversation 以覆蓋此行為。
以下配置在轉彎層級同時運行兩個複合評估器。 回應包含代理訊息及工具呼叫與結果,工具定義描述代理可用的工具。
testing_criteria = [
{
"type": "azure_ai_evaluator",
"name": "output_quality",
"evaluator_name": "builtin.output_quality",
"initialization_parameters": {
"deployment_name": model_deployment,
"evaluation_level": "turn",
},
"data_mapping": {
"query": "{{item.query}}",
"response": "{{item.response}}",
"tool_definitions": "{{item.tool_definitions}}",
},
},
{
"type": "azure_ai_evaluator",
"name": "tool_use_quality",
"evaluator_name": "builtin.tool_use_quality",
"initialization_parameters": {
"deployment_name": model_deployment,
"evaluation_level": "turn",
},
"data_mapping": {
"query": "{{item.query}}",
"response": "{{item.response}}",
"tool_definitions": "{{item.tool_definitions}}",
},
},
]
參考資料: 從 SDK 執行評估
要評估完整對話,請將完整對話映射到 messages ,並省略 evaluation_level 或設定為 conversation:
"initialization_parameters": {
"deployment_name": model_deployment,
"evaluation_level": "conversation",
},
"data_mapping": {
"messages": "{{item.messages}}",
"tool_definitions": "{{item.tool_definitions}}",
},
參考資料: 帶有工具呼叫的訊息
模型與工具支援
對於 AI 輔助評估者,你可以使用 Azure OpenAI 或 OpenAI
支援工具
代理人評估員支援以下工具:
- 檔案搜尋
- 功能工具(使用者自訂工具)
- MCP
- 知識型多元多元處理計畫(MCP)
以下工具目前支援有限。 如果你的客服人員對話包含使用以下工具,請避免使用 tool_call_accuracy, tool input accuracy, tool_output_utilizationtool_call_successgroundedness 或 評估器:
- Azure AI 搜尋服務
- Bing 基礎設置
- Bing 自訂搜尋
- SharePoint 基礎設置
- 程式碼解譯器
- Fabric 資料代理
- 網路內容搜尋
使用代理人評估器
代理人評估者評估 AI 代理人執行任務、遵循指示及有效使用工具的能力。 每個評估器都需要特定的資料映射與參數:
| 評估員 | 所需輸入 | 必要參數 | 支援的評估等級 |
|---|---|---|---|
| 任務完成(預覽) | (query, response) 或 messages;可選: tool_definitions |
deployment_name;可選: evaluation_level |
轉身,對話 |
| 客戶滿意度(預覽版) | (query, response) 或 messages |
deployment_name;可選性: threshold, evaluation_level |
轉身,對話 |
| 任務依附(預覽) | (query, response) 或 messages;可選: tool_definitions |
deployment_name |
轉動 |
| 意圖解析度(預覽) | (query, response) 或 messages |
deployment_name;可選: evaluation_level |
轉動 |
| 工具呼叫準確度 | (query, ) tool_definitions或 (messages, ;tool_definitionsresponse) 和 tool_calls 是可選的,且query |
deployment_name;可選: evaluation_level |
轉動 |
| 工具選擇 | (query, ) tool_definitions或 (messages, ;tool_definitionsresponse) 和 tool_calls 是可選的,且query |
deployment_name;可選: evaluation_level |
轉動 |
| 工具輸入精度 | (query, response, ) tool_definitions或 (messages, tool_definitions) |
deployment_name;可選: evaluation_level |
轉動 |
| 工具輸出利用率 | (query, response, ) tool_definitions或 (messages, tool_definitions) |
deployment_name;可選: evaluation_level |
轉動 |
| 工具呼叫成功率 |
response 或 messages |
deployment_name;可選: evaluation_level |
轉動 |
| 任務導航效率 | (actions 或 messages), expected_actions |
(無;可選: matching_mode) |
轉動 |
| 輸出品質 |
query且response;或。messages
tool_definitions 是選擇性的。 |
deployment_name;可選: evaluation_level |
轉身,對話 |
| 工具使用品質 |
query, , response, tool_definitions和;或 messages 與 tool_definitions。 |
deployment_name;可選: evaluation_level |
轉身,對話 |
回合層級評估會評分個別代理人的回應;對話層級評估會評分整個互動內容。 當評估者同時支持時,請使用 evaluation_level 來選擇等級。 關於訊息結構,請參見 帶有工具呼叫的訊息。
範例輸入
你的測試資料集應該包含資料映射中所參考的欄位。 以下為格式範例:
{"query": "What's the weather in Seattle?", "response": "The weather in Seattle is rainy, 14°C."}
{"query": "Book a flight to Paris for next Monday", "response": "I've booked your flight to Paris departing next Monday at 9:00 AM."}
{"messages": [{"role": "user", "content": "Book a flight to Paris."}, {"role": "assistant", "content": "I booked your flight to Paris."}]}
對於更複雜的代理與工具呼叫互動,請使用訊息陣列 和 queryresponse。 這些陣列使用與首選 messages 結構相同的 OpenAI 訊息結構。 請參閱 「分開查詢與回應格式」。 系統訊息為可選,但對於評估代理人行為的評估者非常有用,這些指令包括 task_adherence、 task_completion、 tool_call_accuracy、 tool_selectiontool_input_accuracytool_output_utilizationgroundedness及 :
{
"query": [
{"role": "system", "content": "You are a travel booking agent."},
{"role": "user", "content": "Book a flight to Paris for next Monday"}
],
"response": [
{"role": "assistant", "content": [{"type": "tool_call", "tool_call_id": "call_123", "name": "search_flights", "arguments": {"destination": "Paris", "date": "next Monday"}}]},
{"role": "tool", "tool_call_id": "call_123", "content": [{"type": "tool_result", "tool_result": {"flight": "AF123", "time": "9:00 AM"}}]},
{"role": "assistant", "content": "I've booked flight AF123 to Paris departing next Monday at 9:00 AM."}
]
}
工具定義格式
欄位 tool_definitions 描述了代理人可用的工具。 它包含一個工具物件清單,description包含一個name、 、 以及 JSON Schema parameters 物件:
[
{
"name": "search_flights",
"description": "Search for available flights to a destination on a given date.",
"parameters": {
"type": "object",
"properties": {
"destination": { "type": "string", "description": "The destination city." },
"date": { "type": "string", "description": "The travel date in YYYY-MM-DD format." }
},
"required": ["destination", "date"]
}
}
]
將此清單 tool_definitions 作為測試資料集中的欄位,與 queryresponse和 一起。
設定範例
資料映射語法:
-
{{item.field_name}}參考你測試資料集中的欄位(例如,{{item.query}})。 -
{{sample.output_items}}參考代理的結構化輸出,包括工具呼叫與結果。 對於需要完整互動上下文(task_adherence, ,tool_call_accuracytool_selection,tool_input_accuracy, )tool_output_utilization的評估者,請使用此方法。 -
{{sample.output_text}}引用了代理人的明文回覆。 對於期望字串回應的評估者(例如,coherence,violence)使用此方法。
以下是任務依附的範例配置:
testing_criteria = [
{
"type": "azure_ai_evaluator",
"name": "task_adherence",
"evaluator_name": "builtin.task_adherence",
"initialization_parameters": {"deployment_name": model_deployment},
"data_mapping": {
"query": "{{item.query}}",
"response": "{{item.response}}",
},
},
]
關於執行評估及設定資料來源的詳細說明,請參閱 SDK 中的執行評估 。
範例輸出
代理人評估員會帶著推理回傳通過/不通過的結果。 主要輸出欄位:
{
"type": "azure_ai_evaluator",
"name": "Task Adherence",
"metric": "task_adherence",
"label": "pass",
"reason": "Agent followed system instructions correctly",
"threshold": 3,
"passed": true
}
對於在閾值設定前使用 1–5 刻度(如 intent_resolution 和 tool_call_accuracy),輸出會包含一個數 score 值欄位,旁邊是通過/不通過結果:
{
"type": "azure_ai_evaluator",
"name": "Intent Resolution",
"metric": "intent_resolution",
"label": "pass",
"score": 4,
"reason": "Agent correctly identified the user's intent to book a flight to Paris",
"threshold": 3,
"passed": true
}
任務導航效率
任務導航效率衡量代理人是否採取了最佳的行動序列,方法是與預期序列(地面真實)比較。 使用此評估器進行工作流程優化與迴歸測試。
{
"type": "azure_ai_evaluator",
"name": "task_navigation_efficiency",
"evaluator_name": "builtin.task_navigation_efficiency",
"initialization_parameters": {
"matching_mode": "exact_match" # Options: "exact_match", "in_order_match", "any_order_match"
},
"data_mapping": {
"actions": "{{item.actions}}",
"expected_actions": "{{item.expected_actions}}"
},
}
配對模式:
| 模式 | Description |
|---|---|
exact_match |
代理人的軌跡必須完全符合真實情況(順序與內容) |
in_order_match |
所有地面真實步驟必須以正確順序出現在代理人的軌跡中(允許額外步驟) |
any_order_match |
所有地面真實步驟必須出現在代理人的軌跡中,順序無關緊要(允許額外步驟) |
動作格式:
映射為 actionsmessages 或 。expected_actions 欄位 actions 接受字串或訊息物件清單。 該 messages 欄位接受完整的互動,作為一組訊息物件的陣列。 每個動作訊息代表代理在對話中所採取的步驟:
actions = [
{
"role": "assistant",
"content": [
{"type": "function_call", "name": "call_tool_A", "arguments": "{\"param\": \"value\"}"}
]
},
{
"role": "assistant",
"content": [
{"type": "function_call", "name": "call_tool_B", "arguments": "{}"}
]
},
]
Note
actions和expected_actions欄位使用不同的格式。
actions 包含代理作為文字或訊息物件的實際行為,而 expected_actions 包含預期的工具名稱及其參數(可選性)。
若要以訊息形式提供代理互動,而非 actions,映射 messages 與 expected_actions:
"data_mapping": {
"messages": "{{item.messages}}",
"expected_actions": "{{item.expected_actions}}",
}
預期行動格式:
這 expected_actions 可以是一列簡單的預期步驟清單:
expected_actions = ["identify_tools_to_call", "call_tool_A", "call_tool_B", "response_synthesis"]
或者一個包含工具名稱和參數的元組,以便更詳細的驗證:
expected_actions = (
["func_name1", "func_name2"],
{
"func_name1": {"param_key": "param_value"},
"func_name2": {"param_key": "param_value"},
}
)
輸出:
回傳二元通過/失敗結果,加上精確度、召回率及 F1 分數:
{
"type": "azure_ai_evaluator",
"name": "task_navigation_efficiency",
"passed": true,
"details": {
"precision_score": 0.85,
"recall_score": 1.0,
"f1_score": 0.92
}
}
代理訊息結構
代理評估員在需要指令、工具呼叫及工具結果時會使用訊息陣列。 關於典型訊息結構、角色定義及範例資料,請參閱 帶有工具呼叫的訊息 及 獨立查詢與回應格式。