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

如何为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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 07:57:46