[langgraph 02]
toolName: manage_core_memory
status: success
你的观察非常敏锐!这正是 LangGraph 和传统 LangChain Agent(如 AgentExecutor)最大的区别之一。
核心区别:自定义 vs 预定义
-
以前 (AgentExecutor):
- 输出是固定的、黑盒的。
- 不管你做什么,它通常返回一个包含
input,output,intermediate_steps等固定字段的字典。你没法轻易改变这个结构。
-
现在 (LangGraph):
- 输出完全等于你定义的
State。 - 如果你定义的
State是{'foo': str, 'bar': list},那么graph.invoke()返回的就是这个字典。 - 如果你定义的
State是{'messages': list},那么它返回的就是包含消息列表的字典。
- 输出完全等于你定义的
为什么这么做?
LangGraph 把控制权交还给了开发者。你可以根据业务需要,自由定义返回什么:
- 不仅是消息:你可以让它返回结构化的数据、中间变量、甚至文件的二进制流。
- 透明可控:不再有“魔法”字段,所有的输出字段都是你在
State类里显式写下的。
所以,你在 persistence01.ipynb 里看到那个简单的字典结构,是因为你在那个 Notebook 里只定义了那样简单的 State。如果你用 MessagesState(像之前的例子那样),它就会变回你熟悉的样子(包含 messages 列表)。

浙公网安备 33010602011771号