State in Context
Persist each user's name and age across runs in separate session state.
Use session state to carry user context across runs in one session. Each session stores its own state, so the two users remain isolated.
Create a Python file
from agno.agent import Agent
from agno.db.sqlite import SqliteDb
from agno.models.openai import OpenAIResponses
db = SqliteDb(db_file="tmp/agent.db")
agent = Agent(
model=OpenAIResponses(id="gpt-5.2"),
instructions="Users name is {user_name} and age is {age}",
db=db,
)
# Sets the session state for the session with the id "user_1_session_1"
agent.print_response(
"What is my name?",
session_id="user_1_session_1",
user_id="user_1",
session_state={"user_name": "John", "age": 30},
stream=True,
)
# Will load the session state from the session with the id "user_1_session_1"
agent.print_response("How old am I?", session_id="user_1_session_1", user_id="user_1", stream=True)
# Sets the session state for the session with the id "user_2_session_1"
agent.print_response(
"What is my name?",
session_id="user_2_session_1",
user_id="user_2",
session_state={"user_name": "Jane", "age": 25},
stream=True,
)
# Will load the session state from the session with the id "user_2_session_1"
agent.print_response("How old am I?", session_id="user_2_session_1", user_id="user_2", stream=True)Set up your virtual environment
uv venv --python 3.12
source .venv/bin/activateInstall dependencies
uv pip install -U agno openai sqlalchemyExport your OpenAI API key
Set OpenAI Key
Set your OPENAI_API_KEY as an environment variable. You can get one from OpenAI.
export OPENAI_API_KEY=sk-***Run Agent
python session_state_in_context.py