# OpenAI Agent SDKの便利で実践的な使い方
🌍 handoff時に引き継ぐ履歴が長すぎたり、不要なツール呼び出し履歴が混ざっていませんか?
Input filtersと推奨プロンプトで、引き継ぎ先エージェントに最適な入力を渡しましょう。
📌 タイトル:Handoffs – Input filters / Recommended prompts
🔗 URL:
🧩 概要
Handoff時のinput filterは、引き継ぎ先エージェントに渡す会話履歴を加工する仕組みです。`remove_all_tools`で前のエージェントのツール呼び出し履歴を除去したり、`nest_handoff_history`(beta)で複数handoffの履歴を要約メッセージに圧縮できます。また、`RECOMMENDED_PROMPT_PREFIX`を使うとLLMがhandoffの仕組みを正しく理解できます。
🛠 使い方
`Agent(name="faq", instructions="よくある質問に回答してください。シンプルに回答します。")` と `Agent(name="specialist", instructions="専門的な技術質問に回答してください。")` を定義します。トリアージエージェントは `Agent(name="triage", instructions=RECOMMENDED_PROMPT_PREFIX + "\n顧客の問い合わせを分類し、適切な担当に引き継いでください。", handoffs=[...])` として、FAQへのhandoffには `Handoff(agent=faq_agent, input_filter=handoff_filters.remove_all_tools, handoff_description="一般的なFAQへの回答")` でツール履歴を除去し、専門エージェントへのhandoffには `Handoff(agent=specialist_agent, input_filter=handoff_filters.nest_handoff_history, handoff_description="専門的な技術質問")` で履歴を圧縮します。`RECOMMENDED_PROMPT_PREFIX` は `agents.extensions.handoff_prompt` からインポートします。
🏗 実践的な使い方
**remove_all_toolsでクリーンな引き継ぎ**
トリアージエージェントがDB検索やAPI呼び出しなど複数のツールを使った後にFAQエージェントに引き継ぐ場合、ツール呼び出しの履歴はFAQエージェントにとってノイズです。`remove_all_tools`を適用すると、ツール関連のメッセージがすべて除去され、引き継ぎ先エージェントがクリーンな会話履歴だけを受け取れます。トークン消費の削減にもなります。
**nest_handoff_history(beta)で履歴圧縮**
A→B→Cと複数回handoffが発生する場合、履歴が膨大になります。`nest_handoff_history`は過去のhandoff履歴を1つの要約メッセージに圧縮し、最新のhandoff先エージェントに渡します。コンテキストウィンドウの効率的な利用に繋がります。
**RECOMMENDED_PROMPT_PREFIXの活用**
`prompt_with_handoff_instructions()`または`RECOMMENDED_PROMPT_PREFIX`をエージェントの`instructions`に含めると、LLMがhandoffの仕組み(利用可能なhandoff先、いつhandoffすべきか)を正しく理解します。これがないと、handoffツールを呼ばずに自分で回答しようとする場合があります。
**カスタムフィルタの作成**
組み込みフィルタで足りない場合は、カスタムフィルタを作成できます。例えば「直近5メッセージだけ残す」「機密情報を含むメッセージを除去する」「特定のツール呼び出しだけ残す」など、ユースケースに合わせた加工が可能です。
💡 ユースケース
🧹 トリアージ後のFAQエージェントにツール履歴を渡さずクリーンな入力を提供
📦 多段handoffの履歴を圧縮してトークン消費を最適化
🤖 RECOMMENDED_PROMPT_PREFIXでhandoff判断の精度を向上
🔒 機密情報を含むメッセージを引き継ぎ前にフィルタリング
⚠️ 注意点
- `remove_all_tools`はすべてのツール関連メッセージを除去します。引き継ぎ先エージェントがツールの結果を参照する必要がある場合は使用しないでください。
- `nest_handoff_history`はbeta機能です。圧縮の挙動が将来変更される可能性があります。
- `RECOMMENDED_PROMPT_PREFIX`を使う場合、既存の`instructions`の先頭に追加してください。末尾に追加すると効果が薄れる場合があります。
- カスタムフィルタでメッセージの順序を変えたり、roleを変更したりすると、モデルの挙動が予測不能になります。メッセージの削除と追加に留めてください。
✨ Input filtersでhandoff時の入力を最適化し、各エージェントが最高のパフォーマンスを発揮できるようにしましょう!
#
OpenAIAgentSDK# #
AIAgent#