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()