Google Gemini

Memori integrates with Google Gemini via the google-genai SDK (Python) and @google/genai SDK (TypeScript). Register the client instance and all calls are automatically captured.

Quick Start

Gemini Integration
import os
from google import genai
from memori import Memori

client = genai.Client(api_key=os.environ["GOOGLE_API_KEY"])

mem = Memori().llm.register(client)
mem.attribution(entity_id="user_123", process_id="gemini_assistant")

response = client.models.generate_content(
    model="gemini-2.5-flash",
    contents="Hello!"
)
print(response.text)

Supported Modes

ModePythonTypeScript
Syncclient.models.generate_content()
Asyncawait client.aio.models.generate_content()await client.models.generateContent()
Streamedclient.models.generate_content_stream()await client.models.generateContentStream()

Additional Modes

Async (Python)

import os, asyncio
from google import genai
from memori import Memori

client = genai.Client(api_key=os.environ["GOOGLE_API_KEY"])

mem = Memori().llm.register(client)
mem.attribution(entity_id="user_123", process_id="gemini_assistant")

async def main():
    response = await client.aio.models.generate_content(
        model="gemini-2.5-flash",
        contents="Hello!"
    )
    print(response.text)

asyncio.run(main())

Streaming

Streaming
import os
from google import genai
from memori import Memori

client = genai.Client(api_key=os.environ["GOOGLE_API_KEY"])

mem = Memori().llm.register(client)
mem.attribution(entity_id="user_123", process_id="gemini_assistant")

for chunk in client.models.generate_content_stream(
    model="gemini-2.5-flash",
    contents="Hello!"
):
    print(chunk.text, end="")

Multi-Turn Conversations

Pass a message history as the contents array. Memori tracks the full conversation automatically.

Multi-Turn
response = client.models.generate_content(
    model="gemini-2.5-flash",
    contents="My name is Alice."
)
print(response.text)

response2 = client.models.generate_content(
    model="gemini-2.5-flash",
    contents=[
        {"role": "user", "parts": [{"text": "My name is Alice."}]},
        {"role": "model", "parts": [{"text": response.text}]},
        {"role": "user", "parts": [{"text": "What's my name?"}]},
    ]
)
print(response2.text)