لم تتم ترجمة هذا المقال إلى هذه اللغة بعد؛ تشاهد النسخة الفارسية.

متوسط

وصل کردن هر SDK یا کتابخونه‌ی سازگار با OpenAI

الگوی کلی برای وصل‌کردن هر SDK یا کتابخونه‌ای که فرمت OpenAI رو می‌فهمه — پایتون، Node، یا هر زبون دیگه‌ای.

اگه api-quickstart رو با curl امتحان کردی و حالا می‌خوای همون کار رو از داخل کد پایتون، Node، یا هر SDK دیگه‌ای که با فرمت OpenAI کار می‌کنه انجام بدی — این مقاله برای توئه. تا آخرش، یه SDK رسمی سازگار با OpenAI رو مستقیم به بنفش وصل می‌کنی، بدون این‌که چیزی از خود SDK رو دستکاری کنی.

قاعده‌ی کلی

هر SDK که رسماً از OpenAI پشتیبانی می‌کنه، یه راه برای override کردن base_url (یا اسم مشابهش) داره. همون‌جا آدرس سرویس بنفش رو بذار، api_key رو هم کلید خودت بذار — همین. بقیه‌ی SDK دقیقاً همون‌طوری کار می‌کنه که با OpenAI کار می‌کرد.

هم آدرس و هم کلید رو از صفحه‌ی «کلیدهای API» بگیر — آدرس رو از ردیف «ابزارهای سازگار با OpenAI — با /v1» تو کارت «آدرس سرویس»؛ SDKهای OpenAI خودشون فقط /chat/completions رو اضافه می‌کنن، پس /v1 باید تو خود آدرس باشه. همیشه از همون‌جا بگیر، هیچ‌وقت یه آدرس رو جایی هاردکد نکن؛ این آدرس بین محیط‌های مختلف فرق می‌کنه.

پایتون (SDK رسمی openai)

python
from openai import OpenAI

client = OpenAI(
    base_url="YOUR_SERVICE_URL",
    api_key="YOUR_API_KEY",
)

response = client.chat.completions.create(
    model="YOUR_MODEL_ID",
    messages=[{"role": "user", "content": "سلام، خودت رو معرفی کن"}],
)
print(response.choices[0].message.content)

Node / TypeScript (SDK رسمی openai)

ts
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "YOUR_SERVICE_URL",
  apiKey: "YOUR_API_KEY",
});

const response = await client.chat.completions.create({
  model: "YOUR_MODEL_ID",
  messages: [{ role: "user", content: "سلام، خودت رو معرفی کن" }],
});
console.log(response.choices[0].message.content);

YOUR_MODEL_ID رو با شناسه‌ی یکی از مدل‌های فعال عوض کن — «auto» که تو داکیومنت خودِ OpenAI دیده باشی، مخصوص چت خودِ بنفش تو مرورگره و اینجا کار نمی‌کنه. لیست زنده‌ی مدل‌های فعال:

  • Bge M3
  • Claude Haiku 4.5 — مع الاشتراك فقط — بلا سعر للدفع حسب الاستخدام
  • Claude Haiku 4.5 — حوالي ۱٬۲۵۶ تومان لكل رسالة عادية
  • Claude Opus 4.6 — مع الاشتراك فقط — بلا سعر للدفع حسب الاستخدام
  • Claude Opus 4.7 — مع الاشتراك فقط — بلا سعر للدفع حسب الاستخدام
  • Claude Opus 4.8 — مع الاشتراك فقط — بلا سعر للدفع حسب الاستخدام
  • Claude Opus 5 — حوالي ۶٬۲۷۹ تومان لكل رسالة عادية
  • Claude Opus 5.5 — حوالي ۵٬۰۲۳ تومان لكل رسالة عادية
  • Claude Sonnet 4.6 — حوالي ۳٬۷۶۷ تومان لكل رسالة عادية
  • Claude Sonnet 5 — حوالي ۲٬۵۱۲ تومان لكل رسالة عادية
  • Claude Sonnet 5.5 — حوالي ۲٬۵۱۲ تومان لكل رسالة عادية
  • Deepseek V4 Flash — حوالي ۷۱ تومان لكل رسالة عادية
  • Embed Multilingual V3
  • Gemini 3.1 Flash Lite — حوالي ۳۵۶ تومان لكل رسالة عادية
  • Gemini 3.1 Pro — حوالي ۲٬۸۲۶ تومان لكل رسالة عادية
  • Gemini 3.5 Flash — حوالي ۲٬۱۱۹ تومان لكل رسالة عادية
  • Gemma 4 26B A4b — حوالي ۸۷ تومان لكل رسالة عادية
  • Gemma 4 31B — حوالي ۱۲۰ تومان لكل رسالة عادية
  • Glm 4.7 Flash — حوالي ۹۷ تومان لكل رسالة عادية
  • Glm 5 — حوالي ۹۷۳ تومان لكل رسالة عادية
  • GPT Oss 120B — حوالي ۴۴ تومان لكل رسالة عادية
  • GPT-6 Astra — حوالي ۱۲٬۵۵۸ تومان لكل رسالة عادية
  • GPT-6 Luna — حوالي ۱۲۶ تومان لكل رسالة عادية
  • GPT-6.1 Sol — حوالي ۲٬۵۱۲ تومان لكل رسالة عادية
  • Grok 4.7 — حوالي ۱٬۸۸۴ تومان لكل رسالة عادية
  • Kimi K2 Thinking — حوالي ۶۷۵ تومان لكل رسالة عادية
  • Kimi K2.6 — حوالي ۹۰۵ تومان لكل رسالة عادية
  • Llama 3.3 70B Turbo — حوالي ۹۷ تومان لكل رسالة عادية
  • Llama 4 Scout 17B 16E — حوالي ۹۴ تومان لكل رسالة عادية
  • Mistral Large 3 — حوالي ۴۷۱ تومان لكل رسالة عادية
  • Mistral Small 3.2 24B Instruct — حوالي ۷۰ تومان لكل رسالة عادية
  • Multilingual E5 Large
  • Qwen3 235B A22b Instruct — حوالي ۱۳۰ تومان لكل رسالة عادية
  • Qwen3 Coder 480B A35b Turbo — حوالي ۲۹۸ تومان لكل رسالة عادية
  • Qwen3 Embedding 8B
  • Qwen3 Vl 30B A3b — حوالي ۱۶۷ تومان لكل رسالة عادية
  • Qwen3.5 397B A17b — حوالي ۶۸۵ تومان لكل رسالة عادية
  • Qwen3.6 35B A3b — حوالي ۱۹۷ تومان لكل رسالة عادية
  • Qwen3.8 Max — حوالي ۱٬۵۵۷ تومان لكل رسالة عادية
  • Titan Embed Text V2

⚠️ این دو نمونه هنوز مستقیم روی SDKهای واقعی اجرا و تست نشدن. ساختارشون دقیقاً همون override استانداردیه که این SDKها مستند کردن، ولی قبل از قراردادنشون تو کد production خودت، یه بار محلی امتحانشون کن. اگه جواب نگرفتی، «رفع اشکال اتصال» رو ببین.

نکته برای هر SDK دیگه

اگه از یه زبون یا کتابخونه‌ی دیگه استفاده می‌کنی که مستقیماً از OpenAI پشتیبانی نمی‌کنه ولی می‌گه «سازگار با OpenAI»، دنبال یکی از این دو الگو بگرد:

  • یه پارامتر صریح مثل base_url / baseURL / endpoint موقع ساختن کلاینت.
  • یه متغیر محیطی مثل OPENAI_BASE_URL که SDK خودش می‌خونه.

اگه هیچ‌کدوم رو نداره — یعنی آدرس OpenAI رو تو خودِ کتابخونه هاردکد کرده — نمی‌تونی وصلش کنی.

چی کار نمی‌کنه

  • SDKهای رسمی provider‌های دیگه (مثلاً SDK رسمی Anthropic) کار نمی‌کنن — اون‌ها فرمت درخواست/پاسخ متفاوتی دارن که بنفش امروز پیاده نکرده.
  • این مسیر (SDK مستقیم به gateway) هم به کیف پولت گیت شده — با یه سقف روی gateway، نه چک لحظه‌ای مثل چت. جزئیاتش تو «کنترل مصرف و هزینه» هست.
  • می‌تونی برای این SDK/پروژه یه کلید جدا بسازی (تا ده‌تا کلید فعال، هر کدوم با اسم و سقف مصرف مخصوص خودش) — از «کلیدهای API».