Custom Session Summary
Demonstrates configuring a custom session summary manager and reusing summaries in context.
"""
Custom Session Summary
=====================
Demonstrates configuring a custom session summary manager and reusing summaries in
context.
"""
from agno.agent import Agent
from agno.db.sqlite import SqliteDb
from agno.models.openai import OpenAIResponses
from agno.session import SessionSummaryManager
from agno.team import Team
# ---------------------------------------------------------------------------
# Setup
# ---------------------------------------------------------------------------
db = SqliteDb(
db_file="tmp/team_session_summary.db",
session_table="team_summary_sessions",
)
summary_manager = SessionSummaryManager(model=OpenAIResponses(id="gpt-5-mini"))
# ---------------------------------------------------------------------------
# Create Members
# ---------------------------------------------------------------------------
planner = Agent(
name="Sprint Planner",
model=OpenAIResponses(id="gpt-5-mini"),
instructions=[
"Build concise, sequenced plan summaries.",
"Keep recommendations practical.",
],
)
# ---------------------------------------------------------------------------
# Create Team
# ---------------------------------------------------------------------------
sprint_team = Team(
name="Sprint Team",
model=OpenAIResponses(id="gpt-5-mini"),
members=[planner],
db=db,
session_summary_manager=summary_manager,
add_session_summary_to_context=True,
)
# ---------------------------------------------------------------------------
# Run Team
# ---------------------------------------------------------------------------
if __name__ == "__main__":
session_id = "sprint-planning-session"
sprint_team.print_response(
"Plan a two-week sprint for a small team shipping a documentation portal.",
stream=True,
session_id=session_id,
)
sprint_team.print_response(
"Now add testing and rollout milestones to that plan.",
stream=True,
session_id=session_id,
)
summary = sprint_team.get_session_summary(session_id=session_id)
if summary is not None:
print(f"\nSession summary: {summary.summary}")
if summary.topics:
print(f"Topics: {', '.join(summary.topics)}")
sprint_team.print_response(
"Using what we discussed, suggest the most important next action.",
stream=True,
session_id=session_id,
)Summary lifecycle
Providing session_summary_manager enables summary generation. The manager uses its own configured model after a run, and add_session_summary_to_context=True includes the saved summary in later runs on sprint-planning-session. The summary is model-generated; the planner's output is a proposed sprint plan.
Run the Example
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
export OPENAI_API_KEY="your_openai_api_key_here"Run the example
Save the code above as custom_session_summary.py, then run:
python custom_session_summary.pyFull source: cookbook/03_teams/07_session/custom_session_summary.py