Custom Session Summary

Demonstrates configuring a custom session summary manager and reusing summaries in context.

custom_session_summary.py
"""
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/activate

Install dependencies

uv pip install -U agno openai sqlalchemy

Export 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.py

Full source: cookbook/03_teams/07_session/custom_session_summary.py