登録して招待リンクを共有すると、動画再生報酬と紹介報酬を獲得できます。

cv usk
@cv_usk
AI / Software Research Notes AI Agent, LLMOps, MLOps, Software Architecture 投稿は個人の意見です。
参加 May 2026
258 フォロー中    220 ファン
# OpenAI Agent SDKの便利で実践的な使い方 🌍 ツールの入出力にもガードレールを設定して、セキュリティを強化しましょう! ツール引数のチェックや出力のマスキングで、機密情報の漏洩や不正な操作を防止できます。 📌 タイトル:Guardrails – Tool guardrails 🔗 URL: 🧩 概要 Tool guardrailsは、ツールの実行前(引数チェック)と実行後(出力チェック)にガードレールを設定する仕組みです。APIキーの混入防止、機密データのマスキング、特定の操作のブロックなど、ツールレベルでのセキュリティ制御を実現します。マネージャーパターンやHandoff、委任を使う複雑なワークフローでも、個別のツールに対してきめ細かいチェックを適用できます。 🛠 使い方 `agents`から`Agent`, `function_tool`をインポートします。`@function_tool`デコレータでツール関数`search_api(query: str) -> str`を定義し、`Agent(name="SecureAgent", tools=[search_api], tool_guardrails=[check_tool_args])`のように`tool_guardrails`にチェック関数を設定します。 🏗 実践的な使い方 **APIキーの混入をブロック(reject_content)** ツール引数に`sk-`で始まるAPIキーが含まれていないかチェックし、検出時にツール実行をブロックします。 `re`と`GuardrailFunctionOutput`をインポートし、`reject_api_keys(context, agent, tool_call)`関数で` str(tool_call.arguments))`によりAPIキーの混入を検出します。`tripwire_triggered=has_api_key`で検出時にブロックし、`Agent(name="SecureAgent", tools=[search_api, call_external_service], tool_guardrails=[reject_api_keys])`として設定します。 **ツール出力の機密データマスキング** ツール実行後の出力に含まれる機密情報(メールアドレス、電話番号など)を自動的にマスキングします。 `mask_sensitive_output(context, agent, tool_call, tool_output)`関数でツール出力に対して`re.sub(r'[\w.+-]+@[\w-]+\.[\w.]+', '[MASKED_EMAIL]', str(tool_output))`でメールアドレスを、`re.sub(r'\d{3}-\d{4}-\d{4}', '[MASKED_PHONE]', masked)`で電話番号をマスキングします。`GuardrailFunctionOutput(output_info={"masked": True}, tripwire_triggered=False, modified_output=masked)`で加工済み出力を返し、`Agent(name="DataAgent", tools=[query_customer_db], tool_guardrails=[mask_sensitive_output])`として設定します。 **複雑なワークフローでの個別ツールチェック** マネージャーパターンやHandoff、委任を組み合わせた複雑なワークフローでも、特定のツールに対してきめ細かいガードレールを適用できます。 `check_delete_permission(context, agent, tool_call)`関数で` == "delete_record"`の場合に`context.get("user_role", "viewer")`で権限を確認し、`user_role not in ["admin", "editor"]`なら`tripwire_triggered=True`でブロックします。それ以外のツールは`tripwire_triggered=False`でスキップします。`Agent(name="Manager", tools=[query_db, update_record, delete_record], tool_guardrails=[check_delete_permission, reject_api_keys])`のように複数のガードレールを組み合わせて設定できます。 💡 ユースケース 🔑 ツール引数へのAPIキー・シークレット混入防止 🎭 ツール出力からのPII(個人情報)自動マスキング 🚫 権限に基づく特定ツール操作のブロック 🔒 複雑なマルチエージェントワークフローでのセキュリティ制御 ⚠️ 注意点 - ツールガードレールはツールの実行ごとに呼び出されるため、パフォーマンスへの影響を考慮してください - 正規表現によるチェックは完全ではありません。重要なセキュリティ要件には複数の防御層を設けてください - マスキング処理は元のデータ型を変更する可能性があるため、後続の処理に影響がないか確認してください - 複数のツールガードレールを設定した場合、すべてが順に実行されます ✨ ツールガードレールで、エージェントのツール操作をきめ細かく制御し、セキュリティを強化しましょう! #OpenAIAgentSDK# #AIAgent#
もっと見る