AI・機械学習

AIエージェントに決定論的ガードレールが必要な理由と、数行で実装する方法

「AIエージェントに自由にツールを使わせたら、とんでもないことをやらかした…」そんな経験、あるいは想像してドキッとした方、多いんじゃないでしょうか。😅

LLM(大規模言語モデル)にシェルやパッケージマネージャー、ウォレット、メールアカウントなどの「本物のツール」を渡した瞬間、デモでは見せてもらえなかった怖い問題が顔を出します。

AIエージェントが引き起こす「あるある」危険事例

AI safety guardrail
AI safety guardrail / Photo by Soma Stilling via Pexels

具体的にどんなことが起きるのか、代表的なケースを見てみましょう。

  • 🚨 スロップスクワッティング(Slopsquatting):AIが存在しないパッケージ名を自信満々に hallucinate し、pip install を実行。攻撃者がそのパッケージ名をあらかじめマルウェア入りで登録していて感染するケース
  • 📧 勝手にメール送信:「下書きして」と頼んだのに、エージェントが自己判断で送信ボタンを押す
  • 🗑️ ファイルの大量削除:「このフォルダを整理して」という指示を文字通りに解釈して消しまくる
  • 💸 想定外のAPI課金:ループ処理の中でAPIを無制限に叩き続けてコストが爆発する

共通しているのは、「エージェントが確信を持って、誰も見ていない瞬間に、素早く実行してしまう」という点です。怖いですよね。

「確率的な判断」に「決定論的な壁」を組み合わせる

LLMの判断はあくまでも確率的です。つまり「たぶん大丈夫」の積み重ねで動いています。

これに対して有効なのが決定論的ガードレール(Deterministic Guardrails)という考え方です。

イメージとしては、「AIが何をしようとしているかを、コードで機械的にチェックする門番」を設けるイメージです。AIの判断を信頼しながらも、特定の危険なアクションだけは問答無用でブロックする仕組みです。

Pythonで数行だけ書いてみる

実際にシンプルなガードレール関数を書いてみましょう。ポイントはシンプルに保つことです。

import re

# ブロックしたいコマンドのパターンリスト
DANGEROUS_PATTERNS = [
    r"pip install",        # 未知パッケージのインストールを防ぐ
    r"rm -rf",             # 再帰的削除を防ぐ
    r"send_email",         # メール誤送信を防ぐ
    r"DELETE FROM",        # DBの全削除を防ぐ
]

def check_guardrail(command: str) -> bool:
    """
    コマンドが危険なパターンに一致するか確認する。
    True = 安全(実行OK)
    False = 危険(ブロック)
    """
    for pattern in DANGEROUS_PATTERNS:
        if re.search(pattern, command, re.IGNORECASE):
            print(f"🚫 ガードレール発動:'{pattern}' が検出されました。実行をブロックします。")
            return False  # 実行しない
    return True  # 安全

# --- エージェントのツール実行ラッパー ---
def safe_execute(command: str):
    if not check_guardrail(command):
        # ログを残す・人間に通知する処理もここで行う
        return {"error": "Action blocked by guardrail"}

    # ここで実際のコマンド実行処理を行う
    print(f"✅ 実行します:{command}")
    # execute(command)  # 実際の実行関数

# テスト
safe_execute("pip install some-hallucinated-package")
safe_execute("ls -la /tmp")

ポイントをまとめるとこんな感じです👇

  • LLMの出力を直接実行せず、必ずラッパーを通す
  • ブロックしたときはログに残す(あとで何が起きたか追えるように)
  • パターンリストは運用しながら育てていく(最初から完璧でなくてOK)
  • ブロック時は人間に通知する仕組みも入れると安心

「AIを信頼しないのか?」ではなく「AIを安全に使う」という発想


ガードレールを入れるのは、AIへの不信感からではありません。むしろ「AIをもっと安心して活用するための土台」です。

自動車にブレーキがあるのは車を信頼していないからではなく、安全に速く走るためですよね。それと同じ感覚です。

まとめ

AIエージェントに本物のツールを渡すなら、決定論的ガードレールはほぼ必須です。LLMの確率的な判断を、コードによる確実なチェックで補う。この組み合わせがプロダクション品質のAIエージェントには欠かせません。

まずは「自分のエージェントが絶対にやってはいけないこと」を3つ書き出すところから始めてみてください。それをパターンリストに変換するだけで、今日からガードレールを運用できます 🛡️

ぜひ試してみてください!

📚 関連商品・おすすめ書籍

スッキリわかるPython入門 第2版 (スッキリわかる入門シリーズ)

もしも

スッキリわかるPython入門 第2版 (スッキリわかる入門シリーズ)

初心者に定番のPython入門書

Amazonで見る

ELEGOO Arduino用UNO R3スターターキット レベルアップ チュートリアル付 mega2560 r3 nanoと互換 [並行輸入品]

もしも

ELEGOO Arduino用UNO R3スターターキット レベルアップ チュートリアル付 mega2560 r3 nanoと互換 [並行輸入品]

チュートリアル付きのArduino入門セット

Amazonで見る

実践Claude Code入門―現場で活用するためのAIコーディングの思考法

もしも

実践Claude Code入門―現場で活用するためのAIコーディングの思考法

AIコーディングの現場活用法を学ぶ一冊

Amazonで見る

※本記事にはアフィリエイトリンクが含まれます。

ABOUT ME
やまちゃん
これまで学生と社会人を合わせて5000人以上にプログラミング学習を指導。 ゼロからイチをわかりやすく解説する専門家として活動しており、本業ではArduinoを用いたIoT開発とロボットプログラミングが専門。 Pythonを用いたアプリ開発、ウェブアプリケーションの開発で業務の効率化をサポートしています。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です