پرش به محتوا

سازگار با OpenAI

یک API سازگار با OpenAI، جایگزین مستقیم

SDK مربوط به OpenAI و کدی که داری را نگه دار. سه مقدار را عوض کن، یعنی آدرس پایه، کلید و مدل، و تماس‌های chat completions تو روی دو مدل بدون سانسور اجرا می‌شود که هیچ‌چیزی نگه نمی‌دارند. در ادامه: تغییر در Python، JavaScript و curl، و فهرست دقیق آنچه پشتیبانی می‌شود.

بررسی‌شده در ۷ آبان ۱۴۰۵

مقداری که در کدت عوض می‌کنی
3
فیلد اختیاری درخواست که عبور داده می‌شود
15
مسیر، از جمله chat completions
4
برای آزمایش با sk-nokeep-test
$0

سه مقدار

آدرس پایه
https://nokeep.ai/v1
کلید API
sk-nokeep-test (free) or your sk-nokeep-… key
مدل
deepseek-v4.1-flash-uncensored

SDKهای رسمی OpenAI آدرس پایه و کلید را از متغیرهای محیطی می‌خوانند، پس برای خیلی از پروژه‌ها این تغییر اصلاً به تغییر کد نیاز ندارد:

Shell
export OPENAI_BASE_URL="https://nokeep.ai/v1"
export OPENAI_API_KEY="sk-nokeep-…"

بعد نام مدل را در جایی که صدا می‌زنی عوض کن. بقیهٔ خط‌ها همان می‌مانند.

در Python، JavaScript و curl

import os
from openai import OpenAI

client = OpenAI(
    base_url="https://nokeep.ai/v1",
    api_key=os.environ["NOKEEP_API_KEY"],
)

reply = client.chat.completions.create(
    model="deepseek-v4.1-flash-uncensored",
    messages=[{"role": "user", "content": "Write a haiku about moving house."}],
)
print(reply.choices[0].message.content)

استریم، ابزارها، خروجی JSON و تصاویر همان‌طور کار می‌کنند که با قالب خود OpenAI کار می‌کنند. کتابخانه‌ها و چارچوب‌هایی که روی SDK مربوط به OpenAI ساخته شده‌اند، همان آدرس پایه و کلید را می‌گیرند. اول همین‌جا تماس را امتحان کن:

همین‌جا امتحان کن، رایگان

این یک درخواست واقعی به API با کلید آزمایشی می‌فرستد. یک خط ثابت برمی‌گرداند و هیچ هزینه‌ای ندارد.

چه چیزهایی پشتیبانی می‌شود

قابلیتپشتیبانی
POST /v1/chat/completions، کامل یا استریمبله، هر دو مدل
GET /v1/models و GET /v1/models/{id}بله، با طول زمینه، طولانی‌ترین پاسخ و قیمت هر توکن
نقش‌ها: system، developer، user، assistant، toolبله
فراخوانی ابزار: tools، tool_choiceبله. روی GLM، tool_choice فقط auto یا none را می‌پذیرد.
reasoning_effortDeepSeek: none، low، high، max. GLM: low، high.
تصاویر به‌صورت بخش‌های image_url، لینک یا data URLdeepseek-v4.1-flash-uncensored، تا 10 تصویر در هر درخواست
response_format، temperature، top_p، stop، seed، جریمه‌هاdeepseek-v4.1-flash-uncensored
stream_options.include_usage، max_tokens، max_completion_tokensبله
ورودی کش‌شده در usage.prompt_tokens_details.cached_tokensبله، با قیمت کش‌شده صورتحساب می‌شود

هر فیلد، مدل به مدل: Chat completions.

چه چیزهایی پشتیبانی نمی‌شود

پشتیبانی نمی‌شودآنچه دریافت می‌کنی
سایر مسیرها: embeddings، تصاویر، صوت، فایل‌ها، batch، moderations، APIهای Responses و Assistants، legacy completions404 not_found، با نام چهار مسیری که وجود دارد
n غیر از 1400 unsupported_n
یک reasoning_effort که مدل نمی‌پذیرد400 invalid_reasoning_effort، با نام مقادیری که می‌پذیرد
یک تابع نام‌گذاری‌شده یا required به‌عنوان tool_choice روی glm-5.3-flash-uncensored400 unsupported_tool_choice
تصاویر به glm-5.3-flash-uncensored؛ بخش‌های صوتی یا ویدیویی به هر دو مدل400 unsupported_input، با نام مدلی که تصویر می‌خواند
بیش از 10 تصویر، یا بیش از 2,000 پیام400 too_many_images، 400 invalid_messages
فیلدهایی که هیچ‌کدام از مدل‌ها نمی‌پذیرند، مثل logprobs، logit_bias، user یا storeحذف می‌شوند و در هدر x-nokeep-ignored نام برده می‌شوند

هیچ‌چیز پشتیبانی‌نشده حدس زده یا بی‌صدا تغییر داده نمی‌شود: یا درخواست با کدی رد می‌شود، یا فیلدهای استفاده‌نشده در یک هدر نام برده می‌شوند. هر کد و راه رفعش: خطاها.

تفاوت‌های کوچکی که باید بدانی

  • usage.nokeep_credits می‌گوید تماس چقدر هزینه داشته، و هدرهای x-nokeep-credits و x-nokeep-balance همین را برای کل پاسخ می‌گویند.
  • صورتحساب از اعتبار پیش‌پرداخت است: هر 1,000 اعتبار برابر 1 دلار است، از 5 دلار شروع می‌شود، و هرگز منقضی نمی‌شود. تماس ردشده هزینه‌ای ندارد.
  • محدودیت نرخ: 120 درخواست در دقیقه برای هر کلید. یک 429 همراه Retry-After می‌آید.
  • میزبان GLM در ساعات شلوغ ممکن است مشغول باشد؛ تماس مشغول با 503 busy و Retry-After: 5 جواب می‌دهد و هزینه‌ای ندارد.

پرسش‌ها

برای تغییر، باید کدم را عوض کنم؟

فقط آدرس پایه، کلید و نام مدل. با SDKهای رسمی، دو مورد اول از OPENAI_BASE_URL و OPENAI_API_KEY در محیط می‌آیند.

با برنامه‌هایی که یک endpoint سفارشی OpenAI می‌گیرند کار می‌کند؟

بله. هر برنامه‌ای که تنظیم endpoint سازگار با OpenAI یا سفارشی داشته باشد کار می‌کند. راهنماها: SillyTavern، Open WebUI، و عامل‌های برنامه‌نویسی در صفحهٔ عامل‌های برنامه‌نویسی.

کدام مدل‌های OpenAI را می‌توانم صدا بزنم؟

هیچ‌کدام: قالب، قالب OpenAI است، ولی مدل‌ها deepseek-v4.1-flash-uncensored و glm-5.3-flash-uncensored هستند. GET /v1/models همهٔ شناسه‌ها را فهرست می‌کند.

آیا endpoint برای embeddings وجود دارد؟

هنوز نه. API، chat completions، فهرست مدل‌ها و یک مسیر وضعیت را ارائه می‌دهد. مسیرهای تازه در تغییرات ظاهر می‌شوند.

فیلدهایی که پشتیبانی نمی‌کنی چه می‌شوند؟

حذف می‌شوند و در هدر x-nokeep-ignored نام برده می‌شوند، تا دقیقاً ببینی چه چیزی استفاده نشده. مقادیری که معنای درخواست را عوض می‌کنند، مثل n بالاتر از 1، به‌جایش با 400 رد می‌شوند.