使用Google Cloud SQL与MySQL存储聊天记录:全面指南

116 阅读2分钟

引言

在现代应用中,管理和存储聊天记录是一项重要任务。Google Cloud SQL为MySQL提供了一个功能强大的解决方案,具有高性能、无缝集成和令人印象深刻的可扩展性。本篇文章将介绍如何使用Google Cloud SQL for MySQL结合Langchain库,存储和管理聊天消息历史。

主要内容

创建Google Cloud SQL实例

在开始之前,你需要:

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

环境设置与库安装

首先,我们需要安装langchain-google-cloud-sql-mysqllangchain-google-vertexai包。

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

认证Google Cloud

在Google Colab中运行以下代码以认证:

from google.colab import auth
auth.authenticate_user()

配置Cloud SQL数据库

设置你的Cloud SQL数据库值:

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

启用Cloud SQL Admin API:

!gcloud services enable sqladmin.googleapis.com

MySQLEngine连接池

创建MySQLEngine对象以配置连接池:

from langchain_google_cloud_sql_mysql import MySQLEngine

engine = MySQLEngine.from_instance(
    project_id=PROJECT_ID, 
    region="us-central1", 
    instance="my-mysql-instance", 
    database="my-database"
)

初始化聊天历史表

创建存储聊天记录的表:

engine.init_chat_history_table(table_name="message_store")

MySQLChatMessageHistory用法

初始化和使用MySQLChatMessageHistory类:

from langchain_google_cloud_sql_mysql import MySQLChatMessageHistory

history = MySQLChatMessageHistory(
    engine, session_id="test_session", table_name="message_store"
)
history.add_user_message("hi!")
history.add_ai_message("whats up?")

print(history.messages)  # 输出聊天记录

清理会话历史

清除特定会话的历史记录:

history.clear()

链接操作

与Vertex AI结合以增强聊天功能:

!gcloud services enable aiplatform.googleapis.com

from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_core.runnables.history import RunnableWithMessageHistory
from langchain_google_vertexai import ChatVertexAI

prompt = ChatPromptTemplate.from_messages(
    [
        ("system", "You are a helpful assistant."),
        MessagesPlaceholder(variable_name="history"),
        ("human", "{question}"),
    ]
)

chain_with_history = RunnableWithMessageHistory(
    prompt | ChatVertexAI(project=PROJECT_ID),
    lambda session_id: MySQLChatMessageHistory(
        engine,
        session_id=session_id,
        table_name="message_store",
    ),
    input_messages_key="question",
    history_messages_key="history",
)

config = {"configurable": {"session_id": "test_session"}}

response = chain_with_history.invoke({"question": "Hi! I'm Bob"}, config=config)
print(response.content)

常见问题和解决方案

  1. 连接问题:由于某些地区的网络限制,开发者可以考虑使用API代理服务来提高访问稳定性。
  2. API未启用:确保所有必要的API都已启用。

总结和进一步学习资源

通过使用Google Cloud SQL for MySQL和Langchain集成,我们可以高效地存储和管理聊天记录。为了更深入的了解和实践,你可以查阅以下资源:

参考资料

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

---END---