Salta ai contenuti

Zep - Context Engineering e Memoria per Agenti

Zep - Context Engineering e Memoria per Agenti

Zep è un livello di memoria e context-engineering per agenti IA. Costruito sul motore di grafi di conoscenza temporale Graphiti, acquisisce la cronologia delle conversazioni e i dati aziendali, li fonde in un grafo queryable che traccia come i fatti cambiano nel tempo, e restituisce contesto pertinente e governato con bassa latenza per radicares le risposte degli agenti. Offre un core open-source e un servizio cloud gestito (SOC 2 / HIPAA), con SDK per Python, TypeScript e Go.

Installazione / Setup

TargetComando
SDK Pythonpip install zep-cloud (cloud)
SDK TypeScriptnpm install @getzep/zep-cloud
Self-hosted (Community Edition)esegui tramite il Docker Compose del progetto
API keyexport ZEP_API_KEY=...

Concetti Principali

TermineSignificato
UtenteUn utente finale che l”agente serve
ThreadUna sessione di conversazione per un utente
GrafoIl grafo di conoscenza temporale di un utente/gruppo
FattoUna relazione consapevole del tempo nel grafo
Blocco di contestoContesto assemblato, pronto per l”iniezione

Utenti e Thread

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")
ChiamataDescrizione
user.add(...)Crea un utente
thread.create(...)Avvia un thread di conversazione
thread.add_messages(...)Aggiungi messaggi (auto-acquisiti nel grafo)
user.delete(...)Rimuovi un utente e i suoi dati

Aggiunta di Memoria

zep.thread.add_messages(
    thread_id="t1",
    messages=[{"role": "user", "content": "Mi sono trasferito a Berlino.", "name": "Nick"}],
)

# Aggiungi dati aziendali non-chat direttamente al grafo
zep.graph.add(user_id="nick", type="text",
              data="Il livello di abbonamento di Nick è Pro.")
ChiamataDescrizione
thread.add_messages(...)Acquisisce turni di conversazione
graph.add(...)Aggiungi testo/JSON arbitrario al grafo
AcquisizioneEntità/fatti estratti e time-stampati automaticamente

Recupero del Contesto

# Ottieni un blocco di contesto assemblato per il prompt
memory = zep.thread.get_user_context(thread_id="t1")
print(memory.context)   # stringa pronta per l''iniezione dei fatti pertinenti

# O interroga direttamente il grafo
edges = zep.graph.search(user_id="nick", query="dove vive Nick?")
ChiamataRestituisce
thread.get_user_context(...)Un blocco di contesto sintetizzato
graph.search(...)Fatti/archi o nodi che corrispondono a una query
Ambito della ricercaArchi (fatti), nodi (entità) o episodi

Perché Temporale

Perché Zep è basato su grafi e consapevole del tempo, gli aggiornamenti contraddittori non sovrascrivono ciecamente — i fatti vecchi vengono invalidati con un timestamp e i nuovi registrati, quindi l”agente ottiene la verità attuale mentre la cronologia rimane queryable.

CapacitàVantaggio
Invalidazione dei fattiIl contesto attuale rimane accurato
ProvenienzaTraccia i fatti alla loro fonte
Recupero governatoContesto a bassa latenza, permissionato
Cross-sessionLa memoria persiste tra i thread

Flussi di Lavoro Comuni

# Il ciclo dell''agente con la memoria Zep
zep.thread.add_messages(thread_id="t1", messages=user_turn)
context = zep.thread.get_user_context(thread_id="t1").context
# prependi `context` al tuo prompt di sistema LLM, poi genera

Zep vs Altri Livelli di Memoria

AspettoZepMem0archivio vettori raw
ModelloGrafo temporale (Graphiti)Multi-livelloSolo embeddings
Fatti temporaliLimitatoNo
Assemblaggio del contestoBlocco integratoRecuperoManuale
Migliore perMemoria dell”agente di produzionePersonalizzazioneRicordo semplice

Risorse