註冊並分享邀請連結,可獲得影片播放與邀請獎勵。

cv usk
@cv_usk
AI / Software Research Notes AI Agent, LLMOps, MLOps, Software Architecture 投稿は個人の意見です。
加入 May 2026
284 正在關注    449 粉絲
# OpenAI Agent SDKの便利で実践的な使い方 🌍 MCP サーバーのツールを「全部見せる」のではなく、フィルタ・プロンプト・キャッシュで賢く制御しましょう。権限スコープの絞り込みから動的フィルタリングまで、安全で高速な MCP 活用パターンです。 ツールフィルタで権限を最小化し、プロンプトで動的指示を取得し、キャッシュでレイテンシを削減する -- MCP の運用を本格化する3つの機能です。 📌 タイトル:MCP -- Tool filtering / Prompts / Caching 🔗 URL: 🧩 概要 MCP サーバーが公開するツールをそのまますべてエージェントに渡すと、不要なツール呼び出しや権限超過のリスクがあります。`create_static_tool_filter` で許可するツールを静的に制限し、動的フィルタ関数で実行時の条件(ロール・テナント等)に応じてツールを出し分けできます。`get_prompt` で MCP サーバーから動的な指示を取得し、`cache_tools_list=True` でツール一覧のキャッシュによりレイテンシを改善、`invalidate_tools_cache()` で変更時にキャッシュをクリアします。 🛠 使い方 `agents.mcp` から `MCPServerStreamableHttp` と `create_static_tool_filter` をインポートします。`MCPServerStreamableHttp` の `tool_filter` に `create_static_tool_filter(allowed_tool_names=["read_file", "write_file"])` を渡すことで、エージェントが使えるツールを `read_file` と `write_file` のみに制限できます。 🏗 実践的な使い方 **create_static_tool_filter で権限スコープを絞り込む** エージェントの役割に応じて、使えるツールを最小限に制限するパターンです。 読み取り専用エージェント用には `create_static_tool_filter(allowed_tool_names=["read_file", "search_docs", "list_files"])` でフィルタを作成し、`MCPServerStreamableHttp` の `tool_filter` に渡します。フルアクセス用には `allowed_tool_names=["read_file", "write_file", "delete_file", "search_docs"]` と設定します。同じ MCP サーバーでもエージェントの役割に応じて異なるツールセットを公開できます。 **動的フィルタで danger_ ツールを非表示にする** ロールに応じて危険なツールを動的に非表示にするパターンです。 `agents.mcp` から `ToolFilterContext` をインポートし、`role_based_filter` 関数を定義します。` が `"CodeReviewer"` で `"danger_")` の場合に `False` を返してツールを非表示にし、それ以外は `True` を返します。この関数を `MCPServerStreamableHttp` の `tool_filter` に渡すことで、ロールに応じた動的なツールフィルタリングが実現できます。 **get_prompt で MCP サーバーから動的指示を取得** MCP サーバーが提供するプロンプトを取得して、エージェントの指示を動的に構成します。 `MCPServerStreamableHttp` を作成し、`async with mcp:` のコンテキスト内で `prompt_result = await mcp.get_prompt("operation_guidelines")` を呼び出して MCP サーバーからプロンプトを取得します(第2引数に `{"focus": "..."}` のような引数辞書も渡せます)。取得した `prompt_result.messages[0].content.text` を `Agent` の `instructions` に埋め込むことで、エージェントの指示を動的に構成できます。 **cache_tools_list でレイテンシを改善** ツール一覧の取得をキャッシュし、MCP サーバーへの不要なリクエストを減らします。 `MCPServerStreamableHttp` の `cache_tools_list=True` を設定すると、ツール一覧の取得結果がキャッシュされ、MCP サーバーへの不要なリクエストが削減されます。ツールが追加・変更された場合は `await mcp.invalidate_tools_cache()` でキャッシュをクリアします。 💡 ユースケース 🔒 create_static_tool_filter で read_file/write_file のみ許可し、最小権限の原則を実現 🎭 動的フィルタで CodeReviewer には danger_ ツールを非表示にし、ロール別のアクセス制御 📜 get_prompt で MCP サーバーから最新の運用ガイドラインを取得し、エージェントの指示を動的に更新 ⚡ cache_tools_list=True でツール一覧キャッシュを有効化し、繰り返しのツール取得レイテンシを削減 ⚠️ 注意点 - 静的フィルタの `allowed_tool_names` はツール名のタイプミスに注意してください。存在しないツール名を指定してもエラーにならず、単にフィルタされないだけです。 - 動的フィルタは毎回のツール一覧取得時に実行されるため、重い処理を入れるとレイテンシに影響します。 - `cache_tools_list=True` 使用時にツールが追加・変更された場合、`invalidate_tools_cache()` を呼ばないと古い一覧が使われ続けます。 ✨ フィルタ・プロンプト・キャッシュの3つを組み合わせれば、MCP ツールの安全性・柔軟性・パフォーマンスを同時に向上できます。まずは静的フィルタで権限を絞り、必要に応じて動的フィルタやキャッシュを導入していきましょう! #OpenAIAgentSDK# #AIAgent#
顯示更多