快速入門:第一次請求
首先將您的客戶端指向我們的基礎 URL。使用 https://api.grockapi.com/v1 並將您的 API 金鑰設定在標頭中。模型標識符始終為 uncensored. 此架構可與任何 OpenAI 相容的 SDK 配合使用。
驗證需要有效的 Bearer 令牌。將其作為 Authorization: Bearer YOUR_API_KEY. 如果金鑰缺失或無效,您會立即收到 401 錯誤。
進行您的第一次呼叫以測試連線。請求主體必須包含模型名稱和 messages 陣列。
支援的參數與模式
使用標準參數配置生成行為。您可以調整 temperature 以控制創意,或使用 top_p 進行核採樣。使用 stop 參數定義特定的終止序列。
設定 seed 以在除錯期間獲得確定性輸出。Presence 和 frequency 懲罰有助於減少重複。該模型支援上下文視窗中高達 100,000 個 token。
最大輸出上限為每次請求 16,000 個 token。若未設定 max_tokens,將使用預設的 2,048 輸出限制。錯誤與拒絕回應不會消耗信用額度。
串流與 token 使用量
在請求主體中將 stream: true。API 透過伺服器發送事件(SSE)回傳資料片段。每個片段包含部分內容與中繼資料。
Token 用量詳情出現在最後一個數據塊中。這允許您實時準確地追蹤成本。最後一個數據塊包含該請求的完整用量統計。
妥善處理串流結束以避免資源洩漏。請務必處理最後一個區塊以取得準確的計費資料。
函式呼叫(工具)
在請求主體中定義工具。指定工具名稱、描述和參數架構。模型會在適當時回應工具呼叫。
使用 tool_choice 參數來強制或允許特定行為。您可以將其設定為 auto、required 或特定的工具 ID。
處理應用程式邏輯中的工具呼叫。將工具輸出回傳給模型以繼續對話。這使得複雜的多步驟工作流程無需外部解析即可實現。
JSON 模式與限制條件
透過將 response_format 設定為 json_object. 模型將返回不含 Markdown 程式碼區塊的有效 JSON。
此模式適合將數據解析到應用程式中。確保您的 schema 清晰以提高準確性。無效的 JSON 結構可能會導致客戶端解析錯誤。
將 JSON 模式與溫度控制結合,以獲得一致的格式。使用停止序列以防止在閉合大括號之後出現多餘字元。
速率限制與配額
每個 API 金鑰的速率限制為每分鐘 300 次請求。您最多可同時進行 8 個並行請求。最大請求主體大小為 8 MB。
429 錯誤表示您已超過速率限制。請在重試前等待或降低並發性。每個帳戶僅存在一個有效金鑰;生成新金鑰將替換舊金鑰。
您可以透過最終的串流區塊或回應標頭來監控您的使用情況。402(無信用額度)或 401(金鑰無效)等錯誤是免費的,不會計入您的配額。
cURL
curl https://api.grockapi.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "calculate the sum of two and three"}]
}'Python
from openai import OpenAI
client = OpenAI(base_url="https://api.grockapi.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)Node.js
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.grockapi.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);串流
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)