Code-Then-Execute パターンでは、特権モデルが一連の判断ではなくプログラムを出力する。カスタムのサンドボックス化された ドメイン固有言語(DSL)で書かれたそのプログラムは、どのツールを呼び出すべきか、そしてそれらの出力を互いにどのように 受け渡すかを指定する。何かが実行される前に計画がコードとして存在するため、その言語は完全なデータフロー解析を 可能にするように設計できる。これにより、信頼できない情報源から到着したデータを汚染済み(tainted)として印を付け、 プロセス全体を通じて追跡できる。
プロンプトインジェクションから LLM エージェントを守るためのデザインパターン での要約によれば、記事はこれを デュアル LLM パターン の改良版として説明しており、レビュー対象の論文が 6 つのパターンの 1 つとして含めている、 それ以前の論文に由来するものとしている。その以前の論文はここではこの記事による説明を通じてしか知られていないため、 本ページではその論文自体のタイトル、日付、著者を改めて記載しない。
用法
このパターンを特徴づけるのは、DSL が可能にする解析である。デュアル LLM パターンが信頼できないコンテンツを不透明な変数に 保持することで特権モデルから遠ざけるのに対し、このパターンはさらに、それらの値がどこへ流れていくか — どのツールが 汚染された値を消費し、そのツールがその値で何をすることを許されているか — をシステムが推論できるようにする。 したがって強制は、進行中の会話に対してではなく、実行前に検査できるプログラムに対して行われる。
適用される場面
このパターンが適用されるのは、作業を固定されたツール集合上のプログラムとして表現でき、かつ DSL とその解析を構築・維持する 用意のある者がいる場合である。このパターンはカスタム言語と、それを実行するサンドボックスの両方を前提としており、 これは同じグループの他のパターンよりもはるかに大きな負担である。ツール集合や制御フローを事前に確定できない場面では 誤用となる。その保証は解析によって制約される。言語が表現できないデータフローや、言語がモデル化していない汚染は カバーされない。
これは、エージェントの有用性と プロンプトインジェクション への耐性との間のトレードオフとして同時に提示された 6 つのパターンの 1 つであり、ここで利用できる説明は論文自体のものではなくレビュアーのものである。
関連用語
- デュアル LLM パターン — このパターンがその改良版として説明されているパターン
- LLM Map-Reduce パターン — 6 つのうちの別の 1 つ。型付けされたデータフローを通じて追跡するのではなく、 信頼できないコンテンツをサブエージェントの中に封じ込める
- サンドボックス化 — 生成されたプログラムが実行される隔離環境
- プロンプトインジェクションから LLM エージェントを守るためのデザインパターン — この説明の情報源