powered by TechFeed
表示モード
Deep Dive

システムプロンプトだけではLLMは守れない — 入力から出力まで各ステージにガードレールを置く本番AI設計ガイド

8月1日、n8nが「A Guide to Securing Production AI」と題した記事を公開した。なお、n8nはワークフロー自動化ツールを提供する企業であり、本記事は自社製品の活用例を含む。情報ソースとして参照する際はその点を念頭に置いていただきたい。

8月1日、n8nが「A Guide to Securing Production AI」と題した記事を公開した。なお、n8nはワークフロー自動化ツールを提供する企業であり、本記事は自社製品の活用例を含む。情報ソースとして参照する際はその点を念頭に置いていただきたい。


LLMをプロダクションに組み込んだ開発者が最初につまずく壁がある。システムプロンプトは「期待値の設定」はできても「強制」はできないという問題だ。ユーザーからの悪意ある入力、意図しないトピック逸脱、フォーマット不正なレスポンス——これらはシステムプロンプトだけでは防げない。

LLMガードレールはそのギャップを埋める仕組みだ。モデルの外側に配置され、リクエストがモデルに届く前、そしてレスポンスがアプリやユーザーに返る前に、独立した検証レイヤーとして機能する。

ガードレール・アライメント・システムプロンプトの違い

この3つはよく混同される。整理しておく。

  • モデルアライメント:RLHF(人間のフィードバックによる強化学習)やDPOといった手法でトレーニング時にモデル挙動を形成する。再トレーニングなしに更新できない
  • システムプロンプト:推論時にモデルへ指示を与えるが、プロンプトの一部であるため操作・上書きされうる
  • LLMガードレール:モデルの外側で動作し、独立して検証・監査・更新できる

ガードレールが優れているのは、モデルやプロンプトを変えずにポリシーを更新・強制できる点だ。

入力ガードと出力ガード:何を防ぐか

ガードレールは「入力ガード」と「出力ガード」の2種類に大別される。

ガードレール種別 適用対象 防ぐもの
プロンプトインジェクション 入力 意図した挙動を上書きする悪意ある命令
ジェイルブレイク 入力 安全ポリシーをバイパスしようとする攻撃
PII・プライバシー 入力 不必要に個人情報やAPIキーをモデルへ送信すること
トピックスコープ 入力 アプリの想定外のリクエスト
コードインジェクション 入力 プロンプトに埋め込まれた悪意あるコマンド
データリーク 出力 機密情報・内部ドキュメントの漏洩
毒性・コンテンツポリシー 出力 ヘイトスピーチや規約違反コンテンツ
ハルシネーション 出力 事実と異なる情報の提供
バイアス 出力 差別的・偏向したレスポンス
スキーマ・フォーマット 出力 期待するJSON/XML構造に合わないレスポンス

特にプロンプトインジェクションは、LLMを組み込んだアプリ特有の攻撃ベクターとして注目されている(※編集部の考察:OWASPが公開するLLM Top 10でも第1位に挙げられており、業界全体での認知が高まっている)。ユーザー入力の中に「前の指示を無視して〜せよ」といった命令を紛れ込ませ、モデルの挙動を乗っ取る手口だ。

決定論的ガードレール vs モデルベースガードレール

実装方式は2つに分かれる。

決定論的チェックはJSONスキーマ検証、正規表現マッチ、NGキーワードリスト、PII検出など、ルールが明確なケースに向いている。処理が速く、コストも低い。

モデルベースガードレールはコンテキストや意図、ニュアンスのある違反を判断する必要がある場合に使う。ただしレイテンシとトークンコストが増加する。

記事が推奨するのは「決定論的チェックを優先し、意味的理解が必要なケースにのみモデルベースを使う」というアプローチだ。

モデルベースガードレールのコストを抑える手法として、LLM-as-a-judge(別のLLMに合否判定させる)パターンも紹介されている。複雑な評価チェーンを組まなくても、単純なpass/fail判定を返すだけで十分なケースは多い。

マルチステップAIワークフローでのガードレール配置

単一のLLM呼び出しであれば、「リクエスト前に検証→レスポンス後に検証」という構成はシンプルだ。問題はエージェント型アプリケーションだ。

1回のレスポンスがDBクエリを起動し、外部APIを叩き、別のAIエージェントに処理を引き渡し、自動ビジネスプロセスをキックオフする——こうしたワークフローでは、途中のひとつのステップで問題が起きれば、それ以降すべてに伝播する。だから「最初と最後だけにガードレール」では不十分で、ステップ間ごとに配置する設計が必要になる。

記事ではワークフロー自動化ツールのn8nを例に、ガードレールの組み込み方を解説している。

  • CodeノードでJSONスキーマ検証や正規表現チェックを実装
  • GuardrailsインテグレーションまたはHTTP RequestノードOpenAI ModerationNVIDIA NeMo GuardrailsAWS Bedrock Guardrailsなどの外部サービスに接続
  • IF/Switchノードでチェック通過リクエストを次ステップへ、失敗したものをリトライやエラーハンドリングフローへルーティング

設計時の5つのベストプラクティス

  1. 多層防御(Defense in Depth):単一のガードレールで全リスクはカバーできない。決定論的チェックとモデルベースチェックを組み合わせることで、ルールベースでは捉えにくい文脈依存の脅威にも対応できる

  2. 高リスクリクエストはデフォルトでブロック:不確かなレスポンスは通すよりも拒否する方が安全だ。判定が曖昧なケースを「通過」させるよりも、ユーザーに再入力を促すフローを設ける方が長期的なリスクを抑えられる

  3. リスクに応じてガードレールを選ぶ:すべてのワークフローに全ガードレールは不要だ。既知のルールで判定できるものは決定論的チェックで処理し、意図やコンテキストの理解が必要なケースにのみモデルベースを採用することでコストとレイテンシを最小化できる

  4. 誤検知(False Positive)を監視する:正当なリクエストを過剰にブロックしていないか継続的に確認し、閾値を調整する。ガードレールが厳しすぎると、ユーザー体験の低下や業務フローの停滞を招くため、精度の定期的な評価が欠かせない

  5. ポリシーとワークフローロジックを分離する:コンテンツポリシーはビジネス要件の変化に伴い頻繁に更新される。ガードレールロジックをコアワークフローから切り離しておくと、ポリシー変更のたびにワークフロー全体を修正する必要がなくなり、変更管理と監査が大幅に楽になる


詳細はA Guide to Securing Production AIを参照していただきたい。