如何讓角色聊天在跨工作階段中記住使用者的修正
當使用者修正虛構角色的細節時,聊天系統應儲存包含適用範圍的修正版本,取代任何衝突的舊版本,並讓已儲存的記錄可見且可編輯。系統還應區分長期的使用者偏好與僅適用於單一故事場景的事實。在稍後使用記憶中的細節之前,系統應檢查其是否具備相關性與時效性;若依據不明確,應主動詢問而非憑空捏造共同的過去。本指南著重於這類持久性與衝突解決任務,而非當下如何應對單次誤解。
角色聊天應該記住什麼?
考慮一個具體範例:使用者說:「Mira 的眼睛是綠色的,不是藍色的。」這項修正可能指的是該角色的永久設定、特定角色扮演中 Mira 的臨時版本,或純粹是使用者希望如何描述 Mira 的個人偏好。如果記憶僅儲存「眼睛:綠色」,就會遺失讓這項事實發揮作用的背景資訊。
一個實用的記憶記錄應至少包含主體、修正後的細節、適用範圍,以及使用者是否希望其長期保留。例如:
這種結構是一項產品設計建議,而非相關研究強制規定的格式。其目的是防止局部的場景細節在無形中轉變為全域事實。針對特定場景的修正可能會記錄為「在冬季舞會的場景中,Mira 穿著一件綠色斗篷」。這條備忘記錄不應覆蓋她的一般服裝或外貌設定。
修正應如何取代舊有記憶?
將明確的修正視為對相關事實的更新,而不是同時保留兩種版本有效的新增事實。如果系統保留「Mira 有藍色眼睛」並同時加上「Mira 有綠色眼睛」,後續的檢索可能會調出其中任一項。更新後的記錄應將舊值標記為已被取代或從有效使用中移除,同時保留足夠的歷史記錄,以便在產品提供記憶日誌時能夠解釋變更原因。
這種區分至關重要,因為資訊會隨時間改變。在 *[Keep Me Updated! Memory Management in Long-term Conversations](https://aclanthology.org/2022.findings-emnlp.276/)* 中,Bae 等人提出了一項任務與資料集,用於跨多個對話工作階段追蹤有關使用者的更新資訊。他們將記憶表示為文字描述,並提議選擇性地剔除失效或多餘的資訊。其實驗將該方法與保持儲存記憶不變的基準線進行了比較。該研究探討的是長期對話記憶;並未專門針對虛構角色聊天進行測試,也沒有確立單一通用的記憶設計。
對於角色聊天,請謹慎應用相同的通用更新邏輯:直接指出「不是藍色,是綠色」的修正,是有力證據表明舊值在指定範圍內已不正確。然而,新的場景細節並不自動代表持久的角色事實已改變。當缺乏適用範圍且該差異在後續相當重要時,可以進行簡短的後續詢問,例如:「我是應該在所有故事中都記住 Mira 是綠色眼睛,還是僅限於這個版本?」
系統如何將使用者偏好與故事事實分開?
將偏好設定與虛構世界的事實儲存在不同的類別中。偏好可能是「使用者偏好 Mira 的對白保持簡練」。故事事實可能是「在這個場景中,Mira 剛抵達車站」。它們回答不同的問題:偏好指導聊天機器人如何回應,而故事事實則有助於維持敘事中的連貫性。
為兩者都加上範圍限定。偏好可以套用於所有聊天、單一角色,或僅限於當前的角色扮演。故事事實可以套用於單一場景、單一故事線,或角色的通用設定檔。不要從單一修正推斷出廣泛的偏好。如果使用者說「Mira 的眼睛是綠色的」,這本身並不意味著使用者希望所有角色都擁有綠色眼睛,也不代表該細節適用於 Mira 的每一個平行版本。
一個簡單的決策流程會有所幫助:
這些步驟是針對保持對話資訊時效性問題所提出的建議工作流程。這並非宣稱任何特定的聊天產品都遵循了這些步驟。
系統應如何處理相互衝突的記憶?
透過比對主體、範圍和時間來解決衝突,而不是盲目偏向最容易檢索到的句子。在相同範圍內,來自使用者明確且較晚的修正通常應優先於同一事實的早期版本。來自不同角色扮演的細節不應覆蓋當前內容。如果系統無法判斷兩條記錄是否指向同一角色的同一版本,則應保持它們分開或主動詢問。
例如,假設一條較早的記憶寫著「Mira 有藍色眼睛」,而後續的一條訊息提到「在這個架空世界的故事中,Mira 有綠色眼睛」。後者的陳述更新了 Mira 在該故事中的外貌,但不一定會改變預設的角色檔案。如果使用者說:「實際上,從現在開始把她的眼睛顏色改成綠色」,則範圍更廣,可以更新預設記錄。切勿在暗中將相互矛盾的版本合併,並聲稱使用者一直以來都是這樣描述 Mira 的。
記憶系統也需要有處理不確定性的方法。如果兩條記錄的日期或範圍不明確,應將衝突標記為未解決,而不是胸有成竹地呈現任何一個細節。進行簡短的提問,遠比自信滿滿卻毫無依據的回想更為可取。
使用者如何查看並掌控已被記住的內容?
儲存修正後,請確認具體的變更:「了解——我會在 Mira 的通用角色檔案中將她記為綠色眼睛,取代先前的藍色眼睛設定。」如果系統儲存的是範圍較窄的事實,請明確說明:「我會將綠色斗篷保留為此場景的專屬細節。」這種確認給了使用者立即發現範圍錯誤的機會。
記憶檢視介面應以淺顯易懂的語言顯示儲存的措辭及其範圍,並提供編輯或刪除的途徑。如果產品能夠顯示被取代的條目,應將其標記為過期,而不是顯示為同等有效。這有助於使用者了解角色聊天為何會提及某個細節,並能修正記錄,而無需重新複述整個故事。
避免在尚未儲存記憶時暗示其存在,或宣稱角色記得系統無法驗證的過去對話。角色可以在自然交談的同時,讓介面或回應對所儲存的資訊保持誠實。
後續的召回應該如何測試?
測試跨工作階段的持久性,而不僅僅是在進行修正的同一個對話中進行測試。[Yang 與 Ettinger 進行的情境理解研究](https://aclanthology.org/2023.emnlp-main.394/)使用了一個合成環境來評估 ChatGPT,該環境旨在測試其是否能追蹤並報告變化的環境狀態。作者指出,在他們的實驗設定中,模型在隨時間保留狀態方面存在錯誤,並探討了上下文記憶不具持久性以及容易受到虛假更新影響等因素。這是 2023 年發表的針對 ChatGPT 在該環境下的對照研究;它不能作為評估目前所有模型、產品或虛構角色系統的依據。
針對角色聊天的專項測試可以使用一小組預設腳本的對話:
對照預期範圍對每項測試進行評分:正確檢索、正確替換舊資訊、區出場景與通用事實,以及誠實處理不確定性。將預期答案為要求澄清的情況也納入其中。一個在儲存記錄模糊時能夠穩定拒絕猜測的系統,處理此類情況的表現會優於憑空捏造連貫性的系統。
可靠的「從修正到召回」路徑
一項修正應遵循清晰的路徑:識別其主體、保留其範圍、更新任何衝突的記憶、顯示儲存的變更,並驗證後續回覆在檢索它時不會將其擴展為無依據的歷史。這個流程為角色聊天提供了一種實用的方法,可以在輪次與工作階段之間保持一致性,同時將虛構世界的控制權留給使用者。相關研究支持認真對待記憶更新與狀態追蹤;本文所提的具體工作流程是一項設計建議,其表現應在預計使用的產品中進行實際驗證。
