> ## 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.

# 运行你的 Agent

> 了解如何运行 agent 并获取响应。

`Agent.run()` 函数运行 agent 并生成响应，响应可以是一个 `RunResponse` 对象，也可以是 `RunResponse` 对象流。

我们的许多示例都使用了 `agent.print_response()`，这是一个用于在终端中打印响应的辅助工具。它底层调用的是 `agent.run()`。

## 运行你的 Agent

以下是运行 agent 的方法。响应会捕获在 `response` 变量中。

```python theme={null}
from typing import Iterator
from agno.agent import Agent, RunResponse
from agno.models.openai import OpenAIChat
from agno.utils.pprint import pprint_run_response

agent = Agent(model=OpenAIChat(id="gpt-4o-mini"))

# 运行 agent 并将响应作为变量返回
response: RunResponse = agent.run("给我讲一个关于机器人的 5 秒钟短故事")

# 以 markdown 格式打印响应
pprint_run_response(response, markdown=True)
```

## RunResponse

在不使用流式传输时，`Agent.run()` 函数会返回一个 `RunResponse` 对象。它具有以下属性：

<Note>
  理解指标

  有关指标如何收集和使用的详细说明，请参阅 [指标文档](/agents/metrics)。
</Note>

请参阅 [RunResponse](/reference/agents/run-response) 文档中的详细说明。

## 流式响应

要启用流式传输，请在调用 `run()` 时设置 `stream=True`。这将返回一个 `RunResponseEvent` 对象迭代器，而不是单个响应。

<Note>
  从 `agno` 版本 `1.6.0` 开始，`Agent.run()` 函数返回的是 `RunResponseEvent` 的迭代器，而不是 `RunResponse` 对象。
</Note>

```python theme={null}
from typing import Iterator
from agno.agent import Agent, RunResponseEvent
from agno.models.openai import OpenAIChat
from agno.utils.pprint import pprint_run_response

agent = Agent(model=OpenAIChat(id="gpt-4-mini"))

# 运行 agent 并将响应作为流返回
response_stream: Iterator[RunResponseEvent] = agent.run(
    "给我讲一个关于狮子的 5 秒钟短故事",
    stream=True
)

# 以 markdown 格式打印响应流
pprint_run_response(response_stream, markdown=True)
```

### 流式传输中间步骤

为了获得更详细的流式输出，可以通过设置 `stream_intermediate_steps=True` 来启用中间步骤。这将提供关于 agent 内部过程的实时更新。

```python theme={null}
# 流式传输中间步骤
response_stream: Iterator[RunResponseEvent] = agent.run(
    "给我讲一个关于狮子的 5 秒钟短故事",
    stream=True,
    stream_intermediate_steps=True
)
```

### 处理事件

您可以通过迭代响应流来处理即将到来的事件：

```python theme={null}
response_stream = agent.run("你的 prompt", stream=True, stream_intermediate_steps=True)

for event in response_stream:
    if event.event == "RunResponseContent":
        print(f"内容: {event.content}")
    elif event.event == "ToolCallStarted":
        print(f"工具调用开始: {event.tool}")
    elif event.event == "ReasoningStep":
        print(f"推理步骤: {event.content}")
    ...
```

您可以在我们的 [Playground](https://app.agno.com/playground/agents?endpoint=demo.agnoagents.com\&agent=reasoning-agent) 中看到此行为的实际应用。

### 存储事件

您可以将运行过程中发生的所有事件存储在 `RunResponse` 对象上。

```python theme={null}
from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.utils.pprint import pprint_run_response

agent = Agent(model=OpenAIChat(id="gpt-4o-mini"), store_events=True)

response = agent.run("给我讲一个关于狮子的 5 秒钟短故事", stream=True, stream_intermediate_steps=True)
pprint_run_response(response)

for event in agent.run_response.events:
    print(event.event)
```

默认情况下不存储 `RunResponseContentEvent` 事件。您可以通过设置 `events_to_skip` 参数来修改要跳过的事件。

例如：

```python theme={null}
agent = Agent(model=OpenAIChat(id="gpt-4o-mini"), store_events=True, events_to_skip=[RunEvent.run_started.value])
```

### 事件类型

根据 agent 的配置，以下事件会由 `Agent.run()` 和 `Agent.arun()` 函数生成：

#### 核心事件

| 事件类型                 | 描述           |
| -------------------- | ------------ |
| `RunStarted`         | 表示运行开始       |
| `RunResponseContent` | 包含模型响应文本的各个块 |
| `RunCompleted`       | 标志着运行成功完成    |
| `RunError`           | 表示运行期间发生错误   |
| `RunCancelled`       | 标志着运行已被取消    |

#### 控制流事件

| 事件类型           | 描述          |
| -------------- | ----------- |
| `RunPaused`    | 表示运行已暂停     |
| `RunContinued` | 标志着暂停的运行已继续 |

#### 工具事件

| 事件类型                | 描述                 |
| ------------------- | ------------------ |
| `ToolCallStarted`   | 表示工具调用开始           |
| `ToolCallCompleted` | 标志着工具调用完成，包括工具调用结果 |

#### 推理事件

| 事件类型                 | 描述              |
| -------------------- | --------------- |
| `ReasoningStarted`   | 表示 agent 推理过程开始 |
| `ReasoningStep`      | 包含推理过程的单个步骤     |
| `ReasoningCompleted` | 标志着推理过程完成       |

#### 记忆事件

| 事件类型                    | 描述               |
| ----------------------- | ---------------- |
| `MemoryUpdateStarted`   | 表示 agent 正在更新其记忆 |
| `MemoryUpdateCompleted` | 标志着记忆更新完成        |

请参阅 [RunResponseEvent](/reference/agents/run-response) 文档中的详细说明。
