开发框架教程(4):LangGraph —— 让 Agent 更可控

在 LangChain 的早期,Agent(智能体)是个黑盒子。你告诉它:"帮我查天气然后发邮件"。

5分钟
2025-12-26
框架开发SDK开发框架教程(4):LangGraph

开发框架教程(4):LangGraph —— 让 Agent 更可控

1. 为什么需要 LangGraph?

在 LangChain 的早期,Agent(智能体)是个黑盒子。你告诉它:"帮我查天气然后发邮件"。 它就开始自己转,如果中间一步错了(比如查天气查错了),整个流程就会崩掉,或者陷入死循环。你很难插手控制。

LangGraph 的出现就是为了解决控制问题。 它引入了计算机科学里经典的 图 (Graph)状态机 (State Machine) 概念。

  • 你可以画一张图:第一步走这里,如果成功走 A,失败走 B。
  • 你可以设置循环:如果写的代码报错,就回到"写代码"这一步重写(Loop),最多重试 3 次。
  • 你可以设置断点:在发邮件之前,暂停下来,等待人类点击"批准"(Human-in-the-loop)。

2. 核心概念:节点与边

Nodes (节点)

图上的每一个圆圈。每个节点就是一个函数(或者说一个步骤)。

  • 节点 A: 搜索 Google
  • 节点 B: 写周报
  • 节点 C: 发邮件

Edges (边)

连接节点的线。定义了流程的走向。

  • 普通边:A 做完直接做 B。
  • 条件边 (Conditional Edge):这是 AI 的核心。
    • 函数判断:if 搜索结果为空 -> goto 搜索节点(重试)
    • else -> goto 写作节点

State (状态)

这就像是一张"接力表"。所有的节点都共用这份 State。

  • 节点 A 把搜索结果填进 State。
  • 节点 B 从 State 里读搜索结果,写好文章再填进 State。

3. 代码示意

from typing import TypedDict, Annotated
from langgraph.graph import StateGraph, END

# 1. 定义状态
class AgentState(TypedDict):
    messages: list
    user_query: str

# 2. 定义节点函数
def search_node(state):
    # 调用搜索工具...
    return {"messages": ["搜索结果..."]}

def write_node(state):
    # 调用 LLM 写作...
    return {"messages": ["写好了..."]}

# 3. 构建图
workflow = StateGraph(AgentState)

# 添加节点
workflow.add_node("search", search_node)
workflow.add_node("write", write_node)

# 添加边 (逻辑)
workflow.set_entry_point("search") # 从 search 开始
workflow.add_edge("search", "write") # search 完去 write
workflow.add_edge("write", END) # write 完就结束

# 4.不仅译
app = workflow.compile()

# 5. 运行
app.invoke({"user_query": "今天天气"})

4. 总结

LangGraph 是目前开发 复杂生产级 Agent 的首选标准。虽然它比 LangChain 基础版难上手一点,但它带来的确定性可调试性是企业级应用必须的。 如果你想做一个"不仅仅是聊天"的 AI 应用,一定要学 LangGraph。

AI导航助手

Powered by DeepSeek

你好!我是AI导航助手,由DeepSeek驱动。

我可以帮你: • 推荐适合你的AI模型 • 解答AI相关问题 • 直接带你跳转到相关页面

试试点击下方问题,或直接输入你的问题!

快捷提问:

哪个AI模型最好?有免费的AI吗?写代码用哪个?API怎么接入?

点击按钮可直接跳转到相关页面