Skip to main content

Use as Context Manager

Chat implements async context manager protocol for automatic resource cleanup.

Basic Usage

from upsonic import Agent, Chat

agent = Agent("openai/gpt-4o")

async with Chat(session_id="session1", user_id="user1", agent=agent) as chat:
    response = await chat.invoke("Hello")
    print(response)
    # Storage connection automatically closed on exit

With Custom Storage

from upsonic import Agent, Chat
from upsonic.storage.providers import SqliteStorage

storage = SqliteStorage("sessions", "profiles", "chat.db")
agent = Agent("openai/gpt-4o")

async with Chat(
    session_id="session1",
    user_id="user1",
    agent=agent,
    storage=storage
) as chat:
    response = await chat.invoke("Hello")
    print(response)
    # Storage automatically disconnected

Error Handling with Context Manager

from upsonic import Agent, Chat

agent = Agent("openai/gpt-4o")

try:
    async with Chat(session_id="session1", user_id="user1", agent=agent) as chat:
        response = await chat.invoke("Hello")
        print(response)
except Exception as e:
    print(f"Error: {e}")
    # Resources still cleaned up automatically

Multiple Sessions

from upsonic import Agent, Chat

agent = Agent("openai/gpt-4o")

async with Chat(session_id="session1", user_id="user1", agent=agent) as chat1:
    await chat1.invoke("Hello")

async with Chat(session_id="session2", user_id="user1", agent=agent) as chat2:
    await chat2.invoke("Hi")
    # Each session manages its own resources