内容参考于:图灵AI大模型全栈
自定义Agent记忆
按着CTRL鼠标左键单击下图红框,进入create_agent函数中

如下图红框create_agent可以传递一个 state_schema 它就是Agent的记忆,它默认是AgentState[ResponseT]

按着CTRL鼠标左键单击下图红框

如下图红框,就可以看到 AgentState 的结果了,messages是聊天记录,上一节中存储的就是它的数据,jump_to是代理可以跳转的位置,这里还用不到,structured_response是Agent返回格式的限制


所以我们也可以通过create_agent函数中state_schema字段自定义Agent的记忆
代码实例
# 从 langchain.agents 导入两个核心对象:
# – create_agent:构建 Agent 的高层工厂函数(底层基于 LangGraph)
# – AgentState:内置的基础状态 schema,作为我们自定义状态的父类
from langchain.agents import create_agent, AgentState
# InMemorySaver:LangGraph 的内存版 checkpointer,
# 用于按 thread_id 持久化对话状态,让同一线程的多次调用共享历史
from langgraph.checkpoint.memory import InMemorySaver
# ChatOpenAI:OpenAI 兼容协议的客户端,这里通过 base_url 指向 DashScope(通义千问)
from langchain_openai import ChatOpenAI
# 用于从 .env 文件加载环境变量(API Key、Base URL 等)
from dotenv import load_dotenv
import os
# 加载 .env 中的环境变量到 os.environ
load_dotenv()
# 初始化大模型
# – model:模型名称
# – api_key:从环境变量读取 DashScope 的 API Key
# – base_url:从环境变量读取 DashScope 的 OpenAI 兼容端点
llm = ChatOpenAI(
model="qwen3.6-plus",
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url=os.getenv("DASHSCOPE_BASE_URL"),
)
# 自定义 Agent 的记忆(State)
# 继承 AgentState 后,父类已提供 messages、jump_to、structured_response 等字段,
# 这里再追加业务需要的字段,用来保存"用户画像"信息。
class CustomAgentState(AgentState):
user_id: int # 用户 ID
user_name: str # 用户姓名
hobby: dict # 用户爱好,例如 {"sport": "basketball", "music": "pop"}
# 创建一个 Agent 实例
# – model:指定使用的大模型
# – state_schema:指定用我们自定义的状态结构(而不是默认的 AgentState)
# – checkpointer:绑定内存版检查点,用于按 thread_id 保存/恢复状态
agent = create_agent(
model=llm,
state_schema=CustomAgentState,
checkpointer=InMemorySaver(),
)
# 线程配置:指定 thread_id 为 "user_1"
# 相同 thread_id 的多次 invoke 会共享同一份状态(包括历史 messages 和自定义字段),
# 从而实现"跨调用记忆"的效果。
thread_config = {"configurable": {"thread_id": "user_1"}}
# 调用 Agent
# 第一个参数是本次要合并进 State 的输入(不是完整 State):
# – messages:会通过 add_messages reducer 追加到历史消息列表
# – user_id / user_name / hobby:普通字段,会直接覆盖写入到 State
# 第二个参数是线程配置,用于让 checkpointer 找到/写入对应 thread 的状态
agent.invoke(
{
"messages": [{"role": "user", "content": "你好,我的名字叫做计算机王!"}],
"user_id": "user_111111111",
"user_name": "计算机王",
"hobby": {"sport": "basketball", "music": "pop"}
},
thread_config,
)

网硕互联帮助中心



评论前必须登录!
注册