You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LangChain CHAT_ZERO_SHOT_REACT代理内存访问问题咨询

问题解决:LangChain CHAT_ZERO_SHOT_REACT_DESCRIPTION代理无法访问内存

核心问题原因

你对AgentType.CHAT_ZERO_SHOT_REACT_DESCRIPTION的定位没错,它属于聊天类代理,但默认配置下,你添加的ConversationBufferMemory没有被正确注入到代理的prompt模板中——这类聊天代理需要接收消息对象列表而非纯字符串历史,你的内存配置没有匹配代理prompt的要求。

正确配置方法

修改内存初始化参数,让内存返回适配聊天代理的消息格式,即可实现历史访问:

llm = ChatOpenAI(model_name="gpt-4", temperature=0)

tools = load_tools(["llm-math", "wolfram-alpha", "wikipedia"], llm=llm)
# 关键配置:添加return_messages=True,让内存返回ChatMessage对象列表
memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True)

agent_test = initialize_agent(
    tools=tools, 
    llm=llm, 
    agent=AgentType.CHAT_ZERO_SHOT_REACT_DESCRIPTION, 
    handle_parsing_errors=True,
    memory=memory, 
    verbose=True
)

修改后重新测试,代理就能正确读取聊天历史:

>>> agent_test.run("What is the height of the empire state building?")
'The Empire State Building stands a total of 1,454 feet tall, including its antenna.'
>>> agent_test.run("What was the last question I asked?")
'You asked: What is the height of the empire state building?'

补充说明

CHAT_ZERO_SHOT_REACT_DESCRIPTION的核心是结合ReAct工具调用逻辑和聊天能力,但它不会自动适配字符串类型的内存数据。只有当内存返回ChatMessage对象列表时,代理的prompt才能正确解析并注入历史上下文,实现多轮对话关联。

内容的提问来源于stack exchange,提问作者BBrooklyn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 15:52:20