如何在对话式AI中添加聊天历史:实现 “记忆“ 功能

引言

在开发对话式问答应用程序时,允许用户进行往返对话非常重要,这意味着应用程序需要某种形式的“记忆”功能,用于储存过去的问答,并能够在当前会话中合理应用这些信息。本篇文章将深入探讨如何在应用程序中整合对话历史,主要涵盖以下两种方法:通过链执行检索步骤,以及通过代理决定是否以及如何执行检索步骤。

主要内容

1. 设置

在本教程中,我们将使用OpenAI嵌入和Chroma向量存储。在实施前,请确保安装以下依赖包:

%%capture --no-stderr
%pip install --upgrade --quiet langchain langchain-community langchain-chroma bs4

此外,您需要设置OPENAI_API_KEY环境变量,可以直接设置,也可以从.env文件加载:

import getpass
import os

if not os.environ.get("OPENAI_API_KEY"):
    os.environ["OPENAI_API_KEY"] = getpass.getpass()

2. 使用 Chains 实现历史记忆

在对话式RAG(检索增强生成)应用中,查询应根据对话的上下文进行。LangChain提供了create_history_aware_retriever构造器来简化这个过程。

2.1 构建历史感知检索器

from langchain.chains import create_history_aware_retriever
from langchain_core.prompts import MessagesPlaceholder

contextualize_q_system_prompt = (
    "给定聊天历史和用户最新问题,"
    "如果问题引用了聊天历史中的上下文,"
    "则制定一个独立的问题,不需要聊天历史也能理解。"
    "不要回答问题,只需重述或按原样返回。"
)

contextualize_q_prompt = ChatPromptTemplate.from_messages(
    [
        ("system", conte
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值