مدلهای cloud کاتالوگ را به Jan اضافه کنید بدون ترک local-first.
Updated 2026-07-29
Jan بهطراحی مدلها را روی دستگاه شما اجرا میکند، و تنظیمات Model Providers آن هر endpoint سازگار با OpenAI را برای روزهایی که محلی کافی نیست میپذیرد: یک provider اضافه کنید، Base URL را روی https://api.apisrouter.com/v1 تنظیم کنید، یک کلید بچسبانید، و id های Claude، GPT، Gemini، و DeepSeek به صف محلی شما میپیوندند.
پاسخ سریع: یک provider در Settings.
تنظیمات Jan را باز کنید و به Model Providers بروید. روی کنترل بهعلاوه کنار فهرست provider کلیک کنید تا یک provider سفارشی اضافه کنید، یک نام به آن بدهید (APIsRouter)، و روی build های اخیر وقتی دیالوگ میپرسد فرمت OpenAI API را انتخاب کنید (Jan v0.8.1 یک انتخابگر فرمت OpenAI-یا-Anthropic اضافه کرد؛ برای یک gateway، OpenAI را انتخاب کنید). سپس دو فیلدی که اهمیت دارند را پر کنید: Base URL برابر https://api.apisrouter.com/v1 و کلید API خود. مدلهایی که میخواهید را با id اضافه کنید: مستندات Jan صریحاند که property id باید با نام مدلی که endpoint سرویس میدهد مطابقت داشته باشد، پس id ها را از فهرست کاتالوگ کپی کنید (claude-sonnet-4-6، gpt-5.4-mini، gemini-3.5-flash) بهجای تایپ از حافظه. ذخیره کنید، و id ها در انتخابگر مدل کنار هر چیزی که محلی اجرا میکنید ظاهر میشوند. برچسبها بین release ها جابهجا شدهاند (نسخههای قدیمیتر این ناحیه را Remote Engines مینامیدند)، پس provider، فرمت، URL، کلید، مدلها را اسکلت پایدار در نظر بگیرید.
Name: APIsRouter
API Format: OpenAI (v0.8.1+ selector)
Base URL: https://api.apisrouter.com/v1
API Key: sk-YOUR-APISROUTER-KEY
Models: add ids that match the endpoint, e.g.
claude-sonnet-4-6, gpt-5.4-mini, gemini-3.5-flashJan چطور با provider های راهدور رفتار میکند.
Jan (menloresearch در GitHub، حدود ۴۴ هزار ستاره) کلاینت desktop local-first است: مدلها روی دستگاه شما دانلود میشوند، از طریق llama.cpp اجرا میشوند، و آفلاین کار میکنند، در حالی که خود اپ حتی سرور سازگار با OpenAI خودش را در http://127.0.0.1:1337/v1 برای ابزارهای دیگر افشا میکند. provider های راهدور لِین دوم عمدی هستند، برای مدلهایی که خیلی بزرگاند تا محلی اجرا شوند یا وظایفی که کیفیت frontier را کسب میکنند. یک provider سفارشی در فرمت OpenAI یک توصیف endpoint ساده است: base URL، کلید، id های مدل اعلامشده. مکالمات در برابر آن id ها بهعنوان درخواستهای chat-completions استاندارد با id بهعنوان رشته model خارج میشوند، پس یک gateway چند-vendor دقیقاً به یک entry نیاز دارد. Claude برای نوشتن دقیق، DeepSeek برای خلاصهسازی حجمی، Gemini برای سرعت، یک کلید پشت همه آنها. تناسب فلسفی بهتر از چیزی است که ابتدا بهنظر میرسد. کاربران local-first تمایل دارند درباره آنچه دستگاه را ترک میکند عمدی باشند، و یک gateway لِین راهدور را به همان اندازه عمدی نگه میدارد: یک endpoint برای firewall، یک usage log برای خواندن، یک موجودی که فقط وقتی حرکت میکند که شما انتخاب کردهاید چیزی را بیرون بفرستید. هیچچیز درباره لِین محلی تغییر نمیکند؛ مدلهای دانلودشده شما دقیقاً مثل قبل آفلاین کار میکنند.
اعلام مدلها: قرارداد id.
Jan کاتالوگ یک endpoint سفارشی را برای شما fetch نمیکند؛ مدلهایی که اعلام میکنید همان مدلهایی هستند که میگیرید، و id قرارداد است. املای معتبر از فهرست /v1/models گیتوی میآید، شامل پسوندهای نسخه. یک id اعلامشده که از فهرست منحرف شود فقط وقتی آن مدل انتخاب شود خطاهای not-found تولید میکند، که مثل یک provider ناپایدار خوانده میشود تا وقتی رشتهها را مقایسه کنید. عمدی اعلام کنید. یک انتخابگر local-first وقتی ردیفهای راهدور کم و هدفمند باشند بهترین کار را میکند: یک id سریع برای نوبتهای راهدور روزمره (gpt-5.4-mini یا claude-haiku-4-5-20251001)، یک id frontier برای کاری که ترک دستگاه را توجیه میکند (claude-sonnet-4-6)، و هر متخصصی که workload شما کسب میکند (deepseek-v4-flash برای خلاصههای چندزبانه بلند، gemini-3.5-flash وقتی latency ویژگی است). اضافهکردن هر ردیف بعداً آسان است؛ یک کاتالوگ چسباندهشده نویزی است که روزانه از آن اسکرول میکنید. اگر همچنین از سرور API محلی Jan برای سرویسدهی به ابزارهای دیگر استفاده میکنید، مدل ذهنی را صاف نگه دارید: آن سرور یعنی Jan در حال provider بودن در 127.0.0.1:1337/v1؛ entry provider سفارشی یعنی Jan در حال client بودن. این دو مستقلاند، و پیکربندی یکی هرگز روی دیگری اثر نمیگذارد.
curl -s https://api.apisrouter.com/v1/models \
-H "Authorization: Bearer $APISROUTER_API_KEY" | head -50
# declare these ids verbatim in the provider's model listانتخاب اینکه کدام مکالمات دستگاه را ترک میکنند.
چون usage راهدور پیشپرداخت و اندازهگیریشده به ازای هر کلید است، هزینه لِین راهدور عددی است که میخوانید، نه یک اشتراک که حدس میزنید. یک ماه از تقسیم واقعی خود را اجرا کنید و usage log دقیقاً میگوید ترک دستگاه چقدر هزینه دارد، به ازای هر مدل، هر روز.
- نوبتهای راهدور روزمره، سؤالات سریع، بازنویسیها، ترجمهها، متعلق به tier سریعاند: gpt-5.4-mini و claude-haiku-4-5-20251001 سریع پاسخ میدهند و موجودی را تقریباً بیحرکت نگه میدارند.
- claude-sonnet-4-6 ارتقا برای کاری است که یک مدل محلی بهوضوح نمیتواند حمل کند: پیشنویس دقیق بلند، بازبینی ظریف کد، تحلیلی که فوروارد خواهید کرد.
- gemini-3.5-flash جایگاه خود را روی latency کسب میکند؛ برای نوبتهای تعاملی کوتاه نزدیکترین احساس به پاسخدهی یک مدل محلی را دارد.
- deepseek-v4-flash انتخاب حجمی برای خلاصهسازی اسناد بلندی است که به یک مدل محلی کوچک نمیدهید.
- مطالب خصوصی را کاملاً روی مدلهای محلی نگه دارید؛ تقسیم بین لِینها همان نکته اصلی اجرای Jan از ابتدا است.
پرداخت بر اساس مصرف · پایینتر از قیمت رسمی
Selected models are priced below official list prices. Exact input, output, cache, and per-request prices are shown for each model.
| مدل | قیمت رسمی | قیمت ما |
|---|---|---|
| Claude Haiku 4.5 20251001 | $1.00 / $5.00 per M | $0.80 / $4.00 per M |
| Claude Sonnet 4.6 | $3.00 / $15.00 per M | $2.40 / $12.00 per M |
| GPT-5.4 mini | $0.75 / $4.50 per M | $0.60 / $3.60 per M |
| Gemini 3.5 Flash | $1.50 / $9.00 per M | $1.20 / $7.20 per M |
| DeepSeek V4 Flash | $0.14 / $0.28 per M | $0.10 / $0.30 per M |
حالتهای شکست مختص Jan.
خطاهای not-found روی یک مدل خاص همان قرارداد id هستند: id اعلامشده با املای endpoint مطابقت ندارد. با خروجی /v1/models کاراکتر به کاراکتر مقایسه کنید. شکستهای authentication روی هر درخواست فیلد کلید هستند. یک provider که ذخیره میشود اما هرگز پاسخ نمیدهد معمولاً مشکل Base URL دارد: پسوند /v1 باید حاضر باشد، چون Jan مسیرهایی مثل /chat/completions را به base ای که میدهید اضافه میکند، و یک segment دوتایی یا گمشده 404 میدهد. اگر provider روی یک build قدیمیتر ساخته شده، فرمت API را چک کنید: v0.8.1 انتخابگر OpenAI-یا-Anthropic را معرفی کرد، و یک entry gateway که تصادفاً روی فرمت Anthropic تنظیم شده به یک endpoint /v1/chat/completions گویش اشتباه صحبت میکند. و بهخاطر بسپارید کدام لِین را دیباگ میکنید. شکستهای مدل محلی (VRAM، quantization، تنظیمات llama.cpp) و شکستهای راهدور (URL، کلید، id) یک پنجره چت را به اشتراک میگذارند اما هیچچیز دیگر را نه؛ انتخابگر مدل نشان میدهد یک مکالمه شکستخورده به کدام لِین تعلق دارد قبل از اینکه رشته اشتباه را بکشید.
چه کسانی یک لِین gateway به Jan اضافه میکنند.
- کاربران local-first که گاهی به کیفیت frontier نیاز دارند و میخواهند آن لِین گاهبهگاه روی یک موجودی پیشپرداخت باشد نه اشتراک vendor.
- توسعهدهندگانی روی دستگاههایی که نمیتوانند مدلهای محلی بزرگ را خوب اجرا کنند، از Jan بهعنوان interface و gateway برای کار سنگین استفاده میکنند.
- کاربران عمدی-حریمخصوصی که میخواهند دقیقاً یک endpoint راهدور برای استدلال، firewall، و audit داشته باشند، بهجای یکی به ازای هر vendor.
- افرادی که خروجی محلی در برابر cloud را روی وظایف واقعی مقایسه میکنند، جایی که کاندیدهای راهدور ردیفهای اعلامشدهاند، نه حسابهای جدید.
- توسعهدهندگان بدون دسترسی به صورتحساب یک vendor خاص. دسترسی مبتنی بر شارژ بدون الزام کارت وابستگی ثبتنام هر-provider را حذف میکند.
endpoint را تأیید کنید و اولین نوبت راهدور را عیبیابی کنید.
ابتدا فهرست مدلها و یک chat completion را curl کنید؛ با موفقیت هر دو، هرچه باقی مانده در entry provider است. این همچنین املای دقیق id هایی که باید اعلام کنید را به شما میدهد. داخل Jan، یک پیام کوتاه روی id راهدور سریع بفرستید. خطاهای authentication کلید هستند؛ not-found همان id است؛ سکوت یا 404 شکل Base URL است. اگر لِین راهدور کار میکند اما روی id frontier کند احساس میشود، آن latency مدل است نه یک مشکل پیکربندی؛ مدلهای استدلال روی نوبتهای بلند وقت میگذارند. وقتی نوبتهای راهدور جاری شوند، کنسول APIsRouter مدل، شمارش token، و هزینه هر-درخواست را نشان میدهد. برای یک کاربر local-first این log خواندنی بهطور غیرمعمول رضایتبخش است: رکورد کامل هر چیزی است که تا بهحال دستگاه را ترک کرده، به ازای هر مدل، هر روز، با لِین محلی که دقیقاً هیچچیزی به آن کمک نمیکند.
curl -s https://api.apisrouter.com/v1/chat/completions \
-H "Authorization: Bearer $APISROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-5.4-mini",
"messages":[{"role":"user","content":"ping"}]}'پرسشهای پرتکرار
چطور یک provider سفارشی سازگار با OpenAI به Jan اضافه کنم؟
Settings، Model Providers، سپس کنترل بهعلاوه برای اضافهکردن یک provider. آن را نامگذاری کنید، فرمت OpenAI API را روی build هایی که میپرسند انتخاب کنید (v0.8.1+)، Base URL برابر https://api.apisrouter.com/v1 تنظیم کنید، کلید خود را بچسبانید، و id های مدلی که با فهرست endpoint مطابقت دارند را اعلام کنید.
چرا مدل اعلامشده من not-found برمیگرداند؟
Jan id اعلامشده را عیناً بهعنوان رشته model میفرستد، و مستنداتش الزام میکند id دقیقاً با نام مدل endpoint مطابقت داشته باشد. فهرست /v1/models را بکشید و املا را کپی کنید، شامل پسوندهای نسخه، بهجای تایپ id ها از حافظه.
آیا اضافهکردن یک provider راهدور نحوه کار مدلهای محلی را تغییر میدهد؟
خیر. مدلهای محلی همچنان روی دستگاه از طریق llama.cpp اجرا میشوند، شامل آفلاین. entry provider یک لِین راهدور جدا به انتخابگر اضافه میکند، و مکالمات فقط وقتی یک id راهدور انتخاب کنید شبکه را لمس میکنند.
آیا Base URL باید شامل /v1 باشد؟
بله: https://api.apisrouter.com/v1. Jan مسیرهایی مثل /chat/completions را به base ای که پیکربندی میکنید اضافه میکند، پس /v1 گمشده 404 میدهد و یک /v1 دوتایی هم همینطور. اگر درخواستها شکست میخورند، قبل از تغییر چیز دیگری URL ترکیبشده را در خطا بخوانید.
آیا Jan میتواند Claude و Gemini را از طریق یک entry provider برساند؟
بله. در فرمت OpenAI id مدل بهعنوان رشته ساده سفر میکند، پس claude-sonnet-4-6، gemini-3.5-flash، gpt-5.4-mini، و deepseek-v4-flash همه میتوانند زیر یک entry اعلام شوند، از طریق یک کلید صورتحساب شوند، و به ازای هر مکالمه سوییچ شوند.
آیا این همان سرور API محلی Jan است؟
خیر. سرور محلی در 127.0.0.1:1337/v1 یعنی Jan در حال سرویسدهی مدلهای محلی خودش به ابزارهای دیگر. entry provider سفارشی یعنی Jan در حال مصرف یک endpoint راهدور. آنها ویژگیهای مستقلی هستند که اتفاقاً فرمت wire یکسان OpenAI را به اشتراک میگذارند.