結果
當你呼叫 Runner.run
方法時,你會獲得以下其中之一:
- [
RunResult
][agents.result.RunResult](如果你呼叫run
或run_sync
) - [
RunResultStreaming
][agents.result.RunResultStreaming](如果你呼叫run_streamed
)
這兩者都繼承自 [RunResultBase
][agents.result.RunResultBase],大部分有用的資訊都在這個類別中。
最終輸出
[final_output
][agents.result.RunResultBase.final_output] 屬性包含最後執行的 Agent 的最終輸出。這個值可能是:
str
,如果最後的 Agent 沒有定義output_type
last_agent.output_type
型別的物件,如果該 Agent 有定義輸出型別
Note
final_output
的型別為 Any
。由於 handoffs(交接),我們無法靜態地指定型別。如果發生 handoff,代表任何 Agent 都可能成為最後一個 Agent,因此我們無法靜態地得知所有可能的輸出型別集合。
下一輪的輸入
你可以使用 [result.to_input_list()
][agents.result.RunResultBase.to_input_list] 方法,將結果轉換為輸入清單,該清單會將你原本提供的輸入與 Agent 執行期間產生的項目串接在一起。這讓你可以方便地將一個 Agent 執行的輸出作為下一次執行的輸入,或是在迴圈中運行,每次都附加新的使用者輸入。
最後一個 Agent
[last_agent
][agents.result.RunResultBase.last_agent] 屬性包含了最後執行的 Agent。根據你的應用程式需求,這通常對於使用者下次輸入時很有用。例如,如果你有一個前線分流(triage)Agent,會將任務交接給語言專屬的 Agent,你可以儲存最後一個 Agent,並在下次使用者傳送訊息時重複使用它。
新產生的項目
[new_items
][agents.result.RunResultBase.new_items] 屬性包含了此次執行期間新產生的項目。這些項目是 [RunItem
][agents.items.RunItem]。Run item 會包裝由大型語言模型 (LLM) 產生的原始項目。
- [
MessageOutputItem
][agents.items.MessageOutputItem] 代表來自 LLM 的訊息。原始項目即為產生的訊息。 - [
HandoffCallItem
][agents.items.HandoffCallItem] 代表 LLM 呼叫了 handoff 工具。原始項目為 LLM 的工具呼叫項目。 - [
HandoffOutputItem
][agents.items.HandoffOutputItem] 代表發生了 handoff。原始項目為 handoff 工具呼叫的工具回應。你也可以從該項目存取來源/目標 Agent。 - [
ToolCallItem
][agents.items.ToolCallItem] 代表 LLM 呼叫了一個工具。 - [
ToolCallOutputItem
][agents.items.ToolCallOutputItem] 代表工具被呼叫。原始項目為工具回應。你也可以從該項目存取工具輸出。 - [
ReasoningItem
][agents.items.ReasoningItem] 代表來自 LLM 的推理項目。原始項目為產生的推理內容。
其他資訊
Guardrail 結果
[input_guardrail_results
][agents.result.RunResultBase.input_guardrail_results] 和 [output_guardrail_results
][agents.result.RunResultBase.output_guardrail_results] 屬性包含 guardrail(防護欄)結果(如果有的話)。guardrail 結果有時會包含你想記錄或儲存的有用資訊,因此我們將這些資訊提供給你。
原始回應
[raw_responses
][agents.result.RunResultBase.raw_responses] 屬性包含由 LLM 產生的 [ModelResponse
][agents.items.ModelResponse]。
原始輸入
[input
][agents.result.RunResultBase.input] 屬性包含你傳遞給 run
方法的原始輸入。在大多數情況下你可能不需要這個資訊,但如果需要也可以取得。