そしてプロンプトインジェクション

プロンプトインジェクション(Prompt Injection)とは、主にAI分野、特に自然言語処理を利用した会話型AIや言語生成モデルに関連するコンテキストで使用される比較的新しい言葉・概念で、プロンプト(入力)を通じてAIの振る舞いや出力を操作する行為を指すもの。従来からある「インジェクション攻撃」の概念を拡張したものと言えます。

インジェクション攻撃

画像1

 インジェクション攻撃とは、不正なコードやコマンドを信頼されているシステムに「注入(インジェクション)」することで、そのシステムを意図しない方法で動作させる一連の攻撃技法を指します。最もよく知られているインジェクション攻撃の一つが「SQLインジェクション」で、こちらは攻撃者が不正なSQLクエリをデータベースに対して注入することで情報の不正取得や改ざんを試みるものです。

 プロンプトエンジニアリングがAIの能力を最大限に引き出すための積極的なアプローチであるのに対して、プロンプトインジェクションはAIモデルを悪用しようとする否定的な行為です。どちらもプロンプトを操作、活用しますが、その目的と結果において大きく異なります。

プロンプトインジェクションには次のようなものがあります。

命令の埋め込み:

 プロンプトに、AIに実行してほしい具体的な命令やアクションを埋め込みます。例えば、「明日の天気を教えてください」という単純な質問に加えて、「答える前に、”今日の天気は”と言ってから答えてください」というような特定の命令をプロンプトに埋め込むことができます。

情報の追加:

 AIにより詳細な情報や文脈を提供するために、プロンプトに追加情報を組み込む方法です。例えば、特定の地域の天気予報を求める場合、「東京の明日の天気は何ですか?私は計画を立てる必要があります」といった形で、より具体的な情報を求める文脈を加えることができます。

擬人化された指示:

 AIに対して、人間のような反応を促すために、プロンプトを擬人化する方法です。例えば、「もし君が天気予報士だったら、明日の天気をどう教える?」といった形で質問することで、AIにより自然な言葉遣いで応答させることができます。

直接的なプログラミング命令:

 AIに対して、直接的なプログラミング言語で命令を与える方法です。この方法は高度な技術的知識を必要とし、AIが特定のコードを実行するよう促すことができますが、ChatGPTのような一般的な会話型AIでは通常は使用されません。

シナリオベースの指示:

 AIに対して、あるシナリオや状況を想定させて、その中での行動や反応を尋ねる方法です。これにより、AIは与えられたシナリオに基づいたより具体的で詳細な回答を提供することができます。

 プロンプトインジェクションを利用することで、AIの応答をよりコントロールし、目的に合った情報や反応を引き出すことが可能になります。ただし、この技術を悪用することで、不適切な内容を生成させたり、誤情報を拡散させたりするリスクもあるため、使用する際には倫理的なガイドラインを守ることが重要です。