Zep - Context Engineering & Memory for Agents Cheatsheet
Zep ist eine Memory und Context-Engineering Layer für AI Agenten. Aufgebaut auf dem Graphiti Temporal Knowledge Graph Engine, nimmt es Gesprächshistorie und Business Daten auf, verschmilzt sie zu einem abfragbaren Graph, der verfolgst wie Fakten sich über Zeit ändern, und gibt relevant regierte Kontext mit niedriger Latenz zurück um Agent Antworten zu grundieren. Es bietet einen Open-Source Core und einen verwalteten Cloud Service (SOC 2 / HIPAA), mit SDKs für Python, TypeScript und Go.
Installation / Setup
| Ziel | Befehl |
|---|
| Python SDK | pip install zep-cloud (Cloud) |
| TypeScript SDK | npm install @getzep/zep-cloud |
| Self-Hosted (Community Edition) | führe via des Projekt Docker Compose aus |
| API Schlüssel | export ZEP_API_KEY=... |
Core Concepts
| Begriff | Bedeutung |
|---|
| User | Ein End User, den der Agent dient |
| Thread | Eine Konversations Sitzung für einen User |
| Graph | Der Temporal Knowledge Graph eines Users/Group |
| Fakt | Eine Zeit-aware Beziehung im Graph |
| Context Block | Zusammengesetzte, ready-to-inject Kontext String |
Users & 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")
| Call | Beschreibung |
|---|
user.add(...) | Erstelle einen User |
thread.create(...) | Starte einen Konversations Thread |
thread.add_messages(...) | Hänge Nachrichten an (Auto-aufgenommen zum Graph) |
user.delete(...) | Entferne einen User und deren Daten |
Memory hinzufügen
zep.thread.add_messages(
thread_id="t1",
messages=[{"role": "user", "content": "Ich bin nach Berlin gezogen.", "name": "Nick"}],
)
# Nicht-Chat Business Daten direkt zum Graph hinzufügen
zep.graph.add(user_id="nick", type="text",
data="Nicks Subscription Tier ist Pro.")
| Call | Beschreibung |
|---|
thread.add_messages(...) | Aufnahme Konversations Wendungen |
graph.add(...) | Hänge beliebigen Text/JSON zum Graph |
| Aufnahme | Entitäten/Fakten werden automatisch extrahiert und Zeit-gestempelt |
Kontext abrufen
# Erhalte einen zusammengesetzten Kontext Block für den Prompt
memory = zep.thread.get_user_context(thread_id="t1")
print(memory.context) # ready-to-inject String von relevanten Fakten
# Oder direktabfrage den Graph
edges = zep.graph.search(user_id="nick", query="wo lebt Nick?")
| Call | Gibt zurück |
|---|
thread.get_user_context(...) | Ein synthetisierter Kontext Block |
graph.search(...) | Fakten/Edges oder Nodes Abfrage matching |
| Such Umfang | Edges (Fakten), Nodes (Entitäten), oder Episodes |
Warum Temporal
Weil Zep Graph-basiert und Zeit-aware ist, überschreiben widersprechende Updates nicht blind — alte Fakten werden mit Zeit-stamp ungültig und neue werden aufgezeichnet, damit der Agent die aktuelle Wahrheit erhält, während Geschichte abfragbar bleibt.
| Fähigkeit | Nutzen |
|---|
| Fakt Ungültigkeit | Aktuelle Kontext bleibt genau |
| Nachverfolgung | Verfolgung Fakten zu ihrer Quelle |
| Regierte Retrieval | Low-Latency, Permissioned Kontext |
| Cross-Session | Memory persistiert über Threads |
Common Workflows
# Der Agent Loop mit Zep Memory
zep.thread.add_messages(thread_id="t1", messages=user_turn)
context = zep.thread.get_user_context(thread_id="t1").context
# voranstellen `context` zum deinem LLM System Prompt, dann generieren
Zep vs Andere Memory Layers
| Aspekt | Zep | Mem0 | Rohes Vector Store |
|---|
| Modell | Temporal Graph (Graphiti) | Multi-Tier | Nur Embeddings |
| Temporal Fakten | Ja | Begrenzt | Nein |
| Kontext Assembly | Built-in Block | Retrieval | Manuell |
| Beste für | Production Agent Memory | Personalisierung | Simple Recall |
Ressourcen