一文读懂LangChain/LangGraph:从智能体构建到复杂工作流编排
引言为什么需要LangChain与LangGraph在人工智能应用开发领域大语言模型LLM展现出了惊人的潜力但直接将其集成到生产系统中却面临诸多挑战如何管理上下文如何连接外部工具和数据如何构建多步骤、有状态的复杂推理流程这正是LangChain和LangGraph诞生的背景。LangChain是一个用于开发由语言模型驱动的应用程序的框架它通过“链”Chains的概念将模型调用、提示模板、记忆、工具调用等组件标准化并串联起来。而LangGraph则是在LangChain基础上专为构建有状态、多参与者的智能体Agent和复杂工作流而设计的库。它引入了图Graph的概念使得开发者能够以可视化、可调试的方式编排LLM、工具和人类决策。简单来说LangChain解决了“如何让LLM做一件事”的问题而LangGraph解决了“如何让LLM和一系列工具协作完成一连串复杂任务”的问题。核心概念快速扫盲在深入之前我们先厘清几个关键术语链ChainLangChain的核心抽象。一个链将多个组件如模型、提示词、解析器按固定顺序组合执行一个特定任务。例如一个“问答链”可能包含接收用户问题 - 检索相关文档 - 构造提示词 - 调用LLM - 解析答案。智能体Agent一个由LLM驱动的自主决策系统。它配备了一系列工具如搜索、计算、API调用并能根据目标动态决定下一步使用哪个工具。LangChain提供了多种Agent执行器。图GraphLangGraph的核心。图由节点Nodes和边Edges组成。节点代表一个执行步骤如调用LLM、运行工具边定义了节点之间的流转条件。这允许构建循环、分支和并行执行路径。状态StateLangGraph中贯穿整个图执行过程的共享数据上下文。它定义了每个节点可以读取和修改哪些信息是构建有状态应用的关键。LangChain 核心组件与实战让我们通过一个简单的代码示例快速感受LangChain如何工作。假设我们要构建一个根据公司名称查询其简介并总结的链。# 示例使用LangChain构建一个简单的查询-总结链fromlangchain_openaiimportChatOpenAIfromlangchain_core.promptsimportChatPromptTemplatefromlangchain_core.output_parsersimportStrOutputParserfromlangchain_community.utilitiesimportWikipediaAPIWrapper# 1. 初始化组件llmChatOpenAI(modelgpt-4o-mini)wikipediaWikipediaAPIWrapper()output_parserStrOutputParser()# 2. 构建提示词模板promptChatPromptTemplate.from_messages([(system,你是一个商业分析助手。请根据提供的公司信息用一段话总结该公司的核心业务与特点。),(user,公司信息{company_info}\n\n请开始总结)])# 3. 构建并运行链# 这是一个简单的链获取信息 - 格式化提示词 - 调用LLM - 解析输出defcompany_summary_chain(company_name:str):# 第一步获取信息可视为一个节点company_infowikipedia.run(company_name)# 第二步和第三步通过LangChain LCEL语法组合chainprompt|llm|output_parser# 执行链summarychain.invoke({company_info:company_info})returnsummary# 使用链resultcompany_summary_chain(OpenAI)print(result)这个例子展示了LangChain的“链式”思维。然而当任务变得复杂需要根据上一步的结果动态决定下一步行动时例如LLM判断信息不足需要先调用搜索工具简单的链就显得力不从心。这时就需要智能体而LangGraph为构建健壮的智能体提供了更强大的范式。LangGraph用图编排复杂工作流LangGraph 将工作流视为一个有向图。它的强大之处在于可以轻松处理循环智能体思考 - 执行工具 - 观察结果 - 继续思考直到任务完成。分支根据LLM或条件判断决定下一步走向哪个节点。状态管理自动维护对话历史、工具执行结果等上下文。让我们构建一个简单的研究助手智能体它可以根据一个问题自动决定是直接回答还是需要先搜索维基百科。# 示例使用LangGraph构建一个带条件分支的研究助手fromtypingimportTypedDict,Annotatedimportoperatorfromlanggraph.graphimportStateGraph,ENDfromlangchain_openaiimportChatOpenAIfromlangchain_community.toolsimportWikipediaQueryRunfromlangchain_community.utilitiesimportWikipediaAPIWrapper# 1. 定义状态结构classAgentState(TypedDict):question:stranswer:strneeds_search:boolsearch_result:str# 2. 初始化工具和模型llmChatOpenAI(modelgpt-4o-mini,temperature0)wiki_toolWikipediaQueryRun(api_wrapperWikipediaAPIWrapper())# 3. 定义节点函数defdecide_route(state:AgentState):决策节点判断是否需要搜索# 这里可以设计更复杂的逻辑例如让LLM判断问题是否需要事实核查simple_questions[什么是人工智能,你是谁]ifstate[question]insimple_questions:return{needs_search:False}else:return{needs_search:True}defcall_llm_directly(state:AgentState):直接回答节点messages[(system,你是一个乐于助人的助手。直接回答用户问题。),(user,state[question])]responsellm.invoke(messages)return{answer:response.content}defsearch_and_answer(state:AgentState):搜索并回答节点# 执行搜索search_resultwiki_tool.run(state[question])# 基于搜索结果构造提示词messages[(system,你是一个严谨的研究助手。请基于以下搜索结果为用户的问题提供一个准确的回答。),(user,f问题{state[question]}\n\n搜索结果{search_result})]responsellm.invoke(messages)return{search_result:search_result,answer:response.content}# 4. 构建图workflowStateGraph(AgentState)# 添加节点workflow.add_node(decide,decide_route)workflow.add_node(direct_answer,call_llm_directly)workflow.add_node(search_answer,search_and_answer)# 设置入口点workflow.set_entry_point(decide)# 根据条件创建边workflow.add_conditional_edges(decide,# 下一个节点由 decide_route 函数返回的 needs_search 值决定lambdax:direct_answerifnotx.get(needs_search,True)elsesearch_answer)workflow.add_edge(direct_answer,END)workflow.add_edge(search_answer,END)# 编译图appworkflow.compile()# 5. 执行图initial_state{question:特斯拉汽车公司是哪一年成立的,answer:,needs_search:None,search_result:}final_stateapp.invoke(initial_state)print(f最终答案{final_state[answer]})通过这个流程图可以清晰地看到LangGraph的工作方式渲染错误:Mermaid 渲染失败: Parse error on line 2: ...用户问题”] -- B{“决策节点\n(decide_route)”} -----------------------^ Expecting SQE, DOUBLECIRCLEEND, PE, -), STADIUMEND, SUBROUTINEEND, PIPE, CYLINDEREND, DIAMOND_STOP, TAGEND, TRAPEND, INVTRAPEND, UNICODE_TEXT, TEXT, TAGSTART, got PSLangChain vs LangGraph如何选择特性LangChainLangGraph核心范式链Chain图Graph状态管理通过Memory组件相对独立内置、显式、强类型的状态管理贯穿全图流程控制线性或有限分支通过Router任意复杂的循环、分支、并行、人工干预适用场景相对固定、线性的任务文档问答、文本总结、简单提取复杂、有状态、多步骤的智能体和工作流自主研究、多工具协作、审批流程调试与可视化可通过回调查看日志原生支持将工作流图可视化执行过程可追溯选择建议如果你的应用是线性的、无状态的或状态简单例如聊天机器人单轮响应、文档处理流水线从LangChain开始更直接。如果你需要构建具备长期记忆、能使用多种工具、任务步骤动态可变的智能体或者业务逻辑本身就是一个复杂的流程图例如客服工单处理、数据分析管道那么LangGraph是你的不二之选。它提供的结构和可控性对于复杂应用至关重要。

相关新闻

LangChain Memory 记忆系统:让 AI 记住对话的魔法

LangChain Memory 记忆系统:让 AI 记住对话的魔法

引言:为什么 AI 需要“记忆”? 在与 ChatGPT 等大模型对话时,你是否曾感到一丝“挫败”?你刚刚在上一轮对话中详细说明了需求,下一轮它却仿佛失忆般问道:“您能再详细描述一下吗?” 这种“金鱼式…

2026/7/23 0:52:40阅读更多 →
含多类型V2G电动汽车的微网日前-日内两阶段协同优化调度模型研究(Matlab代码实现)

含多类型V2G电动汽车的微网日前-日内两阶段协同优化调度模型研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 &#x1f381…

2026/7/23 0:52:40阅读更多 →
中翰软件:用“本体论”给数据治理立规矩,用AI让规矩“活”起来

中翰软件:用“本体论”给数据治理立规矩,用AI让规矩“活”起来

数据治理的困境,往往源于“规矩不清”或“规矩不灵”。中翰软件最新发布的AI原生治理方案,正是从“立规矩”和“活应用”两端破局。 在“立规矩”层面,方案引入“本体论”,为企业核心业务实体(如客户、产品&#xff09…

2026/7/23 0:52:40阅读更多 →
TMS570 Flash API编程与ECC管理实战指南

TMS570 Flash API编程与ECC管理实战指南

1. 项目概述:TMS570 Flash API编程与ECC管理实战在汽车电子、工业控制这些对可靠性要求极高的领域,微控制器内部的Flash存储器扮演着核心角色。它不仅要安全地存储启动代码和应用程序,还得在严苛的电磁环境和温度变化下,保证十几年…

2026/7/23 2:02:49阅读更多 →
扫码登录的实现原理

扫码登录的实现原理

是所有大厂通用的三端交互标准时序图,逻辑完全一致: image 核心技术关键点 🔑 这部分是面试官打分的核心,必须精准命中: 二维码的本质 ❌ 绝对不能存储用户 ID、手机号等敏感信息 ✅ 仅存储一个全局唯一、随机不可预测…

2026/7/23 2:02:49阅读更多 →
第八章WSaiOS 事件感知引擎实现

第八章WSaiOS 事件感知引擎实现

第八章WSaiOS 事件感知引擎实现WSaiOS Event Perception Engine——从状态变化到事件理解作者:东塬一老翁技术支持:渭南市临渭区多模态智能技术研发工作室8.1 事件感知提出在 WSaiOS 世界理解体系中:世界元素解决:世界中有什么。世…

2026/7/23 2:02:49阅读更多 →
TM4C1294 I2C高速模式与FIFO/DMA配置实战指南

TM4C1294 I2C高速模式与FIFO/DMA配置实战指南

1. 项目概述在嵌入式开发中,I2C总线因其简洁的两线制(SDA和SCL)和灵活的软件寻址,成为了连接各类低速外设(如传感器、EEPROM、实时时钟等)的首选方案。然而,随着应用复杂度的提升,尤…

2026/7/23 2:02:49阅读更多 →
Tiva™ TM4C129 EPI接口深度解析:从寄存器配置到高速外设连接实战

Tiva™ TM4C129 EPI接口深度解析:从寄存器配置到高速外设连接实战

1. 项目概述与EPI接口核心价值在嵌入式系统开发中,尤其是涉及图像处理、高速数据采集或需要大容量缓存的场景,微控制器(MCU)自身的存储资源往往捉襟见肘。这时,外部存储器(如SDRAM、SRAM)或专用…

2026/7/23 2:02:49阅读更多 →
KingbaseES集群failover失败案例分析与解决方案

KingbaseES集群failover失败案例分析与解决方案

1. 案例背景与问题描述最近在维护一套KingbaseES V8R3数据库集群时,遇到了一次典型的failover切换失败案例。这套集群采用标准的主备架构,主库运行在node209(192.168.103.209),备库在node210(192.168.103.2…

2026/7/23 2:00:49阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/23 0:56:31阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/23 0:56:31阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 0:56:31阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:00:28阅读更多 →
从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:28阅读更多 →
油泥处理设备哪里能买到

油泥处理设备哪里能买到

油泥处理设备哪里有?这是许多从事油田、炼化、清罐业务的从业者最关心的问题。根据河南三丰环保设备有限公司的行业经验,选购油泥处理设备的核心在于设备能否适配当地环保法规与原料特性,而非单纯看价格。该公司总经理王钦田先生指出&#xf…

2026/7/23 0:00:28阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/22 22:56:18阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/22 18:55:50阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/22 18:55:50阅读更多 →