Saltar al contenido principal

Quickstart

Esta guía muestra el flujo Python embebido: instalá la librería, creá un store, guardá una observación (con strip de contenido privado), buscala, y cerrá la sesión con un summary.

1. Instalar

iLAB Memory es un único paquete Python. El core no tiene dependencias externas en runtime más allá de Pydantic y la stdlib (SQLite viene con Python).

pip install ilab-memory

2. Crear un memory store

ILabMemory.from_path es la factory para el store backed por SQLite. Apuntalo a un path en disco (o :memory: para tests).

from ilab_memory import ILabMemory

mem = ILabMemory.from_path("./memory.db")
tip

ILabMemory es context manager — usá with ILabMemory.from_path(...) as mem: si querés que el store cierre limpio al final del script.

3. Iniciar una sesión para un usuario

Las sesiones son por usuario y se reutilizan si siguen activas (timeout por defecto: configurable en Config). La response trae el session_id, si es nueva, y el contexto de memoria previo.

response = mem.mem_session_start(user_id="alice")

print(response.session_id) # ej. 1
print(response.is_new) # True en la primera llamada para este user
print(len(response.memories)) # observaciones previas, scored con ContextScore

4. Guardar una observación

mem_save requiere user_id, content, type y title. Pasá topic_key cuando el mismo tema pueda actualizarse entre turnos — los saves siguientes con la misma key hacen upsert in-place en lugar de duplicar.

Cualquier cosa dentro de <private>...</private> se elimina antes de hashear o persistir el contenido. Los secretos nunca llegan a disco.

result = mem.mem_save(
user_id="alice",
type="preference",
title="Saludo preferido",
content="Alice prefiere que la saluden como 'Ali'. <private>API key: sk-xxx</private>",
topic_key="user/alice/greeting",
)

print(result.id) # id de la observación
print(result.outcome) # 'created' | 'updated' | 'deduped'

5. Buscar memoria

mem_search corre búsqueda full-text (FTS5) limitada al usuario y devuelve observaciones compactas rankeadas por SearchScore (combina rank de FTS, recency y revision).

results = mem.mem_search(
user_id="alice",
query="saludo",
limit=5,
)

for obs in results:
print(obs.id, obs.score, obs.title)
nota

Los resultados vuelven como ObservationCompact (payload chico, ~100 tokens). Usá mem_get_observation para hidratar el contenido completo cuando lo necesites.

6. Obtener la observación completa

Los resultados compactos no traen el content por brevedad. Hidratá el registro completo por id cuando lo necesites para inspeccionar o renderizar. Fijate que el bloque <private> desapareció — solo queda [REDACTED].

obs = mem.mem_get_observation(user_id="alice", observation_id=result.id)

print(obs.content)
# → "Alice prefiere que la saluden como 'Ali'. [REDACTED]"

7. Cerrar la sesión con un summary

Cuando termina la conversación, escribí un summary humano para que la próxima sesión arranque sabiendo dónde quedó esta.

closed = mem.mem_session_end(
user_id="alice",
summary="Capturé el saludo preferido de Alice y confirmé que el agente usará 'Ali'.",
)

print(closed.id, closed.completed_at)
tip

¿Querés el mismo flujo por red? iLAB Memory trae un servidor HTTP REST (FastAPI) y un servidor MCP stdio — ambos exponen exactamente las mismas operaciones y serializan los mismos modelos Pydantic. Mirá la API Reference cuando aterrice Fase 4.

¿Qué sigue?