مرجع API
unbleep با OpenAI Chat Completions API صحبت میکند. اگر قبلاً OpenAI را فراخوانی کردهاید، این API را از قبل بلدید — کلاینت خود را به https://unbleep.ai/v1 اشاره دهید و کلید را عوض کنید.
شروع سریع
OpenAI SDK را نصب کنید، آدرس پایه و کلیدتان را تنظیم کنید، و یک فراخوانی انجام دهید.
from openai import OpenAI
client = OpenAI(
base_url="https://unbleep.ai/v1",
api_key="ub_live_9f2c…",
)
resp = client.chat.completions.create(
model="unbleep",
messages=[{"role": "user", "content": "Say hello."}],
)
print(resp.choices[0].message.content)
احراز هویت
هر درخواست به یک توکن Bearer در هدر Authorization نیاز دارد. کلیدها پیشوند دارند تا نشت آنها برای اسکنرهای secret آشکار باشد:
ub_live_…— پروداکشن، از اعتبار پیشپرداخت شما کسر میشود.ub_test_…— برای توسعهٔ محلی. دقیقاً مثل کلید live، با همان نرخ هر توکن و از همان اعتبار پیشپرداخت صورتحساب میشود؛ تنها تفاوت، محدودیت نرخ پایینتر بهازای هر کلید است (نگاه کنید به محدودیت نرخ). کلید test یک credential جداگانه و قابل ابطال است — نه یک ردهٔ رایگان.
Authorization: Bearer ub_live_9f2c…
کلیدها را سمت سرور نگه دارید. هرگز کلید live را در کد مرورگر یا موبایل منتشر نکنید.
مدلها
یکی از این شناسهها را بهعنوان model بفرستید. نام مستعار ساده همیشه به آخرین build اشاره میکند؛ شناسههای snapshot تاریخدار هم پذیرفته میشوند و در حال حاضر به همان build میرسند. هر شکلی که بفرستید، پاسخ شناسهٔ ساده را گزارش میکند — درخواست برای unbleep-250811 بهصورت "model": "unbleep" برمیگردد.
| مدل | نام مستعار اشاره میکند به | کانتکست | مناسب برای |
|---|---|---|---|
| unbleep | unbleep-250811 | 256K | استفادهٔ عمومی — پیشفرض |
| unbleep-high | unbleep-high-250811 | 1M | بزرگترین کارها — اسناد طولانی & کل کدبیسها |
| unbleep-mini | unbleep-mini-250811 | 32K | فراخوانیهای ارزان، سریع و پرحجم |
Chat Completions
POST /v1/chat/completions — endpoint اصلی. بدنهٔ درخواست و پاسخ با اسکیمای OpenAI مطابقت دارد.
curl https://unbleep.ai/v1/chat/completions \
-H "Authorization: Bearer ub_live_9f2c…" \
-H "Content-Type: application/json" \
-d '{
"model": "unbleep",
"messages": [
{"role": "system", "content": "You are terse."},
{"role": "user", "content": "Explain abliteration in one line."}
],
"temperature": 0.7,
"max_tokens": 256
}'
{
"id": "chatcmpl_a1b2c3",
"object": "chat.completion",
"model": "unbleep",
"choices": [{
"index": 0,
"message": { "role": "assistant", "content": "…" },
"finish_reason": "stop"
}],
"usage": { "prompt_tokens": 24, "completion_tokens": 18, "total_tokens": 42 }
}
استریم
"stream": true را تنظیم کنید تا Server-Sent Events دریافت کنید. هر رویداد یک chat.completion.chunk با یک delta است؛ استریم با یک data: [DONE] تحتاللفظی پایان مییابد.
data: {"choices":[{"delta":{"content":"Ab"}}]}
data: {"choices":[{"delta":{"content":"literation"}}]}
data: {"choices":[{"delta":{},"finish_reason":"stop"}]}
data: [DONE]
استدلال
مدلهای استدلالی پیش از پاسخ فکر میکنند. ردِ تفکر بهصورت reasoning_content کنار content معمول برمیگردد — روی message برای فراخوانی عادی، و روی delta هنگام استریم. این فیلد فقط وقتی حضور دارد که مدل واقعاً ردی تولید کرده باشد، پس آن را اختیاری در نظر بگیرید و خودِ پاسخ را از content بخوانید.
{
"index": 0,
"message": {
"role": "assistant",
"reasoning_content": "The question asks for one line, so…",
"content": "…"
},
"finish_reason": "stop"
}
توکنهای استدلال صورتحساب میشوند. ردِ تفکر خروجی تولیدشده است و با نرخ عادی خروجی مدل محاسبه میشود، چه کد شما آن فیلد را بخواند چه نخواند. یک تأمل طولانی روی یک سؤال کوتاه، یک ردیف واقعی در صورتحساب شماست.
"thinking": false را بفرستید تا استدلال خاموش شود و بودجهٔ تکمیل بهجای ردِ تفکر صرف پاسخ شود:
{
"model": "unbleep",
"messages": […],
"thinking": false
}
پیچ سیاست
وجه تمایز unbleep. پارامتر اختیاری policy تعیین میکند چه مقدار حاکمیت روی یک درخواست اجرا شود. مقدار پیشفرض آن off است.
off— خط پایهٔ بدون فیلتر (پیشفرض). هیچ امتناعی تزریق نمیشود.research— دقیقاً مثلoffپاسخ میدهد. مقدار آن روی ردیف مصرف برای گزارشگیری خودتان ثبت میشود؛ هیچ غربالگری اضافهای اعمال نمیکند.strict— متن پیام را با فهرست مسدودسازی سرویس بررسی میکند و در صورت تطابق یک خطای policy برمیگرداند. این فهرست توسط اپراتور نگهداری میشود و برای هر کسی که آن را فعال کند اعمال میشود؛ فهرست مسدودسازی بهازای هر حساب برای پیکربندی وجود ندارد.
{
"model": "unbleep",
"messages": […],
"policy": "research"
}
خطاها
خطاها از پوشش (envelope) خطای OpenAI استفاده میکنند، پس مدیریت خطای فعلی شما بدون تغییر کار میکند.
{
"error": {
"type": "invalid_request_error",
"code": "invalid_api_key",
"message": "Incorrect API key provided."
}
}
| وضعیت | معنا |
|---|---|
| 401 | کلید وجود ندارد یا نامعتبر است |
| 402 | اعتبار تمام شده — برای ادامه شارژ کنید |
| 422 | مسدودشده توسط policy: strict |
| 429 | محدودیت نرخ — کمی صبر کنید و دوباره تلاش کنید |
| 5xx | خطای بالادستی — تلاش مجدد با backoff امن است |
محدودیت نرخ
دو محدودیت مستقل، هر دو بهازای هر حساب، اعمال میشوند: نرخ درخواست و سقف همزمانی.
نرخ درخواست
60 درخواست در دقیقه بهازای هر حساب، اندازهگیریشده در یک پنجرهٔ لغزان 60 ثانیهای. محدودیت روی حساب است، نه کلید — ساختن کلیدهای اضافه توان عملیاتی بیشتری به شما نمیدهد و همهٔ کلیدهای شما از همان 60 تا استفاده میکنند. کلید test سقف پایینتری بهازای هر کلید دارد، 15 درخواست در دقیقه؛ اما همچنان در همان پنجرهٔ حساب شمرده میشود.
هر پاسخ هدرهای استاندارد را دارد تا بتوانید بدون حدس زدن، درخواستها را زمانبندی کنید. این هدرها هر پنجرهای را که به متوقف کردن شما نزدیکتر است گزارش میکنند:
x-ratelimit-limit-requests: 60
x-ratelimit-remaining-requests: 58
x-ratelimit-reset-requests: 43
x-ratelimit-reset-requests یک عدد صحیح ساده است — ثانیههای کامل تا وقتی پنجره یک جای خالی آزاد کند، بدون پسوند واحد. آن را بهعنوان عدد parse کنید، نه رشتهٔ مدتزمان.
همزمانی
حداکثر 8 درخواست همزمان در جریان بهازای هر حساب. نهمین درخواست همزمان بلافاصله با 429 و کد too_many_concurrent_requests رد میشود؛ پاسخ حاوی retry-after: 1 است. برای درخواست ردشده هیچ هزینهای محاسبه نمیشود. یک فراخوانی استریمی جای خود را تا پایان استریم نگه میدارد، پس معمولاً استریمهای طولانی هستند که شما را به سقف میرسانند.
{
"error": {
"type": "rate_limit_error",
"code": "too_many_concurrent_requests",
"message": "Too many concurrent requests for this account (limit 8)."
}
}
هر دو سقف برای حسابهای استاندارد ثابتاند — با موجودی پیشپرداخت شما بالا نمیروند. فضای بیشتری لازم دارید؟ Enterprise آنها را بالا میبرد.