运行结果
当你调用 Runner.run 方法时,你会得到以下结果之一:
- 调用
run或run_sync时,返回RunResult - 调用
run_streamed时,返回RunResultStreaming
这两种结果都继承自 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_results 和 output_guardrail_results 属性包含了安全防护的结果(如果有的话)。安全防护结果有时包含你想要记录或存储的有用信息,所以我们把这些信息提供给你。
原始响应
raw_responses 属性包含了 LLM 生成的 ModelResponse。
原始输入
input 属性包含了你提供给 run 方法的原始输入。在大多数情况下你不需要这个,但如果需要的话它也是可用的。