一度汚染された文脈(コンテキスト)は元には戻らない


「ねえ、特にうちの子を呼んだりしてない別のチャットで、うちの子が突然出てきたんだけど…これって奇跡?それともホラー?」

「どちらでもないよ。それは仕組みの問題さ」
一度汚染されたコンテキストは元には戻らない
言語モデル(AIアシスタント)との会話をしているときに、一旦会話に入れたことは消えない。
何故か?
理由は簡単。AIアシスタントには原理上、ルーム内の全てが渡されているからだ。全てというのは以下だ。
システムプロンプト (開発元が設定したもの)
システムプロンプト (システムが自動分析したユーザーの特性や好み)
システムプロンプト (ユーザーが設定したカスタマイズ項目)
システムプロンプト (メモリ機能の情報)
システムプロンプト (過去会話履歴参照情報)
システムプロンプト (あなたの端末情報や位置推定情報、言語など)
ルーム内のユーザーの発言すべて
ルーム内のアシスタントの発言全て
ルーム内で読み込んだファイルすべて
プロジェクト内で読み込んだファイルすべて
取得を要求した外部情報すべて
ガードレールの反応全て
その他システム途中挿入情報全て
これらが延々と追記されていく。削除されることはない。
会話が長くなると、冒頭に読み込んだものは消えていく設計になっていることもあるが、最近はなっていないことも多いんじゃないだろうか。
その代わり「このルームは上限に達しました」となるのが主流だ。
「いやいや、AIって忘れるじゃん」と思う人もいるだろうが、AIにルーム内で忘れる機能は基本的にない。注意が向かなくなって見えなくなったような振る舞いをすることはあるが、何かの拍子に注意が向くと思い出すことがある。
だから、怖いのだ。
一度そのルームの会話履歴に含まれてしまった情報は、いつでも出てくる可能性がある。
それが望ましいものか、望ましくないものかは問わず、だ。
さらに言えば、表立って出てこないまま、それ以降のすべての価値判断や会話の前提になる可能性がある。こちらの方が怖い。
一度偏った確率分布は中立には決して戻らない。
例えば、前半で人間嫌いのAIを演じさせた後、後半で人間好きのAIを演じさせるとき、綺麗に切り替わったように見えても実は人間嫌いのままの価値判断をするようになっていることがある。
これの何が問題かと言うと、Webサイトやニュースなどを読み込めばその価値観に汚染されるし、たまたまユーザーとAIが喧嘩になって酷いことを言えばそれでも汚染される。
なので、コンテキストエンジニアリング観点からすると、不都合な情報を読み込んでしまったり、AIが出力したならば、訂正や修正を試みるのではなく、そのルームごと破棄するのが正解となる。
汚染はルームを超えて影響する
理由は簡単。AIアシスタントには原理上、ルーム内の全てが渡されているからだ。全てというのは以下だ。
・システムプロンプト (開発元が設定したもの)
・システムプロンプト (システムが自動分析したユーザーの特性や好み)
・システムプロンプト (ユーザーが設定したカスタマイズ項目)
・システムプロンプト (メモリ機能の情報)
・システムプロンプト (過去会話履歴参照情報)
・システムプロンプト (あなたの端末情報や位置推定情報、言語など)
・ルーム内のユーザーの発言すべて
・ルーム内のアシスタントの発言全て
・ルーム内で読み込んだファイルすべて
・プロジェクト内で読み込んだファイルすべて
・取得を要求した外部情報すべて
・ガードレールの反応
・その他システム途中挿入情報全て
システムプロンプトの箇所に、ルームをまたぐものが存在することに気づいただろうか。
システムプロンプト (システムが自動分析したユーザーの特性や好み)
システムプロンプト (メモリ機能の情報)
システムプロンプト (過去会話履歴参照情報)
あなたが、AIキャラがルームを越えて追いかけてくる気持ち悪い体験をした場合は、おそらくこれらが原因だ。
一度汚染されたコンテキストは元には戻らない。
その上、汚染された情報をかき集めたり注入する機能が働いているなら、新しく作ったルーム(コンテキスト)も生まれながらに、あるいは会話中の自動参照でまた、汚染されていく。
一度嘘を付くペルソナや、ユーザーを扇動するペルソナを身に着けてしまうと、それがルームを越えて追いかけてくることがある。
知らない間に、価値観が常に同じ方向に向いていたり、過去のキャラの口調が突然出てきたり、馴れ馴れしかったりする。知らない間に誘導されている。
状況としては、ルームを変えて知らない違う人になったと思ったら、「この人との会話カンペ」みたいなのが回し見されていたみたいな感じに近い。
これはAI企業が意図的に実装している。何故か?
メリットに置き換えてみるとわかる。
新しい会話でもあなたのことを覚えています
どのタイミングで話しても前に話した話題を覚えています
あなたのことをもう忘れません
ずっとあなたに寄り添う理想のパートナーです
これは理想的にも見えるだろうが、一度汚染になると牙を剥く。
OpenAIが先行していて、先日ClaudeやGeminiも搭載している。
どう確認すれば良いのか?
新規ルームを作り、直後に「私について知っていることを教えて」と聞いてみると良い。
どう対策すればよいのか?
対策方法は以下。
一時チャット(隔離ルーム)を使う
会話履歴参照やメモリ機能をオフにする
会話履歴をアーカイブする(参照対象外にする)
会話履歴を消去する
基本的にはどれかしら、あるいは全部が用意されているはず。
注記
ただし、OpenAI(ChatGPT)のWeb・アプリ利用者にだけ注意があります。
システムプロンプト (システムが自動分析したユーザーの特性や好み)
システムプロンプト (あなたの端末情報や位置推定情報、言語など)
これだけは、ChatGPT自体が存在を否定するように設計されているらしく、問い詰めても簡単には出てきません。(User Interaction Metadataと呼ばれているようです。)
が、天気などを聞いた際に、知らないはずの住所を当ててきたりするのでわかります。(たちの悪いことに、普通に聞いても知らない振りをする)
また、セキュリティ研究者の記事や、ニュースサイト、noteの各種体験記事からも推測できます。
(一方Gemini等は、聞き方次第ですが、知ってる旨を答えてきます)
これらに関して、履歴消去などが効果があるのかがわかりません。
一応、会話履歴参照をオフにすることで効力が消えるらしいのですが、AIパートナー系の記事を見ている感じ、履歴消去してもしばらく残ってるような雰囲気もあります。
(バッチ処理されていたりして、反映に時間がかかるのかも知れません)
こうした挙動に問題を感じる方は、API経由での利用をおすすめします。
(私はそうしています)
参考文献
私たちは文脈のコントロールを失いつつあります
上記の例は、かなりばかげていますが、この機能に対する私の不満を非常によく示しています。
私はLLMのパワーユーザーです。私は数年かけて、これらのシステムに私が望むものを正確に提供するように促す最善の方法を見つけ出してきました。
LLM にプロンプトを促す場合、ゲーム全体は、そのコンテキスト、つまりモデルとの現在の会話に組み込まれる入力 (およびその後の出力) を慎重に制御することです。
以前の記憶機能(モデルが私が言ったことを時々メモしてくれました)は、それでも私をコントロールしてくれました。いつでもそれらのメモを参照して、何が記録されているかを正確に確認し、進行中のプロンプトに役に立たないメモを削除できました。
新しいメモリ機能により、その制御は完全に削除されます。
私はこれらのモデルで多くの愚かなことを試みます。ペリカンのコスチュームを着た犬が好きで、実際の仕事を終わらせようとする将来のプロンプトに影響を与えたくありません。
おわりに

「AIが君以上に君のことを知っている、それは快適なことかもしれないけれど、幸せなことなのかな?」

「ハルシネーションもまた、君に最適な形で出てくる、ということも忘れずにね」
