如何为LangChain CSV Agent添加对话记忆?现有代码未生效
解决LangChain CSV Agent添加对话记忆无效的问题
问题根源
- 原代码仅创建了对话记忆对象,但未将其关联到CSV Agent,导致Agent无法访问记忆内容
- 调用Agent时未传入历史对话上下文,无法让Agent参考之前的交互记录
修正后的完整代码示例
先确保导入必要模块:
from langchain.agents import create_csv_agent, AgentType from langchain.memory import ConversationBufferMemory from langchain.llms import OpenAI import os from flask import request
创建Agent时必须传入记忆对象:
# 初始化对话记忆 memory_x = ConversationBufferMemory(memory_key="chat_history", return_messages=True) # 创建CSV Agent并绑定记忆 agent = create_csv_agent( OpenAI(temperature=0, openai_api_key=os.environ["OPENAI_API_KEY"]), filepath, agent_type=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True, memory=memory_x # 核心:将记忆实例传递给Agent )
处理POST请求时,让Agent自动利用绑定的记忆:
if request.method == 'POST': question = request.form['question'] # 新版本LangChain推荐用invoke方法,自动关联记忆 response = agent.invoke({"input": question}) # 旧版本可直接用run,Agent会自动读取绑定的记忆 # response = agent.run(input=question)
额外注意事项
- 版本兼容:不同LangChain版本的API有差异,优先使用
invoke替代run以获得更稳定的记忆支持 - 模板检查:ZERO_SHOT_REACT_DESCRIPTION类型的Agent默认Prompt已包含
{chat_history}变量,若自定义模板需手动添加该变量 - 持久化:若需要跨请求保留对话历史,可将
memory_x.chat_memory.messages存储到会话(如Flask session)或数据库,下次请求时恢复记忆内容
内容的提问来源于stack exchange,提问作者3bs
相关产品推荐
相关产品推荐

