Local-first না ছেড়েই Jan-এ cloud catalog model যোগ করুন।

Updated 2026-07-29

Jan design অনুযায়ী আপনার machine-এ model চালায়, এবং যেদিন local যথেষ্ট না সেদিনের জন্য এর Model Providers setting যেকোনো OpenAI-compatible endpoint accept করে: একটা provider যোগ করুন, Base URL-কে https://api.apisrouter.com/v1-এ সেট করুন, এক key paste করুন, এবং Claude, GPT, Gemini, এবং DeepSeek id আপনার local lineup-এ যোগ দেয়।

দ্রুত উত্তর: Settings-এ একটা provider।

Jan-এর Settings খুলুন এবং Model Providers-এ যান। একটা কাস্টম provider যোগ করতে provider list-এর পাশে plus control click করুন, একটা নাম দিন (APIsRouter), এবং recent build-এ dialog জিজ্ঞাসা করলে OpenAI API format বেছে নিন (Jan v0.8.1 একটা OpenAI-or-Anthropic format selector যোগ করেছে; একটা gateway-এর জন্য OpenAI বেছে নিন)। তারপর গুরুত্বপূর্ণ দুটো field পূরণ করুন: Base URL https://api.apisrouter.com/v1 এবং আপনার API key। আপনার চাওয়া model id দিয়ে যোগ করুন: Jan-এর docs explicit যে id property অবশ্যই endpoint serve করা model name-এর সাথে মিলতে হবে, তাই স্মৃতি থেকে না লিখে catalog listing থেকে id copy করুন (claude-sonnet-4-6, gpt-5.4-mini, gemini-3.5-flash)। Save করুন, এবং id আপনার locally যা চালান তার পাশে model selector-এ দেখা যাবে। release জুড়ে label পাল্টেছে (পুরনো version এই area-কে Remote Engines বলত), তাই stable skeleton হিসেবে treat করুন: provider, format, URL, key, model।

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-flash

Jan কীভাবে remote provider-কে treat করে।

Jan (GitHub-এ menloresearch, প্রায় 44K star) হলো local-first desktop client: model আপনার machine-এ download হয়, llama.cpp দিয়ে চলে, এবং offline কাজ করে, এবং app এমনকি অন্য tool-এর জন্য নিজস্ব OpenAI-compatible server http://127.0.0.1:1337/v1-এও expose করে। Remote provider হলো ইচ্ছাকৃত দ্বিতীয় lane, locally চালানোর জন্য খুব বড় model বা frontier quality earn করা task-এর জন্য। OpenAI format-এ একটা কাস্টম provider একটা plain endpoint বর্ণনা: base URL, key, declared model id। সেসব id-র বিরুদ্ধে conversation model string হিসেবে id সহ standard chat-completions request হিসেবে বের হয়, তাই একটা multi-vendor gateway-র exactly একটা entry দরকার। সাবধান লেখার জন্য Claude, volume summarization-এর জন্য DeepSeek, speed-এর জন্য Gemini, সবার পেছনে এক key। Philosophical fit প্রথমে যতটা শোনায় তার চেয়ে ভালো। Local-first user সাধারণত machine থেকে কী বের হয় তা নিয়ে deliberate, এবং একটা gateway remote lane-কে সমানভাবে deliberate রাখে: firewall করার একটা endpoint, পড়ার একটা usage log, একটা balance যা শুধু তখনই move করে যখন আপনি কিছু বাইরে পাঠানো বেছে নিয়েছেন। Local lane সম্পর্কে কিছুই পাল্টায় না; আপনার download করা model আগের মতোই offline কাজ করতে থাকে।

Model declare করা: id contract।

Jan আপনার জন্য একটা কাস্টম endpoint-এর catalog fetch করে না; আপনি যেসব model declare করেন সেগুলোই পান, এবং id-ই contract। Authoritative spelling আসে gateway-এর /v1/models listing থেকে, version suffix সহ। listing থেকে drift করা একটা declared id শুধু সেই model select করা হলেই not-found error দেয়, যা string তুলনা না করা পর্যন্ত একটা flaky provider-এর মতো পড়ে। Deliberately declare করুন। একটা local-first picker সবচেয়ে ভালো কাজ করে যখন remote row কম এবং purposeful হয়: everyday remote turn-এর জন্য একটা fast id (gpt-5.4-mini বা claude-haiku-4-5-20251001), machine ছাড়ার যোগ্য কাজের জন্য একটা frontier id (claude-sonnet-4-6), এবং আপনার workload যা earn করে তা যেকোনো specialist (লম্বা multilingual summary-এর জন্য deepseek-v4-flash, latency যেখানে feature সেখানে gemini-3.5-flash)। প্রতিটা row পরে যোগ করা সহজ; একটা paste-করা catalog এমন noise যা আপনি প্রতিদিন scroll করে পার হন। যদি অন্য tool serve করার জন্য Jan-এর local API server-ও ব্যবহার করেন, mental model সোজা রাখুন: সেই server হলো Jan অন্য tool-এর জন্য 127.0.0.1:1337/v1-এ একটা provider হওয়া; কাস্টম provider entry হলো Jan একটা client হওয়া। দুটো independent, এবং একটা configure করা কখনো অন্যটাকে প্রভাবিত করে না।

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

কোন conversation machine ছাড়বে তা বেছে নেওয়া।

যেহেতু remote usage prepaid এবং per-key metered, remote lane-এর খরচ একটা সংখ্যা যা আপনি পড়েন, একটা subscription না যা আপনি আন্দাজ করেন। আপনার real split-এর এক মাস চালান এবং usage log আপনাকে ঠিক বলে দেয় machine ছাড়ার খরচ কত, per model, per day।

  • Everyday remote turn, দ্রুত প্রশ্ন, rewrite, translation, fast tier-এ থাকা উচিত: gpt-5.4-mini এবং claude-haiku-4-5-20251001 দ্রুত উত্তর দেয় এবং balance প্রায় স্থির রাখে।
  • claude-sonnet-4-6 হলো এমন কাজের জন্য step-up যা একটা local model দৃশ্যত বহন করতে পারে না: লম্বা careful drafting, subtle code review, analysis যা আপনি forward করবেন।
  • gemini-3.5-flash latency-তে তার row earn করে; ছোট interactive turn-এর জন্য এটা একটা local model-এর responsiveness-এর সবচেয়ে কাছাকাছি মনে হয়।
  • deepseek-v4-flash হলো লম্বা document summarize করার volume pick যা আপনি একটা ছোট local model-কে feed করতেন না।
  • Private material সম্পূর্ণ local model-এ রাখুন; lane-এর মধ্যে split-ই প্রথম জায়গায় 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-specific failure mode।

একটা specific model-এ Not-found error id contract: declared id endpoint-এর spelling-এর সাথে মেলে না। /v1/models output-এর বিরুদ্ধে character অক্ষরে অক্ষরে তুলনা করুন। প্রতিটা request-এ authentication failure হলো key field। একটা provider যা save হয় কিন্তু কখনো উত্তর দেয় না তার সাধারণত একটা Base URL সমস্যা থাকে: /v1 suffix থাকতে হবে, যেহেতু Jan আপনার দেওয়া base-এ /chat/completions-এর মতো route path append করে, এবং একটা দ্বিগুণ বা missing segment 404 দেয়। যদি provider একটা পুরনো build-এ তৈরি হয়ে থাকে, API format check করুন: v0.8.1 OpenAI-or-Anthropic selector introduce করেছে, এবং দুর্ঘটনাক্রমে Anthropic format-এ সেট হওয়া একটা gateway entry একটা /v1/chat/completions endpoint-এর সাথে ভুল dialect-এ কথা বলে। এবং মনে রাখুন কোন lane debug করছেন। Local model failure (VRAM, quantization, llama.cpp setting) এবং remote failure (URL, key, id) একটা chat window share করে কিন্তু আর কিছুই না; model selector দেখায় fail করা একটা conversation ভুল thread টানার আগে কোন lane-এর অন্তর্গত।

কারা Jan-এ একটা gateway lane যোগ করে।

  • Local-first user যাদের মাঝেমধ্যে frontier quality দরকার এবং একটা vendor subscription-এর বদলে একটা prepaid balance-এ সেই মাঝেমধ্যের lane চায়।
  • Developer যাদের machine বড় local model ভালোভাবে চালাতে পারে না, Jan-কে interface হিসেবে এবং heavy lifting-এর জন্য gateway ব্যবহার করে।
  • Privacy-deliberate user যারা প্রতি vendor-এ একটার বদলে reason করা, firewall করা, এবং audit করার জন্য ঠিক একটা remote endpoint চায়।
  • যারা real task-এ local বনাম cloud output তুলনা করছে, যেখানে remote candidate declared row, নতুন account না।
  • Developer যাদের কোনো নির্দিষ্ট vendor-এর billing-এ access নেই। কোনো card requirement ছাড়া Top-up based access per-provider sign-up dependency সরিয়ে দেয়।

Endpoint verify করুন এবং প্রথম remote turn debug করুন।

প্রথমে model listing এবং একটা chat completion curl করুন; দুটোই pass করলে, বাকি সবকিছু provider entry-তেই থাকে। এটা declare করার জন্য exact id spelling-ও দেয়। Jan-এর ভেতরে, fast remote id-তে একটা ছোট message পাঠান। Authentication error হলো key; not-found হলো id; নীরবতা বা 404 হলো Base URL shape। যদি remote lane কাজ করে কিন্তু frontier id-তে ধীর মনে হয়, এটা model latency, configuration সমস্যা না; reasoning model লম্বা turn-এ সময় নেয়। একবার remote turn চললে, APIsRouter console per-request model, token count, এবং spend দেখায়। একজন local-first user-এর জন্য এই log অস্বাভাবিকভাবে satisfying reading: এটা machine থেকে যা কিছু বের হয়েছে তার সম্পূর্ণ রেকর্ড, per model, per day, এবং local lane এতে ঠিক কিছুই contribute করে না।

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"}]}'

সাধারণ প্রশ্ন

আমি কীভাবে Jan-এ একটা কাস্টম OpenAI-compatible provider যোগ করব?

Settings, Model Providers, তারপর provider যোগ করতে plus control। এর নাম দিন, জিজ্ঞাসা করা build-এ (v0.8.1+) OpenAI API format বেছে নিন, Base URL https://api.apisrouter.com/v1 সেট করুন, আপনার key paste করুন, এবং endpoint-এর listing-এর সাথে মেলে এমন model id declare করুন।

আমার declare করা model কেন not-found return করে?

Jan declared id-কে model string হিসেবে verbatim পাঠায়, এবং এর docs require করে id endpoint-এর model name-এর সাথে exactly মিলতে। স্মৃতি থেকে id না লিখে /v1/models listing pull করুন এবং spelling copy করুন, version suffix সহ।

একটা remote provider যোগ করা কি local model কীভাবে কাজ করে তা পাল্টায়?

না। Local model llama.cpp দিয়ে on-device চলতে থাকে, offline সহ। provider entry selector-এ একটা আলাদা remote lane যোগ করে, এবং আপনি একটা remote id বেছে নিলেই conversation network touch করে।

Base URL-এ কি /v1 থাকা উচিত?

হ্যাঁ: https://api.apisrouter.com/v1। Jan আপনার configure করা base-এ /chat/completions-এর মতো route append করে, তাই একটা missing /v1 404 দেয় এবং দ্বিগুণ একটাও দেয়। Request fail করলে, অন্য কিছু পাল্টানোর আগে error-এ composed URL পড়ুন।

Jan কি এক provider entry দিয়ে Claude এবং Gemini-এ পৌঁছাতে পারে?

হ্যাঁ। OpenAI format-এ model id একটা plain string হিসেবে ভ্রমণ করে, তাই claude-sonnet-4-6, gemini-3.5-flash, gpt-5.4-mini, এবং deepseek-v4-flash সবই এক entry-র নিচে declare করা যায়, এক key দিয়ে bill করা যায়, এবং per conversation switch করা যায়।

এটা কি Jan-এর local API server-এর মতোই?

না। 127.0.0.1:1337-এর local server হলো Jan অন্য tool-এ তার local model serve করা। কাস্টম provider entry হলো Jan একটা remote endpoint consume করা। এগুলো independent feature যা কাকতালীয়ভাবে OpenAI wire format share করে।