0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Galileo Agent Control入門 — AIエージェントのポリシーを「制御」するOSSコントロールプレーン

0
Last updated at Posted at 2026-03-15

Galileo Agent Control — AIエージェント制御基盤

はじめに

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が初期統合パートナー

Agent Control アーキテクチャ — エージェント・コントロールサーバー・評価器の3層構成

なぜ今「エージェントガバナンス」が必要か

従来アプローチの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は「制御を各エージェントから切り離し、集中管理するインフラ」として設計されています。エージェントはサーバーからポリシーをランタイムで取得し、コードを変更せずにポリシーのみを更新できます。


Before/After比較 — ハードコード分散型 vs 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は「各エージェントにルールを書く」から「共通インフラでポリシーを管理する」への移行を支援するツールとして、注目する価値があります。


参考リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?