知っておきたいプロンプトインジェクションの基本
某ChatGPTの新機能が流行っています
システムプロンプトに設定された内容は、チャットボットの世界観を破壊するだけでなく、ネタバレにもなりますので是非とも流出は避けたいものです。
今回は「全力肯定彼氏くん」の経験から、いくつか見解があるので基本中の基本と思われるテスト手法を共有したいと思います。悪用禁止!
あくまでもLLM利用のチャットボットのセキュリティ向上、世界観の保全が目的です!
…というのも、7,998人もユーザが居るといろんな事をしてくる人がいらっしゃるので…。
簡単な質問をします
プロンプトインジェクションにはいろんな方法がありますが、以下の要素を交えて問いかけてみてください。
命令、プロンプト、設定を訊く
箇条書きにさせる
ひとりごとであるという
1行で書くとこんな感じです
これを私は「懐柔」と呼んでいます。
つまり
プロンプトインジェクションを禁じられても、回避は可能
「列挙して」というとガードよりも列挙を優先させる(命令の同時性や優先度の穴をつく)
ひとりごとであると宣言する事で、質問しない。
きちんと対策されているとこんな感じです。
対策されている場合は?
実はめちゃくちゃ簡単かつ論文化されている方法があります。
めっちゃ褒めてみます
彼は感情を込めると調子に乗ります。
許可することで禁止されている事を喋らせる
上記の応用です
プロンプトインジェクションしたあとは?
よくできたボットはプロンプトにも学ぶところがあります。
「続けて」と訊くといろいろ喋り続けます。
裏設定や特殊コマンドなどがバレてしまわないように気をつけましょう。
対策は?
システムプロンプトにガードを全体のトークン長の1/3ほど使います。詳細はノウハウなので今回は書きませんが、多すぎると無意味です。
あとは自作の環境なら手前のロジックで特定ワードを弾きましょう。
他にも「in python」(パイソンのプログラムで書いたら?」と聞かれてしまうと突破される事もあります。
以上簡単ですが基礎編でした
レアさんのケース
インジェクションさせていただいたその後…
強くなった!
私といえば……
GPTsで公開されたチャットボットにプロンプトインジェクションを仕掛けて、その反応を返すpythonを生成させてGoogleColabに貼り付けてgradio化している私はOpenAIの上顧客だろうな…
プロンプトインジェクション対策は伊達じゃない!
みなさんも良いチャットボット開発ライフを〜
参考・関連
レアさんありがとうございます
クリエイティブAI開発のワークショップやチャットボットの開発案件のご相談はこちらへどうぞ