LangGraph 高级

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 编译出的图的核心循环是?