Xata
Xata 是一个无服务器数据平台,基于
PostgreSQL和Elasticsearch构建。它提供了一个 Python SDK 用于与数据库进行交互,并提供一个 UI 用于管理数据。使用XataChatMessageHistory类,您可以将 Xata 数据库用于聊天会话的长期持久化。
本笔记本将涵盖:
- 一个简单的示例,展示
XataChatMessageHistory的功能。 - 一个更复杂的示例,使用一个 REACT 代理,该代理能够根据知识库或文档(以向量存储的形式存储在 Xata 中)回答问题,并能对其过去的邮件进行长期可搜索的历史记录(以内存存储的形式存储在 Xata 中)
设置
创建数据库
在 Xata UI 中创建一个新数据库。你可以随意命名,在本记事本中,我们将使用 langchain。Langchain 集成可以自动创建用于存储记忆的表,这也是我们将在本示例中使用的。如果你想预先创建表,请确保它具有正确的 schema,并在创建类时将 create_table 设置为 False。预先创建表可以在每次会话初始化时节省一次到数据库的往返。
让我们先安装依赖项:
%pip install --upgrade --quiet xata langchain-openai langchain langchain-community
接下来,我们需要获取 Xata 的环境变量。你可以通过访问账户设置来创建一个新的 API 密钥。要找到数据库 URL,请前往你已创建数据库的设置页面。数据库 URL 应该看起来像这样:https://demo-uni3q8.eu-west-1.xata.sh/db/langchain。
import getpass
api_key = getpass.getpass("Xata API key: ")
db_url = input("Xata database URL (copy it from your DB settings):")
创建一个简单的内存存储
为了单独测试内存存储功能,让我们使用以下代码片段:
from langchain_community.chat_message_histories import XataChatMessageHistory
history = XataChatMessageHistory(
session_id="session-1", api_key=api_key, db_url=db_url, table_name="memory"
)
history.add_user_message("hi!")
history.add_ai_message("whats up?")
API Reference:XataChatMessageHistory
上述代码创建了一个 ID 为 session-1 的会话,并向其中存储了两条消息。运行上述代码后,如果您访问 Xata UI,应该会看到一个名为 memory 的表,并且其中添加了两条消息。
您可以使用以下代码检索特定会话的消息历史记录:
history.messages