Skip to content

Agentic Design Patterns 常見問題

davidlei

1. 什麼是「Agentic 設計模式」?

Agentic 設計模式是一種可重複使用的高層次解法,用來應對打造智慧自主系統(也就是 Agent)時常遇到的問題。這些模式為設計 Agent 的行為提供一套結構化的框架,就像軟體設計模式對傳統程式設計所扮演的角色一樣。它們幫助開發者做出更穩健、更可預測、也更有效的 AI Agent。

2. 這本書的主要目標是什麼?

這本書的目標是提供一份實用、可動手做的入門指南,教你設計與打造 Agentic 系統。它不停留在理論探討,而是提供具體的架構藍圖,讓開發者能用來做出可靠地展現複雜、目標導向行為的 Agent。

3. 這本書寫給誰看?

這本書寫給正在用大型語言模型(LLM)與其他 AI 元件打造應用的 AI 開發者、軟體工程師與系統架構師。它適合那些想從簡單的「提示─回應」互動,跨足到打造複雜自主 Agent 的人。

4. 書中討論了哪些關鍵的 Agentic 模式?

根據目錄,這本書涵蓋幾種關鍵模式,包括:

5. 為什麼「規劃」是很重要的模式

規劃之所以關鍵,是因為它讓 Agent 能處理那些無法靠單一動作解決的複雜多步驟任務。透過制定計畫,Agent 能維持一致的策略、追蹤自己的進度,並以有條理的方式處理錯誤或意外的阻礙。這能避免 Agent「卡住」或偏離使用者最終的目標。

6. 對 Agent 來說,「工具」和「技能」有什麼差別

這兩個詞經常被交替使用,但「工具(tool)」一般指的是 Agent 可以呼叫的外部資源(例如天氣 API、計算機)。「技能(skill)」則是 Agent 學會的、更整合的能力,通常會把工具使用和內部推理結合起來,去完成某個特定功能(例如「訂機票」這項技能,可能會用到行事曆和航空公司的 API)。

7. 「Reflection」模式如何提升 Agent 的表現

Reflection 是一種自我修正的機制。在產生回應或完成任務之後,可以引導 Agent 回頭檢視自己的成果、檢查錯誤、依據某些標準評估品質,或思考別的做法。這種反覆打磨的過程,能幫 Agent 產出更準確、更切題、品質更高的結果。

8. Reflection 模式的核心概念是什麼

Reflection 模式讓 Agent 能退一步、批判自己的成果。它不是一口氣產出最終結果,而是先寫出一份草稿,再對草稿「反思」,找出缺陷、缺漏的資訊或可以改進的地方。這個自我修正的過程,是提升回應品質與準確度的關鍵。

9. 為什麼單純的「提示鏈」不足以產出高品質的結果?

單純的提示鏈(Prompt Chaining,把一個 Prompt 的輸出當成下一個 Prompt 的輸入)往往太過陽春。模型可能只是把先前的輸出換句話說,並沒有真正改進它。真正的 Reflection 模式需要更有結構的批判,引導 Agent 依據特定標準分析自己的成果、檢查邏輯錯誤,或查證事實。

10. 本章提到的兩種主要反思類型是什麼?

本章討論兩種主要的反思形式:

11. 反思如何幫助減少「幻覺」?

引導 Agent 檢視自己的成果,特別是把它的陳述拿去跟已知的來源比對、或檢查自己的推理步驟,Reflection 模式能大幅降低幻覺(憑空捏造事實)發生的機率。這麼做會迫使 Agent 更貼緊給定的上下文,比較不會生出沒有根據的資訊。

12. Reflection 模式可以套用不只一次嗎?

可以,反思本身就可以是個反覆的過程。可以讓 Agent 對自己的成果反思很多次,每一輪都把輸出再修得更好一點。這對複雜任務特別有用,因為第一次或第二次的成果可能還藏著細微的錯誤,或還有很大的改進空間。

13. 在 AI Agent 的脈絡下,Planning 模式是什麼?

Planning 模式是讓 Agent 能把一個複雜的高層次目標,拆解成一連串較小、可執行的步驟。Agent 不是一次就想解決一個大問題,而是先擬出一份「計畫」,再逐步執行計畫裡的每一步,這是可靠得多的做法。

14. 為什麼複雜任務需要規劃?

LLM 在處理需要多個步驟、或步驟之間有依賴關係的任務時,可能會力不從心。沒有計畫的話,Agent 可能會搞丟整體目標、漏掉關鍵步驟,或沒能把前一步的輸出當成下一步的輸入。計畫提供了一份清楚的路線圖,確保原始請求的所有要求都能按邏輯順序被滿足。

15. 實作 Planning 模式常見的做法是什麼?

一種常見的做法是先讓 Agent 用結構化的格式(例如 JSON 陣列或編號清單)產出一份步驟列表。系統接著逐一走過這份列表,一步一步執行,再把結果回饋給 Agent,好讓它決定下一個動作。

16. Agent 執行過程中如何處理錯誤或變化?

一個穩健的規劃模式允許動態調整。如果某一步失敗、或情況有變,可以引導 Agent 從當下的狀態「重新規劃」。它能分析錯誤、修改剩下的步驟,甚至新增步驟來克服障礙。

17. 使用者看得到計畫嗎?

這是一個設計上的選擇。很多情況下,先把計畫拿給使用者看、讓他批准,是很好的做法。這也呼應了「Human-in-the-Loop」模式,讓使用者在 Agent 提議的動作被執行前,對這些動作有透明度與掌控權。

18. 「Tool Use」模式包含什麼?

Tool Use 模式讓 Agent 能透過跟外部軟體或 API 互動,來擴充自己的能力。因為 LLM 的知識是靜態的、也沒辦法自己在真實世界裡採取行動,工具讓它得以取得即時資訊(例如 Google 搜尋)、專有資料(例如某家公司的資料庫),或執行動作(例如寄一封 email、訂一場會議)。

19. Agent 如何決定要用哪個工具?

通常會給 Agent 一份可用工具的清單,並附上每個工具的功能說明與所需參數。當它碰到光靠內部知識無法處理的請求時,Agent 的推理能力會讓它從清單裡挑出最合適的工具來完成任務。

20. 這裡提到的「ReAct」(Reason and Act,推理與行動)框架是什麼?

ReAct 是一個很受歡迎、把推理與行動整合在一起的框架。Agent 會依循一個循環:Thought(思考)(推理自己需要做什麼)、Action(行動)(決定用哪個工具、輸入什麼),以及 Observation(觀察)(看工具回傳的結果)。這個循環會一直進行,直到蒐集到足夠的資訊來滿足使用者的請求。

21. 實作工具使用有哪些挑戰?

主要的挑戰包括:

22. 什麼是 Human-in-the-Loop(HITL)模式?

HITL 是一種把人的監督與互動整合進 Agent 工作流程的模式。Agent 不是完全自主運作,而是在關鍵節點暫停下來,尋求人的回饋、批准、澄清或指示。

23. 為什麼 HITL 對 Agentic 系統很重要?

有幾個關鍵原因:

24. 工作流程中哪些環節該讓人介入?

常見的人為介入時機包括:

25. 一直讓人介入不是很沒效率嗎?

的確可能會,所以關鍵在於拿捏適當的平衡。HITL 應該部署在關鍵的檢查點,而不是每一個動作都要。目標是在人與 Agent 之間建立一種協作的夥伴關係,由 Agent 承擔大部分工作,人則提供策略層面的指引。

26. 什麼是 Multi-Agent Collaboration 模式?

這個模式是打造一個由多個各有專長的 Agent 組成的系統,讓它們一起達成共同目標。與其讓一個「通才」Agent 什麼都攬,不如組一支「專才」Agent 團隊,每個成員各有特定的角色或專長。

27. 多 Agent 系統有什麼好處?

28. 多 Agent 系統常見的架構是什麼?

一種常見的架構會有一個 Orchestrator Agent(協調者 Agent)(有時稱為「管理者」或「指揮」)。協調者掌握整體目標,把它拆解開來,再把子任務分派給合適的專才 Agent。接著它收集各個專才的成果,整合成最終的輸出。

Agent 之間如何互相溝通?

溝通通常由協調者來管理。舉例來說,協調者可能會把「研究員」Agent 的輸出,當成上下文傳給「寫手」Agent。另一種常見的溝通方式,是設一個共享的「便條紙(scratchpad)」或訊息匯流排(message bus),讓各個 Agent 把自己的發現貼上去。

為什麼評估 Agent 比評估傳統軟體程式更難?

傳統軟體有確定性的輸出(同樣的輸入永遠得到同樣的輸出)。Agent,尤其是用 LLM 的那些,是非確定性的,而且它們的表現往往帶有主觀成分。要評估它們,得判斷輸出的品質相關性,而不只是它在技術上是不是「正確」。

有哪些常見的方法可以評估 Agent 的表現?

書中提出幾種方法:

什麼是「Agent 軌跡(agent trajectory)」?

Agent 軌跡是 Agent 執行任務時所有步驟的完整記錄,包含它全部的思考、行動(工具呼叫)與觀察。分析這些軌跡,是除錯與理解 Agent 行為的重要一環。

對一個非確定性的系統,要怎麼做出可靠的測試?

雖然你沒辦法保證 Agent 輸出的確切用字,但可以做一些檢查關鍵要素的測試。舉例來說,你可以寫一個測試,驗證 Agent 的最終回應有沒有包含某些特定資訊,或它有沒有用正確的參數成功呼叫某個工具。這通常是在一個專門的測試環境裡,用模擬工具(mock tool)來完成。

幫 Agent 寫 Prompt,跟寫一個簡單的 ChatGPT Prompt 有什麼不同?

幫 Agent 寫 Prompt,要打造一份詳細的「系統提示(system prompt)」或說一部運作章程,當作它的操作說明。這遠不只是單一句使用者的提問;它會界定 Agent 的角色、可用的工具、該遵循的模式(例如 ReAct 或 Planning)、它的限制,以及它的性格。

一個好的 Agent 系統提示,關鍵組成有哪些?

一份好的系統提示通常包含:

什麼是「提示洩漏(prompt leakage)」?

提示洩漏是指系統提示的某些部分(例如工具定義或內部指令),不小心出現在 Agent 給使用者的最終回應裡。這會讓使用者摸不著頭緒,也會暴露底層的實作細節。像是把推理用的 Prompt 和產生最終答案用的 Prompt 分開之類的技巧,有助於防止這種情況。

Agentic 系統未來有哪些趨勢?

書中指出未來會走向:

Edit this post
Next
Day 15:如果是我會怎麼寫一個 agent framework