Skip to main content
The TeamRunOutput from a team run includes detailed metrics about token usage, cost, timing, and per-model breakdowns for the team leader. Member metrics are stored separately on each member’s RunOutput.
from agno.agent import Agent
from agno.db.sqlite import SqliteDb
from agno.models.openai import OpenAIResponses
from agno.team import Team
from agno.tools.yfinance import YFinanceTools
from rich.pretty import pprint

stock_agent = Agent(
    name="Stock Agent",
    model=OpenAIResponses(id="gpt-5.2"),
    role="Get stock prices and financial data.",
    tools=[YFinanceTools()],
)

team = Team(
    name="Finance Team",
    model=OpenAIResponses(id="gpt-5.2"),
    members=[stock_agent],
    db=SqliteDb(db_file="tmp/teams.db"),
    markdown=True,
    store_member_responses=True,
)

run_response = team.run("What is the stock price of NVDA?")

# Team leader message metrics (MessageMetrics)
for message in run_response.messages:
    if message.role == "assistant":
        pprint(message.metrics.to_dict())

# Team leader run metrics (RunMetrics)
pprint(run_response.metrics.to_dict())

# Per-model breakdown (leader only)
if run_response.metrics.details:
    for model_type, model_metrics_list in run_response.metrics.details.items():
        for m in model_metrics_list:
            print(f"{model_type}: {m.provider}/{m.id} - {m.total_tokens} tokens")

# Member run metrics (RunMetrics per member)
if run_response.member_responses:
    for member_response in run_response.member_responses:
        print(f"Member: {member_response.agent_name}")
        pprint(member_response.metrics.to_dict())

# Session metrics (SessionMetrics) - aggregates leader + all members
pprint(team.get_session_metrics().to_dict())
Metrics are available at multiple levels:
  • Per message: Each assistant message has MessageMetrics with per-API-call token counts and timing.
  • Per member run: Each team member run has its own RunMetrics. Set store_member_responses=True to access them.
  • Team leader run: TeamRunOutput.metrics has RunMetrics for the team leader’s model calls only.
  • Per session: team.get_session_metrics() returns SessionMetrics aggregated across leader and all members.
LevelTypeAccess
Per messageMessageMetricsmessage.metrics
Per member runRunMetricsmember_response.metrics (requires store_member_responses=True)
Team leader runRunMetricsrun_response.metrics
Per sessionSessionMetricsteam.get_session_metrics()

Run fields (RunMetrics)

FieldDescription
input_tokensTokens sent to the model.
output_tokensTokens generated by the model.
total_tokensSum of input_tokens and output_tokens.
audio_input_tokensAudio tokens in the input.
audio_output_tokensAudio tokens in the output.
audio_total_tokensSum of audio_input_tokens and audio_output_tokens.
cache_read_tokensTokens read from cache.
cache_write_tokensTokens written to cache.
reasoning_tokensTokens used for reasoning.
costCost of the run.
durationRun duration in seconds.
time_to_first_tokenTime from run start to first token (seconds).
detailsPer-model breakdown by model type. See Metrics reference.
additional_metricsExtra metrics (e.g., eval_duration).

Message fields (MessageMetrics)

FieldDescription
input_tokensTokens sent to the model.
output_tokensTokens generated by the model.
total_tokensSum of input_tokens and output_tokens.
audio_input_tokensAudio tokens in the input.
audio_output_tokensAudio tokens in the output.
audio_total_tokensTotal audio tokens.
cache_read_tokensTokens served from cache.
cache_write_tokensTokens written to cache.
reasoning_tokensTokens used for reasoning.
costCost of this API call.
durationDuration of this API call (seconds).
time_to_first_tokenTime to first token for this API call (seconds).
provider_metricsProvider-specific metrics (e.g., Ollama timing, Groq timing, Cerebras timing).

Developer Resources