ai-agents-for-beginners

AI 智能代理投入生產:可觀測性與評估

AI Agents in Production

隨著 AI 智能代理從實驗性原型發展到真實世界應用,理解其行為、監控其表現並系統性地評估其輸出能力變得愈發重要。

學習目標

完成本課程後,您將能夠了解/掌握:

目標是裝備您能將「黑盒」代理轉變為透明、可管理且可靠的系統。

注意: 部署安全且可信賴的 AI 智能代理至關重要。請參考 建立可信任的 AI 代理 課程。

Traces 和 Spans

可觀測性工具如 LangfuseMicrosoft Foundry 通常將代理運行表示為 traces 和 spans。

Trace tree in Langfuse

若無可觀測性,AI 代理可能感覺像「黑盒」——其內部狀態與推理不透明,難以診斷問題或優化效能。有了可觀測性,代理變成「玻璃盒」,提供透明度,這對建立信任及確保其按預期運作至關重要。

為何可觀測性在生產環境中重要

將 AI 代理轉移到生產環境帶來全新挑戰與需求。可觀測性不再是「可有可無」,而是關鍵能力:

需追蹤的關鍵指標

要監控並理解代理行為,應追蹤多種指標與訊號。雖然具體指標依代理用途可能有所不同,但以下項目是普遍重要的。

以下是可觀測性工具最常監控的指標:

延遲時間: 代理回應速度如何?長時間等待會嚴重影響使用者體驗。您應該追蹤任務與個別步驟的延遲時間,藉由追蹤代理運行來量測。例如,若代理所有模型呼叫花費 20 秒,可嘗試使用更快速的模型或同時平行執行模型呼叫來加速。

成本: 每次代理運行花費多少?AI 代理依賴以字元計費的 LLM 呼叫或外部 API。頻繁工具使用或多次提示會快速增加成本。例如,若代理為了微幅提高品質呼叫 LLM 五次,您必須評估該成本是否合理,或是否能減少呼叫次數,或使用更便宜的模型。即時監控也能協助發現異常尖峰(如程式錯誤導致過多 API 呼叫循環)。

請求錯誤: 有多少請求失敗?這可能包含 API 錯誤或工具呼叫失敗。為提高代理在生產環境中的穩健性,您可以設置備援或重試機制。例如,當供應商 A 的 LLM 服務中斷時,切換至供應商 B 作備用。

使用者反饋: 實施直接使用者評估提供寶貴見解。這可能包括明確評分(👍好評/👎差評,⭐1-5 星)或文字評論。持續負評通常是代理不正常工作的訊號。

隱含使用者反饋: 即使無明確評分,使用者行為也提供間接反饋。例如立即改寫問題、重複查詢或點擊重試按鈕。若您發現使用者多次詢問相同問題,這同樣表示代理未正常運作。

準確性: 代理產出正確或期望結果的頻率如何?準確性定義因應用而異(例如問題解決正確度、資訊檢索精確度、使用者滿意度)。首要步驟是定義代理成功標準。準確性可透過自動檢測、評分或任務完成標註追蹤。例如將追蹤標示為「成功」或「失敗」。

自動化評估指標: 您也可以設置自動評分系統。例如使用 LLM 為代理輸出評分,判斷其是否有幫助、精確或不當。還有多個開源函式庫協助您評分代理不同面向,例如 RAGAS 用於 RAG 代理,或 LLM Guard 偵測有害語言或提示注入。

實務中,結合多個指標能最佳涵蓋 AI 代理健康狀況。在本章範例筆記本中,我們將示範這些指標在實際案例中的表現,首先讓我們了解典型的評估工作流程。

為您的代理添加監控

為了收集追蹤資料,您需要監控您的程式碼。目標是修改代理程式碼,發送可被觀測平台捕捉、處理與視覺化的追蹤資料與指標。

OpenTelemetry (OTel): OpenTelemetry 已成為 LLM 可觀測性的業界標準。它提供一組 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_idsession_idmodel_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 代理評估分為兩類:線上評估離線評估。兩者皆有價值且互補。我們通常先從離線評估開始,這是部署任何代理前最基本必要步驟。

離線評估

Dataset items in Langfuse

離線評估指在受控環境中評估代理,典型用法是使用測試資料集,而非線上使用者查詢。您使用精心策劃的資料集,知道預期輸出或正確行為,然後讓代理在其上運行。

比方說,若您建立了一個數學文字題代理,您可能有一個有 100 題已知答案的 測試資料集。離線評估通常在開發期間進行(可納入 CI/CD 流程),以檢查改進或防止退步。優點是它可重複執行,且可明確取得準確率指標,因為有標準答案。您也可以模擬使用者查詢,將代理回答與理想答案比對,或使用上述自動指標。

離線評估的主要挑戰是確保測試資料集具代表性且持續更新——代理可能在固定測試集表現良好,但在生產環境面對截然不同查詢時表現不佳。故您應持續更新資料集,新增反映實際場景的邊界案例與範例。結合少量「快速檢測」案例與較大型評估集較佳:小規模用於快速檢查,較大規模用於廣泛績效評估。

線上評估

Observability metrics overview

線上評估指在真實世界環境中評估代理,即生產環境中實際使用時的表現。線上評估涉及持續監控代理在真實使用者互動上的績效,並分析結果。

例如,您可能追蹤成功率、使用者滿意度分數或其他真實流量指標。線上評估優勢是能捕捉實驗室環境難以預料的狀況——您可以觀察模型隨時間漂移(代理效能因輸入模式變化而退化)並捕捉未列入測試資料的出乎意料查詢或情況。它提供代理野外行為的真實樣貌。

線上評估通常包含收集隱性與顯性使用者反饋(如前所述),以及可能進行影子測試或 A/B 測試(讓新版本代理與舊版並行運行以比較)。挑戰是在實時互動中取得可靠標註或分數有困難——可能需依賴使用者反饋或下游指標(如使用者是否點擊結果)。

兩者結合

線上與離線評估非此即彼,彼此高度互補。線上監控提供洞察(如代理表現不佳的新型使用者查詢),可用於增強及改進離線測試資料。反之,離線測試表現良好的代理可更有信心部署並線上監控。

許多團隊會採用循環模式:

離線評估 -> 部署 -> 線上監控 -> 收集新失敗案例 -> 新增至離線資料集 -> 優化代理 -> 重複

常見問題

部署 AI 代理到生產時,您可能面臨各種挑戰。以下列出一些常見問題及其潛在解決方案:

問題 潛在解決方案
AI 代理無法一致執行任務 - 精煉給 AI 代理的提示詞,明確目標。
- 確認在何處可將任務拆解為子任務並由多個代理處理。
AI 代理陷入持續迴圈 - 設定明確的終止條件,讓代理知道何時停止流程。
- 對需要推理與規劃的複雜任務,使用專門處理推理的大型模型。
AI 代理工具呼叫表現不佳 - 在代理系統外測試並驗證工具輸出。
- 精煉工具定義的參數、提示詞與命名。
多代理系統執行不一致 - 精煉分配給每個代理的提示詞,確保它們具體且互有區別。
- 建立層級系統,使用「路由」或控制代理決定正確代理。

很多這些問題可透過可觀測性更有效率地識別。前述的追蹤與指標有助精確定位代理工作流程中問題所在,使除錯與優化更高效。

成本管理

這裡有一些管理將 AI 代理部署到生產環境成本的策略:

使用較小的模型: 小型語言模型(SLMs)在某些具代理性的使用案例中表現良好,且能大幅降低成本。正如先前提到的,建構一套評估系統來判斷並比較其與較大模型的表現,是了解 SLM 在您的使用案例中表現的最佳方式。建議將 SLM 用於較簡單的任務,如意圖分類或參數抽取,而將較大模型保留給複雜的推理任務。

使用路由模型: 類似的策略是使用多樣化的模型與規模。您可以使用 LLM/SLM 或無伺服器函式根據複雜性將請求路由到最合適的模型。此方法不僅能降低成本,還能確保在適當的任務上保持表現。例如,將簡單查詢路由到較小且較快的模型,僅於複雜推理任務使用昂貴的大型模型。

快取回應: 識別常見請求與任務,並在它們進入您的代理系統前提供回應,是減少類似請求量的好方法。您甚至可以實作流程,利用較基礎的 AI 模型來判斷請求與快取請求的相似度。這一策略可大幅降低經常問到的問題或常用流程的成本。

讓我們看看這在實務上的運作

在本節的範例筆記本中,我們將看到如何使用可觀察性工具來監控與評估我們的代理。

對於生產環境中的 AI 代理有更多疑問嗎?

加入 Microsoft Foundry Discord,和其他學習者一起交流、參加辦公時間並獲得您關於 AI 代理的問題解答。

前一課

元認知設計模式

下一課

代理協議


免責聲明: 此文件已使用 AI 翻譯服務 Co-op Translator 進行翻譯。雖然我們努力追求準確性,但請注意自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應視為權威來源。對於關鍵資訊,建議採用專業人工翻譯。我們不對因使用此翻譯所產生的任何誤解或誤譯承擔責任。