Skip to main content

Cassandra聊天消息历史记录 (Cassandra Chat Message History)

Apache Cassandra® 是一个NoSQL、面向行的、高度可扩展和高可用的数据库,非常适合存储大量数据。

Cassandra是存储聊天消息历史记录的好选择,因为它易于扩展并且可以处理大量写入操作。

本笔记本介绍了如何使用Cassandra存储聊天消息历史记录。

要运行此笔记本,您需要一个正在运行的Cassandra集群或在云中运行的DataStax Astra DB实例(您可以在datastax.com免费获取一个)。有关更多信息,请查看cassio.org

pip install "cassio>=0.0.7"

请提供数据库连接参数和密钥:

import os
import getpass

database_mode = (input("\n(C)assandra or (A)stra DB? ")).upper()

keyspace_name = input("\nKeyspace name? ")

if database_mode == "A":
ASTRA_DB_APPLICATION_TOKEN = getpass.getpass('\nAstra DB Token ("AstraCS:...") ')
#
ASTRA_DB_SECURE_BUNDLE_PATH = input("Full path to your Secure Connect Bundle? ")
elif database_mode == "C":
CASSANDRA_CONTACT_POINTS = input(
"Contact points? (comma-separated, empty for localhost) "
).strip()

根据本地或基于云的Astra DB,创建相应的数据库连接"Session"对象

from cassandra.cluster import Cluster
from cassandra.auth import PlainTextAuthProvider

if database_mode == "C":
if CASSANDRA_CONTACT_POINTS:
cluster = Cluster(
[cp.strip() for cp in CASSANDRA_CONTACT_POINTS.split(",") if cp.strip()]
)
else:
cluster = Cluster()
session = cluster.connect()
elif database_mode == "A":
ASTRA_DB_CLIENT_ID = "token"
cluster = Cluster(
cloud={
"secure_connect_bundle": ASTRA_DB_SECURE_BUNDLE_PATH,
},
auth_provider=PlainTextAuthProvider(
ASTRA_DB_CLIENT_ID,
ASTRA_DB_APPLICATION_TOKEN,
),
)
session = cluster.connect()
else:
raise NotImplementedError

创建和使用聊天消息历史记录 (Creation and usage of the Chat Message History)

from langchain.memory import CassandraChatMessageHistory

message_history = CassandraChatMessageHistory(
session_id="test-session",
session=session,
keyspace=keyspace_name,
)

message_history.add_user_message("hi!")

message_history.add_ai_message("whats up?")
message_history.messages