繁中 ▾
領取試用金鑰

排除 abliterated 模型的常見錯誤

除錯 abliterated 模型通常取決於理解無審查 LLM 如何處理結構、上下文和串流,這與標準商業 API 不同。透過解決 JSON 驗證、token 限制和參數調整,您可以確保 NSFW 角色扮演或程式碼生成的可靠性,避免意外的拒絕或格式損壞。

最後更新

摘要

為何您的 JSON 回應無法通過驗證

當模型在程式碼區塊外附加對話式文字時,JSON 解析會失敗。Uncensored 模型優先考慮自然語言的流暢性,因此經常會在原始資料前後加上「以下是 JSON」等文字。這會導致嚴格解析器因期望僅包含物件而解析失敗。

使用 response_format 參數設定為 {"type": "json_object"}. 這可強制模型僅輸出有效的 JSON。這消除了程式碼中需要正則表達式清理腳本的需求。不過,請注意,由於模型受到約束,每次請求消耗的 token 數量會增加。

  • 設定 response_format 以 json_object 在您的請求主體中。
  • 確保您的系統提示詞明確要求 JSON 輸出。
  • 如果模型出現錯誤,請優雅地處理尾隨逗號或次要語法錯誤。
from openai import OpenAI

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

resp = client.chat.completions.create(
    model="uncensored",
    messages=[{"role": "user", "content": "Summarise this thread without softening it."}],
)
print(resp.choices[0].message.content)

正確處理上下文視窗限制

您的上下文視窗總計為 100,000 個 token,包含輸入與輸出。如果您發送長歷史記錄,必須減少最大輸出長度。除非另有指定,否則最大輸出預設為 2,048 個 token。

透過從 100,000 中減去您的輸入大小來計算剩餘的 token。如果您進行角色扮演,請保持系統提示簡潔。僅在 API 請求中儲存最近的對話輪次。較舊的上下文可以進行摘要或截斷。這可防止在生成過程中達到硬性限制。

import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://api.abliteratedllmonline.com/v1", apiKey: process.env.API_KEY });

const resp = await client.chat.completions.create({
  model: "uncensored",
  messages: [{ role: "user", content: "Draft a villain monologue for my game." }],
});
console.log(resp.choices[0].message.content);

Uncensored 模型的函式呼叫錯誤

當模型忽略工具定義或返回無效參數時,函式呼叫會失敗。Uncensored 模型可能會優先考慮創意回應而非嚴格使用工具。它們可能會產生結構描述中不存在的幻覺參數。

在 tools 陣列。使用 tool_choice 以強制執行特定行為。如果模型拒絕呼叫工具,請檢查您的 system prompt 是否有衝突的指示。確保工具名稱和描述清晰無歧義。請先使用簡單的查詢進行測試,以驗證整合情況。

  • 提供清晰的工具名稱和說明。
  • 使用 tool_choice 控制呼叫。
  • 執行前根據您的 schema 驗證參數。
curl https://api.abliteratedllmonline.com/v1/chat/completions \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "messages": [{"role": "user", "content": "List the python dependencies for this flask app"}]
  }'

串流中斷和 SSE 處理

透過伺服器發送事件(SSE)串流傳輸可能在客戶端斷開連線或網路出現問題時遺失 token。最後一個區塊包含 token 使用統計數據。您必須解析此區塊以取得輸入和輸出的計數。

實作健壯的 SSE 客戶端,處理重新連線邏輯。不要假設每個區塊都包含資料。某些區塊可能是空的或僅包含空白字元。處理最後一個區塊以更新您的信用餘額或 token 計數器。這可確保計費和用量追蹤的準確性。

stream = client.chat.completions.create(
    model="uncensored",
    messages=[{"role": "user", "content": "Tell the story in second person."}],
    stream=True,
)
for chunk in stream:
    if chunk.choices and chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)

影響 NSFW 輸出的溫度設定

溫度控制模型輸出的隨機性。較高的值(如 0.8 或 0.9)會增加創造力和不可預測性。較低的值(如 0.2)則使輸出更具決定性和專注力。對於 NSFW 角色扮演,較高的溫度會產生更多樣化且強烈的回應。

實驗不同值以找到最佳平衡點。temperature 過高可能會導致文本不連貫或重複。temperature 過低可能會導致機械化或單調的對話。根據您想要的語氣和一致性進行調整。無審查模型對較高的創意設定反應良好。

  • 對於創意角色扮演,使用 0.7-0.9。
  • 對於事實或編碼任務,使用 0.2-0.5。
  • 監控調整過程中的輸出品質。

角色扮演生成中的 Top P 和多樣性

Top P(核取樣)限制模型僅考慮概率質量最高的前百分之比。它與溫度(temperature)配合使用以控制多樣性。較低的 Top P 值使輸出更可預測。較高的值允許更多樣化的詞彙選擇。

結合 Top P 與溫度以進行細粒度控制。例如,高溫度搭配低 Top P 可以產生具有創意但集中的文本。這有助於在允許自發性動作的同時保持角色語氣。測試不同的組合以符合您的敘事風格。

from openai import OpenAI

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

resp = client.chat.completions.create(
    model="uncensored",
    messages=[{"role": "user", "content": "Summarise this thread without softening it."}],
)
print(resp.choices[0].message.content)

理解 token 限制與成本

Token 用量直接影響您的預付信用額度。API 對每百萬個輸入 Token 收費 $0.15,對每百萬個輸出 Token 收費 $0.50。輸出 Token 更昂貴,因為它們代表模型的運算工作。串流傳輸不會改變成本;您需為所有生成的 Token 付費。

監控您的 Token 使用情況以避免意外費用。最後的 SSE chunk 會提供精確的 Token 計數。您可以利用此資訊更新本地餘額或計費儀表板。錯誤與拒絕請求均不收費,因此您只需為成功的生成結果付費。這種隨用隨付的模式確保您不會多付錢。

  • 輸入 token 每百萬計費 $0.15。
  • 輸出 token 成本為每百萬 $0.50。
  • 拒絕和錯誤免費。

API 金鑰替換與速率限制

每個帳戶一次只允許一個有效的 API 金鑰。如果您重新生成金鑰,舊金鑰會立即失效。這確保了安全性,但要求您盡快更新客戶端。速率限制設為每分鐘 300 次請求,以及每個金鑰 8 個併發請求。

超出這些限制會導致 HTTP 429 錯誤。在重試邏輯中實施指數退避。監控您的請求量以保持在限制範圍內。如果您需要更高的吞吐量,請考慮將工作負載分散到多個帳戶或優化您的提示詞大小。金鑰在註冊時立即顯示,請妥善保管。

import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://api.abliteratedllmonline.com/v1", apiKey: process.env.API_KEY });

const resp = await client.chat.completions.create({
  model: "uncensored",
  messages: [{ role: "user", content: "Draft a villain monologue for my game." }],
});
console.log(resp.choices[0].message.content);

除錯常見的 HTTP 錯誤

HTTP 錯誤表示您的請求或伺服器回應出現問題。常見錯誤包括 400 Bad Request、401 Unauthorized 和 429 Too Many Requests。400 錯誤通常表示 JSON 格式錯誤或參數無效。401 錯誤表示 API 金鑰不正確或已過期。

檢查您的請求標頭與載荷中的語法錯誤。驗證您的 API 金鑰是否正確且有效。若收到 429 錯誤,請等待並使用指數退避機制重試。使用官方 OpenAI SDK 可自動處理這些錯誤。它們提供清晰的錯誤訊息與重試邏輯。這能減少開發時間並提升可靠性。

  • 400:檢查 JSON 語法和參數。
  • 401:驗證 API 金鑰的有效性。
  • 429:使用退避實作重試邏輯。
curl https://api.abliteratedllmonline.com/v1/chat/completions \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "messages": [{"role": "user", "content": "List the python dependencies for this flask app"}]
  }'

常見問題

我可以將 abliterated 模型與標準 OpenAI SDK 搭配使用嗎?

是的,我們的 API 完全與 OpenAI 相容。您可以透過將基礎 URL 簡單地變更為 HTTPS://api.abliteratedllmonline.com/v1 並提供您的 API 金鑰來使用官方的 OpenAI SDK。要發送的模型 ID 為 "uncensored"。這確保了與現有程式碼的無縫整合。

無審查模型會過濾內容嗎?

該模型旨在對合法成人內容取消審查。它不會拒絕爭議性、虛構或成人(NSFW)話題。然而,存在嚴格的内容限制:涉及未成年人性內容的請求始終會被拒絕。這是我們服務中唯一的嚴格拒絕規則。

如何搭配 token 使用量處理串流?

使用伺服器發送事件 (SSE) 時,最後一個區塊包含 token 使用統計數據。您必須解析最後一個區塊以獲取輸入和輸出的 token 數量。這使您能夠準確追蹤額度使用情況並據此計費。錯誤和拒絕生成的請求免費,因此您僅為成功的生成結果付費。

上下文視窗的大小是多少?

上下文視窗為 100,000 個 token,包含提示詞與補全內容。每次請求的最大輸出為 16,000 個 token,若未指定 max_tokens 參數,則為 2,048 個 token。此寬廣的視窗允許深度的對話歷史與長文件處理。

取得您的 API 金鑰

註冊、取得金鑰,並更新基礎 URL。就是這樣。