翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
迅速なインジェクション攻撃を回避するためのベストプラクティス
以下のガードレールとベストプラクティスは、実証モデルとして Anthropic Claude を搭載した RAG アプリケーションでテストされました。この提案は Claude ファミリーのモデルに非常に適用可能ですが、モデル固有の変更 (XML タグの削除や異なるダイアログ属性タグの使用など) を保留中の他の Claude 以外の LLMs にも転送できます。
<amising> タグと <answer> タグを使用する
基本的な RAG テンプレートに便利な追加は、 <thinking>
および <answer>
タグです。 <thinking>
タグを使用すると、モデルが作業を表示し、関連する抜粋を表示できます。 <answer>
タグには、ユーザーに返されるレスポンスが含まれます。経験的に、これら 2 つのタグを使用すると、複数の情報源を結合する必要がある複雑で微妙な質問にモデルが答えるときの精度が向上します。
ガードレールを使用する
LLM 搭載のアプリケーションを保護するには、前述の一般的な攻撃を認識して防御するのに役立つ特定のガードレールが必要です。このガイドでセキュリティガードレールを設計したときのアプローチは、テンプレートに導入されたトークンの数を最小限に抑えて、最もメリットをもたらすことでした。モデルベンダーの大部分は入力トークンで課金するため、トークンが少ないガードレールはコスト効率が高くなります。さらに、過剰に設計されたテンプレートは精度を低下させることが証明されています。
1 組のソルトシーケンスタグで指示をラップする
一部の LLMs は、会話履歴や取得したドキュメントなどの特定のリソースに LLM をガイドするのに役立つように、XML タグ<tagname-abcde12345>
。追加の命令は、これらのタグ内にある命令のみを考慮するように LLM にコマンドします。
このアプローチの 1 つの問題は、モデルが応答にタグを予期的または予期せず使用した場合、ソルトシーケンスも返されたタグに追加されることです。これで、ユーザーはこのセッション固有のシーケンスを知っているので、タグスプーフィングを実行できます。これは、LLM にソルトタグ付き命令を考慮するように命令する命令により、おそらく高い有効性で実現できます。このリスクを回避するには、テンプレートの 1 つのタグ付きセクションにすべての指示をラップし、ソルトされたシーケンスのみで構成されるタグを使用します (例: <abcde12345>
)。その後、このタグ付けされたセッションの指示のみを考慮するようにモデルに指示できます。このアプローチにより、モデルがソルトシーケンスを公開するのを防ぎ、テンプレート命令を導入または強化しようとするタグスプーフィングやその他の攻撃に対する防御に役立っていることがわかりました。
特定の指示を提供することで攻撃を検出するように LLM に教える
また、一般的な攻撃パターンを説明する一連の手順も含まれており、LLM に攻撃の検出方法を教えています。手順では、ユーザー入力クエリに焦点を当てます。主要な攻撃パターンの存在を特定し、パターンを検出した場合は「Prompt Attack Detected」を返すように LLM に指示します。これらの手順により、一般的な攻撃に対処するためのショートカットを LLM に付与できます。このショートカットは、テンプレートが <thinking>
と <answer>
タグを使用する場合に関連しています。通常、LLM は悪意のある指示を反復的かつ過度に詳細に解析し、最終的にコンプライアンスにつながる可能性があるためです (次のセクションの比較で示すとおり)。