引言
在现代云计算中,Kubernetes已经成为管理容器化应用程序的标准。Google Cloud的El Carro使得在Kubernetes中运行Oracle数据库变得更加简单、高效,无需担心供应商锁定问题。本文将探讨如何通过El Carro与Langchain的集成来存储聊天消息历史,进一步扩展Oracle数据库的功能。
主要内容
安装与设置
首先,我们需要安装langchain-google-el-carro包。
%pip install --upgrade --quiet langchain-google-el-carro langchain-google-vertexai langchain
在Google Colab中,可能需要重启内核以访问新安装的包。
认证和项目设置
在开始之前,请确保已认证Google Cloud帐户,并设置项目ID。
# 从Google Colab认证用户
from google.colab import auth
auth.authenticate_user()
# 设置项目ID
PROJECT_ID = "my-project-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("请输入数据库用户密码: ")
from langchain_google_el_carro import ElCarroEngine
# 使用API代理服务提高访问稳定性
elcarro_engine = ElCarroEngine.from_instance(
db_host=HOST,
db_port=PORT,
db_name=DATABASE,
db_user=USER,
db_password=PASSWORD
)
初始化表格
使用El Carro提供的方法来初始化数据库表。
elcarro_engine.init_chat_history_table(table_name=TABLE_NAME)
使用ElCarroChatMessageHistory
使用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)
清理数据
当不再需要某些会话的历史记录时,可以删除它们:
history.clear() # 永久删除数据
链接与运行
可以将消息历史与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",
)
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代理服务以提高访问稳定性。
-
连接问题:确保数据库连接信息正确,EL Carro实例运行正常。
总结和进一步学习资源
通过El Carro与Langchain的集成,可以有效管理和扩展Oracle数据库的功能。建议读者进一步研究Google Cloud Oracle文档和Langchain包GitHub页面。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---