技术背景介绍
在现代应用中,聊天机器人变得越来越普遍。其中一个关键需求是能够有效地存储和管理聊天历史,以便在当前会话中提供上下文。Google Cloud SQL 为 MySQL 提供了一种高性能、无缝集成且具有良好可伸缩性的托管数据库服务。通过结合 Langchain 与 Cloud SQL,可以轻松实现 AI 驱动的聊天体验。
核心原理解析
Cloud SQL 是一种完全托管的关系数据库服务,支持 MySQL、PostgreSQL 和 SQL Server 数据库引擎。利用 Cloud SQL,开发者可以将数据库应用扩展到 AI 驱动的体验中。在这里,我们使用 MySQLChatMessageHistory
类在 Google Cloud SQL for MySQL 上存储聊天消息历史。
代码实现演示
配置前置条件
在继续之前,请确保您已完成以下设置:
- 创建一个 Google Cloud 项目。
- 启用 Cloud SQL Admin API。
- 创建 Cloud SQL for MySQL 实例和数据库。
- 添加 IAM 数据库用户(可选)。
安装必要的库
首先,确保安装 langchain-google-cloud-sql-mysql
包,这个包包含了与 Google Cloud SQL 的集成功能。
%pip install --upgrade --quiet langchain-google-cloud-sql-mysql langchain-google-vertexai
认证和项目设置
使用 Google Colab 进行认证,并设置您的 Google Cloud 项目 ID。
from google.colab import auth
auth.authenticate_user()
PROJECT_ID = "my-project-id" # @param {type:"string"}
# 设置项目 ID
!gcloud config set project {PROJECT_ID}
启用必要的 API
确保启用 Cloud SQL Admin API。
# 启用 Cloud SQL Admin API
!gcloud services enable sqladmin.googleapis.com
初始化 MySQL 引擎和表
创建 MySQLEngine
实例和初始化聊天历史表。
from langchain_google_cloud_sql_mysql import MySQLEngine
REGION = "us-central1"
INSTANCE = "my-mysql-instance"
DATABASE = "my-database"
TABLE_NAME = "message_store"
engine = MySQLEngine.from_instance(
project_id=PROJECT_ID, region=REGION, instance=INSTANCE, database=DATABASE
)
# 初始化聊天历史表
engine.init_chat_history_table(table_name=TABLE_NAME)
存储和检索聊天消息
使用 MySQLChatMessageHistory
类存储和检索聊天消息。
from langchain_google_cloud_sql_mysql import MySQLChatMessageHistory
history = MySQLChatMessageHistory(
engine, session_id="test_session", table_name=TABLE_NAME
)
history.add_user_message("hi!")
history.add_ai_message("whats up?")
print(history.messages)
清理会话
当一个会话历史不再需要时,可以清除它。
# 清除历史
history.clear()
应用场景分析
这种配置适用于需要持久化和管理大量聊天历史记录的应用,如客服机器人、在线辅导等。通过存储聊天历史,AI 模型可以提供更具上下文感知的响应。
实践建议
- 确保数据库访问权限的安全性,尤其是在生产环境中。
- 定期备份聊天历史,以防数据丢失。
- 可通过优化数据库连接池和使用指数退避策略来提高应用的性能和可靠性。
如果遇到问题欢迎在评论区交流。
—END—