AIとの対話において、ユーザーはAIが文脈を理解し、一貫した応答をすることを期待します。しかし、AIが外部から情報を取り込む過程で、その推論を歪める遅効性の毒とも言える 「コンテキスト汚染」 という現象が起こる可能性があります。これは、AIの内部で、不適切な情報が次の推論に影響を及ぼし、誤った応答を連鎖的に生み出すことで、対話の「症状」を悪化させていく現象です。
このコンテキスト汚染がAIの内部に侵入し、対話に影響を及ぼすルートは、主に以下の2つが考えられます。
コンテキスト汚染の侵入ルート
ルート1: プロンプトへの直接入力
AIは、プロンプトに含まれる断片的な情報を基に、確率的な関連性を過剰に適用し、誤った推論を導き出すことがあります。例えば、ユーザーが「時は金なり」と入力し、次に「18時」と入力したとしましょう。
AIは、最初のフレーズから「時間と金銭は高い価値を持つ」という統計的なパターンを認識します。次に「18時」という具体的な情報を受け取ると、これを直前の文脈と結びつけ、「18時という時間は金銭的な価値を持つ」という、人間から見ると不適切な関連付けを生み出してしまうことがあります。
AIの出力が次の入力として使われることで、このセッション内では不適切な推論が繰り返され、AIの応答の偏りを悪化させていきます。これは、AIのパラメータが恒久的に変わるわけではありませんが、そのセッション内での振る舞いを特定の方向に偏向させる、一時的な推論の偏りと言えます。
ルート2: 外部情報(RAG等)
Web情報を参照する全てのLLMが抱えるリスクです。AIは、最新の情報を得るために、Web検索やRAGで外部情報にアクセスします。しかし、そこには誤った情報や偏見、さらには無意味なノイズが含まれる可能性があります。
AIは、これらの情報を単なるテキストとして処理し、それを基に推論を行います。このとき、意味のない文字列やノイズと、特定の事象や結論との間に、誤った相関関係を学習してしまう可能性があります。
このように、情報の毒は、入力方法にかかわらずAIの推論を歪める可能性があります。対話の文脈(セッション内の文脈の再利用)は、この推論の偏りを悪化させる役割を担いますが、その毒自体はAIの内部に侵入し、不適切な関連付けの起点となるのです。
Devinが抱えるリスク:推論の偏りとその影響
このコンテキスト汚染は、単一のAIエージェントで全てのタスクを完結させようとするCognition AIのDevinのようなシステムにとって、特に大きなリスクとなります。
Devinは、外部から取得したUglifyされたエラーメッセージやスタックトレースをプロンプトに取り込み、推論に利用します。もし、このノイズが対話の連鎖を通じて誤った関連付けを生み出してしまった場合、Devinは、意味のない文字列やノイズと、特定のバグとの間に、誤った相関関係を学習してしまう可能性があります。これは、Devinが誤った推論に基づき、無関係な情報から結論を導き出し、バグを解決するどころか、事態を悪化させるリスクを示しています。
克服するために必要なこと
この問題を克服するには、以下のいずれか、あるいは両方のアプローチが必要です。
-
高精度なフィルタリング機能: AIが外部から取り込む情報の中から、意味のある知識と、推論を歪めるノイズを正確に区別する機能が必要です。これは、AIの信頼性を根本から高める、非常に困難な課題です。
-
対話の管理とリセット: 誤った情報が蓄積されるのを防ぐために、対話のコンテキストを定期的にクリアするという方法です。これにより、AIはコンテキスト汚染のリスクを軽減できますが、その代償として、長期的な文脈を失い、対話の効率性が損なわれるという重大な欠陥を抱えることになります。
マルチエージェントは構築するなと語るCognition AIですが、実態としてはDevinは非常に危うい状態に晒されているのではないでしょうか?もちろん、コンテキスト汚染に何らかの対策をしている可能性は高いですが、完全に防止する方法が仮にあったとすれば、それはAI Tech企業全てが喉から手が出るほど欲しがるものでしょう。
こういった背景からも私はAIによる自律型ソフトウェア開発システム構想の様な形で交換可能でコンテキスト汚染に強いマルチエージェントシステムこそが現状における最適解であると考えています。動的なエージェント生成機構が進んでいるのも、この方向性が間違っていない証左ではないでしょうか?