iT邦幫忙

2025 iThome 鐵人賽

DAY 16
0
生成式 AI

AI Agent 開發養成記:做出屬於自己的Agent P系列 第 16

[Day 16] 多工具 與 錯誤處理設計

  • 分享至 

  • xImage
  •  

前言

在 Agent 實作裡,你一定會遇到兩個很現實的挑戰:

  1. 如何讓 Agent 在多個工具中,正確選擇要用哪一個?
  2. 當工具出錯(例如 API 掛掉、超時),怎麼處理才不會讓使用者體驗崩壞?

話不多說,我們直接進入今天的內容 (ง •̀_•́)ง


為什麼需要多工具與路由?

一個實用的 Agent,絕對不會只靠「一把螺絲起子」。
舉個例子,它可能同時具備:

  • 天氣查詢 API
  • 股票報價服務
  • 文件搜尋工具
  • 數學計算模組

如果沒有路由機制,Agent 可能會亂槍打鳥,或者乾脆「想像」一個答案出來。
因此,我們需要 意圖識別 (Intent Recognition) + 工具路由 (Routing)

  1. 辨識使用者想做什麼
  2. 自動挑選最合適的工具
  3. 執行並回傳結果

這樣,Agent 就能做到「聽得懂 → 選得對 → 回得準」✨。


在 Prompt 中定義多個工具

想要讓 LLM 正確使用工具,關鍵就是 清楚的工具說明
常見做法是:

  • 在 Prompt 裡列出工具清單:名稱、功能、使用情境
  • 指定輸入/輸出的結構化格式(例如 JSON)
  • 引導模型先判斷意圖,再決定是否呼叫工具

範例:

你可以使用以下工具:
1. get_weather(city):查詢天氣
2. get_stock_price(symbol):查詢股價
3. calculator(expression):數學計算

請先判斷使用者意圖,若需要工具則輸出 JSON:
{"intent": "weather", "tool": "get_weather", "args": {"city": "Taipei"}}

這樣設計的好處是:模型能明白 工具的邊界,避免濫用或亂叫。


意圖識別與路由設計

在實務中,意圖判斷最好不要全靠 LLM。比較穩健的做法是 規則 + 模型混合

  • 規則匹配 → 常見、明確的輸入(例如「今天天氣」)直接用規則判斷
  • 模型判斷 → 多樣化、模糊的輸入交給 LLM 來識別

另外還要考慮:

  • 不確定性處理:模型信心不足時,要求使用者澄清
  • 回退機制:若無法判斷,回退到「通用回答」或交給人工
  • 持續優化:收集錯誤分類的輸入,更新規則與訓練資料

這樣的路由設計才能兼顧 高效 + 精準


工具錯誤處理策略

就算路由判斷正確,工具還是有可能「出錯」:

  • API timeout
  • 伺服器錯誤 (502, 503)
  • 工具回傳格式異常

這時候,系統不能直接「爆掉」,而是要:

  1. 自動重試 → 對暫時性錯誤使用 指數退避 (exponential backoff)
  2. 錯誤分流 → 根據錯誤類型,決定是「重試 / 跳過 / 換備援方案」
  3. 超時保護 → 設定 API timeout,避免整個 Agent 卡死

這些做法能確保即使單一工具掛掉,系統也能「活下來」。


友善的錯誤提示設計

錯誤處理做好了,但還得顧及 使用者體驗

  • 清楚又人性化 → 「目前天氣服務暫時無法使用,請稍後再試」
  • 提供行動建議 → 「要不要我幫你改查明天的天氣?」
  • 保持一致風格 → 錯誤訊息不要太冰冷,語氣要和整體互動一致

這樣能把「失敗」變成「可理解的等待」,而不是讓人直接放棄使用。


優雅降級 (Graceful Degradation)

最後一個重點:不要讓整個 Agent 因為一個工具掛掉而全面崩潰
常見策略:

  • 使用 簡化功能(例如,無法即時查股價,就提供昨日收盤價)
  • 提供 替代回覆(例如,建議使用者改用其他查詢方式)
  • 告知狀態(「目前僅能提供基本資訊」),避免使用者以為 Agent 壞掉

目標很單純:就算部分功能失效,整體體驗仍然可用


Prompt 設計策略

在設計 Agent 的時候,除了「工具選擇」與「錯誤處理」,其實 Prompt 本身的寫法 也會大幅影響穩定性與體驗。常見的有兩種路線:

1. 技術框架型 Prompt

這類寫法會在系統層面定義:角色、職責、工具邊界、安全限制。

  • 優點:結構清晰、可複用,能降低幻覺與錯誤;適合需要高穩定性、敏感資訊的任務。
  • 缺點:較缺乏人味,互動偏生硬,不適合純聊天或娛樂場景。
  • 適合場景:後端服務、客服系統、數據分析。

2. 人格設定型 Prompt

這類方式會賦予 Agent 一個 persona(背景、風格、口頭禪),讓互動更有情感與品牌特色。

  • 優點:能建立獨特風格與信任感,對長期互動更友好。
  • 缺點:較少處理技術限制,仍有幻覺與安全風險。
  • 適合場景:教育助理、生活陪伴、創意內容生成。

最佳做法:兩者結合

最穩妥的設計是:

  • 底層(系統層) → 用「技術框架型」定義安全邊界、工具邏輯
  • 對話(互動層) → 用「人格設定型」塑造語氣、情感與體驗

這樣,你的 Agent 才能同時兼具 專業的「大腦」溫暖的「靈魂」


小結

今天我們把兩個關鍵主題放在一起:

  • 多工具路由 → 幫助 Agent 正確判斷意圖並選擇工具
  • 錯誤處理設計 → 在工具出錯時,依然能維持流暢、友善的使用者體驗

這就像打造一台飛機:
路由系統 是導航,讓飛機飛對方向;
錯誤處理 是保護機制,確保就算一個引擎熄火,飛機也能安全降落。


結尾廢話

寫 Agent 不怕它笨,怕的是它一旦出錯就「死當」。
只要做好 路由 + 錯誤處理,你的 Agent 就能又聰明、又可靠,真正能「上線服務」而不是只能「實驗室展示」。

Prompt 並沒有固定格式,我通常都是依照功能需求去寫。
這幾篇看下來,你應該對 Prompt 已經超熟悉了吧?在座的各位都是 Prompt 大師啦 (๑•̀ㅂ•́)و✧

今天就先到這裡,我們下一篇見~(´∀`)♡
reference link


上一篇
[Day 15] 優化 Prompt 指令 - 角色扮演設計
下一篇
[Day 17] 簡易個人化天氣助理(上)
系列文
AI Agent 開發養成記:做出屬於自己的Agent P21
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言