LangGraph初认识

最近在面试和实际项目落地中,我发现 LangGraph 的热度正在飞速上升。为什么?因为以前我们用 LangChain 的链只能做"直线"逻辑,一旦遇到复杂的流程(比如:写代码 -> 测Bug -> 有Bug回去改 -> 没Bug结束),LangChain 就显得很别扭。

而 LangGraph 就是为了解决"循环 "和"状态管理"而生的。

今天我不讲枯燥的源码,直接带你用一个真实的**"代码生成与自愈 Agent"**案例,30分钟上手 LangGraph。

LangGraph 实战指南:从"直线思维"到"闭环思维"

1. 为什么我们需要 LangGraph?(市场痛点)

在真实的开发工作中,老板和客户的要求往往不是线性的。

  • 传统 LangChain (Chain): 就像一条流水线。A -> B -> C -> 结束。如果 C 步骤发现问题,想回到 A 重做,非常困难。
  • LangGraph (Graph): 就像一个状态机。你可以定义节点和连线,允许流程在节点之间跳转、循环。

场景举例:

你要做一个"自动写代码助手"。

  1. LLM 生成代码。
  2. 执行代码。
  3. 如果报错 -> 把错误信息喂回给 LLM,让它修改代码(回到步骤1)。
  4. 如果成功 -> 结束。

这种"测Bug -> 改Bug"的闭环,才是真实工作流的常态,也是 LangGraph 在简历上值钱的地方。

2. 核心概念:也就是三个圈圈几条线

别被文档吓到,LangGraph 就是在画图。

  1. State (状态): 也就是"白板"。所有节点都能看到这块白板,也能在上面修改内容(比如:代码内容、报错信息、重试次数)。
  2. Node (节点): 也就是"干活的工人"。比如"写代码的工人"、"执行代码的工人"。
  3. Edge (边): 也就是"指挥官"。决定下一步去哪个节点。如果是条件边,它就是红绿灯(报错走左边,成功走右边)。

3. 动手实战:构建一个"代码自愈 Agent"

我们要构建一个能自己写 Python 代码、自己运行、错了自己改的 Agent。

第一步:准备工作

你需要安装 LangGraph 和 LangChain 的 OpenAI 适配包。

复制代码
pip install langgraph langchain_openai

第二步:定义"白板"

我们需要让节点之间共享信息。最简单的状态就是一个字典。

复制代码
from typing import TypedDict, Annotated
import operator

# 定义状态结构
class AgentState(TypedDict):
    messages: list  # 所有的对话历史
    code: str       # 生成的代码
    output: str     # 代码执行结果
    error: str      # 错误信息
    attempts: int   # 当前重试次数

第三步:定义"节点工人"

我们需要两个工人:

  1. coder_node: 负责写/改代码。

  2. executor_node: 负责执行代码并记录结果。

    from langchain_openai import ChatOpenAI

    初始化模型

    llm = ChatOpenAI(model="gpt-4o", temperature=0)

    def coder_node(state: AgentState):
    """根据当前状态生成或修复代码"""

    复制代码
     # 如果是第一次尝试
     if state['attempts'] == 0:
         prompt = f"请写一段Python代码实现:{state['messages'][-1]}"
     else:
         # 如果是重试,把错误信息告诉它
         prompt = f"""
         上一次的代码出错了,请修复。
         错误代码:{state['code']}
         错误信息:{state['error']}
         请只返回修正后的代码。
         """
     
     response = llm.invoke(prompt)
     # 更新状态
     return {"code": response.content, "attempts": state['attempts'] + 1}

    def executor_node(state: AgentState):
    """执行代码"""
    try:
    # 实际工作中这里要用沙箱环境!这里为了演示直接用 exec
    local_vars = {}
    exec(state['code'], {}, local_vars)
    return {"output": "执行成功!", "error": ""}
    except Exception as e:
    return {"output": "", "error": str(e)}

第四步:定义"红绿灯"

这是最关键的一步。如果没报错,就结束;如果报错,就回 coder 节点。

复制代码
def should_continue(state: AgentState):
    """决策函数:根据执行结果决定下一步"""
    if state['error']:
        return "retry"  # 还有错误,回去重写
    return "end"        # 成功了,结束

第五步:组装流水线

现在我们用 Graph 把这些串起来。

复制代码
from langgraph.graph import StateGraph, END

# 1. 创建图
workflow = StateGraph(AgentState)

# 2. 添加节点
workflow.add_node("coder", coder_node)
workflow.add_node("executor", executor_node)

# 3. 设置入口
workflow.set_entry_point("coder")

# 4. 添加连线(正常的直线流程)
workflow.add_edge("coder", "executor")

# 5. 添加条件边(循环的核心)
workflow.add_conditional_edges(
    "executor",       # 从哪个节点出来
    should_continue,  # 决策函数
    {
        "retry": "coder",  # 如果返回 retry,回到 coder
        "end": END         # 如果返回 end,结束
    }
)

# 6. 编译图
app = workflow.compile()

第六步:运行测试

复制代码
# 初始状态
initial_state = {
    "messages": ["写一个计算斐波那契数列第10项的函数"], 
    "code": "", 
    "output": "", 
    "error": "", 
    "attempts": 0
}

# 运行
result = app.invoke(initial_state)

print("最终生成的代码:")
print(result['code'])
print("执行结果:", result['output'])
print("尝试次数:", result['attempts'])

4. 工作市场视角:面试怎么吹?

当你理解了上面的代码,你在面试或简历中可以这样描述:

"我基于 LangGraph 架构重构了公司的 RAG/Agent 流程。相比于传统的 LangChain Chain 模式,我引入了 StateGraph 状态管理机制,实现了类似'代码自愈'的闭环反馈系统。这让我们的任务成功率从 60% 提升到了 95%,因为它能自动处理执行过程中的异常并进行重试,大大减少了人工干预的成本。"

关键点总结:

  1. 状态持久化: LangGraph 原生支持 checkpoint,你可以随时暂停、恢复任务(比如人工介入审批,这也是个高级用法)。
  2. 减少 Token 消耗: 相比于把整个对话历史塞给 LLM,状态机可以只保留关键信息(比如只保留最新的错误信息),省钱。
  3. 可观测性: Graph 的可视化做得很好,方便 Debug。

5. 总结

LangGraph 其实不难,它就是把线性代码变成了有循环的流程图

  • State: 大家共用的黑板。
  • Node: 读写黑板的工人。
  • Conditional Edge: 判断黑板内容,决定下一个工人是谁。

作为 AI 应用工程师,掌握 LangGraph 意味着你能处理更复杂的业务逻辑,而不仅仅是简单的"一问一答"。赶紧动手试试吧,把上面的代码跑通,你就入门了!

相关推荐
小钻风33662 小时前
Collections 和 CollectionUtils 详解
windows
广州服务器托管2 小时前
WIN11中将控制面板固定到开始菜单的方法
运维·开发语言·windows·计算机网络·可信计算技术
啦啦啦~~~7542 小时前
文档压缩工具,支持支持PPT、Word、Doc、png图片等格式压缩!无限使用次数!优化效果达到85%杠杠的
服务器·windows·阿里云·电脑
k7Cx7e2 小时前
Debian安装 curl 时提示插入 DVD 光盘
运维·windows·debian
qingcyb3 小时前
JacksonUtilTest
windows·json
AI-小柒3 小时前
巨省Token:OpenClaw安装部署并接入数眼智能特价模型全流程(包含Windows和Mac)
大数据·人工智能·windows·网络协议·tcp/ip·http·macos
一只代码狗3 小时前
OpenClaw 安装教程(Windows&&macOS)
windows·macos·ai·openclaw
斌蔚司李3 小时前
Windows 上安装 FFmpeg
windows·ffmpeg
桌面运维家3 小时前
Windows游戏鼠标DPI调校指南:精准定位与优化
windows·游戏·计算机外设