news 2026/4/28 10:12:47

LangGraph 基础图创建思路

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LangGraph 基础图创建思路

LangGraph 是一个用于构建有状态、多参与者应用的工作流库。创建基础图的思路可以概括为以下步骤:

1. 定义状态(State)

状态是工作流中流动的数据容器,通常用 TypedDict 或 Pydantic 模型定义:
from typing import TypedDict, Annotated
from langgraph.graph import StateGraph, END

class State(TypedDict):
messages: Annotated[list, "对话消息列表"]
summary: str
step: int

2. 创建状态图实例

workflow = StateGraph(State) # 传入状态类型

3. 定义节点函数

节点是工作流的基本执行单元,每个节点:

  • 接收当前状态作为输入
  • 执行特定逻辑
  • 返回状态更新(可以是部分更新)

def node1(state: State):
print(f"节点1: 处理消息 {state['messages']}")
return {"step": 1} # 只更新step字段

def node2(state: State):
return {"step": 2, "summary": "处理完成"}

4. 添加节点到图中

workflow.add_node("node_1", node1)
workflow.add_node("node_2", node2)

5. 设置入口点

workflow.set_entry_point("node_1") # 指定从哪里开始

6. 连接节点(添加边)

定义节点间的流转关系:
# 简单线性流
workflow.add_edge("node_1", "node_2")
workflow.add_edge("node_2", END) # 结束

# 或使用条件边
workflow.add_conditional_edges(
"node_1",
decide_next, # 决策函数
{"continue": "node_2", "end": END}
)

7. 编译和执行

# 编译图
app = workflow.compile()

# 执行
result = app.invoke({"messages": [], "summary": "", "step": 0})

完整示例

from typing import TypedDict
from langgraph.graph import StateGraph, END

# 1. 定义状态
class MyState(TypedDict):
input: str
processed: str
step: int

# 2. 创建图
graph = StateGraph(MyState)

# 3. 定义节点
def input_node(state):
print(f"输入: {state['input']}")
return {"step": 1}

def process_node(state):
processed = state['input'].upper()
return {"processed": processed, "step": 2}

# 4. 添加节点
graph.add_node("input_node", input_node)
graph.add_node("process_node", process_node)

# 5. 设置入口
graph.set_entry_point("input_node")

# 6. 连接节点
graph.add_edge("input_node", "process_node")
graph.add_edge("process_node", END)

# 7. 编译执行
app = graph.compile()
result = app.invoke({"input": "hello", "processed": "", "step": 0})
print(result) # {'input': 'hello', 'processed': 'HELLO', 'step': 2}

示例执行结果

C:\Users\xiayu\miniconda3\envs\langchain03\python.exe C:\Users\xiayu\PyCharmMiscProject\AI-Agent-Dev-Practices-Code\第8章代码\test.py
输入: hello
{'input': 'hello', 'processed': 'HELLO', 'step': 2}

Process finished with exit code 0

设计思路要点

状态驱动:所有数据都通过状态传递
函数式更新:节点返回状态的部分更新,系统会自动合并
声明式连接:用边明确声明节点间关系
可组合:小图可以组合成大图
可视化:可以导出为可视化图表

常见模式

# 线性流

A → B → C → END

# 分支流

→ B
A →
→ C

# 循环流

A → B → (条件判断) → A 或 END

# 并行流

→ B
A → → D
→ C

这种设计让复杂的工作流变得清晰、可维护,特别适合构建AI应用、数据处理流水线等场景。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/28 10:12:35

别再自己写相似度函数了!用Python的Matchms库一键搞定质谱谱图比对

质谱数据分析革命:用Python的Matchms库实现高效谱图比对 在代谢组学和生物信息学研究中,质谱数据比对是每个科研人员都无法绕开的核心环节。想象一下这样的场景:实验室刚完成一批样本的质谱分析,你面对着数百个.mgf或.mzML格式的数…

作者头像 李华
网站建设 2026/4/28 10:11:59

摄像机标定

1 摄像机标定 在摄像机几何模型中,我们得到了摄像机模型变换矩阵为 ,其中,K为摄像机内参,R,C为摄像机外参。 为了方便后续推导方便,对公式符合做出一些修改: 1)使用T代替-C表示平移参数&#x…

作者头像 李华
网站建设 2026/4/28 10:11:35

Goldfish故障排除手册:常见问题与解决方案汇总

Goldfish故障排除手册:常见问题与解决方案汇总 【免费下载链接】goldfish A HashiCorp Vault UI written with VueJS and Vault native Go API 项目地址: https://gitcode.com/gh_mirrors/go/goldfish Goldfish是一款基于VueJS和Vault原生Go API构建的HashiC…

作者头像 李华
网站建设 2026/4/28 10:11:31

变量的本质是程序中用来存放数据的一段存储空间,一般情况下变量所对应的存储空间在内存区域

变量的本质是程序中用来存放数据的一段存储空间,一般情况下变量所对应的存储空间在内存区域,C语言中程序员可以通过关键字register声明变量的存储单元是CPU中的寄存器。变量的数据类型不同,它所占的内存单元数也不相同。在访问变量时&#xf…

作者头像 李华
网站建设 2026/4/28 10:11:23

3分钟彻底解决Windows和Office激活难题:智能激活工具完全指南

3分钟彻底解决Windows和Office激活难题:智能激活工具完全指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统频繁弹出激活提示而烦恼吗?Office文档突然…

作者头像 李华
网站建设 2026/4/28 10:10:42

如何免费激活Windows和Office:KMS_VL_ALL_AIO完整使用指南

如何免费激活Windows和Office:KMS_VL_ALL_AIO完整使用指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统激活烦恼吗?Office突然变成只读模式让你束手…

作者头像 李华