State 与 Reducer
当多个节点都更新同一个字段时,需要定义如何合并。Reducer 就是状态合并规则。
覆盖式更新
默认情况下,如果节点返回:
python
return {"answer": "新的回答"}它会覆盖原来的 answer。
追加式更新
消息列表通常希望追加,而不是覆盖。可以使用注解指定 reducer。
python
from typing import Annotated, TypedDict
from operator import add
class State(TypedDict):
messages: Annotated[list, add]这样每个节点返回新的 messages 时,会和旧列表合并。
什么时候需要 Reducer
- 多个节点并行写入同一个列表。
- 消息历史需要追加。
- 多路检索结果需要合并。
- 多智能体输出需要汇总。
常见坑
没有正确设置 reducer 时,后一个节点可能覆盖前一个节点的结果,导致消息丢失或检索结果丢失。
非官方声明
本站为个人维护的非官方中文学习文档,不代表 LangChain 官方。页面内容是基于公开文档、源码实践和中文开发者视角重新整理的学习资料。涉及 API 细节时,请以官方文档和实际安装版本为准。
参考来源
- LangChain / LangGraph 官方文档:
https://docs.langchain.com/ - LangChain API Reference:
https://reference.langchain.com/ - 本站内容为中文学习整理,不做官方身份声明。