LangGraph Agent 模式详解:从自主决策到 Tool Calling 执行链

前面的文章我们已经学习了 LangGraph 的核心能力:

text 复制代码
State
Checkpoint
Memory
Interrupt
Tool
Stream
Subgraph

这些解决的是 Agent 如何运行、保存状态以及恢复执行。

但是一个真正的 Agent 工作流还有一个核心问题:

模型如何决定下一步做什么?工具调用后结果如何重新回到模型?


1. Workflow 和 Agent 的区别

固定 Workflow:

text 复制代码
用户问题
↓
检索节点
↓
生成节点
↓
结束

特点:

text 复制代码
开发者决定下一步执行什么

适合:

  • RAG
  • 数据处理
  • 固定业务流程

Agent:

text 复制代码
用户输入
↓
LLM 判断
↓
选择行动
↓
执行
↓
观察结果
↓
继续判断

特点:

text 复制代码
模型决定下一步做什么

核心思想:

text 复制代码
Reasoning

↓

Action

↓

Observation

↓

Reasoning

2. LangGraph Agent 基本结构

典型 Agent:

text 复制代码
START

↓

Agent节点

↓

是否需要调用工具?

      /        \

    否          是

    ↓           ↓

   END       ToolNode

                ↓

             Agent节点

与普通 Chain 最大区别:

text 复制代码
Agent存在循环

执行过程:

text 复制代码
Agent

↓

Tool

↓

Agent

↓

Tool

↓

...

直到模型认为任务完成。


3. Agent 节点负责什么?

Agent 节点通常调用模型:

python 复制代码
def agent_node(state):

    response = model.invoke(
        state["messages"]
    )

    return {
        "messages":[response]
    }

主要负责:

读取 State

例如:

python 复制代码
state["messages"]

包含:

text 复制代码
用户问题

历史消息

工具结果

调用模型

模型判断:

text 复制代码
是否需要工具?

调用哪个工具?

参数是什么?

返回 AIMessage

如果不需要工具:

text 复制代码
直接回答

如果需要工具:

text 复制代码
AIMessage.tool_calls

4. Tool Calling 完整流程

完整链路:

text 复制代码
用户输入

↓

Agent节点

↓

LLM生成 tool_calls

↓

ToolNode执行工具

↓

ToolMessage返回结果

↓

Agent继续推理

↓

最终回答

5. bind_tools 到底做什么?

例如:

python 复制代码
model_with_tools = model.bind_tools(
    tools
)

它不会执行工具。

作用只是告诉模型:

text 复制代码
有哪些工具

工具参数

工具用途

模型产生:

python 复制代码
AIMessage(
    tool_calls=[
        {
            "name":"get_weather",
            "args":{
                "city":"北京"
            }
        }
    ]
)

此时只是:

text 复制代码
提出调用请求

真正执行需要:

text 复制代码
ToolNode

6. ToolNode 如何工作?

ToolNode 负责:

text 复制代码
读取 tool_calls

↓

查找工具

↓

执行工具

↓

生成 ToolMessage

例如:

text 复制代码
调用:

get_weather("北京")

↓

返回:

北京今天晴天

然后:

text 复制代码
ToolMessage

回到 Agent。


7. Agent 为什么需要循环?

现实任务通常不是一步完成。

例如:

用户:

text 复制代码
分析苹果公司的股票情况

Agent:

第一次:

text 复制代码
查询股票价格

第二次:

text 复制代码
查询相关新闻

第三次:

text 复制代码
整理分析报告

所以 Agent 是:

text 复制代码
输入

↓

思考

↓

行动

↓

观察

↓

继续思考

↓

输出

8. Agent 为什么比 Workflow 复杂?

Workflow:

text 复制代码
A → B → C

路径固定。

Agent:

text 复制代码
A

↓

LLM决定

↓

可能B

可能C

可能D

问题:

调试困难

需要观察:

text 复制代码
messages

tool_calls

checkpoint

成本不可控

一次任务可能:

text 复制代码
LLM

↓

工具

↓

LLM

↓

工具

需要限制

生产环境通常需要:

text 复制代码
最大循环次数

超时控制

工具白名单

人工审批

结合:

text 复制代码
Checkpoint

Interrupt

Retry

Timeout

9. 企业级 Agent 通常是混合模式

实际项目:

text 复制代码
用户请求

↓

Router

↓

----------------

固定流程      Agent

RAG流程       复杂任务

----------------

↓

Tool

↓

Evaluator

↓

结果

也就是说:

text 复制代码
确定流程
使用 Workflow

不确定任务
使用 Agent

相关推荐
计算机毕业编程指导师11 小时前
Python大数据毕设:基于Hadoop的病毒式社交媒体趋势和参与度分析系统怎么做 源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·计算机·毕业设计·课程设计·社交媒体
计算机毕业编程指导师11 小时前
【计算机毕设选题推荐】基于Spark与Hadoop的AI就业收入区域差异分析系统 源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习 深度学习
大数据·python·数据分析·spark·毕业设计·课程设计·ai就业收入
小猴子爱上树11 小时前
跨马翻译:批量图片翻译与视频字幕、智能抠图一站式在线图片翻译工具
大数据·人工智能·python·音视频
lzqrzpt11 小时前
临沂LED驱动电源工程选型标准与工艺对比解析
python·单片机·嵌入式硬件·物联网
专业程序开发源11 小时前
django新闻推荐系统70655-计算机课程设计、毕业设计
java·javascript·spring boot·后端·python·django·课程设计
蒲公英eric12 小时前
人口增长问题:从 Malthus 到 Logistic 的建模之旅
人工智能·python·数学建模·人口增长问题
全栈练习生12 小时前
大模型原理之 Softmax
python·ai
迅猛龙办公室12 小时前
python获取星期字符串
开发语言·python
打工仔折腾 AI12 小时前
把 AI Agent 托管到家里电脑:UU远程端口映射与CLI实测记录
人工智能·后端·python·langchain·电脑·ai agent 实战
vx_Biye_Design12 小时前
springboot小学生英语学习APP62773-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·python·学习·课程设计