寫在前面:動態思考,邊想邊做
大型語言模型(LLM)的崛起開啟了通用人工智能(AGI)的無限遐想。但要讓 LLM 從一個被動的“文本生成器”轉變為能夠主動解決問題、與環境交互的智能體(Agent),我們需要賦予它思考、行動和學習的能力。ReAct (Reason + Act) 框架正是實現這一目標的主流范式之一。
ReAct 的核心思想是模仿人類解決問題的方式:在觀察環境后進行思考(Reasoning),基于思考決定下一步行動(Action),執行行動后觀察結果(Observation),然后根據新的觀察再次思考… 這個“思考-行動-觀察”的循環使得 Agent 能夠分解復雜任務、使用外部工具、處理異常情況,并逐步逼近最終目標。
與 Plan-and-Execute(先制定完整計劃再執行)不同,ReAct 更強調每一步的即時思考和決策,使其對動態變化的環境具有更好的適應性。
本篇博客將深入探討 ReAct 框架的原理,并使用 Python 從零開始(不依賴 LangChain 等高級框架,以便更好地理解底層邏輯)實現一個簡單的、具備規劃能力的 ReAct Agent。我們將涵蓋其核心組件、Prompt 設計、代碼實現以及運作流程。
1. ReAct 框架:“思考-行動”的循環
ReAct 框架由 Yao et al. (2022) 提出,其核心在于將 LLM 的推理能力 (Reasoning) 和行動能力 (Acting) 結合起來。Agent 的行為不再是一步到位的直接輸出,而是通過一個迭代循環生成: