Python SDK
Python SDK
Official Python SDK for Sovant Memory API.
Installation
pip install sovant==1.0.6
# or
poetry add sovant==1.0.6
Initialization
from sovant import Sovant
client = Sovant(
api_key="sk_live_your_api_key",
base_url="https://sovant.ai", # optional, this is default
timeout=30.0, # optional, seconds
max_retries=3, # optional
debug=False # optional
)
Memory Operations
# Create
memory = client.memory.create({
"content": "User prefers dark mode",
"type": "preference",
"tags": ["ui", "settings"],
"metadata": {"source": "onboarding"}
})
# Get
mem = client.memory.get("mem_123")
# Update
updated = client.memory.update("mem_123", {
"tags": ["ui", "settings", "theme"]
})
# Delete
client.memory.delete("mem_123")
# List
memories = client.memory.list({
"limit": 20,
"offset": 0,
"type": "preference",
"tags": ["settings"]
})
# Search
results = client.memory.search({
"query": "user preferences",
"limit": 10
})
Chat Support
# Note: Full chat streaming support coming in v1.1.0
# For now, use the REST API directly or JavaScript SDK
import requests
# Create session
response = requests.post(
"https://sovant.ai/api/v1/chat/sessions",
headers={"x-sovant-api-key": api_key},
json={"title": "Support chat"}
)
session = response.json()
# Send message (non-streaming)
response = requests.post(
f"https://sovant.ai/api/v1/chat/sessions/{session['id']}/messages",
headers={"x-sovant-api-key": api_key},
json={
"message": "Hello",
"provider": "openai",
"model": "gpt-4o-mini",
"stream": False
}
)
Batch Operations
batch = client.memory.batch({
"operations": [
{
"op": "create",
"data": {
"content": "Batch memory 1",
"type": "observation"
}
},
{
"op": "update",
"id": "mem_123",
"data": {"tags": ["updated"]}
},
{
"op": "delete",
"id": "mem_456"
}
]
})
print(batch["summary"])
# {"total": 3, "successful": 3, "failed": 0}
Thread Management
# Create thread
thread = client.threads.create({
"title": "Customer Support",
"metadata": {"ticket_id": "12345"}
})
# Link memory to thread
client.threads.link_memory(thread["id"], memory["id"])
# List memories in thread
thread_memories = client.memory.list({
"thread_id": thread["id"]
})
Error Handling
from sovant import (
SovantError,
AuthError,
RateLimitError,
NetworkError,
TimeoutError
)
try:
memory = client.memory.get("invalid")
except AuthError as e:
print(f"Authentication failed: {e}")
except RateLimitError as e:
print(f"Rate limited. Retry after: {e.retry_after}")
except NetworkError as e:
print(f"Network error: {e}")
except TimeoutError as e:
print(f"Request timed out: {e}")
except SovantError as e:
print(f"API Error {e.status}: {e.message}")
print(f"Request ID: {e.request_id}")
API Key Management
# List all keys
keys = client.keys.list()
# Create new key
new_key = client.keys.create({"name": "Production"})
print(new_key["key"]) # Save this - only shown once!
# Update key
client.keys.update(key_id, {"name": "Staging"})
# Revoke key
client.keys.revoke(key_id)
Changelog
See PyPI history for version history.
Current stable: v1.0.6 (Documentation update)