# OpenAI Agent SDKの便利で実践的な使い方
🌍 エージェントの実行結果から、次のターン、UI表示、デバッグに必要な情報を正確に取り出せていますか?
RunResultの各プロパティを理解して、実行結果を最大限に活用しましょう。
📌 タイトル:Results
🔗 URL:
🧩 概要
`RunResult`はエージェント実行の全成果を保持するオブジェクトです。ユーザーへの最終回答(`final_output`)、次ターンの入力構築(`to_input_list()`)、UI/監査用の全アイテム(`new_items`)、handoff後のエージェント(`last_agent`)、中断と再開(`interruptions`/`to_state()`)、デバッグ用の生レスポンス(`raw_responses`)など、多面的なサーフェスを提供します。
🛠 使い方
`Agent(name="assistant", instructions="You are a helpful assistant.")` を定義し、`result = await input="Pythonのasync/awaitについて教えてください")` で実行します。` で最終回答を取得し、` + [{"role": "user", "content": "具体的な例も教えてください"}]` で次のターンの入力を構築して再度 ` に渡します。` をイテレートして各アイテムの `item.type` と ` を確認できます。`result.last_agent` でhandoff後のエージェントを取得し、次のターンで使用します。`result.interruptions` がある場合は ` で状態を保存し、承認後に ` state=state)` で再開します。`result.raw_responses` でモデル名やトークン使用量を確認でき、`result.last_response_id` でResponses APIのチェーンが可能です。
🏗 実践的な使い方
**final_output — ユーザー向けレスポンス**
`final_output`はエージェントの最終回答です。`output_type`を指定している場合はPydanticモデルのインスタンスが返り、指定していない場合は文字列が返ります。APIレスポンスやUI表示に直接使えます。
**to_input_list() — マルチターン会話の構築**
`to_input_list()`は実行結果を次のターンの入力形式に変換します。ユーザーの新しいメッセージを追加して再度`
**new_items — UI表示と監査ログ**
`new_items`には今回の実行で生成された全アイテム(メッセージ、ツール呼び出し、handoff等)がメタデータ付きで格納されています。チャットUIでのステップバイステップ表示や、監査ログの記録に活用できます。どのエージェントがどのツールを呼んだかまで追跡できます。
**last_agent — handoff後の継続**
handoffが発生した場合、`last_agent`は最後に処理を行ったエージェントを返します。次のターンでは`last_agent`を使って`
**interruptions + to_state() — 中断と再開**
human-in-the-loopのワークフローで、エージェントが中断された場合に`to_state()`で実行状態をスナップショットとして保存できます。人間の承認後、保存した状態から再開することで、実行の途中からやり直せます。
**raw_responses — プロバイダレベルのデバッグ**
`raw_responses`にはプロバイダからの生のレスポンスが格納されています。モデル名、トークン使用量、レイテンシなどの情報にアクセスでき、コスト分析やパフォーマンスチューニングに役立ちます。
**last_response_id — Responses APIチェーン**
OpenAIのResponses APIを使用している場合、`last_response_id`を次の実行の`previous_response_id`に渡すことで、サーバー側で会話を継続できます。最も軽量な会話継続方法です。
💡 ユースケース
💬 `final_output`: APIレスポンスやチャットUIへの最終回答表示
🔄 `to_input_list()`: マルチターン会話の履歴管理
📋 `new_items`: ステップバイステップのUI表示、監査ログ記録
🤖 `last_agent`: handoff後のエージェント継続
📸 `to_state()`: human-in-the-loop ワークフローの中断・再開
🔍 `raw_responses`: トークン使用量の監視、コスト分析
⚠️ 注意点
- `final_output`が`None`になることがあります(handoffのみで終了した場合など)。必ずNullチェックをしてください。
- `to_input_list()`の結果にはツール呼び出しの履歴も含まれます。不要な場合は手動でフィルタリングしてください。
- `new_items`のアイテム数は実行の複雑さに比例して増加します。大量のツール呼び出しがある場合、メモリ使用量に注意してください。
- `to_state()`で保存した状態はシリアライズ可能ですが、長期保存する場合はSDKのバージョン互換性に注意してください。
- `last_response_id`はOpenAI固有の機能です。他のプロバイダでは利用できません。
✨ RunResultの各サーフェスを使いこなして、エージェントの実行結果を余すことなく活用しましょう!
#
OpenAIAgentSDK# #
AIAgent#