Python SDK
Official Python client for Memoid
Installation
pip install memoid Quick Start
from memoid import MemoryClient
client = MemoryClient("your-api-key")
# Add memory
client.add(
messages=[
{"role": "user", "content": "I love hiking"}
],
user_id="user_123"
)
# Search
results = client.search(
query="hobbies",
user_id="user_123"
) Client Configuration
from memoid import MemoryClient
client = MemoryClient(
api_key="your-api-key",
base_url="https://api.memoid.dev", # Custom endpoint
timeout=30, # Request timeout in seconds
) Memory Operations
Add Memories
result = client.add(
messages=[
{"role": "user", "content": "My name is Alex"},
{"role": "assistant", "content": "Nice to meet you!"}
],
user_id="user_123",
agent_id="assistant_1", # Optional
metadata={"source": "chat"}, # Optional
infer=True, # Extract facts (default)
extract_graph=False # Extract entities (default)
)
for memory in result.memories:
print(f"Added: {memory.memory}") List Memories
memories = client.list(
user_id="user_123",
limit=50
)
for m in memories:
print(f"{m.id}: {m.memory}") Get Memory
memory = client.get("mem_abc123")
print(memory.memory) Update Memory
client.update(
"mem_abc123",
memory="Updated text",
metadata={"updated": True}
) Delete Memory
client.delete("mem_abc123") Delete All
client.delete_all(user_id="user_123") Search
results = client.search(
query="What does the user like?",
user_id="user_123",
limit=10,
threshold=0.7
)
for r in results:
print(f"{r.memory} (score: {r.score:.2f})") Knowledge Graph
Extract Knowledge
result = client.extract_knowledge(
text="John works at Acme Corp",
store=True
)
for entity in result.entities:
print(f"Entity: {entity.name} ({entity.type})") Add Entity
client.add_entity(
name="Acme Corp",
type="organization",
attributes={"industry": "tech"}
) Add Relationship
client.add_relationship(
source="John",
relation="works_at",
target="Acme Corp"
) Query Graph
result = client.graph_query(
entity="John",
depth=2
)
for entity in result.entities:
print(entity.name) Async Support
import asyncio
from memoid import AsyncMemoryClient
async def main():
client = AsyncMemoryClient("your-api-key")
result = await client.add(
messages=[{"role": "user", "content": "Hello"}],
user_id="user_123"
)
results = await client.search(
query="greetings",
user_id="user_123"
)
asyncio.run(main()) Error Handling
from memoid import MemoryClient, MemoidError, RateLimitError
client = MemoryClient("your-api-key")
try:
client.add(messages=[...], user_id="user_123")
except RateLimitError as e:
print(f"Rate limited. Retry after {e.retry_after} seconds")
except MemoidError as e:
print(f"Error: {e.message}") Complete Example
import openai
from memoid import MemoryClient
memory = MemoryClient("memoid-key")
openai.api_key = "openai-key"
def chat(user_id: str, message: str) -> str:
# Get context
memories = memory.search(query=message, user_id=user_id, limit=5)
context = "\n".join([f"- {m.memory}" for m in memories])
# Generate response
response = openai.chat.completions.create(
model="gpt-4",
messages=[
{"role": "system", "content": f"Context:\n{context}"},
{"role": "user", "content": message}
]
)
reply = response.choices[0].message.content
# Store conversation
memory.add(
messages=[
{"role": "user", "content": message},
{"role": "assistant", "content": reply}
],
user_id=user_id
)
return reply