Pular para o conteúdo

Zep - Engenharia de Contexto e Memória para Agentes

Zep - Engenharia de Contexto e Memória para Agentes

Zep é uma camada de memória e engenharia de contexto para agentes AI. Construída no mecanismo de grafo de conhecimento temporal Graphiti, ela ingere histórico de conversa e dados de negócio, os funde em um grafo consultável que rastreia como fatos mudam com o tempo, e retorna contexto relevante e governado com baixa latência para fundamentar respostas de agente. Oferece um núcleo de código aberto e um serviço em nuvem gerenciado (SOC 2 / HIPAA), com SDKs para Python, TypeScript e Go.

Instalação / Setup

AlvoComando
Python SDKpip install zep-cloud (nuvem)
TypeScript SDKnpm install @getzep/zep-cloud
Auto-hospedado (Community Edition)execute via Docker Compose do projeto
Chave APIexport ZEP_API_KEY=...

Conceitos Principais

TermoSignificado
UsuárioUm usuário final que o agente serve
ThreadUma sessão de conversa para um usuário
GrafoO grafo de conhecimento temporal de um usuário/grupo
FatoUm relacionamento consciente de tempo no grafo
Bloco de contextoContexto montado, pronto para injetar

Usuários e Threads

from zep_cloud.client import Zep
zep = Zep(api_key="...")

zep.user.add(user_id="nick", email="nick@example.com")
zep.thread.create(thread_id="t1", user_id="nick")
ChamadaDescrição
user.add(...)Crie um usuário
thread.create(...)Inicie uma thread de conversa
thread.add_messages(...)Anexe mensagens (auto-ingeridas no grafo)
user.delete(...)Remova um usuário e seus dados

Adicionando Memória

zep.thread.add_messages(
    thread_id="t1",
    messages=[{"role": "user", "content": "Me mudei para Berlim.", "name": "Nick"}],
)

# Adicione dados de negócio não-chat diretamente ao grafo
zep.graph.add(user_id="nick", type="text",
              data="Nick''s subscription tier is Pro.")
ChamadaDescrição
thread.add_messages(...)Ingira turnos de conversa
graph.add(...)Adicione texto/JSON arbitrário ao grafo
IngestãoEntidades/fatos extraídos e marcados com timestamp automaticamente

Recuperando Contexto

# Obtenha um bloco de contexto montado para o prompt
memory = zep.thread.get_user_context(thread_id="t1")
print(memory.context)   # string pronta para injetar de fatos relevantes

# Ou consulte o grafo diretamente
edges = zep.graph.search(user_id="nick", query="onde Nick mora?")
ChamadaRetorna
thread.get_user_context(...)Um bloco de contexto sintetizado
graph.search(...)Fatos/arestas ou nós correspondentes à consulta
Escopo de buscaarestas (fatos), nós (entidades) ou episódios

Por Que Temporal

Porque Zep é baseado em grafo e consciente de tempo, atualizações contraditórias não sobrescrevem cegamente — fatos antigos recebem invalid_at definido com um timestamp e novos são registrados, então o agente obtém a verdade atual enquanto o histórico permanece consultável.

CapacidadeBenefício
Invalidação de fatoContexto atual permanece preciso
ProveniênciaRastreie fatos de volta à sua origem
Recuperação governadaContexto de baixa latência e permissionado
Cross-sessãoMemória persiste entre threads

Workflows Comuns

# O loop do agente com memória Zep
zep.thread.add_messages(thread_id="t1", messages=user_turn)
context = zep.thread.get_user_context(thread_id="t1").context
# prepend `context` ao seu prompt de sistema LLM, depois gere

Zep vs Outras Camadas de Memória

AspectoZepMem0armazenador vetorial bruto
ModeloGrafo temporal (Graphiti)Multi-tierEmbeddings apenas
Fatos temporaisSimLimitadoNão
Montagem de contextoBloco integradoRecuperaçãoManual
Melhor paraMemória de agente em produçãoPersonalizaçãoRecall simples

Recursos