メインコンテンツまでスキップ
このページは機械翻訳であり、十分なレビューを経ていません。英語の原文が正となります。セキュリティ、プライバシー、データの取り扱い、コンプライアンス、ライセンスに関する記述は、技術レビューが完了するまで英語のまま掲載しています。 英語の原文を読む

構築中の Python AI アプリを統制する

使用する適用面: Python SDK、フレームワークインテグレーション(LangChain、CrewAI、LangGraph、OpenAI Agents、PydanticAI) 対応モード: Local Hosted Hybrid プラン: Free(基本) Solo Teams(ホスト型の機能)

実施すること​

Python AI アプリの危険な部分(ツール呼び出し、外部 API へのアクセス、ファイルの書き込み)を、1 つの guard() チェックでラップします。ポリシーは自分で管理する YAML ファイルにあり、SDK は理由付きで許可 / 拒否を返し、その判定をログに記録します。

このパスが適している理由​

  • LLM やツールを呼び出す Python アプリを書いていて、コードを自分で管理している場合、SDK なら最もきめ細かい制御ができます。
  • LangChain、CrewAI、LangGraph、OpenAI Agents、PydanticAI を使っている場合は、ファーストクラスのインテグレーションヘルパーがインテグレーションにあります。
  • コードを変更できない場合は、ゲートウェイを使用してください。
  • アプリが Node の場合は、代わりに Node SDK を使用してください。

このアプローチを使うべきでない場合​

注意

SDK では、判定を行う各箇所で guard() を呼び出す(またはインテグレーションのラッパーを使う)必要があります。すべての LLM リクエストを自動的にインターセプトするコード不要の方法が必要な場合は、ゲートウェイを使用してください。

5分でできるセットアップ​

pip install controlzero

Local モード(アカウント不要、ポリシーはディスク上)​

from controlzero import Client

cz = Client(policy_file="./policy.yaml")

decision = cz.guard(
tool="shell",
args={"command": "rm -rf /"},
)

if not decision.allowed:
raise RuntimeError(f"Blocked by policy: {decision.reason}")

最小限の policy.yaml:

rules:
- id: block-shell-execute
deny: 'shell:execute'
reason: 'Destructive shell commands are not allowed.'
- id: allow-everything-else
allow: '*'
reason: 'Default-allow for everything else.'

ルールが発動したときの期待される出力:

RuntimeError: Blocked by policy: Destructive shell commands are not allowed.

Hosted モード(ポリシーはダッシュボード上)​

import os
from controlzero import Client

cz = Client(api_key=os.environ["CONTROLZERO_API_KEY"])

decision = cz.guard(tool="web_search", args={"query": "..."})

環境に CONTROLZERO_API_KEY=cz_live_... を設定してください。ポリシーは自動的に取得され、最新の状態に保たれます。

動作の確認​

  1. アプリを実行し、監査ログ(Local モード)またはダッシュボードの Audit ページ(Hosted)を確認します。
  2. ポリシーで拒否されるはずのリクエストを発行します。decision.allowed == False であること、およびイベントが表示されることを確認します。
  3. 許可されるリクエストを発行します。decision.allowed == True であること、および allow の監査行が記録されることを確認します。

よくある次のステップ​

リファレンス​