96SEO 2026-08-03 00:12 0
graph.invoke入参详细说明在建立复杂的 LangGraph 应用时单一的状态 Schema 往往难以满足需求。再看常见痛点包括,
为解决上述痛点,LangGraph 引入了Multi Schema 多状态管理方法。它允许在同一个图中使用多个状态 Schema。每个 Schema 管理不同类型的数据,这样就能实现更清晰的数据流和更安全的接口定义。

LangGraph 支持以下四类状态:
| 状态类型 | 英文名称 | 用途说明 | 创建方式/声明位置 |
|---|---|---|---|
| 全局状态 | |||
图内部主要使用的共享状态,通过 StateGraph | |||
| 输入状态 | |||
约束调用图时可传入哪些字段。相当于对外接口,通过 input_schema=... | |||
| 输出状态 | |||
约束图最终返回哪些字段,相当于对外返回值声明,通过 output_schema=... | |||
| 私有状态 | |||
| 节点间传递临时数据,不作为输入也不作为最终输出,通过节点函数参数类型注解声明。 | |||
全局状态是创建 StateGraph 时通过 state_schema=... 参数传递的 Schema。它包含图运行过程中需要读写的大部分字段,是所有节点默认可以访问的数据。
// 定义全局状态
class OverAllState:
username: str
nickname: str
graph_output: str
// 创建 State Graph
builder = StateGraph
输入状态通过 input_schema=... 参数定义,用于约束调用图时允许传入哪些字段。其实,它相当于图'对外接口'。外部调用方只能传入输入 状态中定义的字段,从而避免无效或恶意数据进入程序。
// 输入 state
class InputState:
username: str
// 在创建 graph 时指定 builder = StateGraph( OverAllState。input_schema=InputState,)
输出 状态通过 output_schema=... 参数定义,用于约束图最终返回哪些字段。这让你能够确保即使内部产生了大量信息。也只公开必要的数据给调用方,从而提高安全性和可维护性。
// 输出 state
class OutputState:
graph_output: str
私有状態并不通过 Graph 构造函数声明,而是通过节点函数参数类型注解 来定义。它用于在某些节点之间传递临时数据。不会出现在外部接口或结果中,从而避免泄漏内部实现细节。
// 私有 state 声明
class PrivateState:
greeting: str
// 节点函数签名示例 def node_2 -> PrivateState: return {"greeting": state + "。早上好~"}
class OverAllState: username:str # 必须包含 Input 中字段 nickname:str # 可选,但推荐保持统一结构 graph_output:str# 必须包含 Output 中字段
#⚠️ 错误示例 ⚠️: 若 private_state 与 global_state 字段重名,将导致调试混乱,例如:
// 错误做法:
class PrivateState:
nickname:str # 与 Global 冲突
def node_5 -> PrivateState: return {"nickname":"你好"} // 难以判断是修改 global.nickname 还是 new private.nickname
// 正确写法:
def node_1 -> OverAllState:
return {"nickname": f"Dear {state}"}
// 错误:
def node6 -> OverAllState:
return {"nickname": state} // KeyError
// 推荐做法:
def node_7 -> PrivateSt:
return {"greeting":"Hi"} // 与 PrivateSt 对齐
访问顺序
├─ 外部调用 → inputschema 裁剪 ├─ 节点接收 → 函数签名裁剪 ├─ 节点返回 → 部分更新。不覆盖未列出的键 └─ 结果 → outputschema 裁剪
下面演示一个完整案例,展示四类 Schema 的配合使用还有运行过程中的关键点。
python from typing import TypedDict from langgraph.graph import StateGrid,START,END
class OutputStatus: greet_msg : str
class OverallStatus: username : str nickname : str greet_msg : str
class TempStatus: greeting : str
def greetuser -> OverallStatus: """读取输入。只写全局昵称""" return {"nickname" :"Dear "+ inpstatus}
def sayhi -> TempStatus: """读取昵称 写 临时问候""" return {"greeting": overallstatus + ",good morning!"}
def finish -> OutputStatus: """读取问候 写最终输出""" return {"greetmsg": tempstatus + " 很高兴见到你!"}
builder = StateGrid( OverallStatus,inputschema = InputStatus。outputschema = OutputStatus)
builder.addnode builder.addnode builder.add_node
builder.addedge builder.addedge builder.addedge builder.addedge
graph = builder.compile
result = graph.invoke print
jsonc{"greet_msg":"Dear 小黄,good morning!很高兴见到你,"}
invoke 时仅保留 username 字段;其它未列出的键被丢弃,
node_greet 执行
接收 InputStatus;向 Overall 写 nickname。说起来,
| 当前 Global | Value |
|---|---|
| username | “小黄” |
| nickname | “Dear 小黄” |
node_hi 执行
接收 Overall;向 Temp 写 greeting.
| Current Temp | Value |
|---|---|
| greeting | “Dear 小黄,good morning!” |
node_finish 执行
接收 Temp;向 Output 写 greet_msg.
| Current Output | Value |
|---|---|
| greet_msg | “Dear 小黄,good morning!很高兴见到你,” |
仅保留 中定义键;所有临时或全局隐藏键被剔除。
| 概念 | \t\t\t\t\t\t\t \t\t\t \t\t\t \t\t\t |
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback