Customer Support Agents

Resolve customer requests with specialist routing, product knowledge, controlled actions, and human escalation.

Support and product teams use agents when resolving a request requires conversation history, approved product knowledge, live customer data, or actions in another system. Agno combines persistent sessions, specialist teams, tools, approval gates, and human escalation in one runtime.

support_team.py
from agno.agent import Agent
from agno.db.sqlite import SqliteDb
from agno.team import Team

model = "openai:gpt-5.5"

billing = Agent(
    name="Billing Support",
    role="Answer questions about invoices, payments, subscriptions, and refunds.",
    model=model,
)

technical = Agent(
    name="Technical Support",
    role="Diagnose product errors and provide troubleshooting steps.",
    model=model,
)

support_team = Team(
    name="Customer Support",
    model=model,
    members=[billing, technical],
    db=SqliteDb(db_file="tmp/support.db"),
    add_history_to_context=True,
    num_history_runs=5,
    instructions=[
        "Route each request to the relevant specialist.",
        "Consult both specialists when an issue crosses billing and product behavior.",
    ],
)

support_team.print_response(
    "My card was charged twice after checkout returned HTTP 500.",
    user_id="customer-42",
    session_id="ticket-1842",
)

Create a virtual environment, install the OpenAI and SQLite integrations, and set OPENAI_API_KEY before running the team:

uv venv --python 3.12
uv pip install -U "agno[openai,sqlite]"
uv run python support_team.py

The team can consult both specialists for this request. Reuse the session_id for later messages on the same ticket and the user_id for the same customer. Add confirmation-required tools before permitting account changes or refunds.

Build the resolution path

StageAgno capabilityPurpose
ReceiveAgentOS API or interfacesAccept requests from a product, Slack, WhatsApp, or another service.
IdentifySessions and authorizationAssociate the request with a customer, preserve its conversation history, and establish the caller's identity.
GroundKnowledge and context providersSearch approved product content and retrieve current account or order data.
RouteTeams or workflowsSelect a specialist or follow a fixed triage policy.
ActTools and human-in-the-loopCreate tickets, update records, or request approval for sensitive work.
ImproveLearning, evaluation, and observabilityReuse resolved cases, measure quality, and inspect failures.

Choose the execution model

RequirementUse
One support policy and one set of toolsAgent
Dynamic routing among billing, technical, and account specialistsTeam
Deterministic triage, service-level rules, or escalation stepsWorkflow

Teams let the model choose the relevant specialist. Workflows encode branches and required steps in code. A support system can use a workflow for intake and escalation, with a team inside a step for specialist investigation.

Set action boundaries

ActionBoundary
Answer from approved product documentationGive the agent read-only knowledge.
Read an order, subscription, or accountEstablish the caller's identity, enforce account-level access inside the provider or tool, and keep it read-only.
Change a plan, issue a refund, or cancel an orderRequire confirmation before the tool runs.
Create an engineering ticket with missing fieldsRequest user input before the tool runs.
Send an external messageGate the send tool and record the action in the run history.

Serve support channels

ChannelGuide
Product UI or backendServe as an API
SlackSupport team
WhatsAppWhatsApp interface
Custom clientsAgentOS client

Improve from resolved requests

GoalPattern
Preserve the current ticketReuse its session_id and store session history.
Remember customer preferencesStore user-scoped memory.
Reuse successful resolutionsStart with the support learning pattern. Configure a tenant-scoped namespace for every shared production store.
Monitor response qualityRun background output evaluation.
Prevent regressionsAdd support conversations to an eval suite.

Next steps

TaskGuide
Route technical and general requests through fixed branchesConditional workflow example
Collect ticket fields from a Slack requesterHuman input example
Connect live customer systemsConnecting your data