下面示例学习LangGraph图模式,目的是用 LangGraph 构建一个“有清晰边界的状态流”。
代码取自《AI Agent智能体开发实践》第3章。
from langgraph.constants import START
from langgraph.graph import StateGraph
from typing_extensions import TypedDict
from langgraph.graph import StateGraph, START, END
class InputState(TypedDict):
user_input: str
class OutputState(TypedDict):
graph_output: str
class OverallState(TypedDict):
foo: str
user_input: str
graph_output: str
class PrivateState(TypedDict):
bar: str
def node_1(state: InputState) -> OverallState:
# Write to OverallState
return {"foo": state["user_input"] + " name"}
def node_2(state: OverallState) -> PrivateState:
# Read from OverallState, write to PrivateState
return {"bar": state["foo"] + " is"}
def node_3(state: PrivateState) -> OutputState:
# Read from PrivateState, write to OutputState
return {"graph_output": state["bar"] + " Lance"}
builder = StateGraph(OverallState,input_schema=InputState,output_schema=OutputState)
builder.add_node("node_1", node_1)
builder.add_node("node_2", node_2)
builder.add_node("node_3", node_3)
builder.add_edge(START, "node_1")
builder.add_edge("node_1", "node_2")
builder.add_edge("node_2", "node_3")
builder.add_edge("node_3", END)
graph = builder.compile()
result = graph.invoke({"user_input":"My"})
#{'graph_output': 'My name is Lance'}
print(result)
示例执行结果如下
C:\Users\xiayu\miniconda3\envs\langchain03\python.exe "C:\Users\xiayu\PyCharmMiscProject\LangChain官方示例代码学习\LangGraph 框架\图模式.py"
{'graph_output': 'My name is Lance'}
Process finished with exit code 0
示例展示了一个 带输入/输出 schema 的 LangGraph
-
输入:
{"user_input": "My"} -
中间状态:
OverallState -
私有状态:
PrivateState(只在部分节点可见) -
最终输出:
{"graph_output": "My name is Lance"}
这个示例想教会你什么?(设计意图)
这是 LangGraph 的 “最佳实践模板”:
| 错误做法 ❌ | 本示例 ✅ |
|---|---|
| 所有节点共用一个巨型 State | 分层 State |
| 输入输出无约束 | 强 Schema |
| 节点随意读写 | 明确读写边界 |
| 图结果不可预测 | 输出固定 |
一句话总结
**这个示例的目的是:
教你如何用 LangGraph 构建一个“输入可控、输出可控、状态分层、节点解耦”的可维护图结构。**
它不是为了“算字符串”,而是为了展示 LangGraph 的状态治理模型。


310



被折叠的 条评论
为什么被折叠?



