콘텐츠로 이동

Zep - 에이전트를 위한 컨텍스트 엔지니어링 및 메모리 치트시트

Zep - 에이전트를 위한 컨텍스트 엔지니어링 및 메모리 치트시트

Zep는 AI 에이전트를 위한 메모리 및 컨텍스트 엔지니어링 레이어입니다. Graphiti 시간 지식 그래프 엔진을 기반으로, 대화 히스토리와 비즈니스 데이터를 수집하고, 사실이 시간에 따라 어떻게 변하는지 추적하는 쿼리 가능한 그래프로 융합하며, 에이전트 응답을 기초할 관련, 통제된 컨텍스트를 낮은 지연시간으로 반환합니다. 오픈소스 코어와 관리형 클라우드 서비스 (SOC 2 / HIPAA), Python, TypeScript, Go용 SDK를 제공합니다.

설치 / 설정

대상명령어
Python SDKpip install zep-cloud (cloud)
TypeScript SDKnpm install @getzep/zep-cloud
자체 호스팅 (Community Edition)프로젝트의 Docker Compose를 통해 실행
API 키export ZEP_API_KEY=...

핵심 개념

용어의미
User에이전트가 제공하는 최종 사용자
Thread사용자에 대한 대화 세션
Graph사용자/그룹의 시간 지식 그래프
Fact시간 인식 관계 그래프에서
Context block조립되고 주입할 준비가 된 컨텍스트 문자열

사용자 및 스레드

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")
호출설명
user.add(...)사용자 생성
thread.create(...)대화 스레드 시작
thread.add_messages(...)메시지 추가 (그래프에 자동 수집)
user.delete(...)사용자 및 해당 데이터 제거

메모리 추가

zep.thread.add_messages(
    thread_id="t1",
    messages=[{"role": "user", "content": "I moved to Berlin.", "name": "Nick"}],
)

# 채팅이 아닌 비즈니스 데이터를 그래프에 직접 추가
zep.graph.add(user_id="nick", type="text",
              data="Nick's subscription tier is Pro.")
호출설명
thread.add_messages(...)대화 턴 수집
graph.add(...)그래프에 임의 텍스트/JSON 추가
수집엔티티/사실 자동 추출 및 타임스탬프

컨텍스트 검색

# 프롬프트를 위한 조립된 컨텍스트 블록 받기
memory = zep.thread.get_user_context(thread_id="t1")
print(memory.context)   # 주입할 준비가 된 관련 사실 문자열

# 또는 그래프 직접 쿼리
edges = zep.graph.search(user_id="nick", query="where does Nick live?")
호출반환
thread.get_user_context(...)합성된 컨텍스트 블록
graph.search(...)쿼리와 일치하는 사실/엣지 또는 노드
검색 범위edges (사실), nodes (엔티티), 또는 episodes

시간이 중요한 이유

Zep는 그래프 기반이고 시간 인식이므로, 모순되는 업데이트가 무분별하게 덮어쓰지 않습니다. 이전 사실은 타임스탬프로 무효화되고 새 사실이 기록되므로 에이전트는 현재 진실을 얻으면서 히스토리는 쿼리 가능하게 유지됩니다.

기능이점
사실 무효화현재 컨텍스트는 정확하게 유지
전파사실을 소스로 추적
통제된 검색낮은 지연시간, 허가된 컨텍스트
교차 세션메모리는 스레드 전체에 지속

일반적인 워크플로우

# Zep 메모리를 사용한 에이전트 루프
zep.thread.add_messages(thread_id="t1", messages=user_turn)
context = zep.thread.get_user_context(thread_id="t1").context
# LLM 시스템 프롬프트 앞에 `context` 추가, 그 후 생성

Zep vs 다른 메모리 레이어

측면ZepMem0원본 벡터 저장소
모델시간 그래프 (Graphiti)다층임베딩만
시간 사실제한적아니오
컨텍스트 조립내장 블록검색수동
최고의 용도프로덕션 에이전트 메모리개인화단순 회상

리소스