エージェントの実行結果
エージェントの実行を行うと、次のいずれかを受け取ります:
stream: true
なしでrun
を呼び出した場合は、RunResult
stream: true
付きでrun
を呼び出した場合は、StreamedRunResult
。ストリーミングの詳細は、ストリーミングも参照してください
finalOutput
プロパティには、最後に実行されたエージェントの最終出力が含まれます。結果は次のいずれかです:
string
—outputType
が定義されていないエージェントのデフォルトunknown
— エージェントが出力タイプとして JSON スキーマを定義している場合。この場合、JSON はパースされていますが、型は手動で検証する必要がありますz.infer<outputType>
— エージェントが出力タイプとして Zod スキーマを定義している場合。出力は自動的にこのスキーマでパースされますundefined
— エージェントが出力を生成しなかった場合(たとえば、出力を生成する前に停止した場合)
異なる出力タイプのハンドオフを使用している場合は、エージェントの作成に new Agent()
コンストラクタではなく Agent.create()
メソッドを使用してください。
これにより、SDK がすべての可能なハンドオフにわたって出力タイプを推論し、finalOutput
プロパティに対してユニオン型を提供できるようになります。
例:
import { Agent, run } from '@openai/agents';import { z } from 'zod';
const refundAgent = new Agent({ name: 'Refund Agent', instructions: 'You are a refund agent. You are responsible for refunding customers.', outputType: z.object({ refundApproved: z.boolean(), }),});
const orderAgent = new Agent({ name: 'Order Agent', instructions: 'You are an order agent. You are responsible for processing orders.', outputType: z.object({ orderId: z.string(), }),});
const triageAgent = Agent.create({ name: 'Triage Agent', instructions: 'You are a triage agent. You are responsible for triaging customer issues.', handoffs: [refundAgent, orderAgent],});
const result = await run(triageAgent, 'I need to a refund for my order');
const output = result.finalOutput;// ^? { refundApproved: boolean } | { orderId: string } | string | undefined
次ターンの入力
Section titled “次ターンの入力”次のターン用の入力にアクセスする方法は 2 つあります:
result.history
— あなたの入力とエージェントの出力の両方のコピーを含みますresult.output
— エージェント全体の実行出力を含みます
history
は、チャットのようなユースケースで完全な履歴を維持するのに便利です:
import { AgentInputItem, Agent, user, run } from '@openai/agents';
const agent = new Agent({ name: 'Assistant', instructions: 'You are a helpful assistant knowledgeable about recent AGI research.',});
let history: AgentInputItem[] = [ // initial message user('Are we there yet?'),];
for (let i = 0; i < 10; i++) { // run 10 times const result = await run(agent, history);
// update the history to the new output history = result.history;
history.push(user('How about now?'));}
最後のエージェント
Section titled “最後のエージェント”lastAgent
プロパティには、最後に実行されたエージェントが含まれます。アプリケーションによっては、これは次回の ユーザー 入力時に有用です。たとえば、言語別エージェントにハンドオフする一次トリアージ エージェントがある場合、最後のエージェントを保存して、次回 ユーザー がエージェントにメッセージを送信するときに再利用できます。
ストリーミング モードでは、現在実行中のエージェントに対応する currentAgent
プロパティへアクセスするのも有用です。
新規アイテム
Section titled “新規アイテム”newItems
プロパティには、実行中に生成された新規アイテムが含まれます。アイテムは RunItem
s です。実行アイテムは、LLM が生成した 元 アイテムをラップします。これらを使用すると、LLM の出力に加えて、どのエージェントに関連付けられたイベントかにアクセスできます。
RunMessageOutputItem
は LLM からのメッセージを示します。元 アイテムは生成されたメッセージですRunHandoffCallItem
は LLM がハンドオフ ツールを呼び出したことを示します。元 アイテムは LLM からのツール呼び出しアイテムですRunHandoffOutputItem
はハンドオフが発生したことを示します。元 アイテムはハンドオフ ツール呼び出しへのツール応答です。アイテムからソース/ターゲットのエージェントにもアクセスできますRunToolCallItem
は LLM がツールを呼び出したことを示しますRunToolCallOutputItem
はツールが呼び出されたことを示します。元 アイテムはツールの応答です。アイテムからツールの出力にもアクセスできますRunReasoningItem
は LLM からの推論アイテムを示します。元 アイテムは生成された推論ですRunToolApprovalItem
は LLM がツール呼び出しの承認を要求したことを示します。元 アイテムは LLM からのツール呼び出しアイテムです
state
プロパティには、実行の状態が含まれます。result
に付随する大部分は state
から導出されていますが、state
はシリアライズ/デシリアライズ可能で、エラーからの復旧の必要がある場合や、interruption
に対処する必要がある場合に、後続の run
呼び出しへの入力としても使用できます。エラーからの復旧
エージェントで needsApproval
を使用している場合、続行する前に処理する必要がある interruptions
が run
でトリガーされることがあります。その場合、interruptions
は中断の原因となった ToolApprovalItem
s の配列になります。中断への対処方法の詳細は、人間の介入(HITL)を参照してください。
その他の情報
Section titled “その他の情報”元レスポンス
Section titled “元レスポンス”rawResponses
プロパティには、エージェント実行中にモデルが生成した 元 の LLM レスポンスが含まれます。
最後のレスポンス ID
Section titled “最後のレスポンス ID”lastResponseId
プロパティには、エージェント実行中にモデルが生成した最後のレスポンスの ID が含まれます。
ガードレール結果
Section titled “ガードレール結果”inputGuardrailResults
と outputGuardrailResults
プロパティには、存在する場合はガードレールの結果が含まれます。ガードレール結果には、ログや保存に役立つ有用な情報が含まれる場合があるため、利用できるようにしています。
input
プロパティには、run メソッドに提供した元の入力が含まれます。ほとんどの場合これは不要ですが、必要な場合に備えて利用可能です。