第一个Langgraph
定义state
定义两种方式:
- TypedDict:属于 Python 标准库 typing 模块的一部分,仅提供静态类型检查,运行时不执行验证
- Pydantic:第三方库,需要单独安装,提供运行时数据验证和序列化功能
示例代码
1 | from langchain_core.messages import AnyMessage |
定义节点
示例代码
1 | from langchain_core.messages import AIMessage |
创建图
- 包含一个节点
- 使用state通信
示例代码
1 | from langgraph.graph import StateGraph |
查看节点与图结构(内置的方法)
Mermaid 是一种基于文本的图表和可视化工具,它允许用户通过简单的文本语法来创建复杂的图表和流程图。它特别适合开发者、文档编写者和技术人员在文档、代码库或网页中嵌入可视化内容。
示例代码
1 | from IPython.display import Image, display |
执行结果展示

调用
示例代码
1 | from langchain_core.messages import HumanMessage |
执行结果
1 | {'messages': [HumanMessage(content='你好啊,我是花花!', additional_kwargs={}, response_metadata={}), |
使用 pretty_print 来格式化显示
输出结果更清晰
示例代码
1 | from langchain_core.messages import HumanMessage |
执行结果
1 | ================================ Human Message ================================= |
基本控制:串行控制
示例代码
1 | from typing_extensions import TypedDict |
查看节点与图结构

执行结果:
1 | {'value_1': 'a + b', 'value_2': 10} |
基本控制:分支控制
示例代码
1 | import operator |
查看节点与图结构

执行结果:
1 | 添加'A'到[] |
基本控制:条件分支与循环
分支条件
1 | import operator |
查看节点与图结构

执行结果:
1 | Node A sees [] |
注意:使用递归限制recursion_limit,防止异常情况下的大量无用调用
1 | from langgraph.errors import GraphRecursionError |
执行结果
1 | Node A sees [] |
循环
示例代码
1 | import operator |
查看节点与图结构

执行结果
1 | Node A sees [] |
精细控制:图的运行时配置
示例代码
1 | import operator |
没有增加运行时配置的情况下,它会默认调用deepseek
1 | res = graph.invoke({"messages": [HumanMessage(content="hi 你是谁?")]}) |
执行结果为
1 | {'messages': [HumanMessage(content='hi 你是谁?', additional_kwargs={}, response_metadata={}), |
增加运行时配置,动态切换模型
1 | config = {"configurable": {"model": "openai"}} |
执行结果为:
1 | {'messages': [HumanMessage(content='hi 你是谁?', additional_kwargs={}, response_metadata={}), |
精细控制:map-reduce并行执行
给定一个来自用户的一般主题,生成相关主题列表,为每个主题生成一个笑话,并从结果列表中选择最佳笑话。

示例代码
1 | import operator |
查看节点与图结构

执行结果为
1 | {'generate_topics': {'subjects': ['动物']}} |