شروع سریع: اولین درخواست
ابتدا کلاینت خود را به URL پایه ما اشاره دهید. از https://api.grockapi.com/v1 و کلید API خود را در هدر تنظیم کنید. شناسه مدل همیشه uncensored. با هر SDK سازگار با OpenAI کار میکند.
احراز هویت به یک توکن Bearer معتبر متکی است. آن را به عنوان Authorization: Bearer YOUR_API_KEY. اگر کلید موجود نباشد یا نامعتبر باشد، بلافاصله خطای 401 دریافت میکنید.
اولین فراخوانی خود را برای آزمایش اتصال ارسال کنید. بدنه درخواست باید شامل نام مدل و آرایهای از پیامها باشد.
پارامترها و حالتهای پشتیبانیشده
رفتار تولید را با استفاده از پارامترهای استاندارد پیکربندی کنید. میتوانید دما را برای خلاقیت یا top_p را برای نمونهگیری هستهای تنظیم کنید. از پارامتر stop برای تعریف دنبالههای خاصی که تولید را متوقف میکنند، استفاده کنید.
seed را برای خروجیهای قطعی در هنگام اشکالزدایی تنظیم کنید. جریمههای حضور و فراوانی به کاهش تکرار کمک میکنند. مدل تا 100,000 توکن را در پنجرهی زمینه پشتیبانی میکند.
حداکثر خروجی در هر درخواست به ۱۶,۰۰۰ توکن محدود است. max_tokens را بدون تنظیم بگذارید تا از محدودیت خروجی پیشفرض ۲,۰۴۴ استفاده کنید. خطاها و رد شدنها اعتبار مصرف نمیکنند.
استریمینگ و استفاده از توکن
استریمینگ را با تنظیم stream: true. API قطعات را از طریق رویدادهای ارسالی سرور (SSE) برمیگرداند. هر قطعه حاوی محتوای ناقص و متاداده است.
جزئیات مصرف توکن در قطعه نهایی ظاهر میشود. این به شما امکان میدهد هزینهها را به صورت بلادرنگ ردیابی کنید. قطعه نهایی شامل آمار کامل مصرف برای درخواست است.
بسته شدن جریان (stream) را به درستی مدیریت کنید تا از نشت منابع جلوگیری شود. همیشه قطعه نهایی را پردازش کنید تا دادههای دقیق صورتحساب دریافت شود.
Function Calling (Tools)
ابزارها را در بدنه درخواست خود تعریف کنید. نام ابزارها، توضیحات و طرحواره پارامترها را مشخص کنید. مدل در صورت لزوم با فراخوانی ابزار پاسخ میدهد.
از پارامتر tool_choice برای اجبار یا اجازه رفتارهای خاص استفاده کنید. میتوانید آن را روی auto، required یا شناسههای ابزار خاص تنظیم کنید.
فراخوانهای ابزار را در منطق برنامه خود پردازش کنید. خروجی ابزار را برای ادامه مکالمه به مدل بازگردانید. این امکان ایجاد جریانهای کاری پیچیده چندمرحلهای بدون پارسینگ خارجی را فراهم میکند.
حالت JSON و محدودیتها
خروجی ساختاریافته را با تنظیم response_format به json_object. مدل خروجی JSON را بدون بلوکهای کد مارکداون برمیگرداند.
این حالت برای تجزیه دادهها به برنامهها ایدهآل است. برای بهبود دقت، مطمئن شوید که طرحواره (schema) شما واضح است. ساختارهای JSON نامعتبر ممکن است باعث خطاهای تجزیه در کلاینت شما شوند.
حالت JSON را با کنترلهای دما برای فرمتدهی یکسان ترکیب کنید. از دنبالههای توقف (stop sequences) برای جلوگیری از کاراکترهای اضافی بعد از آکولاد بسته استفاده کنید.
محدودیتهای نرخ و سهمیهها
هر کلید API محدود به ۳۰۰ درخواست در دقیقه است. میتوانید تا ۸ درخواست همزمان بهطور همزمان اجرا کنید. حداکثر اندازه بدنه درخواست ۸ مگابایت است.
خطای ۴۲۹ نشان میدهد که به محدودیت نرخ دسترسی پیدا کردهاید. قبل از تلاش مجدد صبر کنید یا همزمانی خود را کاهش دهید. یک کلید فعال برای هر حساب وجود دارد؛ ایجاد کلید جدید، کلید قبلی را جایگزین میکند.
مصرف خود را از طریق آخرین قطعه استریم یا هدرهای پاسخ مانیتور کنید. خطاهایی مانند ۴۰۲ (عدم اعتبار) یا ۴۰۱ (کلید نامعتبر) رایگان هستند و در سهمیه شما حساب نمیشوند.
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"}]
}'پایتون
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)