LangGraph:如何用“图思维”轻松管理多Agent协作?

AI 内容学习,持续更新,欢迎关注~

本文系作者 [架构精进之路] 原创,著作权归作者所有,未经授权禁止任何形式的转载、抄袭或盗用,违者必究。

引言

当AI任务变得复杂时,我们需要更好的"调度员"。

随着智能应用场景的深化,单一 Agent 在处理复杂任务(如电商智能客服、金融数据分析流水线)时显现出明显局限性。传统链式调用框架(如 LangChain)依赖开发者手动编排流程,在面对任务分支、动态决策和资源复用等场景时,往往陷入维护成本高、扩展性差的困境。

本文将深入解析:

1. LangGraph的核心原理 :图结构如何模拟复杂任务流?
2. 多 Agent 应用实战 :如何实现异构Agent的协作与通信?
3. 对比LangChain:何时该用LangGraph?

1、LangGraph核心原理

LangGraph 的核心原理,简单说就是:用"图"来重构任务流。

1.1. 图结构(Graph)的三大要素

  • 节点(Node):代表一个独立单元,可以是:

  • Agent 节点:封装独立 Agent 能力(如调用GPT-4处理问题、知识检索)

  • Tool 节点:调用具体工具(如搜索API、数据库查询),用于执行特定计算或处理任务

  • END 节点:流程结束的标识

  • (Edge):标注 "Where to go",表示状态流转的决策路径,决定下一步跳转到哪个节点

  • 顺序执行(线性流程)

  • 条件跳转(如"若用户投诉,转人工审核")

  • 状态(State):贯穿整个流程,记录数据或交互状态(如用户输入的消息),驱动节点间的流转

针对如上图例,流程说明如下:

1)用户输入触发初始状态,进入 Agent 节点 处理交互;

2)处理后通过 Edge 决策流向,可能跳转至 Tool 节点 调用工具,或直接到达 END 节点 结束流程;

3)若进入 Tool 节点,处理完成后状态可能再次流转,形成循环或推进至结束。 该模型通过节点、边、状态的协作,实现交互任务的流程化处理。

1.2 动态编排:像流程图一样设计AI流程

LangGraph支持循环分支并行等控制流,例如:

perl 复制代码
# 示例:根据用户问题动态路由  
def route(state):  
    if "投诉" in state["input"]:  
        return "human_review"  # 转人工  
    else:  
        return "ai_agent"      # 由AI处理 

2、多 Agent 协作实战

为了更好让大家理解,我们应用一个「客服工单处理案例」来进行介绍。

假设我们需要处理用户工单,主要流程包括:

意图识别 → 专家Agent处理 → 结果审核

2.1 定义 Agent 节点

python 复制代码
from langgraph.graph import StateGraph, MessagesState  
# Create the workflow
workflow = StateGraph(MessagesState)
# 意图识别  
def identify_intent(state):
    last_message = state["messages"][-1].content
    if "账号" in last_message or "登录" in last_message:
        intent = "technical"
    else:
        intent = "general"
    return {
        "messages": [AIMessage(content="意图识别完成")],
        "intent": intent
    }
# 专家处理
def call_expert(state):
    return {"messages": [AIMessage(content="专家处理结果:您的问题需要专业技术支持")]}
# 人工审核
def human_review(state):
    return {"messages": [AIMessage(content="人工审核完成:您的问题已处理")]}
    
    
# 添加三个Agent节点  
workflow.add_node("intent_agent", identify_intent)  # 意图识别  
workflow.add_node("expert_agent", call_expert)      # 专家处理  
workflow.add_node("review_agent", human_review)     # 人工审核

2.2 设计 workflow 逻辑

perl 复制代码
# 设置入口点
workflow.set_entry_point("intent_agent")
# 条件边:根据意图选择路径  
def router(state):  
    if state["intent"] == "technical":  
        return "expert_agent"  
    else:  
        return "review_agent"  
workflow.add_conditional_edges("intent_agent", router)  
# 专家处理后必须审核
workflow.add_edge("expert_agent", "review_agent")  
# 设置结束点
workflow.set_finish_point("review_agent")  

2.3 运行 workflow

ini 复制代码
# Compile the workflow
app = workflow.compile()
output = app.invoke({"messages": [HumanMessage(content="我的账号无法登录")]})
print("执行结果:\n\n", final_state["messages"][-1].content)

执行结果

程序执行流程为:用户输入 → 意图识别 → 技术问题 → 专家Agent → 人工审核 → 返回结果

LangGraph 图例如下:

3、LangChain vs LangGraph

当LangChain 遇上 LangGraph,我们应该如何选择呢?

简单下个结论

  • 如果是固定流程(如"搜索→总结"),用LangChain更轻量。

  • 如果是动态、多角色协作(如客服、数据分析流水线),LangGraph是更优解。

结语

LangGraph的图思维将复杂任务分解为可编排的节点,通过动态路由和共享状态实现高效协作。如果你正面临多Agent的"spaghetti code"难题,不妨用LangGraph重构你的流程!

后续 AI 内容学习,持续更新,欢迎关注~****

·END·

希望今天的讲解对大家有所帮助,谢谢!

Thanks for reading!

作者:架构精进之路,十年研发风雨路,大厂架构师,CSDN 博客专家,专注架构技术沉淀学习及分享,职业与认知升级,坚持分享接地气儿的干货文章,期待与你一起成长。

关注并私信我回复"01",送你一份程序员成长进阶大礼包,欢迎勾搭。

相关推荐
莫轻言舞15 分钟前
SpringBoot整合PDF导出功能
spring boot·后端·pdf
玄武后端技术栈1 小时前
什么是死信队列?死信队列是如何导致的?
后端·rabbitmq·死信队列
老兵发新帖2 小时前
NestJS 框架深度解析
后端·node.js
码出钞能力3 小时前
对golang中CSP的理解
开发语言·后端·golang
金融数据出海4 小时前
黄金、碳排放期货市场API接口文档
java·开发语言·spring boot·后端·金融·区块链
豌豆花下猫4 小时前
Python 潮流周刊#101:Rust 开发的 Python 类型检查工具(摘要)
后端·python·ai
为啥全要学4 小时前
vLLM部署Qwen2-7B模型推理
python·langchain·vllm
gxn_mmf5 小时前
典籍知识问答模块AI问答功能feedbackBug修改+添加对话名称修改功能
前端·后端·bug
向哆哆6 小时前
Spring Boot快速开发:从零开始搭建一个企业级应用
java·spring boot·后端
满怀10157 小时前
【LangChain全栈开发指南】从LLM集成到智能体系统构建
人工智能·python·langchain·ai编程·智能体开发