## 技术背景介绍
Google Cloud SQL是一项完全托管的关系数据库服务,支持MySQL、PostgreSQL和SQL Server等数据库引擎。您可以利用Cloud SQL的Langchain集成,构建强大的AI应用程序。本文将深入讲解如何使用Google Cloud SQL for SQL Server来存储聊天消息历史,结合MSSQLChatMessageHistory类进行实践。
## 核心原理解析
MSSQLChatMessageHistory是一个用于管理聊天记录的类,通过与Google Cloud SQL的集成,使得开发者可以方便地将聊天记录存储到SQL Server数据库中。此实现依赖于MSSQLEngine作为连接池来管理与Cloud SQL的连接。
## 代码实现演示
### 🦜🔗 安装库
我们将使用`langchain-google-cloud-sql-mssql`包来完成这一集成。
```bash
%pip install --upgrade --quiet langchain-google-cloud-sql-mssql langchain-google-vertexai
🔐 身份验证
在Google Cloud中进行身份验证以访问您的项目。
from google.colab import auth
auth.authenticate_user()
☁ 设置Google Cloud项目
设置您的Google Cloud项目ID,以便在该环境中利用Google资源。
PROJECT_ID = "my-project-id" # @param {type:"string"}
!gcloud config set project {PROJECT_ID}
💡 启用API
首先启用Cloud SQL Admin API。
!gcloud services enable sqladmin.googleapis.com
设置Cloud SQL数据库值
找到并设置您的数据库相关参数。
REGION = "us-central1" # @param {type: "string"}
INSTANCE = "my-mssql-instance" # @param {type: "string"}
DATABASE = "my-database" # @param {type: "string"}
DB_USER = "my-username" # @param {type: "string"}
DB_PASS = "my-password" # @param {type: "string"}
TABLE_NAME = "message_store" # @param {type: "string"}
MSSQLEngine连接池
配置MSSQLEngine连接池,确保应用程序能够成功连接到Cloud SQL数据库。
from langchain_google_cloud_sql_mssql import MSSQLEngine
engine = MSSQLEngine.from_instance(
project_id=PROJECT_ID,
region=REGION,
instance=INSTANCE,
database=DATABASE,
user=DB_USER,
password=DB_PASS,
)
初始化表格
使用init_chat_history_table
方法来初始化存储聊天记录的表。
engine.init_chat_history_table(table_name=TABLE_NAME)
MSSQLChatMessageHistory类
初始化MSSQLChatMessageHistory并添加消息。
from langchain_google_cloud_sql_mssql import MSSQLChatMessageHistory
history = MSSQLChatMessageHistory(
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()
应用场景分析
这种集成方式适用于需要在云端存储和管理大量聊天记录的应用程序,尤其是在构建需要用户交互历史的智能助手时能够发挥优势。
实践建议
- 确保及时验证和启用相关API,以确保服务的可用性。
- 在实际应用中,可以结合Google的Vertex AI进行更多自然语言处理任务。
如果遇到问题欢迎在评论区交流。
---END---