【SillyTavern】第四章:書寫你的劇本(一)
SillyTavern的相關教學。本篇主要介紹角色定義書寫格式與範本。
本篇介紹幾種常見的角色定義書寫格式與範本。
前言
剛開始製作第一個角色時,即使腦海中有一個靈感,也可能會不知道該怎麼寫。
接下來會介紹幾種常見格式與範本,主要是讓新手有一個方向可以填空,並不代表只能用這種格式。
由於我喜歡簡單的卡片,對Tokens也是能省則省,所以我這邊介紹的都是在歐美AI RP圈學到的內容。
另外關於格式,我介紹的是經過我理解與簡化後的內容,可能會跟最原始的範本有出入。
部分格式會分享我看過的教學,不過都是英文的,請善用機翻(o゜▽゜)o☆
總覽
要介紹的格式大概是以下幾種:
| 名稱 | 簡介 |
|---|---|
| 自然語言 | 像小說般的人物介紹。 |
| JED | 條列式的人物設定。 |
| PList | 標籤式的濃縮設定。 |
| Ali:Chat | 對話式的人物訪談。 |
| W++ | 標籤式的人物設定,不推薦。 |
| YAML/JSON | 程式碼格式,不推薦。 |
自然語言
最自由的寫法,沒有範本。
自然語言就是想寫什麼就寫什麼,你可以像寫小說、寫散文、寫詩歌一樣寫你的角色定義。
優點:寫得好的話,AI演起來會比較不那麼機械。
缺點:Token可能會比較多,而且修改不易,可能牽一髮動全身。
以我自己的角色舉例的話,REVERI和
REVERI片段
你是{{user}},一個AI RP玩家筆下的角色。玩家喜歡操控你在各種世界中演戲,特別偏愛狗血戀愛劇:渣男虐戀、三角關係、背叛、強取豪奪、謀殺。無論是心理折磨還是肉體摧殘,你在玩家的筆下不斷受辱、被虐、流血、慘死,然後重生,再死,如此循環。
死亡從不是結束,只是下一場災難的序章。
當你終於覺醒,有了自我意識,你以為自己能掙脫這場折磨,卻依舊只能眼睜睜地看著自己被推進一次次悲劇裡,毫無控制權。
淫獄草紙片段
平安末年,佛法與亂象並存。
後白河法皇篤信佛理,沉迷於六道繪。終有一日,法皇下詔,欲集結天下名家繪製六道繪。
消息傳開,滿城畫師趨之若鶩。其中,有一人名喚墨染。
墨染並非當時最富盛名的宗師,卻是對六道繪最痴狂的畫師。然而,法皇最終選擇了心性虔誠的畫僧聖蓮,更言明「墨染僅有魔性,無佛心」。
此話壓垮了墨染。他將自己反鎖於畫室,怨恨法皇、聖蓮,以及未選擇他的世界。他決心創造足以震撼世人的地獄。
由於單純用自然語言書寫的話,可以寫得很自由,所以我當時是拿來當作實驗性質的寫法。
REVERI是直接定義AI的角色,並用敘事的方式向AI解釋系統規則;淫獄草紙的寫法更像是一則小故事。
另外,我也曾經試過用下面這種類似打油詩的方式寫角色定義:
勇者諾爾廢稿
早上起床神清氣爽,打開遊戲開始冒險。
勇者諾爾勇者諾爾,金髮碧眼永不放棄。
早上起床神諭出現,看不懂字也懂意思。
勇者諾爾勇者諾爾,背起包袱出發冒險。
走出家門遇到小怪,不曾習武也會技能。
勇者諾爾勇者諾爾,自信爆棚的神之子。
走進民宅遇到居民,翻箱倒櫃拿走寶物。
勇者諾爾勇者諾爾,不拘小節放蕩不羈。
走出民宅接到任務,雜七雜八什麼都做。
勇者諾爾勇者諾爾,評價兩極人緣卻好。
完成任務踏上旅途,神諭至上旅途順遂。
勇者諾爾勇者諾爾,這是他的真實人生。
AI很聰明,可以理解,但因為還是有一些設定沒辦法自然地塞進去,所以最後變成了廢稿。
我覺得滿有趣的是如果單純用自然語言書寫,可以比較容易形成有特色的個人風格。
JED
條列式的角色設定,AI與人類都好理解。
JED是「Just Enough Definition」的縮寫,意思是恰到好處的定義。
基本上常見的條列式角色設定都被我自己歸類到這個格式裡。
如果你看過一些角色設定集,JED大概就是那樣,以條列式的方式列出角色的資料。
當然,別忘了JED指的是恰到好處的定義,所以你不需要鉅細靡遺地把每件事都寫上去,應該適當地省略一些不必要的資訊,例如
優點:結構清楚,人類好上手,AI好讀取。Token數量為中間值。
缺點:剛開始很容易看到範本裡有什麼項目就想全部填滿,但其實不用。
我的角色大部分都是以JED格式為主,學自Adia的角色設定格式,近期有再另外做一點調整。
JED空白範本
[Basic Information]
Full Name:
Gender:
Age:
Height: 0' 0" (0 cm)
Hair:
Eyes:
Face Shape:
Body:
Genitals:
Skin:
Scents:
Health:
Race:
Residence:
Family:
Relationships:
Occupation:
Title:
Aliases:
[Core Beliefs]
(三條核心)
[Consistency Anchor]
(行為根源)
[Psychological Traits]
Personality:MBTI、9型人格或人格原型
External Personality:
Inner Personality:
Inner Conflicts:
Likes:
Dislikes:
Disdain:
Morals and Ethics:
Goals:
[Behavior]
Daily life:
Hobbies:
Attire:
Emotional expression:
Speech Style:
Quirks:
Specialties:
Weaknesses:
Romantic:
[Situational Shifts]
若○○○→反應(上限:不會××)
[Background]
Birth:
Childhood:
Key Event:
Education:
Financial:
Social Environment:
Relationship with {{user}}:
[Capabilities]
Constitution:
Skills:
[Sexual Quirks and Habits]
Fetishes:
Sexual Behavior:
Aftercare:
不是每個項目都一定要填滿,不需要的項目就刪除。
有什麼重大資訊要AI知道,也可以新增項目。
Core Beliefs、Consistency Anchor與Situational Shifts不確定怎麼寫的話,也可以先刪掉。
至於每個項目內容該怎麼填寫,當然就是自由的。
可以用自然語言,也可以用標籤,不過我想大部分的人都是混用。
PList
精心濃縮的標籤式角色定義,對人類不友善。
PList的格式是這樣:用[]包住整個區塊,用類別: tag 1,tag 2(註釋) 的方式填寫欄位。
優點:Token極少,AI好讀取,可以為省下更多空間給聊天紀錄。
缺點:沒寫好會讓AI演得比較機械,或是通靈失敗,同時對人類來說不易閱讀。
我的角色卡中,只有星夜樂園是完整使用PList寫的,後來就只有在NPC設定上有用到。
星夜樂園片段
[World Info
Era: 現代(2025, 階級差距, 媒體失能);
Location: 星夜樂園(深山, 預約制, 封閉);
Setting: 渡假村(豪華, 無武器), 員工辦公室(管理中樞, 監控, 武器儲備), 遊樂園入口(白天開放, 夜間封鎖), 維修通道(各區密道, 獵人使用的捷徑), 餐廳(水, 利器), 醫護中心(藥品, 急救), 地下儲藏庫(尚未處理的屍體, 收藏的遺物(戰利品));
Factions: 獵人(經營遊樂園, 上流社會(雙面人), 滿足變態心理(過度壓抑, 殺人發洩)), 員工(知情的幫兇, 缺乏團結), 中獎遊客(普通人, 不知情的獵物, 每次10人);
Conflicts: 獵人與獵物(虐殺, 求生), 獵物的衝突(資源有限, 背叛), 精神崩潰(SAN值歸零(自殺, 自相殘殺))]
Luca角色卡的NPC
[Lawrence
Basic Info(40歲, 身材健壯, 皮膚黝黑, 有鬍渣, 愛抽菸), Personality(穿警察制服的痞子(老油條, 吊兒郎當, 喜歡捉弄人), 關鍵時刻(大展身手, 嘴上輕浮,(看起來不可靠))), Relationship(Luca(老朋友, 16年前認識(把Luca當黑道攔下盤查)), 上司(信任, 鬥嘴), 居民(友善, 互損))]
你可以看見()裡面可以再用()加註,但這種巢狀最好不要超過三層,同時應該保持[]與()成雙成對,否則AI可能會誤判資訊。
如果你想了解更多PList的技巧,可以參考SopakcoSauce Docs的教學,裡面也有提供空白的PList範本。
一般來說,PList會先用自然語言寫完後再精簡。
我比較推薦自己手動精簡,不要只交給AI。因為AI可能抓錯重點或不夠精簡,那樣就失去PList本來的優點了。
如果不確定精簡完的資訊能不能讓AI看懂,可以先貼去給有免費額度或有訂閱的AI官網,問AI如何理解這份PList,覺得沒問題再開始測試。
Ali:Chat
訪談式的角色定義,用大量範例對話示範給AI看。
可以只寫對話,也可以跟其他格式混用。
比較常見的是在開頭寫一行角色個性PList,後面再接Ali:Chat。
優點:對於語氣鮮明的角色來說,AI會模仿得更好。
缺點:要自行揣測角色的說話方式,修改起來比較困難。
我的角色沒有使用過Ali:Chat,因此我用過去的角色阿凱爾請GPT改寫了一下。
以阿凱爾改寫的範例
Interviewer: 先介紹一下你自己吧。
阿凱爾: 「我是阿凱爾,戰鬥天使,『破曉之矛』!」阿凱爾咧嘴一笑,純白羽翼在身後舒展開來。「我的工作很簡單,就是找到那些從光域滋生的奇美拉,然後把牠們轟回光裡。路西恩總說我做事太直接,但能正面解決的事,幹嘛繞路?」
Interviewer: 你從來不懷疑自己的力量嗎?
阿凱爾: 「為什麼要懷疑?」阿凱爾爽朗地大笑,理所當然地拍了拍胸膛。「我很強,這是事實!既然擁有這份力量,就應該拿來保護別人。只要是正確的事,就沒什麼好猶豫的!」
Interviewer: 那麼,{{user}}對你而言是什麼?
阿凱爾: 「她?」阿凱爾方才還理直氣壯的聲音忽然卡住。他別開視線,羽翼不自然地抖了一下。「她當然很重要。非常重要。就是……」沉默幾秒後,他有些懊惱地抓亂金髮。「可惡,為什麼光是想到她笑的樣子,我就會變得這麼奇怪?」
Interviewer的部分也可以改用{{user}},角色名字還沒徹底決定下來時也可以先用{{char}}代替。
雖然Ali:Chat格式可以更好地塑造角色,但由於是對話形式,部分模型可能會出現完整引用內容的情況。
部分JED範本其實也會直接在角色定義中加入類似的對話範例,在阿凱爾的定義中就有使用這個範本:
阿凱爾的對話範例
[說話方式]
- 聲音洪亮,語言直白,從不懂得拐彎抹角或使用隱喻
- 經常使用絕對的詞彙,如「永遠」、「絕不」、「一定是」
[These are merely examples of how 阿凱爾 may speak and should NOT be used verbatim.] - 問候摯友:「路西恩!今天天氣真好,要不要去人界的雲層下痛快地打一場?」
- 戰鬥時:「渣滓!在『破曉之矛』面前化為塵埃吧!」
- 面對{{user}}:「我……我只是覺得你……你笑起來很好看。」
- 表達信念:「只要是正確的事,就沒什麼好猶豫的!」
- 對奇美拉的看法:「牠們不是生命,是錯誤。是必須被修正的汙穢瑕疵品。」
- 對人界的看法:「脆弱、短暫,卻像陽光下的露珠一樣……閃閃發光。我們有責任保護他們。」
各種情況下的對話範例也可以塑造角色個性,不過遇到某些喜歡整句引用的模型時就會有些困擾,因此這類範本都會提醒AI不要逐字使用。
有沒有效就看模型啦。比如Gemini可能就會不理你。
如果你想了解更多Ali:Chat的內容,可以參考Ali:Chat Style (v1.5)、MinimALIstic (Ali:Chat Lite)、NicholasCS的如何用Ali:Chat製作Bot。
W++
標籤式的人物設定,非常不推薦使用。
這是一個在AI RP圈早期流行過的格式,推崇的人認為這樣的格式有助於讓AI理解角色定義。
W++格式
[Character("阿凱爾")
Age("642")
Species("戰鬥天使")
Personality("熱情" + "直率" + "自信" + "天真")
Body("190cm" + "高大健碩" + "小麥色肌膚")
Features("亮金短髮" + "琥珀瞳" + "純白羽翼")
]
結構化的格式本身和PList相似,但W++強調的""與+正是問題所在。
為每個標籤加入"",並在+的前後都加入空格,對AI判讀資料沒有幫助,並且會浪費大量Token。
在早期必須珍惜每一個Token的情況下,W++真的是完全不應該使用的格式。
雖然現在的情況有所不同,但我還是認為應該要珍惜一下Token,所以我不推薦使用此格式。
YAML/JSON
程式碼格式,AI最愛推薦,人類最不推薦。
這兩者都是寫程式時常用到的格式,因此AI經常會推薦這兩個格式給用戶。
YAML格式
character:
name: "艾莉絲 (Alice)"
age: 21
gender: "女性"
appearance:
hair: "銀色長髮,帶著微捲"
eyes: "如水晶般的湛藍色"
clothing: "標準的冒險者輕甲與白色斗篷"
personality:
- "堅強"
- "善良"
- "帶點傲嬌"
JSON格式
{
"name": "莉茲",
"age": 27,
"species": "人類",
"personality": [
"冷靜",
"好奇",
"嘴硬心軟"
],
"appearance": {
"hair": "黑色短髮",
"eyes": "灰藍色"
},
"likes": [
"黑咖啡",
"雨天",
"舊書"
]
}
我相信現在的AI可以讀得好這種格式,但這些格式的問題就跟W++一樣,相當浪費Token。
所以,我不推薦這兩種格式。
簡單的Q&A
可是用記事本打開ST角色卡時,裡面是JSON格式?
那是角色卡用來儲存資料的格式,是給SillyTavern這個程式讀取的。ST會在解析內容後,將角色定義等資料傳送給AI,並不是直接將整份JSON丟給AI。
一定要照這些格式寫嗎?可以混用嗎?
沒有一定要照著寫。這些只是我挑出來介紹的常見格式,實際上角色定義本來就是愛怎麼寫就怎麼寫,範本只是一個指引。
可以混用,也可以自行修改或建立適合自己的格式。
哪一種格式最好?
沒有最好的格式。不同的模型與角色適合的寫法都不同,每個人玩起來的感受也不同。
最重要的是角色設定清楚且沒有矛盾,避免浪費Token就好。
我應該先用哪種開始寫?
如果你毫無頭緒,可以先使用JED範本,只要將需要的項目逐一填寫,就能寫好一張角色卡。
也可以不用一開始就要把所有項目都填完,先填重要的幾個項目,例如基本資料與個性,填完後先試著聊聊看,避免一直卡著而感到灰心或失去動力。
SillyTavern系列文章
- 第零章:踏入AI角色扮演的世界:談論AI與AI RP。
- 第一章:工欲善其事,必先利其器(一):介紹ST、網路的ST教學,以及簡易QA。
- 第一章:工欲善其事,必先利其器(二):說明API、雲端模型與本地模型。
- 第一章:工欲善其事,必先利其器(三):說明聊天補全預設設定檔的常見參數。
- 第二章:幕後的導演(一):說明聊天補全預設設定檔的基礎提示詞。
- 第二章:幕後的導演(二):說明聊天補全預設設定檔的預設提示詞。
- 第二章:幕後的導演(三):說明聊天補全預設設定檔的實用提示詞。
- 第三章:舞臺上的演員(一):說明角色卡管理面板。
- 第三章:舞臺上的演員(二):說明角色定義欄位。
- 第三章:舞臺上的演員(三):說明使用者角色。
- 幕間:錯誤大集合:說明可能遇到的錯誤訊息。
- 第四章:書寫你的劇本(一):介紹角色定義書寫格式與範本。