隨著 AI 代理從實驗性原型轉向現實世界的應用,理解其行為、監控其效能並系統化評估其輸出變得十分重要。
完成本課程後,你將知道如何/理解:
目標是讓你具備將「黑盒」代理轉變成透明、可管理且可靠系統的知識。
注意: 部署安全且值得信賴的 AI 代理非常重要。請參考同時也很重要的 建立值得信賴的 AI 代理 課程。
可觀察性工具,例如 Langfuse 或 Microsoft Foundry,通常將代理的執行表示為追蹤與跨度。
沒有可觀察性,AI 代理如同「黑盒子」—其內部狀態與推理不透明,難以診斷問題或優化效能。有了可觀察性,代理就成為「玻璃盒子」,提供透明度,對建立信任及確保其按預期運作至關重要。
將 AI 代理轉移至生產環境帶來一系列新的挑戰與需求。可觀察性已不再是「可有可無」,而是關鍵能力:
為監控與理解代理行為,應追蹤多種指標和信號。雖然具體指標會因代理目的而異,但以下幾項具備普遍重要性。
以下是可觀察性工具常監控的指標:
延遲 (Latency): 代理回應速度如何?長時間等待會負面影響使用者體驗。你應該透過追蹤代理執行來測量任務與各單步驟的延遲。例如,若代理所有模型呼叫總共花 20 秒,可以透過使用更快的模型或平行執行模型呼叫來加速。
成本 (Costs): 每次代理執行花費多少?AI 代理依賴按字元計費的 LLM 呼叫或外部 API,頻繁使用工具或多次提示會迅速增加支出。舉例來說,如果代理為了微小的品質提升呼叫 LLM 五次,你必須評估成本是否合理,或可否減少呼叫次數或改用較便宜模型。即時監控也能幫助識別異常激增(例如錯誤導致的過度 API 迴圈)。
請求錯誤 (Request Errors): 代理有多少請求失敗?這包括 API 錯誤或工具調用失敗。為使代理在生產時更健壯,你可以設置備援或重試策略。例如,若 LLM 服務提供者 A 宕機,就切換到 LLM 服務提供者 B 當備援。
使用者反饋 (User Feedback): 實施直接用戶評估可提供寶貴資訊,可包括明確評分(👍讚/👎踩、⭐1-5 星)或文字評論。持續負面反饋應警示你,表示代理表現不如預期。
隱含使用者反饋 (Implicit User Feedback): 即使無明確評分,用戶行為仍提供間接反饋,包括立即重新提問、反覆查詢或點擊重試按鈕。舉例來說,若發現用戶反覆問同一問題,這是代理表現異常的訊號。
準確度 (Accuracy): 代理產出正確或理想結果的頻率。準確度定義視情況而異(例如解題正確性、資訊檢索準確率、用戶滿意度)。首步是定義代理成功的標準。你可以透過自動檢查、評分或任務完成標示來追蹤準確度。例如,將追蹤標記為「成功」或「失敗」。
自動評估指標 (Automated Evaluation Metrics): 你也可以設定自動評估,例如用 LLM 為代理輸出打分判定其有用性、準確度等。市面上也有多個開源函式庫可協助評分代理的不同面向,如針對 RAG 代理的 RAGAS,或用於偵測有害語言或提示注入的 LLM Guard。
實務中,結合多項指標才能全面覆蓋 AI 代理健康狀態。本章的 範例筆記本 將展示這些指標在真實範例中的樣貌,但首先我們會了解典型的評估工作流程。
為收集追蹤資料,你需要為程式碼加上監控埋點。目標是讓代理程式碼產生追蹤與指標,這些資料可被可觀察性平台捕獲、處理與視覺化。
OpenTelemetry (OTel): OpenTelemetry 已成為大型語言模型監控的產業標準。它提供一套 API、SDK 及工具,用於生成、收集和匯出遙測資料。
有許多監控庫包裝現有代理框架,並輕鬆將 OpenTelemetry 跨度匯出至可觀察性工具。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"):
# Agent execution is traced automatically
pass
本章的 範例筆記本 會示範如何為你的 MAF 代理添加監控埋點。
手動建立跨度: 雖然監控庫提供基礎,但有時需要更詳細或自訂資訊。你可手動建立跨度,添加自訂應用邏輯。更重要的是,你能以自訂屬性(也稱標籤或元資料)豐富自動或手動建立的跨度。這些屬性可包含業務特定資料、中間計算或任何對除錯或分析可能有用的上下文,例如 user_id、session_id 或 model_version。
使用 Langfuse Python SDK 手動建立追蹤與跨度的範例:
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 代理部署到生產成本的一些策略:
使用更小的模型: 小型語言模型(SLMs)在某些智能代理的使用案例中表現良好,並且能顯著降低成本。如前所述,建立一個評估系統來判定並比較與大型模型的表現,是了解SLM在您的使用場景中表現如何的最佳方法。考慮將SLM用於較簡單的任務,如意圖分類或參數提取,同時保留大型模型用於複雜推理。
使用路由模型: 類似的策略是使用多樣的模型和尺寸。您可以使用LLM/SLM或無服務函式根據複雜程度將請求路由至最合適的模型。這也有助於降低成本,同時確保在正確的任務上有良好的表現。例如,將簡單查詢路由給較小且較快的模型,只有在複雜推理任務上才使用昂貴的大型模型。
快取回應: 識別常見請求和任務並在它們經過您的智能代理系統之前提供回應,是減少類似請求量的好方法。您甚至可以實作一個流程,使用較基本的AI模型來判斷請求與快取請求的相似度。這種策略能顯著降低頻繁詢問的問題或常見工作流程的成本。
在本節的範例筆記本中,我們將看到如何使用可觀測性工具來監控並評估我們的智能代理。
加入Microsoft Foundry Discord,與其他學習者交流,參加辦公時間,並解答您的AI代理相關問題。
免責聲明: 本文件使用 AI 翻譯服務 Co-op Translator 進行翻譯。雖然我們力求準確,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於重要資訊,建議尋求專業人工翻譯。我們不對因使用本翻譯而引起的任何誤解或曲解承擔責任。