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

相关推荐
青 春 记 忆1 小时前
LeetCode 226. 翻转二叉树|Python 解法详解
python·算法·leetcode
小女孩真可爱1 小时前
GPT(1)----------从零实现 GPT 模型以生成文本
人工智能·python·gpt·nlp
码云骑士1 小时前
116-Python调用GPT-4V分析图片-Base64编码-多图-JSON结构化输出
开发语言·python·json
yichudu1 小时前
lang-chain/graph agent开发库介绍
langchain
老郑聊AI业财智造1 小时前
TensorFlow 技术架构与源码分析
人工智能·python·深度学习·架构·tensorflow·软件工程
民乐团扒谱机1 小时前
【微科普】压缩感知(CS):违反了奈奎斯特采样定理?不先采集也能还原信号?大白话讲透稀疏采样、L1重建与OMP,一文吃透附代码
python·神经网络·线性代数·算法·数学建模·压缩感知·奈奎斯特
承渊政道1 小时前
【Python编程—从入门到实践】(Python操作列表深度教程:循环、切片、元组与代码风格)
开发语言·python·pycharm·列表·元组·切片
guwentian1 小时前
一文搞懂 AI Agent 安全护栏:用 Python 手写工具网关,把越权挡在执行层
人工智能·python·安全
布值倒区什么name1 小时前
Pycharm2026找不到编译器 点击运行运行不了
开发语言·python·pycharm