Basic State

This example demonstrates how to create an agent with basic session state management, maintaining a shopping list across interactions using SQLite storage.

Create a Python file

1from kern.agent import Agent
2from kern.db.sqlite import SqliteDb
3from kern.models.openai import OpenAIResponses
4
5
6def add_item(session_state, item: str) -> str:
7 """Add an item to the shopping list."""
8 session_state["shopping_list"].append(item)
9 return f"The shopping list is now {session_state['shopping_list']}"
10
11
12agent = Agent(
13 model=OpenAIResponses(id="gpt-5.2"),
14 session_state={"shopping_list": []},
15 db=SqliteDb(db_file="tmp/agents.db"),
16 tools=[add_item],
17 instructions="Current state (shopping list) is: {shopping_list}",
18 markdown=True,
19)
20
21agent.print_response("Add milk, eggs, and bread to the shopping list", stream=True)
22print(f"Final session state: {agent.get_session_state()}")

Set up your virtual environment

1uv venv --python 3.12
2source .venv/bin/activate
1uv venv --python 3.12
2.venv\Scripts\activate

Install dependencies

1uv pip install -U kern-ai openai

Export your OpenAI API key

Set OpenAI Key

Set your OPENAI_API_KEY as an environment variable. You can get one from OpenAI.

1export OPENAI_API_KEY=sk-***
1setx OPENAI_API_KEY sk-***

Run Agent

1python session_state_basic.py