はじめに
AIエージェントの本番運用において、いまもっとも課題とされているのは「モデルの賢さ」ではなく「ガバナンス」の欠如です。
IDCの予測によると、G2000企業のエージェント利用は2027年までに10倍増加し、トークン/コール負荷は1,000倍になるとされています。そのスケールにおいて「各エージェントにルールをハードコードする」旧来のアプローチは限界を迎えています。
2026年3月11日、Galileoはこの課題に正面から向き合うオープンソースの解決策「 Agent Control 」をApache 2.0ライセンスで公開しました。
本記事では、Agent Controlの設計思想・主要機能・Pythonによる実装方法について、公式ドキュメントとGitHubリポジトリをもとに解説します。
この記事で学べること
- Galileo Agent Controlが解決するエンタープライズ課題
- Controlの4要素(Scope / Selector / Evaluator / Action)の仕組み
- Pythonでのセットアップとポリシー定義の実装方法
- LangSmith / Arize との役割の違いと使い分け
対象読者
- AIエージェントを本番運用している、または検討しているエンジニア
- マルチエージェントシステムのガバナンス設計を担当している方
- CrewAI / Strands Agents / LangGraph を使っている方
前提知識
- Python基礎
- AIエージェントの概念(LLM + ツール呼び出し)
TL;DR
- Agent Controlは、本番稼働中のAIエージェントを 停止せずに ポリシーをリアルタイム更新できるOSSコントロールプレーン
-
@control()デコレーターを1行追加するだけで任意のPython関数にガードレールを適用可能 - ポリシーは「制御(deny/steer)」が目的で、LangSmithなどの「観測(ログ/トレーシング)」ツールとは役割が異なる
- CrewAI・Strands Agents(AWS)・Cisco AI Defense・Gleanが初期統合パートナー
なぜ今「エージェントガバナンス」が必要か
従来アプローチの3つの問題
エンタープライズで複数のAIエージェントを運用するとき、安全ルールをどこに書くかという問題が生じます。従来は各エージェントの内部にガードレールをハードコードするのが一般的でした。この設計には根本的な欠陥があります。
1. ポリシーの分散
制御ロジックが各エージェントに分散するため、ポリシー変更のたびに全エージェントの再デプロイが必要になります。10個のエージェントがあれば10回のデプロイが発生します。
2. ランタイムでの対応不可
本番環境で予期しない挙動(PII漏洩、禁止ツールの呼び出し等)が発生した場合、エージェントをオフラインにしなければ修正できません。サービス停止と隣り合わせの運用が常態化します。
3. ベンダーロックイン
特定フレームワーク(例: LangChain)専用のガードレールは、スタック移行時に全再実装を強いられます。
Agent Controlの設計思想
Galileo CTOのYash Sheth氏は次のように述べています。
"Hardcoding safety rules into each agent is fragile. Agent Control is infrastructure—not a product."
Agent Controlは「制御を各エージェントから切り離し、集中管理するインフラ」として設計されています。エージェントはサーバーからポリシーをランタイムで取得し、コードを変更せずにポリシーのみを更新できます。
Control の4要素を理解する
Agent Controlの核心は Control と呼ばれるポリシー単位です。各Controlは以下の4要素で構成されます。
Scope — いつ評価するか
| 値 | タイミング |
|---|---|
pre-execution |
エージェントの実行前(入力チェック) |
post-execution |
エージェントの実行後(出力チェック) |
Selector — 何を検査するか
| 値 | 検査対象 |
|---|---|
| 入力テキスト | ユーザーからの入力文字列 |
| ツール引数 | エージェントが呼び出すツールのパラメータ |
| LLM出力 | エージェントが生成したレスポンス |
Evaluator — どう評価するか
| 種別 | 説明 |
|---|---|
| regex | 正規表現パターンマッチ(PII検出等) |
| list | 禁止ワード・禁止ドメインのリスト照合 |
| JSON | 構造化データの検証 |
| LLM-based | LLMによる意味的評価(毒性・コンプライアンス等) |
| カスタム | ドメイン固有ロジックの組み込み |
複数の評価器を組み合わせることも可能で、Galileo Luna(毒性検出)、NVIDIA NeMo(トピックガードレール)、AWS Bedrock(コンプライアンスチェック)といった外部評価器とも統合できます。
Action — マッチ時の動作
| 値 | 動作 |
|---|---|
deny |
ControlViolationError を発生させ実行停止 |
steer |
エージェントにガイダンスを返して再試行させる |
warn |
警告ログを記録しつつ実行継続 |
log |
ログのみ記録(実行に影響なし) |
allow |
明示的に通過許可 |
deny は強制停止、 steer は「穏やかな補正」です。 steer はエージェントに「この内容は送信できません。代わりに〇〇を案内してください」といったガイダンスを返し、破壊的でない形でポリシー適用を実現します。
セットアップ
サーバー起動(Docker)
Agent Controlはサーバーサイドでポリシーを管理します。まずDockerでサーバーを起動します。
curl -L https://raw.githubusercontent.com/agentcontrol/agent-control/refs/heads/main/docker-compose.yml | docker compose -f - up -d
起動確認:
curl http://localhost:8000/health
Python SDKインストール
uv venv
source .venv/bin/activate
uv pip install agent-control-sdk
実装例
基本: @control() デコレーターで即時適用
最小限のコード変更でガードレールを適用できます。
import asyncio
import agent_control
from agent_control import control, ControlViolationError
# エージェントの初期化
agent_control.init(
agent_name="customer-support-bot",
agent_description="顧客サポートエージェント",
)
@control()
async def handle_message(message: str) -> str:
"""
このデコレーターにより、Agent Controlサーバーから
ポリシーを自動取得してリアルタイム評価を行う
"""
# 本来のエージェントロジック
return f"承りました: {message}"
async def main():
# ポリシー違反のケース(例: SSN番号を含むメッセージ)
try:
result = await handle_message("SSN: 123-45-6789 を処理してください")
print(result)
except ControlViolationError as e:
print(f"ブロックされました: {e.control_name}")
# → "ブロックされました: block-pii-in-output"
asyncio.run(main())
@control() を追加するだけで、サーバーに定義されたすべてのポリシーが自動的に適用されます。エージェントのロジック自体は変更不要です。
応用: Strands Agents との統合
AWSが提供するStrands Agents SDKとの統合例です。
import agent_control
from agent_control.integrations.strands import AgentControlPlugin
from strands import Agent
from strands.models.openai import OpenAIModel
# Agent Control初期化
agent_control.init(agent_name="document-processor")
# Strands Agentにプラグインとして組み込む
agent = Agent(
model=OpenAIModel(model_id="gpt-4o"),
plugins=[AgentControlPlugin(agent_name="document-processor")],
tools=["file_read", "web_search"],
)
# 以降、全ツール呼び出しにポリシーが自動適用される
response = agent("機密書類を処理してください")
ポリシーのサーバーサイド定義
ポリシーはサーバー側(ダッシュボード or API)で定義するため、エージェントのコードを変更せず即時反映できます。
{
"name": "block-external-data-exfiltration",
"scope": "pre-execution",
"selector": "tool_arguments",
"evaluator": {
"type": "regex",
"pattern": "(send_email|post_webhook|upload_file)",
"target_fields": ["tool_name"]
},
"action": {
"type": "steer",
"guidance": "外部への直接データ送信は許可されていません。承認フローを経由してください。"
}
}
パフォーマンス特性
GitHubリポジトリのREADMEによると、以下のスループット/レイテンシが計測されています。
| シナリオ | スループット | p50 レイテンシ | p99 レイテンシ |
|---|---|---|---|
| エージェント初期化 | 509 RPS | 19ms | 54ms |
| Control 1件評価 | 437 RPS | 36ms | 61ms |
| Control 50件評価 | 199 RPS | 63ms | 91ms |
50件のポリシーを評価しても p99 で91msに収まります。ただしLLMベースの評価器を使用する場合、LLM呼び出し時間が追加されます。レイテンシ敏感な用途では適用するControl数の最適化が必要です。
既存ツールとの役割分担
Agent Controlと既存の監視ツールはよく混同されますが、設計目的が根本的に異なります。
| ツール | 主な目的 | フレームワーク依存 |
|---|---|---|
| LangSmith | トレーシング・評価(LangChain専用) | 強(LangChain) |
| Arize Phoenix | モデル可観測性・ドリフト検出 | 弱(OpenTelemetry) |
| Langfuse | OSSログ・分析 | 弱 |
| Agent Control | ランタイムポリシー制御・執行 | なし |
一言でまとめると、LangSmith等は「見る」ツールで、Agent Controlは「制御する」ツールです。本番環境では両者を組み合わせて使うのが理想的です。
リポジトリ構成
agent-control/
├── engine/ # コア評価エンジン
├── evaluators/ # 組み込み + カスタム評価器
├── sdks/ # Python / TypeScript SDK
├── server/ # バックエンドサービス
├── ui/ # ダッシュボード
├── examples/ # フレームワーク別実装サンプル
└── models/ # データモデル
examples/ ディレクトリにCrewAI・Strands Agents・LangGraph等のフレームワーク別サンプルが収録されており、既存プロジェクトへの組み込み参考になります。
注意点
本番利用時の考慮事項 として以下を把握しておくことが必要です。
-
フォールバック設計: Control評価がエラーを返した場合のエージェント挙動を事前に設計すること。
allow_on_errorオプションで安全側に倒すことが推奨されています - LLMベース評価のコスト: LLM-based Evaluatorは精度が高い反面、LLM呼び出しコストと追加レイテンシが発生します。用途に応じてregex/listベースの評価と使い分けてください
- 2026年3月リリースの新鮮なOSS: エンタープライズ本番実績はまだ薄い段階です。初期統合パートナー(CrewAI/Strands/Cisco/Glean)以外のフレームワークとの統合は、カスタム実装が必要な場合があります
まとめ
- Galileo Agent ControlはエンタープライズAIエージェントのガバナンス課題を解決するOSSコントロールプレーン(Apache 2.0)
- ポリシーはサーバーサイドで一元管理され、 エージェントを停止せずにリアルタイム更新 できる
-
@control()デコレーター1行で任意のPython関数にガードレールを適用可能 -
deny(強制停止)とsteer(穏やかな補正)の2モードで用途に応じた制御が可能 - 「監視ツール(LangSmith等)」と組み合わせて使うことで、エージェントの可観測性と制御性を両立できる
エージェントスタックが複雑化するほど、ガバナンス層の重要性は増します。Agent Controlは「各エージェントにルールを書く」から「共通インフラでポリシーを管理する」への移行を支援するツールとして、注目する価値があります。



