> ## Documentation Index
> Fetch the complete documentation index at: https://ikun.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 指标

> 了解 Agno 中团队运行和会话指标

## 概览

当您在 Agno 中运行一个团队时，您收到的响应（`TeamRunResponse`）会包含有关此次运行的详细指标。这些指标可帮助您了解跨团队领导者和团队成员的资源使用情况（例如 **token 使用量**和**时间**）、性能以及模型和工具调用的其他方面。

指标可在多个级别上获取：

* **每个消息**：每个消息（助手、工具等）都有自己的指标。
* **每次工具调用**：每次工具执行都有自己的指标。
* **每个成员运行**：每个团队成员的运行都有自己的指标。
* **团队级别**：`TeamRunResponse` 会聚合团队领导者消息的指标。
* **会话级别**：跨会话中所有运行的聚合指标，包括团队领导者和所有团队成员。

<Note>
  指标的存储位置

  * `TeamRunResponse.metrics`: 团队领导者运行的聚合指标，以字典形式存储。
  * `TeamRunResponse.member_responses`: 包含各自指标的各个成员响应。
  * `ToolExecution.metrics`: 每个工具调用的指标。
  * `Message.metrics`: 每个消息（助手、工具等）的指标。
  * `Team.session_metrics`: 团队领导者会话级别的指标。
  * `Team.full_team_session_metrics`: 会话级别的指标，包括所有团队成员的指标。
</Note>

## 示例用法

假设您有一个执行某些任务的团队，并且您想在运行后分析指标。以下是访问和打印指标的方法：

```python theme={null}
from typing import Iterator

from agno.agent import Agent, RunResponse
from agno.models.openai import OpenAIChat
from agno.team.team import Team
from agno.tools.yfinance import YFinanceTools
from agno.utils.pprint import pprint_run_response
from rich.pretty import pprint

# 创建团队成员
stock_searcher = Agent(
    name="Stock Searcher",
    model=OpenAIChat("gpt-4o"),
    role="Searches the web for information on a stock.",
    tools=[YFinanceTools()],
)

# 创建团队
team = Team(
    name="Stock Research Team",
    model=OpenAIChat("gpt-4o"),
    members=[stock_searcher],
    markdown=True,
)

# 运行团队
run_stream: Iterator[RunResponse] = team.run(
    "What is the stock price of NVDA", stream=True
)
pprint_run_response(run_stream, markdown=True)

# 打印团队领导者消息指标
print("---" * 5, "Team Leader Message Metrics", "---" * 5)
if team.run_response.messages:
    for message in team.run_response.messages:
        if message.role == "assistant":
            if message.content:
                print(f"Message: {message.content}")
            elif message.tool_calls:
                print(f"Tool calls: {message.tool_calls}")
            print("---" * 5, "Metrics", "---" * 5)
            pprint(message.metrics)
            print("---" * 20)

# 打印聚合的团队领导者指标
print("---" * 5, "Aggregated Metrics of Team Agent", "---" * 5)
pprint(team.run_response.metrics)

# 打印团队领导者会话指标
print("---" * 5, "Session Metrics", "---" * 5)
pprint(team.session_metrics)

# 打印团队成员消息指标
print("---" * 5, "Team Member Message Metrics", "---" * 5)
if team.run_response.member_responses:
    for member_response in team.run_response.member_responses:
        if member_response.messages:
            for message in member_response.messages:
                if message.role == "assistant":
                    if message.content:
                        print(f"Message: {message.content}")
                    elif message.tool_calls:
                        print(f"Tool calls: {message.tool_calls}")
                    print("---" * 5, "Metrics", "---" * 5)
                    pprint(message.metrics)
                    print("---" * 20)

# 打印完整的团队会话指标（包括所有成员）
print("---" * 5, "Full Team Session Metrics", "---" * 5)
pprint(team.full_team_session_metrics)
```

## 团队领导者指标

### 团队领导者消息指标

本节提供团队领导者每次消息响应的指标。所有“助手”响应都将具有此类指标，帮助您了解消息级别的性能和资源使用情况。

<img src="https://mintcdn.com/ikun/fXmeJ7wKTC-4Xav-/images/team-leader-message-metrics.png?fit=max&auto=format&n=fXmeJ7wKTC-4Xav-&q=85&s=c754be908b11be0db6b42b80da3a33ea" alt="Team Leader Message Metrics" width="1146" height="874" data-path="images/team-leader-message-metrics.png" />

### 聚合团队领导者指标

聚合指标提供了团队领导者运行的全面视图。这包括所有消息和工具调用的摘要，让您对团队领导者的性能和资源使用情况有一个总体印象。

<img src="https://mintcdn.com/ikun/fXmeJ7wKTC-4Xav-/images/team-leader-aggregated-metrics.png?fit=max&auto=format&n=fXmeJ7wKTC-4Xav-&q=85&s=cdfa25ce4847114cd7d91ee2ecc5cbf8" alt="Aggregated Team Leader Metrics" width="1924" height="688" data-path="images/team-leader-aggregated-metrics.png" />

## 团队成员指标

### 单个成员指标

每个团队成员都有自己的指标，可以从 `team.run_response.member_responses` 访问。这使您可以分析各个团队成员的性能。

<img src="https://mintcdn.com/ikun/fXmeJ7wKTC-4Xav-/images/team-member-message-metrics.png?fit=max&auto=format&n=fXmeJ7wKTC-4Xav-&q=85&s=e0268ecdf197d3cab483d4cb48c8b636" alt="Team Member Message Metrics" width="1106" height="860" data-path="images/team-member-message-metrics.png" />

### 成员响应结构

每个成员响应包含：

* `messages`: 包含单个指标的消息列表
* `metrics`: 该成员运行的聚合指标
* `tools`: 各自包含指标的工具执行

## 会话级别指标

### 团队领导者会话指标

`team.session_metrics` 提供团队领导者在会话中所有运行的聚合指标。

<img src="https://mintcdn.com/ikun/fXmeJ7wKTC-4Xav-/images/team-leader-session-metrics.png?fit=max&auto=format&n=fXmeJ7wKTC-4Xav-&q=85&s=69dfecf3972ecad553c43158ade4b5a3" alt="Team Leader Session Metrics" width="1104" height="808" data-path="images/team-leader-session-metrics.png" />

### 完整团队会话指标

`team.full_team_session_metrics` 提供全面的指标，包括会话中所有运行的团队领导者和所有团队成员的指标。

<img src="https://mintcdn.com/ikun/QKpfPChraOG28GfC/images/full-team-session-metrics.png?fit=max&auto=format&n=QKpfPChraOG28GfC&q=85&s=18dbb5da232de226c42c47c73a797285" alt="Full Team Session Metrics" width="1102" height="824" data-path="images/full-team-session-metrics.png" />

## 指标如何聚合

### 团队领导者级别

* **每个消息**：每个消息（助手、工具等）都有自己的指标对象。
* **运行级别**：`TeamRunResponse.metrics` 是一个字典，其中每个键（例如 input\_tokens）映射到运行中所有助手消息值的列表。
* **会话级别**：`team.session_metrics` 聚合会话中所有团队领导者运行的指标。

### 团队成员级别

* **每个成员**：每个团队成员都有自己单独跟踪的指标。
* **成员聚合**：单个成员的指标在其各自的 `RunResponse` 对象中进行聚合。
* **完整团队聚合**：`team.full_team_session_metrics` 结合了团队领导者和所有团队成员的指标。

### 跨成员聚合

* **会话级别**：`team.full_team_session_metrics` 提供了整个团队所有 token 使用量和性能指标的完整视图。

## 以编程方式访问成员指标

您可以通过多种方式访问单个成员指标：

```python theme={null}
# 访问特定成员的指标
for member_response in team.run_response.member_responses:
    print(f"Member: {member_response.member_id}")
    print(f"Member metrics: {member_response.metrics}")
    
    # 访问单个消息
    for message in member_response.messages:
        if message.role == "assistant":
            print(f"Message metrics: {message.metrics}")
```

## 指标比较

| 指标级别        | 访问方法                             | 描述              |
| ----------- | -------------------------------- | --------------- |
| **团队领导者运行** | `team.run_response.metrics`      | 当前运行的聚合指标       |
| **团队领导者会话** | `team.session_metrics`           | 所有团队领导者运行的聚合指标  |
| **单个成员**    | `member_response.metrics`        | 特定团队成员运行的指标     |
| **完整团队会话**  | `team.full_team_session_metrics` | 包括所有成员在内的完整团队指标 |

## `MessageMetrics` 参数

<Snippet file="message_metrics_params.mdx" />

## `SessionMetrics` 参数

<Snippet file="session_metrics_params.mdx" />
