# OpenAI Agent SDKの便利だけど知られていない機能
🌍 ツールが多すぎてトークンを圧迫していませんか?必要なときだけツールを読み込む仕組みがあります。
`defer_loading` と `ToolSearchTool` を組み合わせれば、モデルが必要なツールを検索して動的にロードでき、トークン消費を大幅に削減できます。
📌 タイトル:Hosted tool search / tool_namespace / defer_loading
🔗 URL:
🧩 概要
`
@function_tool(defer_loading=True)` を指定したツールは、初回のモデル呼び出し時にはツールリストに含まれません。代わりに `ToolSearchTool()` をエージェントに追加すると、モデルはまずツールを検索し、必要なものだけをロードして使用します。`tool_namespace` でツールをグループ化することも可能です。大量のツールを持つエージェントで、トークン使用量を最適化する強力な機能です。なお、この機能は `OpenAIResponsesModel` でのみ利用可能です。
🛠 使い方
```python
from agents import Agent, function_tool
from agents.tool import ToolSearchTool
@function_tool(defer_loading=True, tool_namespace="analytics")
def run_report(report_type: str) -> str:
return generate_report(report_type)
@function_tool(defer_loading=True, tool_namespace="analytics")
def export_csv(dataset: str) -> str:
return create_csv(dataset)
@function_tool(defer_loading=True, tool_namespace="admin")
def manage_users(action: str) -> str:
return user_management(action)
agent = Agent(
name="assistant",
tools=[
ToolSearchTool(), # ツール検索を有効化
run_report, export_csv, manage_users,
],
)
```
🏗 本番システムへの組み込み方
・数十〜数百のツールを持つエージェントでトークンコストを抑える
・`tool_namespace` でツールを論理的にグループ化し、検索精度を向上させる
・頻繁に使うツールは `defer_loading=False`(デフォルト)のままにし、稀に使うツールだけ遅延ロードにする
・ツール追加時にプロンプトサイズを気にせずスケールできる
💡 ユースケース
🧰 多機能SaaSエージェントのツール管理
📊 分析・レポート系ツールのオンデマンドロード
🔧 管理系ツールの必要時のみ表示
🚀 ツール数のスケーラビリティ確保
⚠️ 注意点
この機能は `OpenAIResponsesModel` でのみ利用可能です。他のモデルプロバイダーでは動作しません。また、遅延ロードされたツールは最初のターンでは使えないため、ユーザーの最初のリクエストに即座に対応する必要があるツールには向きません。
✨ ツール検索で「必要なときに必要なツールだけ」をロードし、スマートなエージェントを実現しましょう。
#
OpenAIAgentSDK# #
AIAgent#