教程与示例 #
本文档中引用的文件
- basic_example/README.md
- conditional_routing/README.md
- parallel_execution/README.md
- human_in_the_loop/README.md
- subgraphs/README.md
- swarm/README.md
- time_travel/README.md
- rag_advanced/README.md
- create_agent/README.md
- configuration/README.md
- custom_reducer/README.md
- state_schema/README.md
- memory_basic/README.md
- streaming_modes/README.md
目录 #
教程索引与分类 #
本教程索引根据功能复杂度和主题对 LangGraphGo 项目中的示例进行结构化分类,便于学习者循序渐进地掌握核心概念与高级特性。
按复杂度分类 #
| 复杂度 | 示例名称 | 主要学习目标 |
|---|---|---|
| 基础 | basic_example, basic_llm, conditional_routing |
图构建、节点执行、条件路由 |
| 中级 | parallel_execution, configuration, state_schema, memory_basic |
并行执行、状态管理、内存集成 |
| 高级 | subgraphs, swarm, time_travel, rag_advanced |
子图组合、多代理协作、状态时间旅行 |
按主题分类 #
- 基础概念:
basic_example,basic_llm,conditional_routing,conditional_edges_example - 高级功能:
parallel_execution,configuration,custom_reducer,state_schema,streaming_modes - 持久化与检查点:
checkpointing,durable_execution - 人机协作(HITL):
human_in_the_loop,dynamic_interrupt,time_travel - 预构建代理:
create_agent,react_agent,supervisor,swarm - RAG(检索增强生成):
rag_basic,rag_advanced,rag_pipeline,rag_with_embeddings - 内存管理:
memory_basic,memory_chatbot - 可视化与调试:
visualization,listeners
基础示例教程 #
Basic Example 教程 #
本示例全面展示了 LangGraphGo 的四大核心功能:基础图执行、流式监听、检查点持久化和可视化。
解决的问题
为初学者提供一个完整的入门示例,展示如何构建、执行、监控和调试一个工作流图。
代码结构
- 使用
NewMessageGraph构建基础图 - 通过
AddNode和AddEdge定义节点与边 - 使用
ListenableMessageGraph添加进度监听器 - 通过
CheckpointableMessageGraph实现状态持久化 - 调用
DrawMermaid和DrawASCII生成图结构可视化
关键实现细节
- 图的编译与调用流程
- 流式监听器的注册与事件处理
- 内存检查点存储的配置
- 图结构导出与可视化
Section sources
- [basic_example/README.md](https://github.com/smallnest/langgraphgo/blob/main/examples/basic_example/README.md)
Conditional Routing 教程 #
本示例展示了基于内容分析、状态判断和多条件逻辑的动态路由模式。
解决的问题
如何根据输入内容或当前状态动态选择不同的执行路径。
代码结构
- 定义多个处理节点(如
classify,process_text,process_code) - 使用条件边(Conditional Edges)实现路由逻辑
- 在路由函数中分析状态并返回目标节点名
关键实现细节
- 条件边函数的定义与注册
- 状态检查与内容分类逻辑
- 默认路径(fallback)的处理
Section sources
- [conditional_routing/README.md](https://github.com/smallnest/langgraphgo/blob/main/examples/conditional_routing/README.md)
进阶功能示例教程 #
Parallel Execution 教程 #
本示例展示了如何实现节点的并行执行(扇出/扇入模式)。
解决的问题
如何同时执行多个独立任务,并将结果合并到状态中。
代码结构
- 一个起始节点连接到多个并行节点
- 使用状态模式或归约器(Reducer)合并并行结果
- 最终节点汇总所有结果
关键实现细节
- 并行节点的自动并发执行机制
- 状态合并策略(如
AppendReducer) - 扇入节点的同步等待
Section sources
- [parallel_execution/README.md](https://github.com/smallnest/langgraphgo/blob/main/examples/parallel_execution/README.md)
Configuration 教程 #
本示例展示了如何使用运行时配置传递元数据和设置。
解决的问题
如何在执行过程中传递用户ID、执行ID、回调函数等上下文信息。
代码结构
- 定义
RunnableConfig结构 - 在
InvokeWithConfig中传入配置 - 在节点中通过上下文访问配置信息
关键实现细节
- 配置对象的构建与传递
- 元数据(metadata)和标签(tags)的使用
- 回调函数的注册
Section sources
- [configuration/README.md](https://github.com/smallnest/langgraphgo/blob/main/examples/configuration/README.md)
State Schema 与 Custom Reducer 教程 #
这两个示例共同展示了复杂状态管理机制。
解决的问题
如何对状态的不同字段应用不同的更新策略(如累加、追加、覆盖)。
代码结构
- 定义
MapSchema并注册归约器 - 为
count字段使用SumReducer - 为
logs字段使用AppendReducer - 为
status字段使用默认覆盖行为
关键实现细节
- 自定义归约器函数的实现
- 状态模式的注册与应用
- 节点返回部分状态更新,由运行时自动合并
Section sources
- [state_schema/README.md](https://github.com/smallnest/langgraphgo/blob/main/examples/state_schema/README.md)
- [custom_reducer/README.md](https://github.com/smallnest/langgraphgo/blob/main/examples/custom_reducer/README.md)
持久化与检查点示例教程 #
Checkpointing 教程 #
该系列示例展示了如何使用不同后端(内存、PostgreSQL、SQLite、Redis)实现状态持久化。
解决的问题
如何保存和恢复长时间运行的工作流状态。
关键实现细节
- 配置
CheckpointStore(内存、PostgreSQL、SQLite、Redis) - 自动保存检查点
- 从检查点恢复执行
Section sources
- [checkpointing/main.go](https://github.com/smallnest/langgraphgo/blob/main/examples/checkpointing/main.go)
- [checkpointing/postgres/main.go](https://github.com/smallnest/langgraphgo/blob/main/examples/checkpointing/postgres/main.go)
- [checkpointing/sqlite/main.go](https://github.com/smallnest/langgraphgo/blob/main/examples/checkpointing/sqlite/main.go)
- [checkpointing/redis/main.go](https://github.com/smallnest/langgraphgo/blob/main/examples/checkpointing/redis/main.go)
人机协作示例教程 #
Human-in-the-loop 教程 #
本示例展示了如何在关键步骤插入人工审批环节。
解决的问题
如何在自动化流程中暂停执行,等待人工干预后再继续。
代码结构
- 使用
InterruptBefore配置在指定节点前中断 - 捕获
GraphInterrupt错误并检查当前状态 - 人工修改状态后,使用
ResumeFrom恢复执行
关键实现细节
- 中断与恢复的配置
- 状态检查与修改
- 错误类型断言处理
Section sources
- [human_in_the_loop/README.md](https://github.com/smallnest/langgraphgo/blob/main/examples/human_in_the_loop/README.md)
Time Travel 教程 #
本示例扩展了人机协作,支持状态历史的查看、修改和分支执行。
解决的问题
如何调试工作流、修改历史状态并从修改点重新执行(“如果当时…”场景)。
代码结构
- 启用检查点存储完整状态历史
- 使用
UpdateState修改特定检查点的状态 - 从新状态分支继续执行
关键实现细节
UpdateState的调用与新检查点的创建- 状态版本控制
- 分支执行路径
Section sources
- [time_travel/README.md](https://github.com/smallnest/langgraphgo/blob/main/examples/time_travel/README.md)
预构建代理示例教程 #
Create Agent 教程 #
本示例展示了如何使用工厂函数和函数式选项模式创建代理。
解决的问题
如何简化代理的创建过程,支持灵活配置系统消息和状态修改器。
代码结构
- 调用
prebuilt.CreateAgent创建代理 - 使用
WithSystemMessage设置代理角色 - 使用
WithStateModifier注入消息处理逻辑
关键实现细节
- 函数式选项模式的应用
- 系统消息的注入
- 状态修改器的实现
Section sources
- [create_agent/README.md](https://github.com/smallnest/langgraphgo/blob/main/examples/create_agent/README.md)
Swarm 教程 #
本示例展示了多代理协作的 Swarm 模式。
解决的问题
如何实现去中心化的多代理协作,允许代理之间直接交接任务。
代码结构
- 定义多个代理节点(如
Researcher,Writer) - 提供
handoff工具用于代理交接 - 使用路由函数根据状态中的
next字段决定下一个执行的代理
关键实现细节
- 交接工具(handoff tool)的定义与调用
- 路由函数的实现
- 共享状态(消息历史)的维护
Section sources
- [swarm/README.md](https://github.com/smallnest/langgraphgo/blob/main/examples/swarm/README.md)
RAG 示例教程 #
RAG Advanced 教程 #
本示例展示了高级检索增强生成(RAG)流水线。
解决的问题
如何构建一个生产级的 RAG 系统,包含文档分块、重排序和引用生成。
代码结构
- 文档分块(Text Splitting)
- 向量检索(Retrieve)
- 相关性重排序(Rerank)
- LLM 生成答案(Generate)
- 引用格式化(Format Citations)
关键实现细节
- 分块大小与重叠的配置
- 重排序算法的应用
- 引用信息的追踪与生成
- 高级 RAG 流水线的编排
Section sources
- [rag_advanced/README.md](https://github.com/smallnest/langgraphgo/blob/main/examples/rag_advanced/README.md)
高级设计模式解析 #
Subgraphs(子图)设计模式 #
核心思想
将复杂系统分解为可复用的子图模块,实现逻辑封装和组合。
实现原理
- 使用
AddSubgraph将一个图作为节点添加到父图中 - 子图拥有独立的状态和执行流程
- 父图与子图之间通过状态映射传递数据
优势
- 封装性:隐藏子任务的复杂性
- 复用性:同一子图可在多个场景中使用
- 可维护性:模块化开发,便于测试和调试
Section sources
- [subgraphs/README.md](https://github.com/smallnest/langgraphgo/blob/main/examples/subgraphs/README.md)
Swarm(代理群)设计模式 #
核心思想
去中心化的多代理协作,代理之间通过“交接”机制直接传递控制权。
实现原理
- 代理通过调用
handoff工具请求交接 - 状态中设置
next字段指明下一个代理 - 路由函数根据
next字段进行条件跳转
优势
- 灵活性:代理可动态决定下一个执行者
- 去中心化:无需中央调度器
- 类人协作:模拟专家团队协作模式
Section sources
- [swarm/README.md](https://github.com/smallnest/langgraphgo/blob/main/examples/swarm/README.md)
Time Travel(时间旅行)设计模式 #
核心思想
将工作流视为可编辑的时间线,支持查看历史、修改过去状态并从新分支继续执行。
实现原理
- 检查点机制保存完整状态历史
UpdateState允许修改特定检查点的状态- 从修改后的状态创建新分支并继续执行
优势
- 调试能力:可重现和修改历史状态
- 纠错机制:人工可纠正错误决策
- 探索性:支持“假设”场景分析
Section sources
- [time_travel/README.md](https://github.com/smallnest/langgraphgo/blob/main/examples/time_travel/README.md)