AI 智能體 ReAct 架構設計模式剖析 原創 精華
構建 AI 智能體的過程,已經被像 LangChain、Spring AI Alibaba 等開發框架大大簡化了,然后這些框架往往隱藏了驅動 AI 智能體運行的底層邏輯,比如:ReAct(Reasoning and Acting),讓大模型(LLM)思考問題,并使用工具對任務采取行動。但很多時候,僅依賴預包裝的庫而不了解它們的內部工作原理,可能會導致困惑。

下面的例子就展示了 AI 智能體在產生回應之前,會經歷一系列的思考活動。

在本文中,我們將通過深入剖析 ReAct 架構設計模式,來揭開這個過程的神秘面紗,從而我們獲得了對 AI 智能體行為的完全控制,使其更容易進行優化和故障排除。

一、ReAct 架構設計剖析
1、ReAct 架構設計模式描述
ReAct(即推理和行動)是一種 AI 智能體的架構設計范式,AI 智能體使用鏈式推理和工具使用行動來綜合運用。
與其一步到位地生成直接答案,ReAct 智能體會逐步思考,并且可以在最終確定答案之前執行中間行動(比如:查找某件事或計算一個值)。

為了更清楚地了解這一點,讓我們來思考一下 ReAct 架構設計模式是如何工作的。
2、ReAct 示例描述
考慮在一個多智能體系統中構建的一個 AI 智能體的輸出:

在上面的例子中,我們看到了一個使用 ReAct 范式執行任務的新聞報道 AI 智能體的實時追蹤。該 AI 智能體被要求創建一個與“Agent2Agent協議”相關的新聞標題。然而,它并沒有急于下結論,而是如其結構化的追蹤所示,逐步推理。
接下來我們拆解一下:

- AI 智能體角色:新聞報道者--這個 AI 智能體專門負責策劃和驗證新聞內容。
- Task:該 AI 智能體被指示生成一個新聞標題,并確保它與Agent2Agent協議相關。
- Thought:該 AI 智能體首先內部推理,它應該通過快速搜索關于該協議的最新更新來驗證信息。這是 ReAct 周期中的推理部分。
- Action:它接著使用一個標記為“搜索互聯網”的工具,傳遞一個結構化的 JSON 輸入,查詢內容為:“Agent2Agent 協議新聞 2023年11月”。這是 AI 智能體利用外部工具收集現實世界數據的行動步驟。

- Tool Output:它包含了搜索工具檢索到的結果--可能是新聞片段、文章摘要或相關網址。 這展示了將結構化思考和外部行動結合起來的力量:AI 智能體不僅僅依賴大模型的內部知識,而是通過工具進行事實核查。
這是一個例子,說明了 ReAct 模式是如何鼓勵 AI 智能體行為的透明性、準確性和可驗證性:對于那些需要處理真實世界信息的系統來說,這可是非常重要。
你可以想象,在多智能體系統中進一步擴展這個架構設計模式:一個新聞收集者收集原始信息,一個事實驗證者檢查可靠性,而這個新聞報道者構建標題,所有這些都通過推理和基于工具的行動進行異步協調。
3、為什么 ReAct 如此重要?
ReAct 被引入作為一個重大步驟,使基于 LLM 的 AI 智能體更加可靠和強大。
通過讓大模型解釋其思考過程并通過工具核實事實,我們減少了幻覺和錯誤傳播等問題。
Yao 等人最初的 ReAct 研究表明,這種方法可以通過讓大模型檢索真實信息(比如:查詢維基百科)來核實其事實,從而克服問答中的幻覺。

它還提高了 AI 智能體決策過程的透明度,因為我們可以檢查推理鏈以進行調試或評估可信度。
總體而言,ReAct 架構設計模式將一個被動的 LLM 變成了一個積極的問題解決者,它可以分解復雜任務并與外部數據源互動,就像一個自主助手一樣。
這也解釋了為什么它幾乎在所有的 AI 智能體框架中都被廣泛使用。實際實現可能會有所不同,但一切都與 ReAct 架構設計模式衍生出來的東西有關。
ReAct 工作流程如下:
- 命令 LLM 逐步操作,
- 清晰地將思考與行動分開,
- 確保工具的確定性輸入輸出行為,
- 并產生可檢查或調試的可追溯推理鏈。
二、推理 + 行動:ReAct 智能體的工作原理
ReAct 智能體在一個思考→行動→觀察的循環中運行,直到它找到解決方案或最終答案為止。

這類似于人類解決問題的方式:
我們思考要做什么,執行一個行動(比如:查找某件事或進行計算), 觀察結果,然后將其納入我們的下一個思考中。
ReAct 框架使用提示詞工程來強制執行這種結構化的方法,交替大模型的思考和行動/觀察。
下面是一個 AI 智能體中 ReAct 循環的逐步分解:
- Thought:AI 智能體(由 LLM 驅動)分析用戶的查詢和內部上下文,并以自然語言產生一個推理步驟。這通常不會顯示給最終用戶,但它是 AI 智能體規劃的一部分。例如:“問題要求一個國家的人口;我應該使用網絡搜索來找到最新數字。”

- Action:根據思考,AI 智能體決定要執行的外部工具或操作。它輸出一個規定的格式來表示行動。例如:行動:WebSearch("2023年加拿大人口")。AI 智能體本質上是通過名稱“調用”一個函數(工具),通常帶有一些輸入參數。

- Observation:AI 智能體的環境(我們的代碼)執行請求的行動,并將結果(觀察)返回給 AI 智能體。例如,網絡搜索工具可能會返回:“觀察:2023年加拿大人口為3800萬。”這個觀察結果被輸入到 AI 智能體的上下文中。

- AI 智能體帶著新信息回到第一步(另一個思考)。它將用新數據進行推理。在我們的例子中,它可能會想:“現在我有了人口數字;我可以回答問題了。”

這個思考/行動/觀察循環重復進行,允許 AI 智能體在需要時鏈接多個工具使用(搜索,然后可能是一個計算,然后另一個搜索等)。最終,AI 智能體決定它可以回答用戶。在這一點上,它不是輸出一個行動,而是輸出一個最終答案(有時在格式中標記為答案:或最終答案)。在整個過程中,AI 智能體保持對話和它自己的中間步驟,這就是記憶的功能。
每個思考和觀察都可以被添加到對話上下文中,以便 LLM 記住到目前為止它已經做了什么。

這對于連貫性至關重要。最終結果是,AI 智能體有效地規劃其方法,混合推理和行動。
這種動態方法比僵化的腳本或單輪回應要靈活得多。它允許處理不可預見的子任務,類似于人類在出現新信息時調整計劃的方式。
需要注意的是,所有這些“思考”和“行動”注釋并不是 LLM 的神奇特性:它們來自我們如何提示大模型。
正如我們稍后將看到的,我們明確地指導大模型以這種結構化的方式格式化其回應。換句話說,ReAct 是通過精心設計的提示詞模板和解析邏輯實現的,而不是通過任何內置的 LLM 能力。
LLM 是通過我們給它的例子和指令被引導表現得像一個推理和行動的 AI 智能體。
本文轉載自???玄姐聊AGI?? 作者:玄姐

















