Agent.run()
函数运行 agent 并生成响应,响应可以是一个 RunResponse
对象,也可以是 RunResponse
对象流。
我们的许多示例都使用了 agent.print_response()
,这是一个用于在终端中打印响应的辅助工具。它底层调用的是 agent.run()
。
运行你的 Agent
以下是运行 agent 的方法。响应会捕获在 response
变量中。
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
对象。它具有以下属性:
理解指标
有关指标如何收集和使用的详细说明,请参阅 指标文档。
请参阅 RunResponse 文档中的详细说明。
流式响应
要启用流式传输,请在调用 run()
时设置 stream=True
。这将返回一个 RunResponseEvent
对象迭代器,而不是单个响应。
从 agno
版本 1.6.0
开始,Agent.run()
函数返回的是 RunResponseEvent
的迭代器,而不是 RunResponse
对象。
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 内部过程的实时更新。
# 流式传输中间步骤
response_stream: Iterator[RunResponseEvent] = agent.run(
"给我讲一个关于狮子的 5 秒钟短故事",
stream=True,
stream_intermediate_steps=True
)
处理事件
您可以通过迭代响应流来处理即将到来的事件:
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 中看到此行为的实际应用。
存储事件
您可以将运行过程中发生的所有事件存储在 RunResponse
对象上。
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
参数来修改要跳过的事件。
例如:
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 文档中的详细说明。
Responses are generated using AI and may contain mistakes.