身份驗證
驗證由單一 API 金鑰處理。你可以在 取得 API 金鑰 頁面使用 Google 或電子郵件密碼註冊。金鑰會立即顯示,並與你的預付額度綁定。與主要供應商不同,試用期間無需月費訂閱或信用卡。所有請求請使用標頭 Authorization: Bearer YOUR_API_KEY。每個帳戶僅有一個有效憑證;產生新金鑰將使舊金鑰失效。
基本完成
向 OpenAI 相容的端點發送標準聊天補全請求。模型識別碼為 uncensored。此模型為開放權重模型,針對合法成人用途調整為無內容拒絕地回答。它不是 GPT、Claude 或其他供應商模型。此服務的基礎 URL 如下所示。
curl https://api.ornith.top/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "Write a blunt product review of a cheap VPN."}]
}'將 YOUR_API_KEY 替換為你從儀表板取得的金鑰。回應內容包含產生於 choices[0].message.content 的文字。401 錯誤表示金鑰無效,而 402 則表示預付額度已耗盡。
Python SDK
使用官方的openai Python 套件。將其指向 Ornith 基礎 URL 並提供您的 API 金鑰。這確保了與標準 OpenAI 客戶端結構的相容性。您可以將訊息作為包含role和content的字典列表傳遞。客戶端會自動處理 HTTP 請求。此方法適用於簡單的文字產生以及使用工具或 JSON 模式的更複雜互動。
from openai import OpenAI
client = OpenAI(base_url="https://api.ornith.top/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)回應物件複製了標準 OpenAI 的結構。您可以直接從回應物件存取產生的文字。此方法非常適合需要程式化存取模型輸出的後端服務或腳本。
Node SDK
安裝openai npm 套件。使用 Ornith 基礎 URL 和您的 API 金鑰初始化客戶端。請求的結構與 Python SDK 相同。使用chat.completions.create方法。這適合 JavaScript 環境,無論您是構建 Web 後端還是 CLI 工具。客戶端會處理回應的序列化和反序列化。
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.ornith.top/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);適當處理錯誤。網路錯誤或 API 錯誤將引發異常。檢查狀態碼以區分身份驗證失敗、速率限制或伺服器錯誤。回應包含與 Python SDK 相同格式的完成詳細資訊。
串流回應
在請求中設定 stream: true 以啟用串流。此設定會回傳 token 串流,讓你可以即時取得產生的內容。適用於即時使用者介面更新或逐步顯示文字。串流最後會收到一個包含總 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)迭代串流以處理每個區塊。最後一個區塊包含usage欄位。這對於帳單透明度很有用。確保您的客戶端正確處理串流,以避免大型回應的記憶體問題。
限制、錯誤與上下文
上下文視窗總計為 100,000 token(含提示詞與補全)。每次請求的最大輸出為 32,000 token(若未設定 max_tokens 則為 2,048 token)。每分鐘限 300 次請求,每支金鑰限 8 個並行請求。請求主體必須小於 8 MB。若超過速率限制,將收到 429 錯誤。針對未成年人相關內容的拒絕是硬編碼的,且始終適用。錯誤不會消耗額度。額度為預付制且永不失效。