Langgraph学习一:基本流程
目录参考文档1 LangChain/LangGraph 对比2 常见多智能体架构3 LangGraph的基本构成3.1 使用节点构成图3.2 创建图3.2.1 安装langgraph3.2.2 创建节点之间流转的数据State3.2.3 创建节点node3.2.4 通过边edge连接node3.2.5 编译图3.2.6 运行图3.3 图的可视化3.3.1 通过ASCII 控制台打印3.3.2 使用markdown3.3.3 保存markdown图像3.3.4 直接画图3.3.5 画图依赖包graphviz参考文档https://www.bilibili.com/video/BV1R5V26xE7x?spm_id_from333.788.player.switchvd_source045329e591c0a8451922c76067d8b77cp481 LangChain/LangGraph 对比langchain适用于单智能体简单对话管理LangGraph多智能体和记忆管理是对langchain的封装避免了复杂的会话状态管理。2 常见多智能体架构3 LangGraph的基本构成3.1 使用节点构成图3.2 创建图demofrom langgraph.graph import END, START, StateGraph from typing import TypedDict # 状态模型字典类型 class State(TypedDict): input: int # 输入值 output: int # 输出状态 def node1(state: State) - State: return {output: state[input] 1} def node2(state: State) - State: return {output: state[output] * 2} graph StateGraph(State) graph.add_node(node1, node1) graph.add_node(node2, node2) graph.add_edge(START, node1) graph.add_edge(node1, node2) graph.add_edge(node2, END) compiled_graph graph.compile() # compiled_graph.get_graph().draw_png(graph.png) result compiled_graph.invoke(State(input0)) print(result)3.2.1 安装langgraphpip install -U langgraph3.2.2 创建节点之间流转的数据State使用字典类型作为数据流转的类型不同节点之间共享一个对象from typing import TypedDict # 状态模型字典类型 class State(TypedDict): input: int # 输入值 output: int # 输出状态3.2.3 创建节点node节点就是一个个功能函数模块节点内部对状态State进行变更。1 创建状态图时需要添加状态类型作为参数2 图通通过add_node添加节点# 1 定义节点 def node1(state: State) - State: return {output: state[input] 1} def node2(state: State) - State: return {output: state[output] * 2} # 2 创建图时指定数据流转的类型 graph StateGraph(State) # 3 图添加节点 graph.add_node(node1, node1) graph.add_node(node2, node2)3.2.4 通过边edge连接node通过add_edge绑定节点确定了数据流转的顺序。起始节点为langgraph中定义的START终止节点为langgraph中定义的END# 起始节点为START终止节点为END graph.add_edge(START, node1) graph.add_edge(node1, node2) graph.add_edge(node2, END)3.2.5 编译图图只有编译后才能够运行时执行compiled_graph graph.compile()3.2.6 运行图图在激活时需要传入初始化的状态State(input0)这里没有对state的output进行初始化是由于代码中node1中会对state的output进行初始化。result compiled_graph.invoke(State(input0)) print(result)3.3 图的可视化个人认为开发时使用ASCII画图就行配置简单显示够用如果要输出用于外发个人认为输出markdown文本就行然后用专业的工具进行展示和显示效果优化。Online FlowChart Diagrams Editor - Mermaid Live Editor3.3.1 通过ASCII 控制台打印安装依赖包pip install grandalf添加打印逻辑ascii_graph compiled_graph.get_graph().draw_ascii() print(ascii_graph)效果3.3.2 使用markdown将markdown保存为文件然后进行vscode的预览mermaid_graph compiled_graph.get_graph().draw_mermaid() with open(graph.md, w) as f: f.write(mermaid\n) # 添加起始标记 f.write(mermaid_graph) f.write(\n) # 添加结束标记3.3.3 保存markdown图像mermaid_graph compiled_graph.get_graph().draw_mermaid_png() with open(md.png, wb) as f: f.write(mermaid_graph)3.3.4 直接画图compiled_graph.get_graph().draw_png(graph.png)3.3.5 画图依赖包graphvizmac电脑安装系统级依赖包brew install graphviz配置环境变量export GRAPHVIZ_DIR$(brew --prefix graphviz)安装python库pip install -U pygraphviz \ --config-settings--global-optionbuild_ext \ --config-settings--global-option-I$GRAPHVIZ_DIR/include \ --config-settings--global-option-L$GRAPHVIZ_DIR/lib

相关新闻

Linux应急响应实战:从靶机演练到入侵排查全流程解析

Linux应急响应实战:从靶机演练到入侵排查全流程解析

1. 项目概述:从靶机到实战的应急响应演练最近在整理自己的技能树,发现“应急响应”这块一直是理论多、实践少。看再多案例,不亲手处理一遍,总觉得心里没底。正好,网上有很多安全爱好者分享的“应急响应靶机”镜像&…

2026/6/26 21:08:29阅读更多 →
ExtractorSharp游戏资源编辑器:从零开始制作个性化游戏补丁

ExtractorSharp游戏资源编辑器:从零开始制作个性化游戏补丁

ExtractorSharp游戏资源编辑器:从零开始制作个性化游戏补丁 【免费下载链接】ExtractorSharp Game Resources Editor 项目地址: https://gitcode.com/gh_mirrors/ex/ExtractorSharp 你是否曾经想过修改自己喜欢的游戏,却因为复杂的文件格式而望而…

2026/6/26 21:08:29阅读更多 →
DeepSeekMath:推动开放语言模型中数学推理的极限

DeepSeekMath:推动开放语言模型中数学推理的极限

文章目录一、前言二、DeepSeekMath核心目标主要贡献关键性能核心结论摘要1. 引言1.1. 贡献1.2. 评估与指标总结一、前言 仅供参考,未经实验验证。因DeepSeekMath这篇论文提出了重要的GRPO算法,加之后面DeepSeeMathV2思想的重要性,我们有必要…

2026/6/26 21:08:29阅读更多 →
【企业级IDE选型避坑手册】:MyEclipse用户迁移到IntelliJ IDEA时92.6%踩过的3个致命配置陷阱(附自动迁移脚本+兼容性检测工具)

【企业级IDE选型避坑手册】:MyEclipse用户迁移到IntelliJ IDEA时92.6%踩过的3个致命配置陷阱(附自动迁移脚本+兼容性检测工具)

更多请点击: https://kaifayun.com 第一章:MyEclipse与IntelliJ IDEA的核心架构差异解析 MyEclipse与IntelliJ IDEA虽同为Java集成开发环境(IDE),但其底层架构设计理念存在根本性分歧:MyEclipse基于Eclips…

2026/6/26 22:28:40阅读更多 →
1、C++ 基础知识笔记

1、C++ 基础知识笔记

C 是一门庞大且复杂的语言。为了帮你高效复习,我将 C 基础知识体系化为 7 大核心模块。这份清单涵盖了从语法基础到现代 C(C11/14/17/20)的关键特性,适合作为面试准备或项目开发的自查表。1. 基础语法与数据类型 这是 C 的基石&am…

2026/6/26 22:28:40阅读更多 →
Cesium 蓝色教程

Cesium 蓝色教程

蓝色 蓝色 ▶ 在线运行案例 案例合集: 三维可视化功能案例(threehub.cn)开源仓库github地址: https://github.com/z2586300277/three-cesium-examples400个案例代码: 网盘链接 你将学到什么 Scene / Camera / Renderer 标准…

2026/6/26 22:28:40阅读更多 →
Windows 部署 AI 自动化工具 OpenClaw 网关加载慢、程序闪退处理办法

Windows 部署 AI 自动化工具 OpenClaw 网关加载慢、程序闪退处理办法

🔍前言 OpenClaw(圈内昵称小龙虾)是当下热度很高的开源 AI 智能体项目,GitHub 累计收获 28 万以上星标。和常规对话类 AI 不同,它能够读懂自然语言并自动执行电脑本地操作,被很多职场人称作数字员工。本文…

2026/6/26 22:28:40阅读更多 →
3分钟快速找回遗忘QQ账号的终极指南:手机号查QQ号完整教程

3分钟快速找回遗忘QQ账号的终极指南:手机号查QQ号完整教程

3分钟快速找回遗忘QQ账号的终极指南:手机号查QQ号完整教程 【免费下载链接】phone2qq 项目地址: https://gitcode.com/gh_mirrors/ph/phone2qq 你是否曾经因为忘记QQ号而无法登录重要账号?或者换了新手机后,只记得手机号却找不到对应…

2026/6/26 22:28:40阅读更多 →
电力电子调试防护罩设计与应用实践

电力电子调试防护罩设计与应用实践

1. 项目背景与需求解析在电力电子实验室工作十年,我最头疼的就是调试大功率变流器时那些突如其来的"烟花表演"。去年团队里一台50kW的逆变器在满载测试时IGBT模块突然炸裂,飞溅的金属碎片直接击穿了隔壁示波器的屏幕,那次事故让我们…

2026/6/26 22:23:40阅读更多 →
【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体 一文搞定到底什么是智能体【人工智能】一文搞定到底什么是智能体一. LM,WorkFlow,Agent分别有什么么不同二. Agent的思考过程是怎样的三. Agent的五个核心部分1)LLM2)Prompt3)Me…

2026/6/26 11:03:22阅读更多 →
嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

1. 嵌入式GUI控件:从原理到实战的深度解析在嵌入式系统开发中,图形用户界面(GUI)的设计与实现往往是项目从“能用”到“好用”的关键一跃。不同于资源充沛的PC或移动平台,嵌入式设备的GUI需要在有限的CPU性能、内存空间…

2026/6/26 4:15:25阅读更多 →
Google AI Studio 300美元额度的真相与实战指南

Google AI Studio 300美元额度的真相与实战指南

1. 这300美金不是“送钱”,而是Google埋下的第一道技术门槛 你看到标题里那个醒目的“$300美金”时,第一反应可能是:又一个免费额度?领完就完事?我亲手试过——这300美金根本不是红包,而是一张入场券&…

2026/6/26 9:29:01阅读更多 →
HPE (慧与) 服务器专用 ESXi 9 全套官方定制资源详解 + 完整部署升级教程

HPE (慧与) 服务器专用 ESXi 9 全套官方定制资源详解 + 完整部署升级教程

一、前言:企业运维痛点与资源价值自博通收购 VMware 之后,原 VMware 公开免费下载渠道全面关闭,企业运维人员想要获取适配 HPE 慧与服务器的 ESXi 9 原厂镜像,必须注册博通账号、绑定有效授权才能下载,无授权账号无法获…

2026/6/26 0:02:15阅读更多 →
Kotlin的@JvmStatic与@JvmField:与Java互操作的注解

Kotlin的@JvmStatic与@JvmField:与Java互操作的注解

Kotlin作为一门现代编程语言,与Java的互操作性一直是其核心优势之一。为了让Kotlin代码能够无缝对接Java,Kotlin提供了多种注解来优化互操作体验,其中JvmStatic和JvmField是两个关键注解。它们分别用于解决静态成员和字段在Java中的访问问题&…

2026/6/26 0:02:15阅读更多 →
深入解析musl libc中的mmap实现源码

深入解析musl libc中的mmap实现源码

最近在阅读musl libc源码时,发现其mmap的实现非常精妙,特分享给大家。 一、代码整体结构 这段代码实现了__mmap函数,并通过weak_alias导出为mmap。这是典型的musl libc风格——提供弱符号以便用户可以重写。 weak_alias(__mmap, mmap); 二…

2026/6/26 0:02:15阅读更多 →