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

相关推荐
javartisan12 分钟前
AI Agent 中 Tool / Skill 的调用链路设计
python
钱栈up18 分钟前
大屏Logo定位调了8次才合格:响应式定位的经验总结安装Unsloth桌面端报PyTorch失败:Python 3.13的ABI不兼容所致
python
wuhuhuan23 分钟前
Case Generator 测试自动化平台
python·测试工具·自动化
Flynt1 小时前
Astra 自主跑了 35 小时烧掉 40 亿 token,产出为零:我给 Agent 加了三道闸
python·aigc·agent
mldong1 小时前
Python 开发者也有自己的轻量工作流引擎了:pip install 一行,5 分钟跑通一条审批流
后端·python·架构
weixin199701080162 小时前
《跨境二手ERP的3种对接模式:自研API / SaaS中间件 / 平台认证服务商,怎么选?》(附Python源码)
开发语言·python·中间件
B2_Proxy3 小时前
Python 爬虫代理中间件开发:统一处理 403、429 与自动重试机制
python
学代码的CJY3 小时前
Python序列类型详解
python
529宝宝起名网3 小时前
用 Python 爬取古籍文献中的名字用例数据库:从二十四史到诗词文集的历史名字采集与分析
python
颜颜yan_10 小时前
ESP-IDF 鸿蒙 PC 适配全记录:打通 Python、构建工具链与 ESP32-P4 固件生成
python·华为·harmonyos