LangGraph笔记:三、节点与边
LangGraph中节点和边构成了整个工作流的框架。节点是负责处理业务的边负责将节点处理完毕的数据传动给下一个节点。LangGraph是从START位置开始然后到节点最后END终止位置。START节点代表用户输入进入图的位置所有从START出发的边决定了图的入口点。END节点表示图执行结束的位置指向END的边告诉 LangGraph 在这里停止执行。LangGraph支持多种连接方式并行连接盒串行连接。串行连接START----节点1------边-------节点2------边-------节点3------边-------END并行连接START----节点1--| |------边-------节点3------边-------END START----节点2--|3.1、节点节点实际就是一个函数接受当前的状态作为输入执行相应的业务之后输出返回或更新状态。这个节点可以是一个简单的函数可以是一个完整的LangGraph子图。节点函数返回是字典只包含需要更新的状态字段即可不需要整个状态对象。LangGraph会自动将这个更新合并到整体状态中。简单的函数:defsimple_node(state:State)-dict:return{message:state[text]}完整的LangGraph子图fromtyping_extensionsimportTypedDictclassState(TypedDict):messages:Annotated[list[AnyMessage],add_messages]defnode_a(state:State):return{messages:value_a}defnode_b(state:State):return{messages:value_b}defgraph_demo(state:State):builderStateGraph(State)builder.add_node(node_a)builder.add_node(node_b)builder.add_edge(START,node_a)builder.add_edge(START,node_b)demo1StateGraph(State)demo1.add_node(graph_demo,graph_demo)demo1.add_edge(START,graph_demo)demo1.add_edge(graph_demo,END)节点函数可以接受更多参数来获取运行时信息多参数接收fromlangchain_core.runnablesimportRunnableConfigfromlanggraph.runtimeimportRuntimedefadv_node(state:State,config:RunnableConfig,runtime:Runtime):# config 包含线程ID、标签等配置信息thread_idconfig[configurable][thread_id]# runtime 提供上下文、存储等运行时能力contextruntime.context# 如果有定义上下文的话return{text:fProcessed in thread{thread_id}}builder.add_node(advanced,advanced_node)如果想添加多个节点可以如下操作多节点# 方式一显式指定节点名称builder.add_node(my_node,simple_node)# 方式二使用函数名作为节点名称builder.add_node(simple_node)# 节点名称为 simple_node多边fromlanggraph.graphimportSTART,END# 定义从起点到第一个节点的边builder.add_edge(START,processor)# 定义从最后一个节点到终点的边builder.add_edge(processor,END)3.2、节点缓存机制LangGraph支持节点缓存功能主要用于解决一些耗时的功能调用缓存可以显著减少重复计算。importtimefromlanggraph.cache.memoryimportInMemoryCachefromlanggraph.typesimportCachePolicy memberInMemoryCache()defdemo_node(state:State)-dict:time.sleep(15)return{message:state[message]}# 添加缓存策略TTL 为 120 秒builder.add_node(demo_node,demo_node,cache_policyCachePolicy(ttl120))# 编译图时启用缓存graphbuilder.compile(cachemember)# 第一次调用会执行耗时操作result1graph.invoke({message:5})# 第二次调用会命中缓存立即返回result2graph.invoke({message:5})3.3、边类型边类型分为普通边和条件边。3.3.1、普通边普通边是确定的方向、没有条件的流转路径一旦定义流传路径是固定的不依赖任何运行时状态适合确定性分支流程。START----节点1------边-------节点2------边-------节点3------边-------ENDbuilder.add_edge(node_a,node_b)3.3.2、条件边条件边动态路由逻辑允许根据运行时状态动态的决定下一个节点如根据LLM的输出决定调用哪个工具。defrouting_function(state:State)-str:# 根据状态决定下一个节点ifstate[condition]A:returnnode_belse:returnnode_c# 添加条件边builder.add_conditional_edges(node_a,routing_function)条件边多节点并行条件边的路由函数返回目标节点的名称如果返回字符串列表所有对应的节点会并行执行。defmulti_route(state:State)-list[str]:return[node_b,node_c,node_d]# 入口点builder.add_edges(START,node_a)# 条件边返回节点列表并且并行执行builder.add_conditional_edges(node_a,multi_route)**条件入口点动态选择起点**允许根据输入状态动态选择从哪个节点开始执行。defadmin_node(state:State):return{message:one}defnormal_node(state:State):return{message:two}defentry_routing(state:State)-str:# 根据输入决定从哪个节点开始ifstate[user_type]admin:returnadmin_nodeelse:returnnormal_node# 从 START 添加条件边builder.add_conditional_edges(START,entry_routing)**路径映射显示定义路由**当路由函数的返回值不是直接的节点名称而是根据返回的一个属性值判断使用路径映射将标识转换为实际的节点名称。路径映射让路由逻辑与节点名称解耦提高了代码的可维护性。当节点名称变化时只需修改映射表不需要改动路由函数。defstatus_router(state:State)-str:returnsuccess# return retry# return faildefcomplete_node(state:State):return{message:complete_node}defretry_node(state:State):return{message:retry_node}deferror_node(state:State):return{message:error_node}# 使用路径映射将状态码映射到节点builder.add_conditional_edges(checker,status_router,{success:complete_node,retry:retry_node,fail:error_node})终止条件路由到END路由函数可以返回END来终止图执行。这在满足特定条件时提前结束流程很有用。defnext_node(state:State):return{message:next_node}defrouter(state:State)-str:ifstate[should_continue]isFalse:returnEND# 终止执行returnnext_nodebuilder.add_conditional_edges(checker,router)允许边可以通过END终止图执行。defnext_node(state:State):return{message:next_node}builder.add_edges(next_node,END)**多入口多出口**对于复杂的工作流可以多个入口或出口。builder.add_edge(START,start_node)builder.add_edge(success_node,END)builder.add_edge(error_node,END)builder.add_edge(partial_node,END)

相关新闻

2026主流情感测算APP横评:正缘占卜、星座配对、情感挽回软件深度实测,按需避坑指南

2026主流情感测算APP横评:正缘占卜、星座配对、情感挽回软件深度实测,按需避坑指南

2026主流情感测算APP横评:正缘占卜、星座配对、情感挽回软件深度实测,按需避坑指南 伴随大众情绪需求多元化,线上情感服务赛道划分出清晰分支,一部分软件主打轻量化星象塔罗娱乐,一部分深耕严肃心理咨询,还…

2026/6/28 2:38:14阅读更多 →
基于大数据爬虫+Hadoop深度学习的智能交通管理系统

基于大数据爬虫+Hadoop深度学习的智能交通管理系统

选题背景 随着全球城市化进程的加速推进,交通拥堵、事故频发、环境污染等"城市病"日益成为制约城市可持续发展的瓶颈。传统交通管理系统主要依赖固定传感器、人工巡查和简单统计分析,存在数据采集维度单一、实时性不足、分析能力有限等固有缺陷…

2026/6/28 2:38:14阅读更多 →
2026婚恋情感软件横向测评|塔罗测算、正缘预测、情感挽回多平台对比,普通人怎么挑情感咨询APP

2026婚恋情感软件横向测评|塔罗测算、正缘预测、情感挽回多平台对比,普通人怎么挑情感咨询APP

2026婚恋情感软件横向测评|塔罗测算、正缘预测、情感挽回多平台对比,普通人怎么挑情感咨询APP 当下年轻人面对单身择偶、情侣矛盾、分手修复等各类情感难题时,更习惯借助线上平台寻求疏导与建议,星座配对、年度爱情运势、塔罗解析…

2026/6/28 2:38:14阅读更多 →
还在愁毕业论文写不完?9款AI论文平台一键秒创超长篇幅内容!

还在愁毕业论文写不完?9款AI论文平台一键秒创超长篇幅内容!

还在为论文写作的低效重复、内容单薄、格式规范等问题焦虑?AI赋能学术写作的时代已来,9款免费AI工具可覆盖论文写作全流程,助你告别传统写作的痛苦循环。其中千笔AI能30分钟生成20万字全学科初稿,还集成改稿、降重、绘图等一站式功…

2026/6/28 4:23:19阅读更多 →
25个医药领域的AI工具

25个医药领域的AI工具

百小应(医疗大模型) 症状问诊、就医准备、病情分析、症状自查、就医建议、用药咨询、治疗方案、慢病管理、孕产健康、儿童健康等能力。 https://ying.baichuan-ai.com/chat?refai.aixinyike.com 免费AI 医学助手“氢离子” 医学AI平台 用药指导、搜文献、搜指南、找药品、临床…

2026/6/28 4:23:19阅读更多 →
清单来了:盘点2026年全网爆红的一键生成论文工具

清单来了:盘点2026年全网爆红的一键生成论文工具

一天写完毕业论文在2026年已不再是天方夜谭。以下是2026年最炸裂、实测能大幅提速的一键生成论文工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,助你高效搞定论文写作。 一、全流程王者:一站式搞定论文全链路(一天定…

2026/6/28 4:23:19阅读更多 →
AI 上下文限制到底是怎么回事——用最直白的话讲明白 128K、1M 和 Agent

AI 上下文限制到底是怎么回事——用最直白的话讲明白 128K、1M 和 Agent

文章目录前言一、上下文就是 AI 的"记性"二、为什么会有这个限制?三、128K 和 1M 是什么意思四、为什么 1M 最近才有?五、Agent 干了什么?——在有限空间里"收纳"六、限制在模型,不在 Agent七、三个记住就行前…

2026/6/28 4:23:19阅读更多 →
2026年GEO优化系统源码开源,如何抓住这波流量红利?

2026年GEO优化系统源码开源,如何抓住这波流量红利?

随着搜索引擎算法的不断升级,传统的SEO优化方式已经难以满足企业获取流量的需求。2026年,GEO优化系统源码的开源,为企业和个人站长提供了全新的流量增长机会。本文将深入分析GEO优化的核心价值,并分享实操建议,帮助你在…

2026/6/28 4:23:19阅读更多 →
BBR与KCC发送速率调节机制

BBR与KCC发送速率调节机制

BBR与KCC发送速率调节机制 0. 问题界定 拥塞控制算法的核心输出只有两个变量:Pacing Rate(物理发送速率) 和 CWND(逻辑拥塞窗口)。本文通过源码和可视化图表,剖析 BBR 与 KCC 在决定"下一时刻该发多快…

2026/6/28 4:18:19阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/6/28 0:08:01阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/6/28 0:08:01阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/6/28 0:08:01阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/6/28 0:08:01阅读更多 →