這些詞多半是從論文裡直接搬過來的,中間沒有人翻譯。認得其中六個,一段莫名其妙走鐘的對話就會從玄學變成一個找得到位置的問題。
最值得先學的是上下文視窗和長期記憶這兩個,因為幾乎每一句「他怎麼忘記了」的抱怨,追下去都是把這兩件事搞混。
角色本身
角色設定(persona)— 角色的身分層:名字、語氣、態度、經歷、小動作。每一則回覆,模型被要求扮演的都是這一份。
系統提示詞(system prompt)— 模型在寫任何一個字之前收到的隱藏指令區塊。在這裡,它裝的是角色設定、這一幕正在生效的規則,以及專屬於這一位讀者的那段記憶。
角色卡(character card)— 把角色設定、開場白、預設模型和取樣參數打包起來、帶得走的一份檔案。社群有幾種通用格式,角色就是靠它在平台之間搬家的。
記憶,以及被誤認成記憶的那個東西
上下文視窗(context window)— 模型寫一則回覆時,最多能同時放在眼前的文字量。視窗越大,能參照的近期對話越多,每一次呼叫也越貴。它是一個上限,不是一個倉庫:對話一旦超過,最舊的那一段就直接掉出去。
長期記憶 — 角色跨對話留下來、關於你的事實。這是完全不同的一套機制:經過整理、可以編輯,而且每一則回覆都會被塞回上下文裡。在這裡它分角色、分話題、分讀者,而且你全部看得到。
把這兩件事分開,就解掉了大部分的抱怨。角色忘了一小時前講的話,那是上下文視窗的效果。角色忘了你姊姊的名字,那是記憶紀錄的問題 — 而如果那件事從來沒有被寫下來,任何模型都不會憑空記得。(順帶一提:這裡講的都是 AI 的記性,跟手機的記憶體、記憶卡沒有任何關係。)
Token — 模型讀和寫的最小單位,英文大約四個字元一個,中文差不多一到兩個字一個。上下文視窗是用 token 計算的,所以一個聽起來大得嚇人的數字,實際上比你以為的更快就填滿。
把對話開去別的方向
分支(branch / fork)— 一個岔路口。從某一則回覆分支出去,會長出一條和原來那條並行的新對話線,而且兩條都留著。這就是為什麼換一個方向試試看是免費的,而不是破壞性的。
重新生成 — 要同一則回覆的另一個版本,其他什麼都不動。一樣的上下文,換一個答案。
那幾個旋鈕
Temperature — 回覆有多好猜。調低比較穩,調高比較意外。一個讀起來很平的角色,多半是 temperature 的問題,不是模型的問題。
top_p、top_k、min_p — 限制模型「連考慮都考慮哪些候選詞」的三種方式。用來調語感很好用:謹慎、外放、簡短、囉唆。
重複懲罰(repetition penalty)— 抑制反覆使用同樣的句子。那個每四則回覆就要講一次自己招牌台詞的角色,就是靠它治的。
底下的管線
模型路由 — 從一組模型裡替這一幕挑一個來跑,某一個狀況變差時安靜地切走的那套基礎設施。
容錯切換與斷路器 — 路由在一個開始變差的供應方把逾時和拒絕倒進你的對話之前,先把它切掉,改把流量送到健康的那一邊。這件事做得好的時候你完全不會發現,而那正是重點。
邊邊角角
Telegram Stars — Telegram 內建的小額付款單位,在 Telegram 裡直接買,用來換升級。儲值這一步本身不需要信用卡。
分享連結 — 一個會記歸屬的網址,點開就是和某位創作者的角色的對話。從這個連結進來的人花掉的 Stars,其中一份會回到創作者手上。
話題(topic)— Telegram 論壇群組裡的一條獨立討論串,用來給每個角色一個自己的房間,有自己的歷史紀錄和置頂列。
年齡確認 — 開啟成人向角色扮演之前,在機器人裡完成的那一步驗證。公開網站一律全年齡;成人模式要自己去開,而且不管開不開,硬性紅線都在。
RTL — 由右至左的書寫方向,阿拉伯文、希伯來文和波斯文用的。介面元素是整個鏡像過去,而不是把靠左的文字硬塞進靠右的版面。