OpenRouter یک واسط است که صدها مدل از دهها ارائهدهنده (Anthropic، Meta Llama، Qwen، Mistral، Google، OpenAI، DeepSeek، xAI، Perplexity و…) را پشت یک API قرار میدهد.
نِت اَرز این مدلها را با همان شناسهها و با پیشوند openrouter/ در اختیار شما میگذارد؛ بدون اینکه به حساب OpenRouter، کارت خارجی یا VPN نیاز داشته باشید.
اتصال مستقیم به Anthropic، xAI، Mistral، Groq و Perplexity روی درگاه باز نیست. مدلهای این شرکتها هستند، ولی شناسهشان همیشه با openrouter/ شروع میشود؛ شناسهٔ بدون پیشوند مثل claude-sonnet-4-5 یا grok-4 خطای ۴۰۴ میگیرد.
شناسهٔ مدلها
شناسهٔ هر مدل در نِت اَرز برابر است با openrouter/ + شناسهٔ همان مدل در OpenRouter:
| در OpenRouter | در نِت اَرز |
|---|---|
anthropic/claude-sonnet-4.5 | openrouter/anthropic/claude-sonnet-4.5 |
meta-llama/llama-3.3-70b-instruct | openrouter/meta-llama/llama-3.3-70b-instruct |
qwen/qwen3-235b-a22b | openrouter/qwen/qwen3-235b-a22b |
deepseek/deepseek-r1 | openrouter/deepseek/deepseek-r1 |
response = client.chat.completions.create(
model="openrouter/meta-llama/llama-3.3-70b-instruct", # همان شناسهٔ OpenRouter با پیشوند openrouter/
messages=[{"role": "user", "content": "سه مزیت مدلهای متنباز را بگویید."}],
max_tokens=300,
)
print(response.choices[0].message.content)
پیشوند openrouter/ لازم است تا مدلی که هم مستقیم و هم از راه OpenRouter عرضه میشود (مثلاً GPT-4o) با هم اشتباه نشود. مدلهای مستقیم معمولاً سریعترند؛ OpenRouter تنوع بیشتری دارد.
نام مستعار بدون پیشوند
اگر شناسه را بدون openrouter/ بفرستید و مدل مستقیمی با آن نام نداشته باشیم، همان مدل OpenRouter پیدا میشود. برای کدی که مدت طولانی میماند، شکل کامل را بنویسید تا اگر روزی همان مدل را مستقیم وصل کردیم، رفتار کدتان عوض نشود.
# این سه خط به یک مدل میرسند
model="openrouter/anthropic/claude-sonnet-4.5" # شکل کامل، توصیهشده
model="anthropic/claude-sonnet-4.5" # بدون پیشوند — نام مستعار همان مدل
model="openrouter/x-ai/grok-4.6" # همین قاعده برای بقیهٔ ارائهدهندگان
مدلهای :free برداشته شدند
مدلهایی که شناسهشان به :free ختم میشد از ۱۶ شهریور ۱۴۰۵ روی درگاه نیستند. ظرفیت آنها متعلق به ما نبود: OpenRouter یک سهمیهٔ مشترک برای کل حساب میگذارد و در ساعتهای شلوغ درخواستها وسط کار رد میشدند، که از بیرون شبیه خرابی سرویس ما دیده میشد. ترجیح دادیم چیزی را که پایدار نیست نفروشیم.
اگر کدتان هنوز شناسهای با پسوند :free میفرستد، خطای ۴۰۴ با کد model_not_found میگیرد. همان شناسه را بدون پسوند بفرستید؛ نسخهٔ پولیِ همان مدل است. کمهزینهترین گزینهها را در فهرست مدلها با مرتبسازی بر اساس قیمت پیدا میکنید.
قیمتگذاری
- قیمت مدلهای OpenRouter از قیمت زندهٔ خود OpenRouter همگامسازی میشود و در فهرست مدلها و
GET /modelsمنتشر است. - OpenRouter برای هر درخواست هزینهٔ دقیق را گزارش میکند؛ نِت اَرز همان مقدار را مبنای صورتحساب قرار میدهد. بنابراین محاسبه دقیقتر از برآورد توکنی است.
- سایر قواعد (رزرو اعتبار پیش از درخواست، رایگان بودن درخواستهای ناموفق، تسویه با مصرف واقعی) مثل بقیهٔ مدلهاست. صورتحساب
فهرست برنامهنویسانه
# فقط مدلهای OpenRouter را از فهرست عمومی جدا کنید
import requests
models = requests.get("https://netarz.ir/api/ai/v1/models?type=chat").json()["data"]
openrouter = [m for m in models if m["owned_by"] == "openrouter"]
print(len(openrouter), "مدل از طریق OpenRouter")
نکات
- استریم، ابزارها، JSON و بینایی برای مدلهایی که خودشان پشتیبانی میکنند کار میکند؛ کلیدهای
capabilitiesرا ببینید. - فیلدهای خاص OpenRouter (مثل
providerبرای انتخاب ارائهدهندهٔ زیرین یاtransforms) بههمان شکل به OpenRouter عبور داده میشوند. - فیلد
modelدر پاسخ همیشه شناسهٔ نِت اَرز است؛ نام ارائهدهندهٔ زیرین OpenRouter از پاسخ حذف میشود. - اگر مدلی در OpenRouter از رده خارج شود، در همگامسازی بعدی در نِت اَرز هم غیرفعال میشود و
model_discontinuedمیگیرید؛ فهرست را دورهای بازخوانی کنید.