Examples
Basic Usage

Basic Usage

Fundamental operations with Remina.

Minimal Example

from remina import Memory
 
memory = Memory()
 
# Add memory
memory.add(
    messages="My name is Alice and I'm a software engineer.",
    user_id="alice_001"
)
 
# Search
results = memory.search(
    query="What is the user's profession?",
    user_id="alice_001"
)
 
for r in results["results"]:
    print(f"[{r['score']:.2f}] {r['memory']}")
 
memory.close()

Adding Memories

From Text

result = memory.add(
    messages="I prefer Python, dislike JavaScript, and I'm learning Rust.",
    user_id="user_123"
)
 
print(f"Extracted {len(result['results'])} facts:")
for mem in result["results"]:
    print(f"  - {mem['memory']}")

From Conversation

result = memory.add(
    messages=[
        {"role": "user", "content": "I just got a new MacBook Pro"},
        {"role": "assistant", "content": "How do you like it?"},
        {"role": "user", "content": "The M3 chip is impressive"},
    ],
    user_id="user_123"
)

With Metadata

result = memory.add(
    messages="I prefer dark mode in all applications",
    user_id="user_123",
    metadata={
        "category": "preferences",
        "source": "onboarding",
        "confidence": 0.95
    }
)

Searching Memories

Basic Search

results = memory.search(
    query="What computer does the user have?",
    user_id="user_123",
    limit=5
)
 
for mem in results["results"]:
    print(f"[{mem['score']:.3f}] {mem['memory']}")

With Filters

results = memory.search(
    query="user preferences",
    user_id="user_123",
    limit=10,
    filters={"category": "preferences"}
)

Managing Memories

Get All

all_memories = memory.get_all(user_id="user_123", limit=100)
 
print(f"Total: {len(all_memories['results'])}")
for i, mem in enumerate(all_memories["results"], 1):
    print(f"{i}. {mem['memory']}")

Get by ID

mem = memory.get(memory_id="abc123")
if mem:
    print(f"Content: {mem['content']}")
    print(f"Created: {mem['created_at']}")

Update

result = memory.update(
    memory_id="abc123",
    content="Name is Alice Smith"
)

Delete

# Single
memory.delete(memory_id="abc123")
 
# All for user
memory.delete_all(user_id="user_123")

Complete Example

from remina import Memory
 
def main():
    memory = Memory()
    user_id = "demo_user"
    
    memory.delete_all(user_id=user_id)
    
    # Add from text
    memory.add(
        messages="I'm a data scientist at Google. I specialize in NLP.",
        user_id=user_id
    )
    
    # Add from conversation
    memory.add(
        messages=[
            {"role": "user", "content": "I prefer PyTorch over TensorFlow"},
            {"role": "assistant", "content": "PyTorch is excellent for research."},
            {"role": "user", "content": "I use Jupyter notebooks daily"},
        ],
        user_id=user_id
    )
    
    # Add with metadata
    memory.add(
        messages="I work remotely from Seattle",
        user_id=user_id,
        metadata={"category": "location", "verified": True}
    )
    
    # Search
    print("Query: ML frameworks")
    results = memory.search(
        query="What ML frameworks does the user prefer?",
        user_id=user_id,
        limit=3
    )
    for r in results["results"]:
        print(f"  [{r['score']:.2f}] {r['memory']}")
    
    # List all
    print("\nAll memories:")
    all_mems = memory.get_all(user_id=user_id)
    for i, m in enumerate(all_mems["results"], 1):
        print(f"  {i}. {m['memory']}")
    
    memory.close()
 
if __name__ == "__main__":
    main()

Error Handling

from remina import Memory
from remina.exceptions import ReminaError, StorageError, LLMError
 
memory = Memory()
 
try:
    result = memory.add(messages="Some text", user_id="user_123")
except LLMError as e:
    print(f"LLM error: {e.message}")
    print(f"Suggestion: {e.suggestion}")
except StorageError as e:
    print(f"Storage error: {e.message}")
except ReminaError as e:
    print(f"Error [{e.error_code}]: {e.message}")
finally:
    memory.close()