Sessions
Session management for multi-turn conversations.
-
class agent.session.Session(agent, session_id=None, system=None, messages=None)[source]
Bases: object
A session for multi-turn conversation.
Sessions manage message history automatically, allowing natural
conversational interactions without manual message management.
Example
```python
agent = Agent(provider=”openai”, model=”gpt-4o”)
session = agent.session()
session.run(“My name is Alice”)
response = session.run(“What’s my name?”)
print(response.text) # “Your name is Alice”
```
- Parameters:
-
-
property session_id: str
Get the session ID.
-
property system: str | None
Get the system prompt.
-
property messages: list[Message]
Get the message history (read-only copy).
-
run(input, *, temperature=None, max_tokens=None, metadata=None)[source]
Send a message and get a response.
The input and response are automatically added to history.
- Parameters:
input (str) – User message
temperature (float | None) – Sampling temperature (overrides default)
max_tokens (int | None) – Max tokens (overrides default)
metadata (dict[str, Any] | None) – Request metadata
- Return type:
AgentResponse
- Returns:
AgentResponse with the model’s response
-
async run_async(input, *, temperature=None, max_tokens=None, metadata=None)[source]
Send a message and get a response asynchronously.
- Parameters:
input (str) – User message
temperature (float | None) – Sampling temperature (overrides default)
max_tokens (int | None) – Max tokens (overrides default)
metadata (dict[str, Any] | None) – Request metadata
- Return type:
AgentResponse
- Returns:
AgentResponse with the model’s response
-
stream(input, *, temperature=None, max_tokens=None, metadata=None)[source]
Send a message and stream the response.
Note: History is updated after stream is consumed.
- Parameters:
input (str) – User message
temperature (float | None) – Sampling temperature
max_tokens (int | None) – Max tokens
metadata (dict[str, Any] | None) – Request metadata
- Return type:
StreamResponse
- Returns:
StreamResponse iterator
-
async stream_async(input, *, temperature=None, max_tokens=None, metadata=None)[source]
Send a message and stream the response asynchronously.
- Parameters:
input (str) – User message
temperature (float | None) – Sampling temperature
max_tokens (int | None) – Max tokens
metadata (dict[str, Any] | None) – Request metadata
- Return type:
AsyncStreamResponse
- Returns:
AsyncStreamResponse iterator
-
json(input, *, schema, temperature=None, max_tokens=None, metadata=None)[source]
Send a message expecting structured JSON output.
- Parameters:
input (str) – User message
schema (type[BaseModel] | dict[str, Any]) – Pydantic model or JSON schema
temperature (float | None) – Sampling temperature
max_tokens (int | None) – Max tokens
metadata (dict[str, Any] | None) – Request metadata
- Return type:
AgentResponse
- Returns:
AgentResponse with parsed output
-
async json_async(input, *, schema, temperature=None, max_tokens=None, metadata=None)[source]
Send a message expecting structured JSON output asynchronously.
- Parameters:
input (str) – User message
schema (type[BaseModel] | dict[str, Any]) – Pydantic model or JSON schema
temperature (float | None) – Sampling temperature
max_tokens (int | None) – Max tokens
metadata (dict[str, Any] | None) – Request metadata
- Return type:
AgentResponse
- Returns:
AgentResponse with parsed output
-
history()[source]
Get the full message history.
- Return type:
list[Message]
-
clear()[source]
Clear the message history.
- Return type:
None
-
fork(session_id=None)[source]
Create a new session with a copy of the current history.
- Parameters:
session_id (str | None) – Optional ID for the new session
- Return type:
Session
- Returns:
New Session instance
-
add_message(message)[source]
Manually add a message to history.
- Parameters:
message (Message) – Message to add
- Return type:
None
-
to_dict()[source]
Serialize session state to a dictionary.
- Return type:
dict[str, Any]
-
classmethod from_dict(data, agent)[source]
Deserialize session state from a dictionary.
- Parameters:
-
- Return type:
Session
- Returns:
Session instance
Stores
Base session store interface.
-
class agent.stores.base.SessionStore[source]
Bases: ABC
Abstract base class for session storage.
Session stores persist conversation history across sessions.
-
abstractmethod save(session_id, data)[source]
Save session data.
- Parameters:
-
- Return type:
None
-
abstractmethod load(session_id)[source]
Load session data.
- Parameters:
session_id (str) – Unique session identifier
- Return type:
dict[str, Any] | None
- Returns:
Session data if found, None otherwise
-
abstractmethod delete(session_id)[source]
Delete session data.
- Parameters:
session_id (str) – Unique session identifier
- Return type:
bool
- Returns:
True if deleted, False if not found
-
abstractmethod list_sessions()[source]
List all session IDs.
- Return type:
list[str]
- Returns:
List of session identifiers
-
exists(session_id)[source]
Check if a session exists.
- Parameters:
session_id (str) – Unique session identifier
- Return type:
bool
- Returns:
True if session exists
In-memory session store.
-
class agent.stores.memory.InMemoryStore[source]
Bases: SessionStore
In-memory session store.
Stores sessions in memory. Data is lost when the process ends.
Useful for development and testing.
Example
```python
store = InMemoryStore()
# Save session
store.save(“session-123”, {“messages”: […], “system”: “…”})
# Load session
data = store.load(“session-123”)
```
-
save(session_id, data)[source]
Save session data.
- Parameters:
-
- Return type:
None
-
load(session_id)[source]
Load session data.
- Parameters:
session_id (str)
- Return type:
dict[str, Any] | None
-
delete(session_id)[source]
Delete session data.
- Parameters:
session_id (str)
- Return type:
bool
-
list_sessions()[source]
List all session IDs.
- Return type:
list[str]
-
clear()[source]
Clear all sessions.
- Return type:
None
SQLite session store.
-
class agent.stores.sqlite.SQLiteStore(db_path='agent_sessions.db')[source]
Bases: SessionStore
SQLite-based session store.
Persists sessions to a SQLite database file.
Example
```python
store = SQLiteStore(“sessions.db”)
# Save session
store.save(“session-123”, {“messages”: […], “system”: “…”})
# Load session
data = store.load(“session-123”)
```
- Parameters:
db_path (str | Path)
-
save(session_id, data)[source]
Save session data.
- Parameters:
-
- Return type:
None
-
load(session_id)[source]
Load session data.
- Parameters:
session_id (str)
- Return type:
dict[str, Any] | None
-
delete(session_id)[source]
Delete session data.
- Parameters:
session_id (str)
- Return type:
bool
-
list_sessions()[source]
List all session IDs.
- Return type:
list[str]
-
clear()[source]
Clear all sessions.
- Return type:
None
-
vacuum()[source]
Reclaim disk space after deletions.
- Return type:
None