Buy Me a Coffee

探索 AI Agent 的九種設計模式及其應用

隨著大語言模型逐漸成熟並展現出越來越強大的能力,如何更有效地利用這些模型來解決實際問題也變得越來越重要。這就催生了各種 AI Agent 設計模式的出現。透過將人類思維模式以結構化的提示詞進行建模,AI Agent 能夠更有效地利用大語言模型的能力來執行任務、規劃流程、進行推理等。本文將介紹九種常見的 AI Agent 設計模式,並分析每種模式的原理及適用場景。

1. ReAct 模式

ReAct 模式是最早提出的 AI Agent 設計模式之一,發表於 2022 年 10 月。它的核心思想是在提示詞中融入 Action -> Observation 的循環,讓大語言模型能夠學會連續性地採取行動並觀察結果,而非僅僅單次執行任務。

例如,要讓大語言模型幫忙在廚房中找到胡椒粉,我們可以用以下提示詞:

Question: 請幫我在廚房中找到胡椒粉。

Thought: 我應該按以下步驟來尋找胡椒粉:
1. 先查看台面上是否有胡椒粉。
Action: 查看台面上是否有胡椒粉。
Observation: 台面上沒有胡椒粉。
2. 查看灶台下方的抽屜。
Action: 打開灶台下方的抽屜,查看是否有胡椒粉。
Observation: 抽屜裡有一瓶胡椒粉!
3. 把胡椒粉取出來。 
Action: 取出抽屜裡的胡椒粉瓶。
Observation: 任務完成!

Result: 經過三個步驟的尋找,我最終在灶台下方的抽屜裡找到了胡椒粉。

透過 Action -> Observation 的循環,大語言模型能夠模擬出連續性的行動與結果觀察,從而更好地解決實際問題。ReAct 模式適用於相對簡單且步驟明確的任務場景。

2. Plan & Solve 模式

Plan & Solve 模式主要用於解決複雜的多步驟任務。它將整個任務拆解為規劃(Planning)和執行(Solving)兩個階段。

在規劃階段,大語言模型需要根據問題的描述生成一個多步驟的解決方案。而在執行階段,大語言模型將按照規劃的步驟逐一執行,並根據每一步的輸出來調整後續的執行計劃。

一個常見的提示詞範例如下:

Question: 我要如何製作西紅柿炒蛋?

Planner:
1. 準備食材:西紅柿、雞蛋、鹽、黑胡椒、植物油。
2. 將西紅柿切成小塊。
3. 將雞蛋打散,加入適量鹽和黑胡椒。
4. 鍋中注入一些植物油,燒熱。
5. 將切好的西紅柿下鍋翻炒。
6. 將打散的雞蛋倒入鍋中,用鍋鏟攪拌至蛋液凝固成絲狀。
7. 調味後即可盛盤上桌。

Replanner: 冰箱裡沒有西紅柿,我需要先去超市購買。
Updated Plan: 
1. 去超市購買西紅柿。
2. 準備其他食材:雞蛋、鹽、黑胡椒、植物油。
...

Executor: 
1. 根據提供的步驟執行。
2. 如遇阻礙報告後由 Replanner 更新計劃。

Plan & Solve 模式適用於複雜的多步驟任務,特別是可能需要根據實際情況調整計劃的場景。通過規劃和執行的分離,大語言模型能夠更清晰地組織任務流程,提高解決問題的能力。

3. Reason without Observation (REWOO) 模式

REWOO 模式在 ReAct 模式的基礎上進行了改進,它去除了 Observation 環節,而是將觀察結果隱式地融入到下一步的執行中。這種方式可以簡化提示詞的結構,減少大語言模型的負擔。

例如,要完成辦理某項證件的任務,提示詞可以如下:

Question: 我需要辦理一份新的身份證,請列出具體步驟。

Thought Process:
1. 首先需要準備以下材料:舊身份證、兩張一吋彩色照片、戶口名簿。
Plan: 收集所需材料: 舊身份證、兩張一吋彩色照片、戶口名簿。

2. 攜帶以上材料前往戶政事務所。
Plan: 前往戶政事務所,攜帶舊身份證、照片及戶口名簿。

3. 在戶政事務所填寫申請表並提交材料。
Plan: 填寫身份證申請表,提交所有材料。

4. 等待審核並領取新身份證。
Plan: 等候審核,領取新身份證。

Result: 按照上述步驟,我們可以完成新身份證的辦理。

在這個例子中,每一個 Plan 環節實際上隱含了對上一步結果的觀察。REWOO 模式通過省略 Observation,使得提示詞更加簡潔明了。同時,它也更貼近人類的思考方式。

好的,我將繼續介紹其他幾種 AI Agent 設計模式:

4. LLM Compiler 模式

LLM Compiler 模式的核心思想是通過並行調用多個功能(Function Calling)來提高大語言模型的運行效率。它適用於需要從多個數據源獲取信息的複雜任務場景。

例如,當被問及"張藝謀和吳京相差幾歲"時,LLM Compiler 可以同時查詢兩人的出生年份,最後將結果合併計算兩人年齡差即可。

提示詞範例:

Question: 張藝謀和吳京相差幾歲?

Thought Process: 
要回答這個問題,我們需要知道張藝謀和吳京的出生年份,再將兩個年份相減即可得到年齡差。

Plan:
1. 查詢張藝謀的出生年份
2. 查詢吳京的出生年份 
3. 計算兩個年份之差

執行步驟 1 和 2 並行:
張藝謀出生年份: 1950年
吳京出生年份: 1976年

最終結果: 1976 - 1950 = 26 (歲)

Result: 張藝謀和吳京的年齡相差26歲。

透過並行查詢關鍵信息,LLM Compiler 能夠顯著提升處理效率,特別適用於需要從多個數據源獲取信息的複雜任務場景。

5. Basic Reflection 模式

Basic Reflection 模式借鑒了人類學習的"修正反饋迭代"過程。它由一個 Generator 和一個 Reflector 組成,前者負責生成初步結果,後者則對結果進行反饋修正,兩者在多輪迭代中不斷優化結果。

例如,讓大語言模型撰寫一篇關於"AI 倫理"的文章初稿。提示詞可以是:

Topic: AI倫理

Generator:
人工智能技術的快速發展給社會帶來了巨大的影響和挑戰,也引發了廣泛的倫理討論...(以下省略)

Reflector: 
你的這篇文章開門見山,直接切入主題,行文流暢。不過可以考慮在開頭部分引入一些背景資訊,讓讀者更好地理解AI倫理的重要性。同時在論述AI倫理挑戰時,可以舉一兩個具體案例,以加深讀者印象。

Generator (Updated):
人工智能已經在許多領域獲得了廣泛應用,給人類社會帶來了極大便利...(略)

比如在司法領域,一些地區已經開始利用AI系統進行量刑判決,但由於訓練數據的偏差和不完善,這些AI系統可能會對某些族裔或階層的被告產生不公平判決...(略)

因此,我們亟需建立完善的AI管理機制和倫理規範,來規避潛在風險,真正讓AI為人類社會創造可持續的價值。

Reflector:
很好,背景引入得當,案例分析恰當。不過建議可以在結尾部分提出一些具體的AI倫理原則和管理措施建議。

Generator(Final): ...

通過反復迭代,Generator 和 Reflector 最終得到一篇質量較高的文章。Basic Reflection 模式可以應用於撰寫、設計、規劃等任何需要反復優化的任務場景。

6. 其他模式

除了上述五種模式外,還有一些其他具有代表性的 AI Agent 設計模式,包括:

  • Reflexion: 在 Basic Reflection 的基礎上,引入外部數據和評估機制,使反饋更具建設性。
  • Language Agent Tree Search (LATS): 融合了樹搜索、強化學習等多種策略,是一種更為複雜的混合模式。
  • Self-Discover: 從更細粒度層面對任務本身進行反思和自我修正。
  • Storm: 專門用於從頭構建類似維基百科的長文章或知識庫。

AI Agent 設計模式還在不斷豐富和發展中,每種模式都有其獨特的適用場景,選擇時需要結合實際需求和任務特點。

參考文章:https://zhuanlan.zhihu.com/p/692971105
https://github.com/samwit/langchain-tutorials/tree/main/agents