エージェントの実行結果
エージェントの実行時、以下のいずれかを受け取ります:
stream: trueを指定せずにrunを呼び出した場合はRunResultstream: 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 { Agent, user, run } from '@openai/agents';import type { AgentInputItem } 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 です。実行アイテムは、LLM が生成した元のアイテムをラップします。これにより、LLM の出力に加えて、どのエージェントに関連付けられたイベントかにアクセスできます。
RunMessageOutputItemは LLM からのメッセージを示します。元のアイテムは生成されたメッセージですRunHandoffCallItemは LLM がハンドオフ ツールを呼び出したことを示します。元のアイテムは LLM からのツール呼び出しアイテムですRunHandoffOutputItemはハンドオフが発生したことを示します。元のアイテムはハンドオフ ツール呼び出しへのツール応答です。アイテムからソース/ターゲットのエージェントにもアクセスできますRunToolCallItemは LLM がツールを呼び出したことを示しますRunToolCallOutputItemはツールが呼び出されたことを示します。元のアイテムはツールの応答です。アイテムからツール出力にもアクセスできますRunReasoningItemは LLM からの推論アイテムを示します。元のアイテムは生成された推論ですRunToolApprovalItemは LLM がツール呼び出しの承認を要求したことを示します。元のアイテムは LLM からのツール呼び出しアイテムです
state プロパティには、実行の状態が含まれます。result に付随する多くの情報は state から派生しますが、state はシリアライズ/デシリアライズ可能で、エラーからの復旧やinterruption に対処するために、後続の run 呼び出しの入力としても使用できます。
エージェントで needsApproval を使用している場合、続行前に処理が必要な interruptions が発生することがあります。その場合、interruptions は割り込みの原因となった ToolApprovalItem の配列になります。割り込みの扱い方については、人間の介入(HITL)を参照してください。
その他の情報
Section titled “その他の情報”元のレスポンス
Section titled “元のレスポンス”rawResponses プロパティには、エージェント実行中にモデルが生成した元の LLM レスポンスが含まれます。
最後のレスポンス ID
Section titled “最後のレスポンス ID”lastResponseId プロパティには、エージェント実行中にモデルが生成した最後のレスポンスの ID が含まれます。
ガードレールの実行結果
Section titled “ガードレールの実行結果”inputGuardrailResults と outputGuardrailResults プロパティには、ガードレールの結果(存在する場合)が含まれます。ガードレールの結果は、ログや保存に役立つ有益な情報を含むことがあるため、利用できるようにしています。
input プロパティには、run メソッドに提供した元の入力が含まれます。ほとんどの場合は不要ですが、必要に応じて利用できます。