会話履歴をそのまま渡すと、AIが自分の過去の回答を真似しはじめる

English

この記事の目次

あらまし

対話型AIの回答が崩れるという実運用の報告を受けて原因を追いかけ、二つ見つけて直しました。一つは、画面表示のために加工した文字列を、そのまま次のターンの会話履歴に使い回していたことです。もう一つは、そのターン限りのはずの特別な指示で生まれた回答の形式が、履歴に残って、後続のターンにも同じ形式で出ていたことです。

同一入力への6生成の比較では、修正前は章立て見出しの混入が1生成あたり4件と5件で、修正後は2生成とも0件になりました。効いたのは二つを同時に直したことで、片方ずつの修正ではどちらも4件のまま改善しませんでした。

本文では、まず報告された崩れ方から入り、表示用の加工が履歴に混ざる経路と、特別な指示の形式が残留する経路を、どう切り分けたかを書きます。そのうえで、過去の回答を正規の形へ復元して履歴に渡すという直し方を説明し、二つの原因を実測で確かめた比較の数字と、翌日に入れた復元処理の安定化までを順に書きます。

対象読者と持ち帰れるもの

会話履歴を持つ対話型AIの機能を作っている人に向けた記事です。表示のための整形とモデルへ渡す入力を分けるという設計原則を、実際に踏んだ不具合と実測の比較で持ち帰れます。回答の崩れが直らないとき、原因が一つだという思い込みをどう解くか、その切り分けの手順も持ち帰れます。この記事は、個人会社で開発しているサービスの実装と修正の一次記録に基づく実践の記録です。