Skip to main content

User Memory Across Sessions

When user_analysis_memory=True, user profile data persists across sessions:
import asyncio
from upsonic import Agent, Chat
from upsonic.storage import SqliteStorage


async def main():
    storage = SqliteStorage(db_file="chat.db")
    agent = Agent("openai/gpt-4o")

    chat1 = Chat(
        session_id="session1",
        user_id="user1",
        agent=agent,
        storage=storage,
        full_session_memory=True,
        user_analysis_memory=True
    )
    await chat1.invoke("I love Python and machine learning")

    chat2 = Chat(
        session_id="session2",
        user_id="user1",
        agent=agent,
        storage=storage,
        full_session_memory=True,
        user_analysis_memory=True
    )
    response = await chat2.invoke("What are my interests?")
    print(response)


if __name__ == "__main__":
    asyncio.run(main())

Different Users Same Session ID

Different users maintain separate histories even with same session ID:
import asyncio
from upsonic import Agent, Chat
from upsonic.storage import SqliteStorage


async def main():
    storage = SqliteStorage(db_file="chat.db")
    agent = Agent("openai/gpt-4o")

    chat_alice = Chat(
        session_id="support",
        user_id="alice",
        agent=agent,
        storage=storage
    )
    await chat_alice.invoke("I need help with billing")

    chat_bob = Chat(
        session_id="support",
        user_id="bob",
        agent=agent,
        storage=storage
    )
    await chat_bob.invoke("I have a technical question")

    print(f"Alice messages: {len(chat_alice.all_messages)}")
    print(f"Bob messages: {len(chat_bob.all_messages)}")


if __name__ == "__main__":
    asyncio.run(main())