Skip to main content

Overview

Conversation Memory persists the complete chat history for a session, enabling agents to reference previous messages and maintain context across interactions.

Basic Usage

from upsonic import Agent, Task
from upsonic.storage.memory import Memory
from upsonic.storage.sqlite import SqliteStorage

storage = SqliteStorage(db_file="chat.db")

memory = Memory(
    storage=storage,
    session_id="session_001",
    full_session_memory=True
)

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

result1 = agent.do(Task("My name is Alice"))
result2 = agent.do(Task("What's my name?"))
print(result2)  # "Your name is Alice"

With Message Limiting

Control memory size by limiting to the last N conversation turns:
from upsonic import Agent, Task
from upsonic.storage.memory import Memory
from upsonic.storage.sqlite import SqliteStorage

storage = SqliteStorage(db_file="limited.db")

memory = Memory(
    storage=storage,
    session_id="session_001",
    full_session_memory=True,
    num_last_messages=10  # Keep last 10 turns only
)

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

result = agent.do(Task("Let's continue our discussion"))
print(result)

With Tool Call Results

Include tool execution results in the conversation history:
from upsonic import Agent, Task
from upsonic.storage.memory import Memory
from upsonic.storage.sqlite import SqliteStorage
from upsonic.tools import tool

@tool
def get_weather(city: str) -> str:
    """Get weather for a city."""
    return f"Weather in {city}: 72°F, Sunny"

storage = SqliteStorage(db_file="tools.db")

memory = Memory(
    storage=storage,
    session_id="session_001",
    full_session_memory=True,
    feed_tool_call_results=True  # Include tool outputs in history
)

agent = Agent("openai/gpt-4o", tools=[get_weather], memory=memory)

result1 = agent.do(Task("What's the weather in NYC?"))
result2 = agent.do(Task("What was the weather you just told me?"))
print(result2)  # Can reference previous tool results

Parameters

ParameterTypeDefaultDescription
full_session_memoryboolFalseEnable conversation history
session_idstrauto-generatedSession identifier
num_last_messagesint | NoneNoneLimit to last N turns
feed_tool_call_resultsboolFalseInclude tool outputs