キャラクターチャットでセッションをまたいでユーザーの修正を記憶させる方法
ユーザーが架空のキャラクターの詳細を修正した場合、チャットはその修正されたバージョンをスコープ(適用範囲)とともに保存し、矛盾する古いバージョンを置き換え、保存されたメモを表示および編集可能にする必要があります。また、永続的なユーザーの好みと、1つのストーリーシーン内でのみ適用される事実とを区別しなければなりません。以前に記憶した詳細を後から使用する前に、システムはそれが適切かつ最新であるかを確認する必要があります。証拠が不明確な場合は、共有された過去を捏造するのではなく、質問するべきです。このガイドでは、その場の誤解にどう対応するかではなく、その持続性と競合解決のタスクに焦点を当てています。
キャラクターチャットは何を記憶すべきか?
具体例を考えてみましょう。ユーザーが「ミラの目は青じゃなくて緑だよ」と言ったとします。この修正は、キャラクターの恒久的な詳細を指している場合もあれば、特定のロールプレイにおける一時的なミラのバージョン、あるいは単にユーザーが好むミラの描写方法を指している場合もあります。「目:緑」とだけ保存するメモリは、その事実を有用なものにするコンテキストを失ってしまいます。
実用的なメモリレコードは、少なくとも対象、修正された詳細、スコープ、そしてユーザーがそれを永続させるつもりだったかどうかを捉える必要があります。例えば:
この構造はプロダクトデザイン上の推奨事項であり、研究によって規定されたフォーマットではありません。その目的は、局所的なシーンの詳細が知らないうちにグローバルな事実へと変わってしまうのを防ぐことです。シーン固有の修正であれば、代わりに「冬の舞踏会のシーンで、ミラは緑のマントを着ている」と記録されるかもしれません。そのメモは、彼女の一般的な服装や外見を上書きすべきではありません。
修正はどのように古いメモリを置き換えるべきか?
明確な修正は、両方のバージョンをアクティブなままにする追加の事実としてではなく、関連する事実の更新として扱います。システムが「ミラは青い目をしている」を保持したまま「ミラは緑の目をしている」を追加すると、その後の検索でどちらかが表面化する可能性があります。更新されたレコードは、古い値を置き換えられたものとしてマークするか、アクティブな使用から削除する必要があります。プロダクトがメモリログを提供している場合は、変更を説明するのに十分な履歴を保持しておきます。
情報は時間とともに変化する可能性があるため、この区別は重要です。*[Keep Me Updated! Memory Management in Long-term Conversations](https://aclanthology.org/2022.findings-emnlp.276/)*において、Bae氏らは複数の会話セッションにわたってユーザーに関する更新情報を追跡するためのタスクとデータセットを導入しています。彼らは記憶をテキストによる説明として表現し、無効化された情報や冗長な情報を選択的に排除することを提案しています。彼らの実験では、保存されたメモリを変更しないベースラインとこのアプローチを比較しています。この研究は長期的な会話メモリに関するものであり、特に架空のキャラクターチャットをテストしたり、単一の普遍的なメモリ設計を確立したりするものではありません。
キャラクターチャットの場合、同じ一般的な更新ロジックを慎重に適用します。「青ではなく緑」という直接的な修正は、指定されたスコープ内で古い値が間違っているという強い証拠になります。新しいシーンの詳細は、永続的なキャラクターの事実が変更されたという証拠には自動的にはなりません。スコープが欠落しており、その違いが後で問題になる場合は、「すべてのストーリーでミラの目を緑として覚えておくべきですか、それともこのバージョンだけですか?」といった簡単なフォローアップの質問をします。
システムはどのようにユーザーの好みとストーリーの事実を分離できるか?
好みと架空世界の事実は別々のカテゴリに保存します。好みとは「ユーザーはミラの台詞が簡潔であることを好む」といったものです。ストーリーの事実とは「このシーンで、ミラは駅に到着したばかりである」といったものです。これらは異なる問いに答えています。好みはチャットがどのように応答するかを導き、ストーリーの事実は物語内での一貫性を維持するのに役立ちます。
両方にスコープを追加します。好みはチャット全体、1人のキャラクター、または現在のロールプレイにのみ適用できます。ストーリーの事実は、1つのシーン、1つのストーリーアーク、またはキャラクターの一般的なプロフィールに適用できます。1つの修正から広範な好みを推測してはいけません。ユーザーが「ミラの目は緑だ」と言ったとしても、それだけでユーザーがすべてのキャラクターに緑の目を持たせたいと考えていることや、その詳細がミラのあらゆる別バージョンに適用されることを意味するわけではありません。
シンプルな決定手順が役立ちます:
これらのステップは、会話情報を最新に保つという課題から導き出された提案ワークフローです。特定のチャットプロダクトがこれらに従っていると主張するものではありません。
競合するメモリはどのように処理すべきか?
競合は、単に最も検索しやすい文を無差別に優先するのではなく、対象、スコープ、時間を比較して解決します。ユーザーからの明確で新しい修正は、通常、同じスコープ内にある同じ事実の古いバージョンよりも優先されるべきです。別のロールプレイからの詳細が現在のものを上書きしてはなりません。2つのレコードが同じバージョンのキャラクターを指しているかどうかをシステムが判断できない場合は、それらを分けておくか、質問する必要があります。
例えば、古いメモリに「ミラは青い目をしている」とあり、後のメッセージに「このパラレルワールドのストーリーでは、ミラは緑の目をしている」とあるとします。後の記述はそのストーリーにおけるミラの外見を更新しますが、デフォルトのキャラクタープロフィールを必ずしも変更するわけではありません。ユーザーが「やっぱり、これからは彼女の目の色を緑にして」と言った場合、スコープはより広くなり、デフォルトのレコードを更新できます。矛盾するバージョンを黙って統合して、ユーザーが一貫して同じようにミラを描写してきたと主張してはいけません。
また、メモリシステムには不確実性を処理する方法が必要です。2つのレコードの日時やスコープが不明確な場合は、どちらかの詳細を自信満々に提示するのではなく、競合を未解決としてマークします。根拠のない確信に満ちた想起よりも、短い質問をする方が好ましいです。
ユーザーは記憶された内容をどのように確認および管理できるか?
修正を保存した後は、具体的な変更点を確認します。「了解しました。ミラの一般的なキャラクタープロフィールとして、以前の青い目の詳細を置き換えて、緑の目として記憶します」。システムがより狭い範囲の事実を保存している場合は、その旨を伝えます。「このシーンの詳細として緑のマントを記憶しておきます」。この確認により、ユーザーはスコープの誤りに即座に気付くことができます。
メモリビューには、保存された文言とそのスコープを平易な言葉で表示し、編集や削除ができるようにするべきです。製品が置き換えられたエントリを表示できる場合は、それらを同等に最新のものとして表示するのではなく、古いものとしてラベル付けする必要があります。これにより、キャラクターチャットがなぜその詳細を持ち出すのかをユーザーが理解しやすくなり、ストーリー全体を繰り返すことなく記録を修正できるようになります。
保存されていないのにメモリが存在するかのようにほのめかしたり、システムが検証できない過去のやり取りをキャラクターが覚えていると主張したりすることは避けてください。UIや応答がどのような情報が保存されているかについて誠実でありながらも、キャラクターは自然に話すことができます。
後からの想起はどのようにテストすべきか?
修正が行われた同じ会話内だけでなく、セッションをまたいだ持続性をテストします。[YangとEttingerによる状況理解の研究](https://aclanthology.org/2023.emnlp-main.394/)では、変化する環境状態を追跡・報告できるかどうかをテストするために設計された合成環境を使用してChatGPTを評価しています。著者らは、時間の経過に伴う状態保持のエラーを報告し、彼らの設定における要因として、非持続的なインコンテキストメモリや幻覚(ハルシネーション)による更新への影響の受けやすさについて議論しています。これは2023年に発表された、その環境におけるChatGPTの対照研究であり、現在のすべてのモデル、プロダクト、または架空のキャラクターシステムに関する証拠ではありません。
キャラクターチャット向けの集中的なテストでは、スクリプト化された少数の会話セットを使用できます:
各テストを意図したスコープに照らして採点します:正しい検索、古い情報の正しい置き換え、シーンと一般的な事実の分離、そして不確実性の誠実な処理です。期待される回答が明確化を求める質問であるケースも含めます。保存されたメモが曖昧な場合に、推測することを確実に控えるシステムは、架空の連続性を捏造するシステムよりもそのケースを適切に処理しています。
信頼性の高い「修正から想起まで」の道筋
修正は明確な道筋をたどる必要があります。対象を特定し、そのスコープを保持し、矛盾するメモリを更新し、保存された変更を表示し、後続の応答が根拠のない履歴へと拡大することなくそれを検索することを確認します。この一連の流れにより、キャラクターチャットは架空の世界のコントロールをユーザーに委ねながら、ターンやセッションをまたいで一貫性を保つための実用的な手段を得ることができます。研究は、メモリの更新と状態の追跡を真剣に捉えることを支持しています。ここでの具体的なワークフローは設計上の推奨事項であり、その動作は実際に使用されるプロダクト内で検証される必要があります。
