源内容(英文)
对话缓冲内存是 LangChain 内存机制 的一种类型,它将完整的、未经过摘要处理的对话历史存储为简单的消息缓冲区。它有助于语言模型在多轮对话中保持上下文连贯,使聊天机器人更具连贯性和上下文感知能力。这种方法对于短到中等长度的对话效果很好,但随着对话记录变长可能会变得低效。
!<a href="https://media.geeksforgeeks.org/wp-content/uploads/20250923151859811086/featuresofconversationbuffermemory.webp">featuresofconversationbuffermemory特性
对话缓冲内存的组成部分
让我们来看看 LangChain 中对话缓冲内存的核心组成部分:
- 内存缓冲区: 按顺序存储所有消息且不进行摘要的内部结构。
- 消息:单个对话轮次,通常存储为 HumanMessage 和 AIMessage 对象。
- 内存键:一个默认为"history"的参数,用于检索存储的对话并将其输入到链中。
- 加载和保存方法: 处理检索对话历史或用新消息更新它的函数。
- 集成钩子: 将内存连接到 LangChain 链或代理的接口,以便它可以自动提供上下文。
对话缓冲内存如何工作
!<a href="https://media.geeksforgeeks.org/wp-content/uploads/20250923180844333054/conversationbuffermemorypipeline.webp">conversationbuffermemorypipeline内存管道
我们可以将 LangChain 中对话缓冲内存的工作原理描述为:
- 消息捕获: 每个用户输入和 AI 响应都作为消息对象存储在内存中。
- 顺序记录: 消息按照它们发生的精确顺序记录,创建对话的完整记录。
- 缓冲存储:整个对话历史都被保留,没有摘要或修剪。
- 重放给模型: 在每一步,完整的存储历史都会被附加到提示词并发送给 LLM。
- 响应生成: LLM 使用当前查询和过去的上下文来生成连贯的回复。
- 更新历史: 最新的用户消息和 AI 响应被附加到内存缓冲区以供下一轮使用。
步骤 1:安装依赖项
pip install langchain langchain-openai python-dotenv: 安装 LangChain 核心库、OpenAI 集成以及用于加载 API 密钥的 dotenv。
Python
CODEBLOCK_a26f06f5
步骤 2:导入库
导入所需的 LangChain 模块和操作系统库。
Python
CODEBLOCK_8e4a7b45
步骤 3:环境设置
我们可以使用 OpenAI 的 API 来设置环境,也可以使用 Gemini 的 API。
Python
CODEBLOCK_d2c72e9d
> 关于使用 OpenAI API 密钥的参考文章:获取 OpenAI API 密钥
步骤 3:初始化 LLM
让我们使用 ChatOpenAI 初始化 LLM。
Python
CODEBLOCK_3a9c5d9c
步骤 4:对话缓冲内存
现在让我们设置对话缓冲内存。
Python
CODEBLOCK_511dfe0f
步骤 5:带内存的对话链
我们可以创建一个带有内存的对话链。
Python
CODEBLOCK_358f98f2
步骤 6:对话交互
让我们与对话进行交互。
Python
CODEBLOCK_4b0930f0
输出示例
!<a href="https://media.geeksforgeeks.org/wp-content/uploads/20251009162448794226/Memoryinlangchain.jpg">Memoryinlangchain对话示例
使用与不使用对话缓冲内存的 LLM 对比
!<a href="https://media.geeksforgeeks.org/wp-content/uploads/20250923152906670693/conversationalmemory.webp">conversationalmemory
让我们通过一个清晰的对比表格来看看使用与不使用对话缓冲内存的区别:
不带内存
—
只能看到最新的用户输入
可能会给出不连贯的回答
更简单,无需集成内存
一次性问题或单轮任务