快速入门:第一次请求
首先将客户端指向我们的基础 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 个令牌。
最大输出限制为每次请求 16,000 个 token。不设置 max_tokens 将使用默认的 2,048 输出限制。错误和拒绝不会消耗余额。
流式传输与 token 使用情况
通过将 stream: trueAPI 通过服务器发送事件(SSE)返回数据块。每个数据块包含部分内容和元数据。
Token 用量详情出现在最后一个 chunk 中。这使您能够实时准确追踪成本。最后一个 chunk 包含该请求的完整用量统计。
正确处理流关闭以避免资源泄漏。始终处理最后一个 chunk 以获取准确的计费数据。
函数调用(工具)
在请求体中定义工具。指定工具名称、描述和参数模式。模型在适当时返回工具调用。
使用 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)