跳到主要內容
Open In ColabOpen on GitHub

Cassandra

Apache Cassandra® 是一個 NoSQL、面向列、高度可擴展且高可用性的資料庫,非常適合儲存大量資料。

Cassandra 是儲存聊天訊息歷史記錄的好選擇,因為它易於擴展且可以處理大量寫入。

本筆記本介紹如何使用 Cassandra 儲存聊天訊息歷史記錄。

設定

要執行此筆記本,您需要一個正在運行的 Cassandra 叢集或在雲端運行的 DataStax Astra DB 實例(您可以從 datastax.com 免費取得一個)。請查看 cassio.org 以取得更多資訊。

%pip install --upgrade --quiet  "cassio>=0.1.0 langchain-community"

設定資料庫連線參數和密鑰

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.auth import PlainTextAuthProvider
from cassandra.cluster import Cluster

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

範例

from langchain_community.chat_message_histories 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?")
API 參考文檔:CassandraChatMessageHistory
message_history.messages

歸屬聲明

Apache Cassandra、Cassandra 和 Apache 是 Apache Software Foundation 在美國和/或其他國家/地區的註冊商標或商標。


此頁面是否對您有幫助?