昨天我們讓 Agent 學會使用工具,能做查詢或計算。
但如果問題需要「多步驟思考」才能完成,單純呼叫工具就不夠了。
今天,我們要讓 Agent 更像一個真正的思考者 —— 引入 ReAct(Reason + Act)架構。
ReAct 是一種 多步推理框架,核心概念是:
這樣,Agent 就能處理 需要拆解任務 的情境,例如:
from langchain_google_genai import ChatGoogleGenerativeAI
from langchain.agents import initialize_agent, Tool, AgentType
from langchain.agents import AgentType
import os
# -------------------------------
# 1. API Key 設定
# -------------------------------
# Gemini LLM API Key
os.environ["GOOGLE_API_KEY"] = ""
# 計算工具
def calculate(expression: str) -> str:
try:
return str(eval(expression))
except:
return "計算錯誤"
calc_tool = Tool(
name="Calculator",
func=calculate,
description="計算數學題,例如 12*8+5"
)
# 初始化 LLM
llm = ChatGoogleGenerativeAI(model="gemini-2.5-flash", temperature=0)
# 初始化 ReAct Agent
agent = initialize_agent(
tools=[calc_tool],
llm=llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, # <- 改成有效類型
verbose=True
)
# 測試
question = "請先算 12*8,再加上 5,最後乘以 2"
response = agent.run(question)
print(response)
💡 ReAct Agent 的運作流程會是: