SDK 레퍼런스

공식 클라이언트 라이브러리. REST API와 동일한 표면 + 몇 가지 편의 헬퍼.

설치

pip install neoali-memgen

초기화

from memgen import MemgenClient

client = MemgenClient(
    api_key="mg-...",
    base_url="https://memgen.neoali.com",
    timeout=120.0,
)

메모리 CRUD

add(messages, ...)

비동기 추출 + 저장. 가장 많이 쓰는 쓰기 호출.

result = client.add(
    messages=[
        {"role": "user", "content": "..."},
        {"role": "assistant", "content": "..."},
    ],
    user_id="alice",
    agent_id="bot_v2",
    run_id="session-001",
    metadata={"channel": "chat"},
    categories=["preferences"],
)
for mem in result.memories:
    print(mem["id"], mem["memory"])

extract(messages,(...) memgen-only

동기 추출. 구조화된 레이어드 결과를 즉시 반환. store=True면 저장도 함께.

r = client.extract(
    messages=[{"role": "user", "content": "I adopted a puppy."}],
    user_id="alice",
    store=True,
    extension="ai_tutor",
)
print(r.summary, r.entities, r.tags, r.key_facts, r.importance, r.memory_id)

search(query, ...)

hits = client.search(
    query="food preferences",
    user_id="alice",
    top_k=10,
    threshold=0.3,
)
for h in hits.results:
    print(h["score"], h["memory"])

list / get / update / delete

page = client.list(user_id="alice", page=1, page_size=50)
mem = client.get(memory_id)
client.update(memory_id, memory="updated text")
client.delete(memory_id)
client.delete_all(user_id="alice")    # GDPR
events = client.history(memory_id)

프로젝트 정책

프로젝트당 한 번 추출 가이드라인 + 라벨 세트 설정. 이후 모든 add / extract 호출이 이 설정을 사용.

client.project.update(
    project_id="<your-project-id>",
    extraction_policy="""
        Extract learning context for an AI tutor:
          - skill_mastered, skill_struggling
          - preference (visual, examples, pace)
          - goal (with deadline)
        Skip: grade numbers, personal identifiers.
    """,
    label_taxonomy=[
        {"skill_mastered": "Skills student understands"},
        {"skill_struggling": "Skills student finds hard"},
        {"preference": "How they like to learn"},
        {"goal": "Learning targets"},
    ],
)

cfg = client.project.get("<your-project-id>")

Result 헬퍼

반환 객체는 JSON을 감싸는 편의 래퍼. .get(...) 노이즈를 줄이는 properties 제공.

클래스속성
AddResult.memories, .credits_used, .credits_remaining
SearchResult.results (iterable)
ListResult.results, .count
ExtractResult.summary, .entities, .tags, .key_facts, .importance, .memory_id, .usage, .core, .extensions

에러 처리

from memgen import MemgenClient, MemgenError

try:
    client.add(messages=[...], user_id="alice")
except MemgenError as e:
    print(e.status_code, e.detail)

Self-hosting

자체 배포 가리키기:

client = MemgenClient(
    api_key="mg-...",
    base_url="https://memgen.your-company.com",
)

cURL 폴백

모든 SDK 호출은 REST endpoint와 1:1 매핑됩니다. HTTP로 직접 호출하려면 API Reference 참조.