Skip to content

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/
  • 本站内容为中文学习整理,不做官方身份声明。

本站为非官方中文学习站点,不代表 LangChain 官方。部分内容参考官方文档并重新整理为中文学习笔记。