記憶

可以打開、修改、刪除的記憶

大部分角色扮演機器人在背後默默幫你做摘要,然後一點一點跑偏。這一個把記住的事寫成一張你打得開的清單 — 改掉寫錯的一行,刪掉你根本沒說過的一條,或者整個關掉。

Talaforge › 可以打開、修改、刪除的記憶

一個聊天機器人要「看起來記得你」,只有兩條路。一條是把上下文視窗開得很長 — 視窗一往前滑,前面的就沒了。另一條是把事情寫下來。

這一個是寫下來的那種。而比較少見的是後半句:它讓你讀你自己寫進去的東西。(先說清楚,這裡講的是 AI 的記性,跟手機的記憶體、記憶卡沒有關係。)

角色為什麼會跑偏

模型在兩則訊息之間是沒有記憶的。它看起來想得起來的每一件事,都是在提示詞裡重新送過去的。當一段對話長到塞不下,就一定有東西要被丟掉或壓縮,跑偏就是從那裡開始的:角色先是不記得你妹妹叫什麼,接著跟自己上禮拜講過的話打架,然後安安靜靜地變成另一個用同樣詞彙的人。

大多數產品的處理方式,是在背景默默做摘要。這招一直有效,直到摘要寫錯 — 然後它就會一直錯下去,因為你從來看不到它,也就沒辦法改。

實際被存下來的是什麼

一條一條短短的事實,隨著對話進行被抽出來。不是逐字稿,也不是一坨向量,是你讀得懂的句子。

它們同時被切成三層,而正是這個切法讓不同的故事不會互相滲進去:

打開它、改掉它、刪掉它

記憶清單就是聊天設定裡的一個畫面。打開就看得到那些事實,一條一條排好。寫錯了就改;有一條根本不該被寫進去,就刪掉;如果你一條都不想要,把那段對話的記憶關掉,之後就不會再存任何東西。

聽起來是小事,但它把失敗的方式整個換掉了。一條錯的事實藏在看不見的摘要裡,會毒害之後的每一則回覆,而你只能猜角色到底怎麼了。同一條錯的事實排在清單上,就是五秒鐘改掉的一行字。

角色第一次把什麼寫下來的時候,你會被告知一次。不是每則訊息都提醒你 — 就那一次,讓你知道有這個機制,以及去哪裡找它。

什麼永遠不會被寫進去

每一條被抽出來的事實都會先過一道過濾器,把根本不該進記憶庫的東西剔掉:電子郵件地址、電話號碼、卡號、身分證字號這一類。

這是一道過濾器,不是對你打了什麼字的保證。它認得出樣式就擋得掉。真的卡號最安全的處理方式,仍然是不要傳給任何聊天機器人。

分支之後,記憶怎麼算

任何一則回覆都可以分支,然後兩條線都留著。分支的時候,新的那條會繼承母對話在那一刻擁有的記憶 — 所以它不是從零開始,而是從同一段共同的過去出發,然後各走各的。

分支的意義就在這裡:同一段關係的兩個版本,而不是兩個陌生人。

記憶還會跟去哪裡

如果一個角色變成了它自己的 Telegram 機器人,記憶在那裡的運作方式跟主聊天裡完全一樣 — 一樣分角色、分話題、分人。跑去跟你的機器人聊天的人,會和那個角色長出他自己的一份記憶,而那份是他一個人的。

我看得到 AI 記住我哪些事嗎?
看得到 — 記憶清單就是聊天設定裡的一個畫面,把存起來的事實一條一條列出來。整個設計就是為了這件事:讀不到的記憶,等於改不了的記憶。
記憶可以刪掉嗎?
可以,單條刪或整個清空都行。你也可以把某段對話的記憶直接關掉,之後就不會再寫入任何東西。
AI 聊天為什麼會忘記?
因為模型在兩則訊息之間沒有記憶。它看起來想得起來的事,都是在提示詞裡重新送過去的;一旦對話長到塞不下,比較舊的內容就會被丟掉或壓縮。被寫下來的事實撐得過這一關,上下文視窗撐不過。
一個角色的記憶會漏到另一個角色那裡嗎?
不會。記憶同時分角色、分話題、分人。跟同一個角色開的不同話題各自保有各自的記憶,而你講過的話,其他跟這個角色聊天的人也看不到。
別人看得到我的記憶嗎?
看不到。記憶是分人的。兩個人跟同一個角色聊天,各自長出自己的一份,誰也看不到誰的。
把一幕分支出去之後,記憶會怎麼樣?
新的那條會繼承母對話在你分支那一刻知道的事,然後往自己的方向走。兩條線都留著。
電話號碼和卡號會被存起來嗎?
在寫入之前,過濾器會把電子郵件、電話號碼、卡號和證件號碼從抽出來的事實裡剔掉。它認的是樣式,不是讀你的心,所以真正的卡號還是不要傳給聊天機器人。
在 Telegram 建立一個角色 →

延伸閱讀

做角色的路上,我們學到的事