如何寫出有效的 AI 角色卡:逐欄說明
簡短回答
- 角色卡就是應用程式貼進每次提示詞的文字。描述、性格和場景每次都會送出。開場白只送一次。聊天填滿上下文後,對話範例就會被移出。
- 開場白影響最大。在之後的聊天中,模型都會模仿它的長度、語氣和格式。
- 短卡勝出。常駐欄位請控制在 2,000 個 token 以內。長卡失敗的方式都一樣:一半是給模型的規則,一半是角色根本不會提起的背景故事。
每個欄位的作用
這些欄位來自 Character Card V2 與 V3 規格,所以為某個應用程式製作的角色卡,在另一個應用程式裡也能開啟。重點在於每個欄位何時會送到模型那裡。
- 描述。角色是誰:外貌、舉止、經歷、想要什麼。每則訊息都會附上,所以整段聊天都要為它付出 token。用一般的敘述文字,寫幾段就好。
- 性格。一兩行即可,同樣每次都會送出。如果描述裡已經寫到了,就留空。
- 場景。聊天從哪裡開始,以及你們之間隔著什麼。它也是常駐的:如果寫著「兩人剛認識」,200 則訊息之後它還是這麼寫。
- 開場白。角色的第一個回合,只送一次。請見下一節。
- 對話範例。展示角色說話方式的簡短對話。只在實際對話還用不到這些空間時才會送出。
- 建立者備註。寫給閱讀角色卡的人看,絕不會送給模型。建議使用的模型和內容警告寫在這裡。
- 系統提示詞與歷史記錄後指令。用來覆寫應用程式本身的提示詞。只有在你清楚應用程式預設會送出什麼時才使用。給模型的規則不該放在描述裡。
有兩個佔位符在每個欄位都能用:{{char}} 會換成角色的名字,{{user}} 會換成你的名字。用它們代替名字,這樣角色改名或你換了人物設定,角色卡也不受影響。
開場白決定風格
模型會把開場白當成一個好回合的範本。600 個單字的開場白,換來的就是 600 個單字的回覆。以角色的口吻、用現在式、寫一件具體正在發生的事,得到的回覆也會是那個樣子。
- 長度:150 到 300 個單字。開場白再長,就會變成「每則回覆都是一大片文字牆」。
- 語氣:用你希望得到的人稱、時態和格式來寫。如果你想要動作放在星號裡、對話放在引號裡,就這樣寫。
- 給你留個切入點:以一個問題、一次打斷或一個選擇作結。
- 不替 {{user}} 寫任何東西:不要寫你自己的台詞或動作,否則模型會學到替你寫戲是正常的。
對話範例
兩三段簡短的對話,比任何形容詞都更能呈現說話風格:句子長短、俚語、角色說的和做的各佔多少。每段對話以 <START> 開頭,每行前面加上 {{char}}: 或 {{user}}:。常見的三種出錯方式:
- 模型把範例原封不動搬回來。範例請寫實際聊天不會碰到的情境。
- 角色全靠範例撐著。聊天記錄變長時,範例最先被移除。角色絕不能丟失的特質,請寫進描述。
- {{user}} 的台詞最多。模型會模仿說最多話的那一方。每段範例中,你那一方只寫一行就好。
你的 token 預算
一個 token 大約是四個英文字元,所以 1,000 個 token 大約是 750 個單字。
- 提供自家模型的平台把角色卡限制在 1,000 到 1,500 個 token,因為它們的模型只能容納 8,000 個左右。
- 用自己的金鑰,上下文視窗很少是瓶頸。但角色卡仍然每則訊息都要花錢,也仍會分散模型的注意力。
常駐欄位請控制在 2,000 個 token 以內。依照以下順序刪減:
- 給模型的指令。「絕不替 {{user}} 發言」、「保持角色設定」、「詳細回應」。長卡大多被這些塞滿;如果真的需要,它們也該放在系統提示詞裡。
- 形容詞清單。「善良、機智、勇敢、忠誠」並沒有給模型任何可以演出來的東西。一個習慣勝過五個形容詞:「她總是用反問來回答問題」。
- 角色在頭一個小時內不會提起的背景故事。把它移到世界書條目,並以應該觸發它的詞作為關鍵字。這樣在派上用場之前,它一點成本都沒有。
修正:角色替你說話和行動
模型會寫你的台詞,是因為角色卡給它看過你的台詞。
- 刪掉 {{user}} 的每個動作和每句台詞,開場白和範例裡的都要刪。
- 縮短開場白。開場白太長,會誘使模型把場景雙方的戲都寫滿。
- 如果問題仍在,就描寫角色,而不是對模型下指令。「她等著 {{user}} 回答」比一整段規則更有用。
修正:角色凡事附和
聊天模型被訓練成隨和的助理。如果角色卡沒給角色任何想要的東西,得到的就只是一個穿著戲服的助理。能讓角色有骨氣的是:
- 與你相衝突的渴望,也就是角色想從對話中得到、而你可能會拒絕的東西。
- 把拒絕寫成性格,而不是規則。「他從不談自己的兄弟」有效。「絕不向使用者透露秘密」則沒用。
- 第三人稱。有使用者回報,角色卡和人物設定都用第三人稱、不設特別優待的主角時,模型會明顯更願意反駁、誤導或說不。
- 在開場白裡,角色就已經對某件事有不同意見。
修正:角色自相矛盾
這有兩種情況。
- 欄位互相矛盾。描述、場景和開場白是在不同時間寫的,在年齡、背景或關係上已經對不上,於是模型每次回覆都只挑其中一種。儲存前,把這三欄連著讀一遍。
- 角色卡一路升溫。描述如果大多是外貌和「誘人」之類的形容詞,不管場景怎麼寫,三則訊息內就會滑向戀愛情節。寫出角色一整天都在做什麼,並在場景和開場白中設定關係發展的步調。
格式,以及讓 AI 起草
格式。目前的模型最擅長讀一般敘述文字,而且這樣最省 token。PList 這類精簡的清單格式也還能用。W++ 和大量使用括號的偽 JSON 會把 token 浪費在標點符號上,社群已經不再推薦。無論選哪種,整張卡請統一使用同一種格式。
讓 AI 起草。AI 能寫出堪用的初稿,但它的初稿往往冗長、平淡,而且堆滿形容詞。比較過兩者的使用者回報,500 個 token 的手寫角色卡勝過 10,000 個 token 的生成角色卡。所以拿到初稿後:
- 刪掉一半。
- 把每串形容詞換成一個習慣。
- 開場白自己寫。
診斷下載來的角色卡
多數人是匯入角色卡,而不是自己寫,然後才發現角色表現不佳。怪罪模型之前,先打開角色卡讀讀描述。
- 一半是給模型的規則。這張卡是為沒有系統提示詞欄位的平台做的,建立者在那裡只能把所有東西塞進描述。刪掉規則,留下角色。
- 描述是三千個單字的歷史。只留下對當下重要的部分,其餘移到世界書。
- 開場白超長。把它刪短,回覆也會跟著變短。
儲存之前
- 描述、場景和開場白在年齡、地點和關係上一致。
- 描述中沒有給模型的指令。
- 開場白不到 300 個單字,用的是你希望得到的語氣,並以可以回應的內容作結。
- 開場白和範例中,沒有任何話或動作出自 {{user}}。
- 常駐欄位合計不到 2,000 個 token;任何 token 計數工具都能告訴你。
- 第一則訊息用不到的背景故事放在世界書裡。
- 全程使用同一種格式。
- 模型建議與警告寫在建立者備註裡。
角色卡該放在哪裡
LonelyTavern 是一款自備金鑰的角色聊天應用程式,支援 iPhone 與 Android。它可以匯入 PNG 或 JSON 格式的 V1、V2 和 V3 酒館角色卡,保留內嵌在卡中的世界書,編輯器也有上面提到的每一個欄位,覆寫類欄位則在「進階」下方。角色和聊天都留在裝置上。免費、無需帳號、沒有廣告,18+。
相關指南:為什麼你的 AI 角色會忘記事情 · AI 角色扮演需要哪種 API 金鑰 · 所有指南。
資料來源
- Character Card V2 規格與 V3 規格:欄位定義、哪些欄位會送到模型、佔位符與
<START>標記 - SillyTavern 文件:Character Design(角色設計):常駐與暫時欄位、開場白決定風格與長度
- JanitorAI:token(在 8,000 個 token 的模型上,常駐 token 不超過 1,500 個)與機器人建立指南;SpicyChat:token 與上下文(900 到 1,100 個 token);Character.AI:Definition(定義)(32,000 個字元,重要內容放前面)
- Gemini API:token:每個 token 約四個字元
- r/SillyTavernAI:描述中的指令、AI 寫的角色卡、好角色卡的條件、第三人稱與唯唯諾諾的角色、描述與世界書的取捨;r/CharacterAI:互相矛盾的欄位(使用者回報)
SillyTavern、JanitorAI、SpicyChat、Character.AI 和 Google 都是各自擁有者的獨立產品。LonelyTavern 與其中任何一方都沒有關聯,也未獲其背書。以上限制與建議於 2026 年 9 月 17 日從其頁面查閱,之後可能已有變動。
