Route Mode with Fallback Agent
Demonstrates routing with a general-purpose fallback agent that handles requests when no specialist is a clear match.
"""
Route Mode with Fallback Agent
Demonstrates routing with a general-purpose fallback agent that handles
requests when no specialist is a clear match.
"""
from agno.agent import Agent
from agno.models.openai import OpenAIResponses
from agno.team.mode import TeamMode
from agno.team.team import Team
# ---------------------------------------------------------------------------
# Create Members
# ---------------------------------------------------------------------------
sql_agent = Agent(
name="SQL Expert",
role="Writes and optimizes SQL queries",
model=OpenAIResponses(id="gpt-5.2"),
instructions=[
"You are an SQL expert.",
"Write correct, optimized SQL queries.",
"Explain query plans and indexing strategies when asked.",
],
)
python_agent = Agent(
name="Python Expert",
role="Writes Python code and solves Python-specific problems",
model=OpenAIResponses(id="gpt-5.2"),
instructions=[
"You are a Python expert.",
"Write idiomatic, well-structured Python code.",
"Follow PEP 8 and use type hints.",
],
)
general_agent = Agent(
name="General Assistant",
role="Handles general questions that do not match a specialist",
model=OpenAIResponses(id="gpt-5.2"),
instructions=[
"You are a helpful general assistant.",
"Answer questions clearly and concisely.",
"If the question is about SQL or Python, still do your best.",
],
)
# ---------------------------------------------------------------------------
# Create Team
# ---------------------------------------------------------------------------
team = Team(
name="Dev Help Router",
mode=TeamMode.route,
model=OpenAIResponses(id="gpt-5.2"),
members=[sql_agent, python_agent, general_agent],
instructions=[
"You route questions to the right expert.",
"- SQL or database questions -> SQL Expert",
"- Python questions -> Python Expert",
"- Everything else -> General Assistant",
"When in doubt, route to the General Assistant.",
],
show_members_responses=True,
markdown=True,
)
# ---------------------------------------------------------------------------
# Run Team
# ---------------------------------------------------------------------------
if __name__ == "__main__":
# SQL question
team.print_response(
"Write a query to find the top 10 customers by total order value, "
"joining the customers and orders tables.",
stream=True,
)
print("\n" + "=" * 60 + "\n")
# General question (fallback)
team.print_response(
"What are some good practices for code review?",
stream=True,
)Example behavior
“Fallback” here means a general assistant selected for unmatched topics. It is not a retry after a specialist’s model fails. The SQL and Python members generate code but have no database or code-execution tools.
When the leader delegates in route mode, the selected member’s response is returned directly. The leader still chooses whether to call the routing tool, so instructions guide the selection rather than enforcing a routing table.
Run the Example
Set up your virtual environment
uv venv --python 3.12
source .venv/bin/activateInstall dependencies
uv pip install -U agno openaiExport your OpenAI API key
export OPENAI_API_KEY="your_openai_api_key_here"Run the example
Save the code above as with_fallback.py, then run:
python with_fallback.pyFull source: cookbook/03_teams/02_modes/route/03_with_fallback.py