重點摘要
- 單一 Base URL 與單一模型 ID(uncensored)適用於任何 OpenAI SDK 或用戶端。
- 支援串流輸出、函式呼叫和 JSON 模式,上下文視窗為 100,000 token。
- 完整金鑰允許 8 個並行請求與每分鐘 300 個請求,因此請為繁忙應用程式規劃小型佇列。
- 計費為從預付額度中,每 1M 輸入 token 收取 $0.15,每 1M 輸出 token 收取 $0.50,且提示詞不會用於訓練。
單一端點提供內容
當使用者想要一個能回答且不對合法成人用途進行內容審查的模型,但不想運行 GPU 時,他們會搜尋無審查 LLM Hub。該服務為純淨的 HTTPS API。你將 OpenAI 客戶端指向 https://api.uncensoredllmhub.com/v1,傳送模型 ID uncensored,並使用 Authorization: Bearer YOUR_KEY 進行驗證。有兩種 HTTP 方法:POST /v1/chat/completions 用於對話,GET /v1/models 用於列出。
釐清該端點背後的內容很重要。這是一個開放權重模型,由獨立供應商運行並調整以跳過內容拒絕。它不是任何大型廠商的官方 API,也不是在模型之間選擇的路由器。它僅處理文字:無影像、音訊、影片、嵌入或微調。一條硬性規則無例外適用:禁止涉及未成年人的性內容。
這種狹窄的範圍正是重點。單一穩定的端點易於建構。以下章節將展示小型聊天後端、代理迴圈,以及你需要為其設計的限制。
步驟 1:連接現有用戶端
由於 API 遵循 OpenAI 格式,你很少需要撰寫新的客戶端程式碼。開啟你的 SDK 或工具,更改 base URL 和金鑰,並將模型設定為 uncensored。首先在 API 金鑰 頁面註冊(使用 Google,或電子郵件與密碼),然後點擊一次領取 $0.50 試用額度。該試用不需要信用卡,持續 7 天,每人限領一次。
Python 中的最小請求:
from openai import OpenAI
client = OpenAI(
base_url="https://api.uncensoredllmhub.com/v1",
api_key="YOUR_API_KEY",
)
resp = client.chat.completions.create(
model="uncensored",
messages=[
{"role": "system", "content": "You are a concise assistant for a writing tool."},
{"role": "user", "content": "Give me three opening lines for a mystery set on a ferry."},
],
temperature=0.9,
top_p=0.95,
)
print(resp.choices[0].message.content)
temperature、top_p、stop、seed 等採樣設定以及頻率與存在懲罰都會傳遞給模型,因此你從其他供應商熟悉的旋鈕行為方式相同。相同的呼叫也適用於接受自訂 OpenAI 相容端點的工具,例如 SillyTavern 或 Open WebUI:貼上 Base URL、新增金鑰、手動輸入模型 ID。
步驟 2:將回答串流輸出至聊天介面
如果使用者盯著空白方塊直到完整回答到達,聊天應用程式會感覺很慢。串流輸出可解決此問題。設定 stream: true,API 會以伺服器發送事件傳送回答,並在串流結束時報告用量。以下是隨 token 到達轉發 token 的 Node 版本:
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.uncensoredllmhub.com/v1",
apiKey: process.env.API_KEY,
});
export async function streamReply(history, onToken, signal) {
const stream = await client.chat.completions.create(
{ model: "uncensored", messages: history, stream: true },
{ signal }
);
let text = "";
for await (const chunk of stream) {
const piece = chunk.choices[0]?.delta?.content ?? "";
if (piece) {
text += piece;
onToken(piece);
}
}
return text;
}
兩個習慣可避免後續麻煩。首先,始終傳遞中止信號,並在使用者關閉分頁或按下停止時取消它。串流請求會佔用其並行槽位直到串流結束,因此放棄的串流會消耗你的額度。其次,保留你組裝的完整文字,因為你會將其作為助手訊息附加到歷史記錄中以進行下一輪對話。
如果你在串流輸出時在前端看到模糊的錯誤,我們關於診斷串流失敗的說明涵蓋了常見原因,例如基礎 URL 錯誤、緩衝事件的代理伺服器以及兩個 429 程式碼。
步驟 3:有意識地使用長上下文
上下文視窗為 100,000 token,由提示詞與補全內容共用。對於故事創作工具、角色聊天或文件助理而言,這代表可以同時容納長歷史紀錄、大型系統提示詞與參考資料。你不需要設定 max_tokens;補全內容可以使用剩餘的任何空間。
長上下文以這些價格來測試很便宜。將整個上下文視窗填滿輸入的成本為 0.1 × $0.15 = $0.015(100,000 個輸入 token)。加上 2,000 token 的回答(0.002 × $0.50 = $0.001),一個幾乎滿載的呼叫成本為 $0.016。你仍然需要管理上下文視窗,原因有三:延遲會隨著提示詞大小而增加,每個輪次都會重新發送歷史記錄,因此成本會在會話中累積,以及非常長的歷史記錄會稀釋頂部的指示。
簡單的政策效果良好:
- 將系統提示詞與任何固定參考文字放在開頭。
- 保留最近的輪次不變。
- 當歷史記錄超過你設定的閾值(例如 60,000 個 token)時,請模型將最舊的部分摘要為簡短筆記,並用該筆記取代這些輪次。
- 從每個回應讀取
usage.prompt_tokens,以了解下一個請求的大小,而不是透過字元進行估算。
步驟 4:代理的工具與結構化輸出
代理程式需要模型提供兩樣東西:一種呼叫函式的方法,以及可解析的輸出。兩者都支援。函式呼叫使用標準的 tools 與 tool_choice 參數,工具呼叫可以串流輸出,結果以 role: "tool" 訊息形式回傳。單次往返如下所示:
import json
from openai import OpenAI
client = OpenAI(
base_url="https://api.uncensoredllmhub.com/v1",
api_key="YOUR_API_KEY",
)
tools = [{
"type": "function",
"function": {
"name": "lookup_order",
"description": "Find an order by its number.",
"parameters": {
"type": "object",
"properties": {"order_id": {"type": "string"}},
"required": ["order_id"],
},
},
}]
messages = [{"role": "user", "content": "Where is order A-1042?"}]
first = client.chat.completions.create(model="uncensored", messages=messages, tools=tools)
msg = first.choices[0].message
if msg.tool_calls:
call = msg.tool_calls[0]
args = json.loads(call.function.arguments)
result = {"order_id": args["order_id"], "status": "shipped"} # your real lookup goes here
messages.append(msg)
messages.append({"role": "tool", "tool_call_id": call.id, "content": json.dumps(result)})
final = client.chat.completions.create(model="uncensored", messages=messages, tools=tools)
print(final.choices[0].message.content)
在執行任何具有副作用的操作之前,始終驗證參數。模型可能會產生格式錯誤或意外的值,而你的程式碼是最後的防線。
對於不使用工具的純淨結構化輸出,請使用 JSON 模式,將 response_format 設定為 {"type": "json_object"}。在提示詞中描述你想要的結構,並在 try 區塊內解析回覆,以便在回應不佳時觸發重試而非崩潰。
curl https://api.uncensoredllmhub.com/v1/chat/completions -H "Authorization: Bearer $API_KEY" -H "Content-Type: application/json" -d '{
"model": "uncensored",
"response_format": {"type": "json_object"},
"messages": [
{"role": "system", "content": "Reply with JSON: {"title": string, "tags": [string]}"},
{"role": "user", "content": "Describe a noir story set in a rainy port city."}
]
}'
需考慮的限制
完整金鑰允許 8 個並行請求與每分鐘 300 個請求。試用金鑰允許 2 個與 60 個。主體最多可達 8 MB。每個回應都包含 X-Request-Id、X-Balance-USD、X-RateLimit-Limit-Requests 與 X-RateLimit-Limit-Concurrency,這些對於記錄很有用。
當你超過限制時,API 會傳回 HTTP 429。程式碼 rate_limited 代表每分鐘請求過多,concurrency 代表同時請求過多。暫時過載也會傳回 429,並附上 Retry-After: 5。對於多用戶應用程式,請在 API 前方放置小型佇列:一個大小低於並行限制的信號量,以及一個遵循 Retry-After 的重試機制。對於將請求分散到並行函式呼叫的代理程式,請將分散數量限制在相同數量。
完整的參數列表與錯誤格式請參見 API 文件。
費用、儲值與資料處理
定價為每 1M 輸入 token $0.15,每 1M 輸出 token $0.50,從預付額度扣除。沒有訂閱制,額度永不過期,失敗或被拒絕的請求不會收費。一次對話輪次包含 1,500 個輸入和 500 個輸出 token 的成本為 0.0015 × $0.15 + 0.0005 × $0.50 = $0.000225 + $0.00025 = $0.000475,因此 $20 的額度可涵蓋約 42,000 次此類輪次。
你可以儲值任何整數金額,從 $20 到 $500。贈額為:$50 起 +5%,$100 起 +10%,$200 起 +15%。可透過信用卡(Visa、Mastercard、Apple Pay、Google Pay)或加密貨幣(TRC20 上的 USDT、Base 上的 USDC)付款。定價頁面有目前的表格。
關於資料:提示詞不會用於訓練。請閱讀隱私權政策以獲取完整內容。你仍須對使用模型所建構的內容負責,且該服務僅供合法成人使用。
