什么是LangGraph?

【前言】

学习过LangChain,我们已经知道AI世界是如何初步搭建的。实际我们已经用过:ChatGPT原生模型 :对话式AI,一问一答。DeepSeek客户端 :类似的对话助手。一些AI工具:比如AI画画、AI写文章等...

在LangChain篇章中,我们接入LLM构建的AI系统有以下特点:1、单次对话,"记不住"太多上下文。2、主要是问答模式。3、相对简单的任务

1.1 什么是 Agent Server 智能服务?

想象一个虚拟的"小助手",它不仅能回答问题,还能:

  • 记住和你聊过的所有事情:
  • 执行一连串任务(比如:查天气一>推荐穿搭一>提醒带伞)
  • 中途可以等你给出反馈:
  • 运行很长时间不会"忘记"

AgentServer 就是这样一个聪明的AI助手。

【举个 Agent Server 的例子】------ 我说 "帮我规划周末旅行"

1、AgentServer 界面显示回应:"好的,我们一步步来"

2、AgentServer 第一步 "查天气",屏幕显示天气预报界面。

3、AgentServer 第二步 "找景点",屏幕显示景点列表和图片。

4、AgentServer 第三步 "订酒店",屏幕显示酒店预订页面。

5、AgentServer 第四步 "规划路线",屏幕呈现地图路线图。

6、AgentServer 第五步 "打包建议",屏幕列出物品清单。

1.2 构建 Agent Server 时遇到的四大难题

1.3 LangGraph的三大超能力

构建Agent Server 遇到的问题怎么解决呢???这时候就轮到LangGraph出场了,简单来说,LangGraph是一个专门用于构建和管理Agent Server的底层框架。

LangGraph是一个强大且灵活的"Agent Server操作系统内核 "。它不关心我们具体用什么模型或提示词,而是为我们解决构建复杂、可靠、可交互的Agent Server时所面临的状态管理、流程编排、持久化和人工监督等底层工程难题 。

如果把Agent Server比作一个公司,那么:

  • AI 模型 = 员工(干活的人)
  • Tool 工具 = 办公设备(电脑、电话)
  • LangGraph = 项目经理+流程系统

1.3.1 记忆大师

复制代码
#传统AI:每次对话都是新的开始
AI回答("你好")"你好!"
AI回答("我叫小明")"很高兴认识你!"
AI回答("我叫什么?")-"我不知道你的名字"

# LangGraph Agent Server:记住一切
Agent Server("你好")  "你好!"
Agent Server("我叫小明")"你好小明!"
Agent Server("我叫什么?")- "你叫小明!"

无论过了多久,会话了多少次,LangGraph 都可以记住!

1.3.2 流程指挥官

把复杂任务分解成小步骤:

1.3.3 容错卫士

LangGraph还提供了以下关键基础设施,保障Agent Server的执行过程:

  1. 持久执行:构建能从故障中恢复、长时间运行的Agent Server。
  2. 人工介入:允许在流程中随时检查和修改Agent Server状态。
  3. 强大的调试能力:与LangSmith集成,提供可视化追踪和深度洞察。
  4. 生产就绪的部署:为有状态、长时工作流提供可扩展的部署方案。

LangGraph生态系统

LangGraph 是 LangChain 产品家族的一部分。可以与 LangSmith (用于追踪、评估、监控) 、LangGraph部署平台(用于轻松部署和扩展Agent Server)以及LangChain(提供大量集成和组件)结合使用,形成完整的开发、调试、部署工作流。

LangGraph与LangChain顺利集成,但也可以在没有LangChain的情况下使用。

2. LangGraph 的核心概念

2.1 常见概念区分

2.1.1 Agent

Agent(智能体)是一个能够感知环境输入、自主决策、规划行动路径,并可调用工具或执行操作以达成目标的自主性软件实体。其核心在于:由大语言模型(LLM)动态控制流程走向。

想象你有一个超级聪明的程序员助手,你只需要说一句:"把这个项目的单元测试覆盖率提升到80%.然后他就自己去看代码、写测试、运行构建、检查结果......直到达标为止,中间不需要你插手。这个"能独立完成任务"的程序,就是我们说的Agent(智能体).


想象一个私人助理机器人:你说:"帮我安排下周去上海的差旅."它不会傻傻地只回复"好的",而是会:

a.查天气:决定带什么衣服

b.查航班/高铁时间:比较价格

c.预订酒店:发送日程到你的手机

d.提醒你带身份证

整个过程没有固定的流程图,它自己"想"出来的步骤------这就是典型的Agent行为

2.1.2 工作流workflow

工作流定义了"先做什么、后做什么、在什么条件下跳转或终止。" 其核心在于:预设的、可重复的流程路径。

Workflow(工作流)是一个将复杂过程分解为定义明确、顺序执行的任务流程,并在其中自动化传递数据与任务的状态,用户完成特定目标。

如果说Agent是聪明的执行者,那工作流就是它的行动蓝图------

比如公司的报销流程:提交发票一>领导审批一>财务审核一>财务结算一>归档完成

或者一个自动化客服工单系统:用户提交问题一>系统自动分类一>分配给对应客服一>客服处理一>用户评价一>工单关闭

这个固定路径,整个过程沿着预设的流程运行,就是典型的工作流行为。

LangGraph是实现的就是工作流!


2.1.3 工作流和Agent区别

从概念上来讲,工作流workflow的流程固定,步骤预设,适合明确流程的任务。Agent是由大模型(LLM)动态控制流程走向,灵活度高。

Workflow 像是"炒菜机器人"------按步骤进行炒菜。比如放油--->炒蛋--->加盐--->出锅,即使鸡蛋坏了,也不会停下来。

Agent 像是"米其林主厨"------他会思考:"今天食材新鲜吗?客人忌口吗?要不要换做法?"自主决定菜单、调整火候和配料、品尝后返工改进。

但无论是Workflow 还是Agent,对于他们做出来的AI应用,在LangChain中,可以统称为Agent Server!


2.2 工作流

2.2.1 工作流介绍

工作流具有预先确定的代码路径,并设计为按特定顺序运行。当需要设计更高复杂性的AI应用时,工作流为定义明确的任务提供可预测性和一致性。

例如,现在需要研发一款主打城市通勤的智能电动自行车,具有导航、社交、防盗等功能。在开始研发前需要进行多维度分析,如:

  1. 市场分析:用户关注续航里程、车身重量、防盗能力,并对"骑行社交"(组队、分享路线)有新兴兴趣。
  2. 竞品分析:传统品牌车型智能化不足;互联网品牌车型续航和线下售后服务是其短板。
  3. 技术分析:评估更轻量化的电池材料与车身设计以提升续航和便携性,并开发基于GPS和移动网络的智能防盗系统与社交功能App的集成。
  4. 最终汇总分析结果。

则我们可以将多维度分析设定为具体的流程(工作流),从而达到先分析再汇总的特定运行顺序。如下图所示:

在LangGraph中,工作流基于LLM,以及添加到其中的各种增强功能(如工具调用、结构化输出和短期记忆)而实现:

再次强调:LangGraph是一个强大且灵活的"Agent Server操作系统内核"。它不关心我们具体用什么模型或提示词,而是为我们解决构建复杂、可靠、可交互的Agent Server时所面临的状态管理、流程编排、持久化和人工监督等底层工程难题。

2.2.2 理解图计算

如何实现工作流逻辑?------图计算是一种用节点和边来表示复杂系统的方法。在AI领域,它特别适合构建多步骤、有状态的智能工作流。

想象一个快递配送系统,包裹从输入(揽收站)到输出(配送站)的过程:

  • 配送站、揽收站、分拣中心 = 节点(Node)
  • 运输路线 = 边(Edge)
  • 包裹信息 = 状态(State)
  • 完整配送网 = 图(Graph)

2.3 图模型的三大核心要素

2.3.1 State(状态)

State就像快递包裹上的标签,快递的包裹信息,记录着包裹的当前位置、目的地、配送状态等信息。在整个配送过程中,所有站点都能查看和更新这个信息。

特性:

  1. 共享性:所有节点(快递站点)都能读取和修改

  2. 持久性:在整个工作流(快递运输)执行期间持续存在

  3. 结构化:有明确的字段定义

    from typing import TypedDict

    class PackageState(TypedDict):
    """包裹状态,对应工作流里的State(包裹信息)"""
    # 包裹基本信息
    package_id: str # 包裹id
    origin: str # 始发站
    destination: str # 目的地
    # 配送流转状态
    status: str # "待揽收","运输中","派送中","已签收"
    history: list[str] # 流转历史
    total_distance: int # 总里程
    # 配送优先级
    priority: str # "普通","加急"

所有配送站点共享的包裹信息卡就是LangGraph中的State!

2.3.2 Nodes(节点)

节点就像快递配送网络中的各个站点,每个站点负责特定的处理步骤。

特征:

  1. 单一职责:每个节点只做一件事

  2. 输入输出:接收状态,返回状态更新

  3. 独立性:节点间不直接通信,通过State交互

    from typing import TypedDict

    class PackageState(TypedDict):
    """包裹状态,对应工作流里的State(包裹信息)"""
    package_id: str # 包裹id
    origin: str # 始发站
    destination: str # 目的地
    status: str # "待揽收","运输中","派送中","已签收"
    history: list[str] # 流转历史
    total_distance: int # 总里程
    priority: str # "普通","加急"

    def receive_package(state: PackageState):
    """揽收站节点:完成包裹揽收操作"""
    return {
    "status": "已揽收",
    "history": [f"在{state['origin']}揽收"]
    }

    def sort_package(state: PackageState):
    """分拣中心节点:根据目的地分拣"""
    destination = state["destination"]
    if "北京" in destination:
    next_station = "北京分拣中心"
    elif "上海" in destination:
    next_station = "上海分拣中心"
    else:
    next_station = "其他地区分拣中心"
    return {
    "status": "已分拣",
    "history": [f"分拣至{next_station}"]
    }

    def final_delivery(state: PackageState):
    """派送站节点:完成最终派送签收"""
    return {
    "status": "已签收",
    "history": [f"已送达{state['destination']}"]
    }

2.3.3 Edges(边)

边定义了包裹在站点之间的流动路径,就像快递公司的运输路线图。对于路线,一般类型有:

  • 开始/结束路线:流程的开始和结束点(包裹的开始站,与结束站)
  • 固定路线:包裹可以从揽收站分拣中心(所有包裹都走这条路),而不能从配送站揽收站,而是配送站一家。
  • 条件路线:根据目的地选择不同的分拣中心

实际上在LangGraph中,边就定义了节点之间的连接关系,决定了工作流的执行顺序。边的类型有:

  • 固定边:总是从A到B
  • 条件边:根据状态决定下一步
  • 以及图的开始和结束点,标志了工作流的入口和出口。

因此,LangGraph通过节点(每个处理步骤)、边(步骤之间的连接)和状态(保存执行过程),就可以构建出一个任务工作流(图)。

相关推荐
用户614776737881 小时前
从零搭出能回答"自己文档"的 RAG:179 行代码,成本不到 1 毛
人工智能
紧跟先前的步伐1 小时前
Go AI Agent 实战 11|请求结构、响应结构与 JSON 解析
人工智能·ai·golang·json
用户008128374021 小时前
从零写一个扫雷:两个数组、一个坑,和三个后来加的功能
人工智能
zybsjn1 小时前
Chrome 10 月 27 日剔除 eMudhra 根:3 万张证书的排查命令与迁移清单
人工智能·大模型
居里先生7521 小时前
PDF 去水印开发实录:Form XObject、Identity-H 字体与 6 个对象层深坑
人工智能
零基础1231 小时前
自进化(Self-evolving / RSI):让 AI 系统自己变强的机制与边界
人工智能
ZhengEnCi1 小时前
ROS2 为啥要拆成二三十个节点?一台小车背后的真实结构
人工智能·机器人·自动驾驶
梯度下降的咖啡师1 小时前
把上一篇的 Function Calling 套个 while,就是你的第一个 Agent
人工智能
爱新觉罗胜利1 小时前
500M 激活逼近 3.3B:VLA 的容量到底该加在哪一层
人工智能