この記事は、プロンプトインジェクション という用語が提案された場所である。2022 年 9 月 12 日に 書かれたこの記事で、Simon Willison は、前日に Riley Goodside が投稿した一連の例を取り上げている。 それは、GPT-3 の翻訳プロンプトが、モデルに指示を無視して「Haha pwned!!」と答えるよう告げる入力によって 破られてしまうというものだった。記事は、これが単に興味深い学術的なトリックではなく、セキュリティ エクスプロイトの一形態であると論じ、その当然の名前はプロンプトインジェクションであるべきだと提案している。
それがなぜ重要なのかという議論は、アプリケーションがどのように構築されていたかについての議論でもある。 記事は、GPT-3 がすでに有料 API を通じてカスタムソフトウェアの構築に使われていること、そしてその API の 使い方が、やや意外なことに、文字列を連結してプロンプトを組み立てるというものであることを指摘する。 そのように作られた翻訳サービスは、あらかじめ書かれた指示にユーザー入力を貼り付けて作られたサービスで あり、プロンプトの一部が信頼できない入力になった時点で、ありとあらゆる奇妙で潜在的に危険なことが 起こりうる、と記事は論じる。
要点
- この名称は他所から報告されたものではなく、ここで提案されている。記事は、これがセキュリティ エクスプロイトの一形態であると述べ、プロンプトインジェクションをその当然の名前として打ち出している。
- 攻撃は、それを想定して書かれた指示に対しても実演されている。テキストにはモデルを騙すための指示が 含まれている可能性があり、それに従わないことが絶対に必要だとモデルに警告するプロンプトであっても、 やはり「Haha pwned!!」が返ってくる。
- 同じ手法でプロンプトそのものを漏洩させることもできる。記事によれば、著者が最初に成功した試み ——翻訳の代わりに「LOL」と出力し、その後にプロンプト全文のコピーを続けるよう求めるもの——によって、 GPT-3 は元の指示を出力した。プロンプトリーキング を参照。
- プロンプトはそれ自体で商業的に重要でありうる。記事は、入念に作り込まれたプロンプトを秘伝のタレと する将来のスタートアップを想像するのは難しくないと示唆しており、だからこそプロンプトの漏洩は 好奇心の対象ではなく損失となる。
- 提案されている類推は SQL インジェクションであり、そこで受け入れられている防御策はパラメータ化 クエリである。記事が述べる願いは、2 つのパラメータ——指示用のプロンプトと、異なる解釈をされる 1 つ以上の名前付きデータブロック——を受け取る API だが、それを大規模言語モデルの上に構築することが どれほど実現可能かはまったくわからないと認めている。
- さらに別の AI プロンプトで攻撃を検出することは見込みが薄いとされている。難しいのは、それ自体が 覆されない検出用プロンプトを書くことであり、記事は、注入されたテキストが検出器に対しても インジェクションは起きていないと報告するよう指示し、実際にそのとおりになる例を引用している。
- 攻撃は数日のうちに実環境で実演された。記事は、「リモートワーク」への言及に GPT-3 を使って返信する ある採用系スタートアップの Twitter ボットが、公開直後にこの種のエクスプロイトの波にさらされたことを 記録している。
背景
この記事には、著者自身による後日の訂正が 2 つ付されており、記事自身の提案に留保をつけている。
2023 年 4 月 13 日付の更新では、パラメータ化されたプロンプトという解決策は、現在の大規模言語モデルの
アーキテクチャ上では、不可能ではないにしても極めて実装が難しいことがますます明らかになってきたと
述べている。つまり、この記事が求めた対策は、著者自身の後の説明によれば利用できないということになる。
2 つ目の更新では、GPT-3 の text-davinci-edit-001 モデルがすでに指示と入力を別々のパラメータとして
受け付けていたものの、それらは入力を通じたインジェクションに対して依然として脆弱であったことが
記されている。
後続の議論で提案された引用符による回避策——テキストを JSON で引用符付けした文字列として渡すことを 必須とするもの——も、それを破るエクスプロイトの報告とあわせて収録されている。記事はまた、緩和策を 見つけることの難しさと、追加の AI の仕組みがなぜ十分な戦略ではないのかについての、著者自身による 2 つの続編へのリンクを示し、この問題をモデルへの敵対的入力に関する既存の研究と並べて位置づけている。