Anthropic
Memori supports all Anthropic Claude models. Register your client once and every conversation is automatically captured and stored. Note: max_tokens is required for all Anthropic API calls.
Want a zero-setup option? The Memori Cloud at app.memorilabs.ai.
Quick Start
Anthropic Integration
from anthropic import Anthropic
from memori import Memori
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
engine = create_engine("sqlite:///memori.db")
SessionLocal = sessionmaker(bind=engine)
client = Anthropic()
mem = Memori(conn=SessionLocal).llm.register(client)
mem.config.storage.build()
mem.attribution(entity_id="user_123", process_id="claude_assistant")
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello!"}]
)
print(response.content[0].text)
Supported Modes
| Mode | Python | TypeScript |
|---|---|---|
| Sync | client.messages.create() | — |
| Async | await client.messages.create() | await client.messages.create() |
| Streamed | client.messages.stream() | await client.messages.create({ stream: true }) |
Additional Modes
Async (Python)
import asyncio
from anthropic import AsyncAnthropic
from memori import Memori
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
engine = create_engine("sqlite:///memori.db")
SessionLocal = sessionmaker(bind=engine)
client = AsyncAnthropic()
mem = Memori(conn=SessionLocal).llm.register(client)
mem.config.storage.build()
mem.attribution(entity_id="user_123", process_id="claude_assistant")
async def main():
response = await client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello!"}]
)
print(response.content[0].text)
asyncio.run(main())
Streaming (Python)
from anthropic import Anthropic
from memori import Memori
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
engine = create_engine("sqlite:///memori.db")
SessionLocal = sessionmaker(bind=engine)
client = Anthropic()
mem = Memori(conn=SessionLocal).llm.register(client)
mem.config.storage.build()
mem.attribution(entity_id="user_123", process_id="claude_assistant")
with client.messages.stream(
model="claude-sonnet-4-6",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello!"}]
) as stream:
for text in stream.text_stream:
print(text, end="")
Multi-Turn Conversations
Multi-Turn Conversations
from anthropic import Anthropic
from memori import Memori
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
engine = create_engine("sqlite:///memori.db")
SessionLocal = sessionmaker(bind=engine)
client = Anthropic()
mem = Memori(conn=SessionLocal).llm.register(client)
mem.attribution(entity_id="user_123", process_id="claude_assistant")
messages = [{"role": "user", "content": "My favorite color is blue."}]
first = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
messages=messages
)
print(f"Assistant: {first.content[0].text}")
messages.append({"role": "assistant", "content": first.content[0].text})
messages.append({"role": "user", "content": "What did I just tell you?"})
second = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
messages=messages
)
print(f"Assistant: {second.content[0].text}")
System Prompts
Anthropic supports a top-level system parameter separate from the messages array. Memori captures both.
System Prompts
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
system="You are a helpful coding assistant.",
messages=[{"role": "user", "content": "Explain Python decorators."}]
)
print(response.content[0].text)