ReAct Agent 与工具节点:create_react_agent 深入
拆解预置的 create_react_agent:工具循环的图结构、消息流解剖,以及何时该自己画图替代它。
一行代码的 Agent,内部是一张图
from langgraph.prebuilt import create_react_agent
agent = create_react_agent(llm, tools=[search_tool, calc_tool])
agent.invoke({"messages": [("user", "北京现在几度?乘以 2 是多少?")]})
它编译出的图只有两个节点:agent(调用模型)与 tools(执行工具),靠条件边循环:
START → agent ─(有 tool_calls)→ tools → agent ─…
└─(无 tool_calls)→ END
这正是本站《Agent Loop》课那个循环的官方图实现 —— 模型点菜、ToolNode 上菜、结果作为 ToolMessage 回桌,直到模型不再点菜。
常用定制
- 自定义提示词:
prompt=...注入角色与规则; - 状态扩展:传自定义 State Schema 加字段(如
remaining_steps防死循环); - 结构化输出:
response_format=...让最终回答走结构化通道。
何时自己画图
- 流程有固定阶段(先检索再写再审)→ 自己定义节点与边,比裸 ReAct 可控;
- 需要多 Agent 协作、人工审批 → 必须自己建图(后续课程);
- 原则依旧是:流程固定用图,真不确定才交给模型循环。
📝 课后练习
quiz-1 create_react_agent 编译出的图的核心循环是?