為何您的 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"}]
}'