隨著 AI 代理從實驗性原型轉向實際應用,理解其行為、監控性能及系統性評估輸出結果的能力變得重要。
完成本課程後,你將能知道/理解:
目標是使你具備將「黑盒」代理轉化為透明、可管理且可靠系統的知識。
注意:部署安全且值得信賴的 AI 代理非常重要。請參考 建構值得信賴的 AI 代理 課程。
可觀察性工具如 Langfuse 或 Microsoft Foundry 通常將代理執行表示為 traces 和 spans。
沒有可觀察性,AI 代理就像一個「黑盒」——其內部狀態與推理過程不透明,難以診斷問題或優化效能。有了可觀察性,代理成為「玻璃盒」,提供必要的透明度,有助建立信任並確保它們按預期運行。
將 AI 代理轉入生產環境帶來新的挑戰與需求。可觀察性不再是「可有可無」,而是關鍵能力:
為監控和理解代理行為,應追蹤多種指標與訊號。雖然具體指標依代理用途不同,但有些指標是普遍重要的。
以下是可觀察性工具常監測的一些指標:
延遲:代理回應速度如何?長時間等待會負面影響使用者體驗。應透過追蹤代理執行來量測任務與個別步驟的延遲。例如一個代理整體模型呼叫耗時 20 秒,可以透過更快模型或並行呼叫模型來加速。
成本:每次代理執行的花費是多少?AI 代理依賴按 token 計費的 LLM 呼叫或外部 API。頻繁使用工具或多次提示會迅速增加成本。例如,若代理為微小品質提升呼叫了 5 次 LLM,必須評估成本是否合理,或是否能減少呼叫次數或使用較便宜模型。即時監控也可幫助發現意外暴增(如錯誤導致大量 API 迴圈)。
請求錯誤:代理失敗的請求次數是多少?可能包括 API 錯誤或工具呼叫失敗。為提升代理在生產環境的魯棒性,可設定補救或重試機制。例如當 LLM 服務供應商 A 宕機時,自動切換備用 LLM 供應商 B。
用戶反饋:實施直接用戶評價帶來寶貴洞察,包含明確評分(👍讚成/👎不讚、⭐1-5 星)或文字評論。持續收到負評應提醒你,代理未達預期。
隱性用戶反饋:即使沒有明確評分,使用者行為亦提供間接反饋,如立即改寫問題、重複查詢或點擊重試按鈕。例如發現使用者反覆詢問同一問題,代表代理可能未正常運作。
準確率:代理產出正確或符合需求輸出的頻率?準確率定義多樣(如解題正確率、資訊檢索精確度、使用者滿意度)。首要是定義成功標準。可透過自動檢查、評分或任務完成標記追蹤準確率。例如將追蹤標記為「成功」或「失敗」。
自動評估指標:也可設置自動評測,例如使用大型語言模型對代理輸出評分(是否有幫助、準確等)。另有多個開源套件協助對代理不同面向評分,如用於檢索增強生成代理的 RAGAS 或用於檢測有害語言及提示注入的 LLM Guard。
實務上,結合這些指標可全面覆蓋 AI 代理狀態。本章範例筆記本將示範這些指標在真實案例中的表現,但首先我們要學習典型的評估工作流程。
為了收集追蹤資料,你需要對程式碼進行儀器化。目的是讓代理程式碼發出可被可觀察性平台捕捉、處理及視覺化的追蹤與指標。
OpenTelemetry (OTel):OpenTelemetry 已成為大型語言模型可觀察性的業界標準,提供一套用於產生、收集與匯出遙測數據的 API、SDK 與工具。
有許多儀器化套件封裝現有代理框架,方便將 OpenTelemetry spans 匯出到可觀察性工具。Microsoft Agent Framework 原生整合 OpenTelemetry。以下示範對 MAF 代理的儀器化範例:
from agent_framework.observability import get_tracer, get_meter
tracer = get_tracer()
meter = get_meter()
with tracer.start_as_current_span("agent_run"):
# 代理程式執行會自動被追蹤
pass
本章範例筆記本會示範如何儀器化你的 MAF 代理。
手動建立 Span:儀器化套件雖提供好基線,但仍有需求需蒐集更詳細或自訂資訊,故可手動建立 spans 以加入自訂的應用邏輯。更重要的是,可使用自訂屬性(又稱標籤或元數據)來豐富自動或手動建立的 spans,包含業務特定資料、中間計算結果或調試與分析協助資訊,如 user_id、session_id 或 model_version。
以下示範如何使用 Langfuse Python SDK 手動建立追蹤與 spans:
from langfuse import get_client
langfuse = get_client()
span = langfuse.start_span(name="my-span")
span.end()
可觀察性提供指標,但評估是分析這些資料(並進行測試)以判斷 AI 代理表現以及如何改進的過程。換句話說,當你擁有這些追蹤與指標後,如何利用它們來評判代理並做出決策?
定期評估重要,因為 AI 代理通常非決定性且會進化(透過更新或模型行為漂移)——沒有評估,你無法確定你的「智慧代理」是否真的表現良好或出現退步。
AI 代理評估分為兩類:線上評估與離線評估。兩者價值互補,我們通常始於離線評估,這是部署任何代理前的最低必要步驟。

指在受控環境下評估代理,通常使用測試資料集,而非線上使用者查詢。使用已知預期輸出或正確行為的策劃資料集,並在上面執行代理。
例如,若你建造解數學應用題代理,你可能會有 100 題已知答案的測試資料集。離線評估常在開發期間進行(也可納入 CI/CD 管線)以驗證改進或防止退步。優點是可重複且因有對照的真實答案而獲得清晰準確率指標。你也可以模擬使用者查詢,將代理回答與理想回答比對或使用前述的自動評估指標。
離線評估的關鍵挑戰是確保測試資料集全面且保持關聯性——代理可能在固定測試集表現良好,卻在生產中遇到截然不同的查詢。因此,應持續新增具代表性、新的邊緣案例與樣本,反映真實場景。小規模「冒煙測試」與大型評估集搭配使用較佳:小集快速檢測,大集提供廣泛性能指標。

指在真實環境(即生產環境中)使用時對代理進行評估。線上評估包含持續監控代理於真實使用者互動中的表現並分析結果。
例如,你可能追蹤成功率、用戶滿意度分數或其他即時流量指標。線上評估優勢在於能捕捉實驗室中難以預期的現象—你能觀察模型隨時間漂移(如輸入模式變化導致代理效能下降)與意外查詢或情境,這些都未包含於測試資料中。它呈現代理在真實環境中的實際行為。
線上評估經常包含收集明確與隱含的用戶反饋(見前述),可能還會進行影子測試或 A/B 測試(讓新版本代理與舊版本同時運行以比較)。挑戰是難以獲得真實交互的可靠標籤或評分——可能須依賴用戶反饋或下游指標(比如用戶是否點擊結果)。
線上和離線評估非相斥,而是高度互補。線上監控洞察(如代理表現不佳的新型使用者查詢)可用以擴充與優化離線測試資料集。反之,在離線測試表現良好的代理能更有信心地部署並在線上監控。
許多團隊採用如下循環:
離線評估 -> 部署 -> 線上監控 -> 收集新失敗案例 -> 新增離線資料集 -> 優化代理 -> 重複。
在生產部署 AI 代理時,你可能遇到各種挑戰。以下列出常見問題及可能解決方案:
| 問題 | 潛在解決方案 |
|---|---|
| AI 代理執行任務不一致 | - 精煉提供給 AI 代理的提示語,明確目標。 - 確認是否可將任務拆分並由多代理協作處理。 |
| AI 代理陷入持續迴圈 | - 確保有明確終止條件,讓代理知道何時停止流程。 - 對須推理與規畫的複雜任務,使用適合推理的大型模型。 |
| AI 代理工具呼叫表現不佳 | - 在代理系統外測試及驗證工具輸出。 - 精煉工具定義參數、提示語及命名。 |
| 多代理系統表現不一致 | - 精煉每個代理的提示語,確保彼此區分明確。 - 構建層級系統,利用「路由」或控制器代理決定正確代理。 |
許多問題在具備可觀察性後能更有效識別。前述的追蹤與指標有助精確定位代理流程中問題所在,提升除錯與優化效率。
以下是一些管理將 AI 代理部署到生產環境成本的策略:
使用較小的模型: 小型語言模型(SLM)在某些具代理性的用例中表現良好,且能顯著降低成本。如前所述,建立一個評估系統以判斷並比較其相較於較大型模型的性能,是理解 SLM 在您的用例中表現如何的最佳方法。考慮將 SLM 用於較簡單的任務,如意圖分類或參數提取,同時為複雜推理保留較大型模型。
使用路由模型: 類似的策略是使用多樣化的模型與尺寸。您可以使用 LLM/SLM 或無伺服器函數,根據複雜度將請求路由至最適合的模型。這也能幫助降低成本,同時確保在正確任務上達到良好效能。例如,將簡單查詢路由至較小且較快的模型,只為複雜推理任務使用昂貴的大型模型。
快取回應: 識別常見的請求與任務,並在其經過您的代理系統之前提供回應,是降低類似請求量的好方法。您甚至可以實作流程來用更基礎的 AI 模型判斷請求與快取請求的相似度。此策略可大幅降低常見問答或常用工作流程的成本。
在本節的示例筆記本中,我們將看到如何使用可觀察性工具來監控和評估我們的代理。
加入 Microsoft Foundry Discord,與其他學習者交流,參加辦公時間並獲得您的 AI 代理問題解答。
免責聲明: 本文件由 AI 翻譯服務 Co-op Translator 翻譯而成。雖然我們致力於確保準確性,但請注意,機器自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於重要資訊,建議進行專業人工翻譯。我們不對因使用本翻譯而產生的任何誤解或誤釋承擔責任。