Skip to content

运行结果

当你调用 Runner.run 方法时,你会得到以下结果之一:

这两种结果都继承自 RunResultBase,其中包含了大部分有用的信息。

最终输出

final_output 属性包含了最后运行的 agent 的最终输出。它可能是:

  • 一个 str,如果最后的 agent 没有定义 output_type
  • 一个类型为 last_agent.output_type 的对象,如果 agent 定义了输出类型

注意

final_output 的类型是 Any。我们无法静态地确定它的类型,因为可能发生 handoff(交接)。如果发生交接,意味着任何 Agent 都可能是最后一个运行的 agent,所以我们无法静态地知道所有可能的输出类型。

下一轮的输入

你可以使用 result.to_input_list() 将结果转换为输入列表,这个列表会把你最初提供的输入和 agent 运行过程中生成的项目连接起来。这样就很方便地把一次 agent 运行的输出传递给另一次运行,或者在循环中运行并每次添加新的用户输入。

最后的 agent

last_agent 属性包含了最后运行的 agent。根据你的应用场景,这在用户下次输入时通常很有用。比如,如果你有一个前线分类 agent,它会把任务交给特定语言的 agent,你可以存储最后的 agent,并在用户下次发消息时重用它。

新生成的项目

new_items 属性包含了运行过程中生成的新项目。这些项目是 RunItem 类型的。一个运行项目包装了由 LLM 生成的原始项目。

  • MessageOutputItem 表示来自 LLM 的消息。原始项目是生成的消息。
  • HandoffCallItem 表示 LLM 调用了交接工具。原始项目是来自 LLM 的工具调用项。
  • HandoffOutputItem 表示发生了交接。原始项目是对交接工具调用的响应。你还可以从项目中访问源/目标 agent。
  • ToolCallItem 表示 LLM 调用了一个工具。
  • ToolCallOutputItem 表示一个工具被调用。原始项目是工具响应。你还可以从项目中访问工具输出。
  • ReasoningItem 表示来自 LLM 的推理项目。原始项目是生成的推理内容。

其他信息

安全防护结果

input_guardrail_resultsoutput_guardrail_results 属性包含了安全防护的结果(如果有的话)。安全防护结果有时包含你想要记录或存储的有用信息,所以我们把这些信息提供给你。

原始响应

raw_responses 属性包含了 LLM 生成的 ModelResponse

原始输入

input 属性包含了你提供给 run 方法的原始输入。在大多数情况下你不需要这个,但如果需要的话它也是可用的。