Agent with Followup Suggestions

Generate followup prompts after agent responses.

Set followups=True to generate prompt suggestions when a run returns content. Agno makes a second model call using the user input and response.

Create a Python file

followup_suggestions.py
from agno.agent import Agent
from agno.models.openai import OpenAIResponses

agent = Agent(
    model=OpenAIResponses(id="gpt-5.4-mini"),
    followups=True,
    num_followups=3,
)

response = agent.run("What is quantum computing?")

print(response.content)
print("\nFollowup suggestions:")
for i, suggestion in enumerate(response.followups or [], 1):
    print(f"  {i}. {suggestion}")

Set up your virtual environment

uv venv --python 3.12
source .venv/bin/activate

Install dependencies

uv pip install -U agno openai

Export your OpenAI API key

export OPENAI_API_KEY="your_openai_api_key_here"

Run Agent

python followup_suggestions.py

Options

ParameterTypeDefaultDescription
followupsboolFalseEnable followup suggestion generation
num_followupsint3Number of suggestions to generate (minimum 1)
followup_modelModel | NoneNoneModel used for followups. None reuses the agent's model.

Streaming

Followup suggestions are available via events when streaming. The FollowupsCompleted event carries the suggestions after the main response finishes.

followup_suggestions_streaming.py
import asyncio

from agno.agent import Agent, RunEvent
from agno.models.openai import OpenAIResponses

agent = Agent(
    model=OpenAIResponses(id="gpt-5.4-mini"),
    followups=True,
    num_followups=3,
)


async def main():
    async for event in agent.arun(
        "What is quantum computing?",
        stream=True,
        stream_events=True,
    ):
        if event.event == RunEvent.run_content and event.content:
            print(event.content, end="", flush=True)

        if event.event == RunEvent.followups_completed:
            print("\n\nFollowup suggestions:")
            for i, suggestion in enumerate(event.followups or [], 1):
                print(f"  {i}. {suggestion}")


asyncio.run(main())

The current implementation requires a model instance for followup_model. A model-name string is accepted by the constructor annotation but is not resolved before followup generation. Use the instance form shown below.

Using a separate model

Use followup_model to run followup generation with a separate model.

from agno.agent import Agent
from agno.models.openai import OpenAIResponses

agent = Agent(
    model=OpenAIResponses(id="gpt-5.4-mini"),
    followups=True,
    num_followups=3,
    followup_model=OpenAIResponses(id="gpt-4o-mini"),
)

Developer Resources