跳转至

结果

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

两者都继承自RunResultBase,其中包含了最有用的信息

最终输出

final_output属性包含最后运行的agent的最终输出,可能是以下两种情况之一:

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

说明

final_output 的类型是 Any。我们无法对其进行静态类型定义,这是因为存在交接情况。如果发生交接,意味着任何 Agent 都可能是最后一个 agent,所以我们无法静态地知道所有可能的输出类型。

下一轮的输入

你可以使用result.to_input_list()将结果转换为输入列表,该列表将你提供的原始输入与agent运行期间生成的项连接起来。这样可以方便地将一个agent运行的输出传递给另一个运行,或者在循环中运行并每次追加新的用户输入

最后一个agent

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

新生成的项

new_items属性包含运行期间生成的新项。这些项是RunItem类型。运行项包装了LLM生成的原始项

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

其他信息

防护栏结果

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

原始响应

raw_responses属性包含LLM生成的ModelResponse

原始输入

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