# OpenAI Agent SDKの便利だけど知られていない機能
🌍 ユーザーの権限やプランに応じて、使えるツールを動的に切り替えたいと思いませんか?
`is_enabled` パラメータを使えば、ツールの有効/無効を条件付きで制御し、コンテキストに応じたツールセットを提供できます。
📌 タイトル:ツールの条件付き有効化
🔗 URL:
🧩 概要
`as_tool()` の `is_enabled` パラメータに `True`/`False` のブール値、またはコンテキストとエージェントを受け取るコールバック関数 `(ctx, agent) -> bool` を渡すことで、ツールの有効/無効を動的に制御できます。無効化されたツールはモデルのツールリストに表示されず、トークン消費も発生しません。フィーチャーフラグや権限ベースのアクセス制御に最適です。
🛠 使い方
```python
from agents import Agent, function_tool, RunContextWrapper
@function_tool
def admin_tool(command: str) -> str:
return execute_admin(command)
@function_tool
def basic_tool(query: str) -> str:
return basic_search(query)
# コールバックで動的判定
def is_admin(ctx: RunContextWrapper, agent: Agent) -> bool:
return ctx.context.user_role == "admin"
agent = Agent(
name="assistant",
tools=[
admin_tool.as_tool(is_enabled=is_admin),
basic_tool,
],
)
```
🏗 本番システムへの組み込み方
・SaaSのプランに応じてプレミアム機能のツールを出し分ける
・ユーザーのロール(admin/member/viewer)でツールのアクセス権を制御する
・フィーチャーフラグと連携し、新機能のA/Bテストやカナリアリリースに活用する
・コンテキスト情報(リージョン、時間帯など)に基づいてツールセットを最適化する
💡 ユースケース
🔐 管理者のみが使える運用ツールの制御
💎 有料プランユーザー向け高機能ツールの出し分け
🚀 新機能のフィーチャーフラグ連動
🌏 リージョンごとに利用可能なサービスの切り替え
⚠️ 注意点
`is_enabled` が `False` の場合、ツールはモデルに提示されないため、モデルはそのツールの存在自体を知りません。セキュリティ上の制御としては有効ですが、ユーザーに「この機能は利用できません」と案内したい場合は、別途メッセージングの仕組みが必要です。
✨ 条件付きツール有効化で、ユーザーごとに最適なエージェント体験を提供しましょう。
#
OpenAIAgentSDK# #
AIAgent#