繁中 ▾
取得 API 金鑰

最佳 Abliterated LLM 角色扮演:API 設定指南

Abliterated 模型是大型語言模型,其中執行安全拒絕的機制已被移除,使模型能夠回答爭議性、成人或利基問題而不觸發內容過濾器。這種方法讓開發者完全控制模型的語氣和知識截止點,對於程式碼編寫、角色扮演和創意寫作特別有價值,因為標準防護措施可能會阻止有用的輸出。

帶有面具和發光對話氣泡的場景,氣泡連結至程式終端機,代表透過 API 進行的角色扮演

重點摘要

  • 當模型在場景中拒絕或說教時,角色扮演就會中斷,因此拒絕行為比原始基準分數更重要。
  • 100,000 token 的視窗可容納長角色卡加上數小時的聊天歷史。
  • SillyTavern 透過其自訂的相容 OpenAI 端點來源,搭配 Base URL、金鑰與模型 ID uncensored 進行串接。
  • 50 輪會話,平均提示詞為 6,000 token,成本約為 $0.05。

什麼讓模型擅長角色扮演

角色扮演是語言模型的嚴苛測試。它必須在數百則訊息中維持語氣,記住三場戲前發生的事,在故事轉暗時保持角色,且絕不跳出角色來解釋自己。標準助手模型最常在這一點失敗。它寫出很好的段落,然後加上免責聲明或拒絕一個明顯是虛構的情節。

abliterated 或無審查模型經過微調以移除這些拒絕。這有幫助,但這只是你在決定採用供應商前應檢查的五項特質之一:

  • 拒絕行為。 它是否能不加評論地遵循反派的對話或道德灰暗的場景?
  • 上下文長度。 角色卡、世界筆記和聊天歷史能否裝入一個請求?
  • 一致性。 角色在長會話中是否保持相同的說話習慣?
  • 採樣控制。 你能否調整 temperature、top_p、懲罰和停止序列?
  • 串流輸出。 文字是否逐 token 出現,讓回覆感覺像對話?

沒有人能誠實地為每種故事風格指定單一贏家。品味很重要,兩位作家會對同一個模型有不同的排名。實用的做法是讓候選模型運行你自己的場景,並自行評估輸出結果。

此 API 為角色扮演提供什麼

服務運行單一開放權重模型,由獨立供應商託管並針對合法成人用途進行微調,使其在回答時不會拒絕內容。模型 ID 為 uncensored。不會在供應商之間切換路由,因此你週一測試的聲音就是週五獲得的聲音。

角色扮演需求你將獲得
長記憶100,000 個 token 的上下文,包含提示詞與補全
即時輸入效果透過 SSE 串流輸出,設定 stream: true
風格控制temperature、top_p、stop、seed 以及兩種懲罰都會通過
客戶端支援相容 OpenAI,因此 SillyTavern 和類似工具只需更改 URL 即可使用
隱私權提示詞不用於訓練

適用一項不可協商的限制:禁止涉及未成年人的性內容。讓你的角色和情境保持在該界線內,並限於合法成人用途。模型系列的詳細資訊位於 abliterated 模型頁面。

五步連接 SillyTavern

SillyTavern 可與任何相容 OpenAI 的端點通訊。選單標籤在不同版本間略有變動,但流程相同。

  1. 建立帳戶並在 API 金鑰頁面 領取你的金鑰。新用戶可一鍵取得 $0.50 的免費試用額度,有效期 7 天,無需信用卡。
  2. 在 SillyTavern 中,點擊插頭圖示(API 連線),並將 API 類型設為 Chat Completion。
  3. 選擇 自訂(相容 OpenAI) 來源。
  4. 輸入 https://api.abliterated.cc/v1 作為端點 URL,並將你的金鑰貼入 API 金鑰欄位。
  5. 輸入 uncensored 作為模型 ID,然後按下 Connect。綠色狀態表示對 /v1/models 的請求成功。

如果連接失敗,請先檢查 URL。它必須以 /v1 結尾,沒有尾隨路徑,也沒有額外的 /chat/completions。客戶端會自行添加該部分。

建議的起始設定

Temperature 設在 0.8 到 1.0 之間可產生活潑的文筆。將 top_p 保持在 0.9 左右。如果回覆開始重複相同的短語,請加入約 0.2 的小幅頻率懲罰(frequency penalty)。將上下文大小設為接近實際視窗,但為回覆預留空間。然後在幾個場景後根據直覺調整。

用 Python 建立你自己的角色扮演迴圈

如果你編寫自己的前端或 Discord 機器人,OpenAI SDK 就足夠了。此腳本保留完整歷史記錄、串流輸出回覆,並防止模型替你寫台詞。

from openai import OpenAI

client = OpenAI(
    base_url="https://api.abliterated.cc/v1",
    api_key="YOUR_KEY",
)

system = (
    "You are Mara, a smuggler captain in a sea-faring fantasy setting. "
    "Write in third person, past tense, two short paragraphs per reply. "
    "Never write the actions or words of the player character."
)
history = [{"role": "system", "content": system}]

while True:
    user = input("> ")
    history.append({"role": "user", "content": user})

    stream = client.chat.completions.create(
        model="uncensored",
        messages=history,
        temperature=0.9,
        top_p=0.9,
        frequency_penalty=0.2,
        stop=["\nPlayer:"],
        stream=True,
    )
    reply = ""
    for chunk in stream:
        if chunk.choices and chunk.choices[0].delta.content:
            piece = chunk.choices[0].delta.content
            reply += piece
            print(piece, end="", flush=True)
    print()
    history.append({"role": "assistant", "content": reply})

相同的呼叫也可從 Node、curl 或任何其他 OpenAI 客戶端執行。僅 Base URL、金鑰和模型 ID 會改變。文件中的快速入門展示了每個變體。

撰寫模型可遵循的角色卡

大多數角色扮演品質問題都是提示詞問題。模糊的角色卡會產生模糊的角色。好的角色卡應在 300 到 600 token 內,涵蓋四件事:角色是誰、他們如何說話、他們現在想要什麼,以及他們絕對不能做什麼。

具體勝過詩意。比較「Mara 神秘且危險」與「Mara 用問題回答問題,不對陌生人透露真名,當有人站在她身後時,她的一隻手會靠近她的刀。」第二行給出了模型可以在每一輪重現的行為。

  • 聲音範例。 加入兩到三行範例對話。模型比從形容詞更能可靠地從範例中模仿節奏和詞彙。
  • 格式規則。 說明人稱、時態、長度,以及是否使用星號表示動作。除非明確告知一次,否則模型會在格式上偏離。
  • 場景狀態。 將當前地點、時間和未解決的線索放在提示詞的末尾,因為最近的資訊具有最強的影響力。
  • 界限。如果故事僅涉及成人,請在角色卡中說明。一行「所有角色均為成年人」可讓設定對你以及任何查看日誌的人來說都明確無誤。

修正扁平、循環或強勢的角色

這些是在第一個小時後出現的問題,以及常見的修正方法。

角色重複自身

某些語句會在幾次回覆後重複出現。將 frequency_penalty 設為 0.3,presence_penalty 設為 0.1,將 temperature 調高 0.1,並檢查你的摘要或範例對話本身是否已包含該語句。模型會複製它所看到的內容。

回覆越來越長

長回覆會讓模型認為長回覆是常態。從歷史記錄中刪除幾則長回覆,重申長度規則,並將 max_tokens 設為你接受的閾值。該欄位是選填的,因此僅在你設定時才會作為上限發揮作用。

模型決定你的角色該做什麼

在系統訊息中加入硬性規則,並在角色的名稱前綴上設定停止序列(stop sequence),如上方的腳本所示。如果你使用前端介面,請確認它是否使用相同的名稱標籤來格式化歷史記錄。

故事停滯

賦予角色目標與時限。「她必須在漲潮前拿到地圖」能推動劇情發展。沒有慾望的角色會等待你的行動,導致場景沉悶。

保持長篇故事的連貫性

100,000 token 的視窗很大,但長達數月的長期劇情會超出其容量。請提前規劃。

  • 釘選關鍵要素。 將角色卡和當前場景目標置於系統訊息的頂部,使其不會被截斷。
  • 摘要舊的對話輪次。 每 30 或 40 則訊息,請模型將最舊的聊天部分濃縮為簡短摘要,然後用該摘要取代這些訊息。
  • 使用設定列表。 將名稱、地點和承諾儲存在一個短區塊中,並在每個回合進行更新。模型更容易遺忘 80 則訊息前的次要細節,而非最近提示詞中陳述的事實。
  • 除錯時使用 seed。 當你調整提示詞時,固定的 seed 能讓比較更公平。

常見失敗案例:模型代替你的角色說話。在系統提示詞中加入直接規則,並搭配上述的停止序列來修正。另一個常見問題:每則回覆都以相同的方式開頭。稍微調高 temperature 並加入頻率懲罰(frequency penalty)。

一次對話的成本

定價為每 1M 輸入 token $0.15,每 1M 輸出 token $0.50,費用從預付額度中扣除。角色扮演屬於輸入密集型,因為每輪都會傳送完整的歷史記錄,因此輸入端的費用佔主導地位。

假設進行 50 輪對話。平均提示詞為 6,000 token(包含角色卡與歷史記錄),每則回覆約 250 token。

  • 輸入:50 x 6,000 = 300,000 token,即 0.3 x $0.15 = $0.045
  • 輸出:50 x 250 = 12,500 token,即 0.0125 x $0.50 = $0.00625
  • 總計:$0.05125,約五美分

$20 的儲值約可覆蓋 390 次該規模的會話。儲值金額為整數,從 $20 到 $500 不等,滿 $50 贈送 +5%,滿 $100 贈送 +10%,滿 $200 贈送 +15%。額度永不過期,失敗或被拒絕的請求不會扣款。你可以使用加密貨幣(TRC20 上的 USDT、Base 上的 USDC)付款。完整數字見 定價頁面。

問答

角色扮演有單一最佳的abliterated LLM 嗎?

沒有。偏好會因類型和寫作風格而異。在決定之前,請使用 $0.50 的免費試用額度,用你自己的場景測試候選模型。

我可以搭配 SillyTavern 使用嗎?

是的。選擇 Chat Completion,然後選擇自訂(相容 OpenAI)來源,輸入 Base URL 和金鑰,並將模型 ID 設為 uncensored。

它允許任何內容嗎?

它經過調整,可在合法成人用途下無內容審查地回答。涉及未成年人的性內容則絕對禁止。

我可以傳送多少歷史記錄?

上下文視窗為 100,000 token,提示詞與補全內容共用此視窗。

只差一張表單,即可取得金鑰

建立帳號、複製金鑰、更改基礎 URL。這就是整個設定過程。