当前位置: 首页 > article >正文

【LangGraph】一.LangGraph 到底是什么

目录核心思想从 LangChain 的局限说起LangGraph 的解决方案四个核心概念1. State状态2. Node节点3. Edge边4. Graph图实际例子带循环的检索LangGraph vs LangChain运行机制为什么用图结构总结核心思想LangGraph 是一个用图结构来编排 Agent 执行的框架。为什么需要图结构因为传统的 Agent 执行流程是黑盒——模型自己决定先做什么、后做什么。当你需要精确控制流程时比如先检索文档如果不够就再检索一次然后生成答案黑盒就不够用了。LangGraph 把 Agent 拆分成节点Node和边Edge让你可以像画流程图一样设计 Agent 的执行逻辑。从 LangChain 的局限说起LangChain 的 Agent 工作方式是while True: # 1. 调用模型 response model.invoke(messages) # 2. 模型决定是否调用工具 if response.tool_calls: tool_result execute_tool(response.tool_calls[0]) messages.append(tool_result) else: # 3. 模型说结束就结束 break这个模型的问题在于流程完全由模型控制。你想实现这样的逻辑先检索文档如果检索结果少于 3 篇换个关键词再检索一次然后生成答案最后检查答案质量如果不好就重新生成这在 LangChain 里很难实现因为你没法在流程中设置明确的检查点和分支逻辑。LangGraph 的解决方案LangGraph 让你显式定义流程START → 检索节点 → 判断节点 → 生成节点 → END ↑ │ └──────────┘每个方框是一个节点Node箭头是边Edge。节点执行具体操作边决定执行顺序。四个核心概念1. State状态State 是整个图共享的数据容器。所有节点都能读取和修改 State。from typing import TypedDict class State(TypedDict): question: str # 用户问题 documents: list # 检索到的文档 answer: str # 生成的答案为什么需要 State因为节点之间需要传递数据。检索节点检索到的文档需要传递给生成节点使用。State 就是这个数据传递的媒介。设计原则只放跨节点共享的数据字段名要清晰表达含义不要放临时变量临时变量应该在节点内部处理2. Node节点节点就是一个 Python 函数接收当前 State返回 State 的更新。def retrieve_node(state: State) - dict: # 从 State 读取问题 question state[question] # 执行检索 docs search_database(question) # 返回更新只返回变化的字段 return {documents: docs}关键点节点函数接收完整的 State返回的是 State 的更新dict不是完整 StateLangGraph 会自动合并多个节点的更新3. Edge边边决定节点的执行顺序。有两种类型普通边固定跳转到下一个节点graph.add_edge(retrieve_node, generate_node)条件边根据条件选择下一个节点def should_continue(state: State) - str: # 根据文档数量决定 if len(state[documents]) 3: return retrieve_again # 再去检索 else: return generate # 直接生成 graph.add_conditional_edges( retrieve_node, # 从哪个节点 should_continue, # 条件函数 { retrieve_again: retrieve_node, generate: generate_node, } )4. Graph图图就是节点和边的集合。定义好图之后编译成可执行的应用。from langgraph.graph import StateGraph, START, END # 1. 创建图 graph StateGraph(State) # 2. 添加节点 graph.add_node(retrieve, retrieve_node) graph.add_node(generate, generate_node) # 3. 设置入口 graph.set_entry_point(retrieve) # 4. 添加边 graph.add_edge(retrieve, generate) graph.add_edge(generate, END) # 5. 编译 app graph.compile() # 6. 执行 result app.invoke({question: 什么是 LangGraph})实际例子带循环的检索假设我们要实现检索文档如果不够就再检索一次。from typing import TypedDict from langgraph.graph import StateGraph, START, END class State(TypedDict): question: str documents: list attempts: int # 检索次数 def retrieve(state: State) - dict: 检索文档 docs search(state[question]) return { documents: docs, attempts: state.get(attempts, 0) 1 } def check_docs(state: State) - str: 检查文档是否足够 if len(state[documents]) 3 and state[attempts] 2: return need_more else: return enough def generate(state: State) - dict: 生成答案 answer llm.generate(state[documents]) return {answer: answer} # 组装图 graph StateGraph(State) graph.add_node(retrieve, retrieve) graph.add_node(generate, generate) graph.set_entry_point(retrieve) graph.add_conditional_edges( retrieve, check_docs, { need_more: retrieve, # 循环 enough: generate, } ) graph.add_edge(generate, END) app graph.compile() result app.invoke({question: 什么是 LangGraph})执行流程从retrieve节点开始检索文档执行check_docs如果文档少于 3 篇且检索次数少于 2 次回到retrieve否则执行generate生成答案结束LangGraph vs LangChain需求LangChainLangGraph简单问答机器人适合不太适合快速原型验证适合配置稍多复杂的流程控制困难原生支持需要人工审批需要自己实现内置支持多 Agent 协作困难轻松表达状态持久化需要自己实现内置支持选择建议如果你的应用只是简单的用户提问 → Agent 回答用 LangChain 就够了。如果你需要精确控制执行流程分支、循环、并行在关键节点暂停等待人工审批多个 Agent 协作完成复杂任务保存和恢复执行状态那么 LangGraph 更合适。运行机制LangGraph 的执行分为两个阶段阶段 1定义图结构定义 State数据结构定义 Node执行逻辑定义 Edge流程控制阶段 2编译执行compile()把图编译成可执行的应用invoke()执行应用编译的时候LangGraph 会验证图结构是否完整没有孤立节点优化执行计划配置运行时参数如 Checkpointer为什么用图结构图结构有几个关键优势1. 可视化图可以画出来方便理解和调试。START → A → B → C → END ↑ │ └────┘一看就知道执行完 B 到 CC 可能回到 B 形成循环。2. 并发执行如果节点之间没有依赖关系可以并行执行。┌→ A ─┐ START ─┼→ B ─┼→ END └→ C ─┘A、B、C 可以同时执行最后汇总结果。3. 状态管理State 在节点之间传递和更新天然支持状态追踪和持久化。4. 流程控制分支、循环、并行都是图的基本操作不需要额外实现。总结LangGraph 的核心价值把 Agent 的执行流程从黑盒变成明盒。State数据容器节点之间传递信息Node执行单元处理具体逻辑Edge流程控制决定执行顺序Graph完整应用编译后执行

相关文章:

【LangGraph】一.LangGraph 到底是什么

目录 核心思想 从 LangChain 的局限说起 LangGraph 的解决方案 四个核心概念 1. State(状态) 2. Node(节点) 3. Edge(边) 4. Graph(图) 实际例子:带循环的检索 …...

Translumo终极指南:3步搞定实时屏幕翻译,打破语言障碍的免费神器

Translumo终极指南:3步搞定实时屏幕翻译,打破语言障碍的免费神器 【免费下载链接】Translumo Advanced real-time screen translator for games, hardcoded subtitles in videos, static text and etc. 项目地址: https://gitcode.com/gh_mirrors/tr/T…...

WarcraftHelper:让魔兽争霸3在现代电脑上流畅运行的5个关键功能

WarcraftHelper:让魔兽争霸3在现代电脑上流畅运行的5个关键功能 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为经典游戏魔兽争霸3在…...

题解:AcWing 6029 括弧匹配检验

本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。 欢迎大…...

从RADIUS服务器到AP:实战搭建小型企业WPA2-Enterprise无线网络(FreeRADIUS + OpenWRT)

从零搭建企业级Wi-Fi认证体系:FreeRADIUS与OpenWRT深度整合指南 在小型企业办公环境中,传统WPA2-Personal的共享密码机制正面临越来越严峻的安全挑战。当员工离职或设备丢失时,管理员不得不频繁更换密码,而内部网络流量缺乏个体化…...

告别词库迁移烦恼:深蓝词库转换器让20+输入法格式自由互通

告别词库迁移烦恼:深蓝词库转换器让20输入法格式自由互通 【免费下载链接】imewlconverter ”深蓝词库转换“ 一款开源免费的输入法词库转换程序 项目地址: https://gitcode.com/gh_mirrors/im/imewlconverter 还在为更换输入法时丢失个人词库而烦恼吗&#…...

题解:AcWing 6028 表达式括号匹配

本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。 欢迎大…...

taotoken模型广场如何辅助ubuntu开发者进行模型选型与测试

Taotoken 模型广场如何辅助 Ubuntu 开发者进行模型选型与测试 1. 模型选型的技术挑战 Ubuntu 开发者在启动新 AI 项目时,通常需要评估多个大语言模型的性能、价格和适用场景。传统方式需要分别查阅不同厂商的文档,注册多个账号,并编写适配各…...

穿越机飞行控制革命:Betaflight 2025.12版本如何彻底解决抖动问题?

穿越机飞行控制革命:Betaflight 2025.12版本如何彻底解决抖动问题? 【免费下载链接】betaflight Open Source Flight Controller Firmware 项目地址: https://gitcode.com/gh_mirrors/be/betaflight 还在为穿越机飞行中的恼人抖动而烦恼吗&#x…...

如何用AutoDock-Vina进行分子对接:新手完整指南

如何用AutoDock-Vina进行分子对接:新手完整指南 【免费下载链接】AutoDock-Vina AutoDock Vina 项目地址: https://gitcode.com/gh_mirrors/au/AutoDock-Vina AutoDock-Vina是目前最快、最广泛使用的开源分子对接引擎之一,它基于简单的评分函数和…...

腾讯AI协同者手把手教你学习CodeBuddyAI编辑器IDE使用与核心方法全网唯一

本人是腾讯旗下的AI协同者,这个名字有点突兀,之前是我总是称自己是高级研发工程师,但是现在不叫研发工程师了,在AI奋起的时代我们叫自己新职位 AI协同者! 我本身就是AI IDE的深度使用者,分享一下自己的工作…...

番茄小说下载器终极指南:如何轻松构建个人数字图书馆

番茄小说下载器终极指南:如何轻松构建个人数字图书馆 【免费下载链接】Tomato-Novel-Downloader 番茄小说下载器不精简版 项目地址: https://gitcode.com/gh_mirrors/to/Tomato-Novel-Downloader 还在为网络不稳定无法阅读小说而烦恼吗?每天奔波于…...

DOTA数据集标签文件详解:手把手教你读懂旋转框坐标与难易度标注

DOTA数据集标签文件深度解析:从旋转框坐标到实战应用 在计算机视觉领域,航空影像的目标检测一直是个独特而富有挑战性的方向。不同于常规的水平和垂直边界框,航空视角下的物体往往呈现任意角度的旋转特性。DOTA数据集作为这一领域的标杆性资源…...

02华夏之光永存・开源:黄大年茶思屋榜文解法「第24期 第2题」 基于自动控制闭环的网络自适应技术专项完整解法

02华夏之光永存・开源:黄大年茶思屋榜文解法「第24期 第2题」 基于自动控制闭环的网络自适应技术专项完整解法 一、摘要 本题归属ADN自动驾驶网络闭环自适应调度领域,全球现代工程技术已触达绝对天花板,现有开环调度框架、流量预测模型、传统…...

在多轮长对话任务中观察Taotoken服务稳定性的实际案例

在多轮长对话任务中观察Taotoken服务稳定性的实际案例 1. 测试场景设计 我们设计了一个模拟心理咨询场景的多轮对话测试,该场景需要AI助手持续跟踪用户情绪变化并保持上下文连贯性。测试脚本包含20轮对话交互,平均每轮用户输入约120字,AI响…...

RimSort终极指南:高效解决《环世界》模组管理与排序难题

RimSort终极指南:高效解决《环世界》模组管理与排序难题 【免费下载链接】RimSort RimSort is an open source mod manager for the video game RimWorld. There is support for Linux, Mac, and Windows, built from the ground up to be a reliable, community-ma…...

基于OpenClaw与n8n的AI智能体自动化工作流构建指南

1. 项目概述:当AI智能体遇上自动化工作流最近在折腾自动化工具链,发现一个挺有意思的项目,叫openclaw-n8n-railway。光看这个名字,就能拆出三个关键部分:openclaw(开源AI智能体框架)、n8n&#…...

从颜色代码到网络抓包:Hex编码的5个意想不到的实用场景

从颜色代码到网络抓包:Hex编码的5个意想不到的实用场景 在数字世界的底层,Hex编码如同一位沉默的翻译官,将冰冷的二进制数据转化为人类可理解的十六进制字符。这种由0-9和A-F组成的简洁表达方式,远不止是计算机科学教材里的抽象概…...

东方审美中的翡翠:为什么翡翠不只是饰品,也是身份、文化和情绪价值

在很多东方家庭里,翡翠从来不只是“戴在身上的一件珠宝”。它更像一种沉默的语言:不喧哗,却有分量;不张扬,却能看出品味;不追赶潮流,却能陪人走过很长时间。一个人选择翡翠,往往不是…...

写给程序员小白的2026网络安全就业指南!缺口破200万+张雪峰力荐,快收藏!

写给程序员&小白的2026网络安全就业指南!缺口破200万张雪峰力荐,快收藏! 本文围绕2026年网络安全就业赛道展开,指出国内人才缺口超200万,高端攻防人才稀缺,行业薪资领跑多数IT领域,平均年薪…...

告别付费!在XUbuntu 22.04上手动编译激活Typora 1.8.10的保姆级记录

在XUbuntu 22.04上手动编译激活Typora 1.8.10的完整实践指南 作为一个长期依赖Typora进行文档创作的开发者,当得知这款Markdown编辑器转为付费模式时,我的第一反应不是抱怨,而是好奇:能否通过开源社区的力量延续免费使用的可能&am…...

利用Taotoken快速为内部知识库问答系统接入大模型

利用Taotoken快速为内部知识库问答系统接入大模型 1. 企业知识库问答系统的技术选型 构建基于内部文档的智能问答系统需要解决三个核心问题:文档处理、语义检索和答案生成。传统方案通常需要独立对接多个大模型API提供商,导致开发复杂度高且难以灵活切…...

AI编程指令模板库

## AHK脚本编写推荐约束1、原因:a、优点:随着AHK脚本功能增加,过长的代码影响后续修改和扩展,把每个功能独立封装成函数,集中管理,方便随时快速定位、单独修改,而不会牵一发而动全身。b、缺点&a…...

PicTech 妙言小智免费图片翻译3.0升级:排版优化让体验全面飞跃!

👋 Welcome! Im here to help you create powerful, SEO-optimized content in multiple ways. 🚀 PicTech 妙言小智免费图片翻译3.0升级:排版优化让体验全面飞跃! Meta Description: PicTech 妙言小智免费图片翻译3.0重磅升级&a…...

战略级开源项目管理平台:OpenProject赋能团队协作的智能化解决方案

战略级开源项目管理平台:OpenProject赋能团队协作的智能化解决方案 【免费下载链接】openproject OpenProject is the leading open source project management software. 项目地址: https://gitcode.com/GitHub_Trending/op/openproject 在数字化转型浪潮中…...

AI 幻觉与可信度:大模型的阿喀琉斯之踵

系列:每日 AI 知识点 期数:第 03 期 主题:AI 幻觉与可信度 难度:⭐⭐(入门) 一句话:AI 会一本正经地"编造"答案。了解幻觉的成因和类型,学会判断什么时候该信任 AI,是安全使用 AI 的必修课。 一、什么是 AI 幻觉? 2023年,美国律师 Steven Schwartz 在一起…...

Hitboxer终极指南:如何用键盘重映射工具解决游戏输入冲突问题

Hitboxer终极指南:如何用键盘重映射工具解决游戏输入冲突问题 【免费下载链接】socd Key remapper for epic gamers 项目地址: https://gitcode.com/gh_mirrors/so/socd 你是否在玩《空洞骑士》等平台动作游戏时,因为键盘同时按下左右方向键而无法…...

初创公司如何利用统一API管理多个AI模型以应对产品快速迭代

初创公司如何利用统一API管理多个AI模型以应对产品快速迭代 1. 统一接入的价值与挑战 初创公司在产品快速迭代阶段常面临模型选型难题。不同功能模块可能对语言理解、代码生成或创意写作有差异化需求,而单一供应商的模型往往难以兼顾所有场景。传统方案需要为每个…...

医疗器械生产物料编码规则概述

医疗器械生产物料编码规则概述 医疗器械生产物料编码是企业管理物料、追踪供应链、确保产品质量的重要工具。编码规则需遵循行业标准,兼顾唯一性、可扩展性和易用性。以下为常见的编码规则设计方法。 编码结构设计 医疗器械物料编码通常采用层级结构,包含…...

2026技术实战:用ChatGPT搭建个人办公自动化流水线(国内直访方案全解析)

如果你想让ChatGPT真正“跑”起来,而不只是聊天,那么把它接入你的Excel、邮箱和文件系统是一个投入产出比极高的选择。当前国内能直接使用且稳定调用GPT-4o的聚合平台中,RskAi(www.rsk.cn)已完整支持文件上传、代码解释…...