デュアル LLM パターン(Simon Willison はデュアル言語モデルパターン、dual language model pattern とも呼ぶ)は、アシスタントアプリケーションを 2 つの別々の言語モデルで構築し、危険な能力を持つコンポーネントが攻撃者の制御しうるテキストを決して読まないようにする方法である。Willison はこれを プロンプトインジェクション の緩和策として提案しているが、明示的な但し書きを付けている。彼はこれを、潜在的な解決策はあるがあまり良いものだとは思わない、と述べて紹介し、話半分に受け取ってほしいと求めているのである。
用法
分割は権限によって行われる。特権 LLM(privileged LLM)はツールにアクセスできるモデルで(Willison の例はメールの削除や自宅の解錠である)、信頼できる入力にしか触れない。彼の説明では、信頼できないものが決してこのモデルに届かないことが決定的に重要である。隔離 LLM(quarantined LLM)は暴走することが想定されているモデルで、メールを読み、Web ページを要約し、それらとともに届くあらゆる悪意を吸収するが、それ以外のものには一切アクセスできない。その入力と出力はすべて汚染されたものとして扱われ、特権モデルに直接渡されることはない。
この分離を機能させるのは間接参照である。特権モデルは信頼できないコンテンツを決して見ず、代わりに変数を見て、トークンを扱う。Willison が示す一連の手順では、特権モデルはメール本文が届いてそれが $var1 と呼ばれていることを、中身を見ないまま知り、隔離モデルに $var1 を要約するよう依頼し、$summary2 として保存された結果を(やはり中身を見ずに)受け取り、その要約をユーザーに表示するよう表示層に指示できる。
同じ著者による後の記述である プロンプトインジェクションから LLM エージェントを守るためのデザインパターン では、同じメカニズムがそこで紹介されている論文の語彙で言い直されている。特権 LLM は信頼できないコンテンツへの一切の露出を避けながら隔離 LLM を統括し、隔離 LLM は記号的な変数(例として挙げられているのは要約された Web ページを表す変数)を返す。特権 LLM は、汚染されたコンテンツそのものに触れることなく、それをユーザーに表示するよう依頼できる。彼は、その論文が自分のパターンそのものを記述し、図で示していると報告している。
適用される場面
このパターンが対象とするのは、Willison が危険とみなすケース、すなわちツールを持ち、他人が書くことのできるコンテンツに基づいて行動するアシスタントである。彼が一貫して用いる例は、メールを読み、要約し、返信できるメールアシスタントであり、そこでは、パスワードリセットのメールを検索して攻撃者に転送せよという受信メッセージが、素朴な設計では所有者からの指示と区別できない。彼はまた、同じ状況における情報窃取攻撃(非公開のデータを base64 エンコードして URL の末尾に付け、ユーザーにそれをクリックさせるようモデルに指示するもの)も、破壊的な操作が利用できない場合でも問題となるクラスとして挙げている。
このパターンは、作業を不透明なハンドルに対する操作として表現できることを前提としており、それがそのままコストにもなっている。Willison は、こうしたシステムの構築は楽しいものにはならず、非常に手間がかかり、これではできないことが山ほどあると述べている。彼自身の評価は、これはひどい解決策だが、プロンプトインジェクションに対する盤石で 100% 信頼できる防御がない状況では、それでも利用可能な最善策かもしれない、というものである。
確立の度合いについて言えば、これは 1 人の研究者の提案として始まったもので、代替策が機能しないことを論じた後に、実用的なものを提示しようとする彼自身の試みとして講演で発表された。その後、提案者を超えて採り上げられている。2 つ目の情報源は、複数の組織の著者による論文がこれを 6 つの推奨デザインパターンの 1 つに含めていること、そして後に Code-Then-Execute パターン となるものを提案した以前の論文自体がこのパターンの影響を受けていたことを報告している。これは文献における採用であって、実運用や測定された有効性の証拠ではなく、上に挙げた著者自身の留保は後の記述でも撤回されていない。
関連用語
- プロンプトインジェクション — このパターンが対策として提案されている攻撃
- 間接プロンプトインジェクション — 取得されたコンテンツを通じて届く形態
- Code-Then-Execute パターン — このパターンの改良版として説明されているもの
- LLM Map-Reduce パターン — 同じグループに属する隣接パターンで、信頼できないコンテンツを不透明な変数の背後ではなくサブエージェントの中に封じ込める
- FIDES
- サンドボックス化
- プロンプトインジェクションから LLM エージェントを守るためのデザインパターン — 後の記述の出典