驗證並設定 Base URL
您的 API 金鑰可立即存取聊天完成端點。透過儀表板的 Google 或電子郵件生成金鑰,並將其貼到您的環境變數中。基礎 URL 為 https://api.cheapaiapikeys.com/v1 該模型與任何標準 OpenAI SDK 客戶端配合使用。
- 設定
OPENAI_API_KEY您的生成字串。 - 覆寫
base_url指向我們的託管伺服器。 - 通過調用驗證連接性
GET /v1/models列出可用的模型。
curl https://api.cheapaiapikeys.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "List three common regex patterns for validating email addresses"}]
}'
發送您的第一個聊天完成請求
使用標準聊天完成結構發送文字輸入並接收生成的文字。我們的單一 uncensored 模型處理請求時不會拒絕合法的成人或爭議性話題。您可以調整參數如 temperature 和 top_p 用於控制隨機性。
from openai import OpenAI
client = OpenAI(base_url="https://api.cheapaiapikeys.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)
啟用串流並處理 SSE 事件
透過設定 stream: true 在你的請求中。伺服器返回你必須增量解析的伺服器發送的事件(SSE)。Token 用量詳細資訊出現在串流的最後一個區塊中。此方法能降低長回應的感知延遲。
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.cheapaiapikeys.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);
使用函式呼叫與 JSON 模式
在請求主體中定義工具以啟用結構化輸出或外部函式執行。使用 response_format: {type: "json_object"} 以強制執行嚴格的 JSON 合規性。模型支援 tool_choice 用於精確控制它調用的函數。這確保了應用程式邏輯的可靠解析。
了解 Token 限制與計費方式
定價透明,輸入 token 每百萬個 $0.15,輸出 token 每百萬個 $0.50。錯誤和拒絕不會消耗額度。上下文視窗總共支援 100,000 個 token。超過限制的請求會返回 429 速率限制錯誤。請確保您的載體大小低於 8 MB,以避免載體錯誤。
處理錯誤與邊緣情況
常見錯誤包括 401(無效金鑰)和 402(餘額不足)。429 狀態表示您已超過每分鐘 300 次請求的限制。在速率限制後重試時請使用指數退避。請檢查 error JSON 回應中的物件以獲取特定詳細資訊。不發給退款,因此請密切監控您的使用情況。
串流
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)