APIsRouter-কে একটা LibreChat কাস্টম endpoint হিসেবে যোগ করুন।

Updated 2026-07-29

LibreChat কাস্টম OpenAI-compatible endpoint-কে একটা first-class feature হিসেবে treat করে: librechat.yaml-এ একটা baseURL, একটা apiKey, এবং true-তে সেট করা models.fetch সহ এক endpoints.custom block, এবং পুরো catalog এক key-এর নিচে model selector-এ দেখা যায়।

দ্রুত উত্তর: librechat.yaml-এ এক block।

LibreChat-এর কাস্টম endpoint librechat.yaml-এ endpoints.custom-এর নিচে configure হয়, একটা array যেখানে প্রতিটা entry এক provider। যে তিনটা field গুরুত্বপূর্ণ তা হলো name (endpoint selector-এ label), apiKey (যা ${VARIABLE} ফর্মে environment variable interpolate করে, তাই key .env-এ থাকে এবং কখনো YAML-এ নয়), এবং baseURL। APIsRouter-এর জন্য baseURL হলো https://api.apisrouter.com/v1, /v1 সহ, কারণ LibreChat আপনার দেওয়া base-এ /chat/completions-এর মতো route path append করে। models block ঠিক করে model dropdown-এ কী দেখা যায়। models.fetch-কে true সেট করুন এবং LibreChat load time-এ endpoint-এর /v1/models listing query করে, তাই একটা hand-written list maintain না করেই catalog-এর প্রতিটা id selectable হয়ে যায়। models.default এখনো একটা array হিসেবে required এবং একটা fetch-এর আগে বা বদলে দেখানো fallback হিসেবে কাজ করে। এটা documented upstream configuration, কোনো patch নয়: LibreChat docs-এ কাস্টম endpoint object structure এখানে ব্যবহৃত প্রতিটা key define করে।

version: 1.2.1
endpoints:
  custom:
    - name: "APIsRouter"
      apiKey: "${APISROUTER_API_KEY}"
      baseURL: "https://api.apisrouter.com/v1"
      models:
        default: ["claude-sonnet-4-6"]
        fetch: true

LibreChat কীভাবে কাস্টম endpoint route করে।

LibreChat (GitHub-এ danny-avila, প্রায় 41K star) হলো সবচেয়ে বেশি deploy করা self-hosted ChatGPT-style interface: multi-user, multi-model, conversation search, agent, file handling, এবং per-user key সহ। একটা provider list hardcode করা client-এর বিপরীতে, এর endpoints.custom array যেকোনো OpenAI-compatible service accept করে, এবং docs-এ বেশ কয়েকটা well-known provider ঠিক এই mechanism দিয়েই configure করা। একজন user কাস্টম endpoint থেকে একটা model pick করলে, LibreChat model field-কে একটা plain string হিসেবে সেই endpoint-এর baseURL-এ একটা standard /v1/chat/completions request পাঠায়। client-এর কিছুই গুরুত্ব দেয় না কোন vendor model-টা train করেছে; string as-is forward হয়। baseURL-এর পেছনের endpoint একাধিক vendor serve করলে, এক librechat.yaml entry একই dropdown-এ Claude, GPT, Gemini, DeepSeek, এবং GLM id বসিয়ে দেয়, এবং একজন user vendor mid-conversation ঠিক সেভাবেই switch করে যেভাবে তারা দুটো GPT variant-এর মধ্যে switch করত। এটা সাধারণ multi-provider LibreChat setup-কে collapse করে দেয়। প্রতি vendor-এ একটা কাস্টম entry, প্রতিটার নিজস্ব key .env-এ এবং নিজস্ব billing surface রাখার বদলে, এক key সহ এক entry পুরো catalog cover করে, এবং admin একাধিক dashboard মিলিয়ে না দেখে এক জায়গায় প্রতি model usage দেখে।

সম্পূর্ণ সেটআপ: YAML, .env, এবং Docker mount।

Project root-এ librechat.yaml তৈরি করুন এবং key .env-এ রাখুন। YAML-এর ${APISROUTER_API_KEY} reference startup-এ environment থেকে resolve হয়, তাই config file committable থাকে। বেশিরভাগ first-time setup যে step miss করে তা Docker-specific: আপনি mount না করা পর্যন্ত container আপনার librechat.yaml দেখে না। docs আপনাকে ./librechat.yaml থেকে /app/librechat.yaml-এ একটা bind mount সহ docker-compose.override.yml তৈরি করতে বলে, তারপর container recreate করতে বলে। পরে YAML edit করলেও একটা restart দরকার, কারণ file startup-এ পড়া হয়, watch করা হয় না। একটা gateway entry-তে সেট করার যোগ্য কয়েকটা optional field আছে। titleConvo automatic conversation title enable করে, এবং titleModel সেগুলো লেখার model pick করে; titleModel-এর জন্য LibreChat-এর documented default হলো gpt-3.5-turbo, এমন একটা id যা একটা non-OpenAI endpoint হয়তো serve করে না, তাই এটাকে explicitly একটা fast catalog id-তে বা special value current_model-এ সেট করুন। modelDisplayLabel assistant message-এ দেখানো নাম নিয়ন্ত্রণ করে। এবং apiKey special value user_provided accept করে যদি আপনি চান প্রতিটা user server-এর key শেয়ার না করে নিজের key paste করুক।

version: 1.2.1
endpoints:
  custom:
    - name: "APIsRouter"
      apiKey: "${APISROUTER_API_KEY}"
      baseURL: "https://api.apisrouter.com/v1"
      models:
        default: ["claude-sonnet-4-6", "gpt-5.5", "deepseek-v4-pro"]
        fetch: true
      titleConvo: true
      titleModel: "claude-haiku-4-5-20251001"
      modelDisplayLabel: "APIsRouter"

Shared chat workspace-এর জন্য model বেছে নেওয়া।

প্রতিটা model যেহেতু একই key দিয়ে বিল হয়, একজন admin-এর জন্য practical loop হলো console-এ এক সপ্তাহের usage দেখা, user রা আসলে কোন model pick করছে তা দেখা, এবং সেই অনুযায়ী models.default prune করা, fetch on রেখে যাতে power user রা এখনো পুরো list পৌঁছাতে পারে।

  • Daily-driver chat একটা strong generalist চায়। claude-sonnet-4-6 এবং gpt-5.5 per-message model anxiety ছাড়াই লম্বা conversation, file discussion, এবং agent run বহন করে।
  • High-frequency ছোট প্রশ্ন volume কাজ। claude-haiku-4-5-20251001 এবং gemini-3.5-flash দ্রুত উত্তর দেয় এবং throwaway turn-এ spend concentrate হতে না দিয়ে একটা many-user deployment-কে রক্ষা করে।
  • Title generation প্রতিটা conversation-এ fire হয়। titleModel-কে একটা fast id-তে point করুন; ছয়-শব্দের title লিখতে frontier রেট পেমেন্ট করা LibreChat deployment-এ সবচেয়ে সাধারণ নীরব অপচয়।
  • Multilingual team-দের উচিত তাদের real language mix-এ deepseek-v4-pro এবং glm-5.2 test করা; একটা multi-vendor dropdown সেটাকে একটা reconfiguration না বানিয়ে একটা in-app comparison বানায়।
  • models.fetch মানে YAML touch না করেই নতুন catalog model দেখা যায়, তাই upstream-এ যোগ করা একটা model list পরের বার refresh হলেই selectable হয়ে যায়।

ব্যবহার অনুযায়ী পেমেন্ট · অফিশিয়াল মূল্যের নিচে

Selected models are priced below official list prices. Exact input, output, cache, and per-request prices are shown for each model.

মডেলঅফিশিয়াল মূল্যআমাদের মূল্য
Claude Sonnet 4.6$3.00 / $15.00 per M$2.40 / $12.00 per M
Claude Haiku 4.5 20251001$1.00 / $5.00 per M$0.80 / $4.00 per M
GPT-5.5$5.00 / $30.00 per M$4.00 / $24.00 per M
Gemini 3.5 Flash$1.50 / $9.00 per M$1.20 / $7.20 per M
DeepSeek V4 Pro$0.43 / $0.87 per M$0.40 / $0.90 per M

LibreChat-specific failure mode।

Config নীরবে load না হওয়া classic, এবং এটা প্রায় সবসময়ই Docker mount। docker-compose.override.yml bind mount ছাড়া, container একদমই কোনো librechat.yaml ছাড়াই চলে, কাস্টম endpoint কখনো selector-এ দেখা যায় না, এবং কিছুই error করে না। অন্য কিছু debug করার আগে container-এর ভেতরে file আছে কিনা confirm করুন। একটা apiKey যদি literally ${APISROUTER_API_KEY} হিসেবে আসে তার মানে server যে environment দিয়ে শুরু হয়েছিল তাতে variable-টা ছিল না; interpolation startup-এ .env থেকে হয়, তাই পরে যোগ করা একটা key-এর একটা container restart দরকার। symptom হলো একটা nonsense bearer token সহ gateway থেকে একটা 401। /v1 ছাড়া একটা baseURL প্রতিটা request-এ 404 তৈরি করে, কারণ LibreChat দেওয়া base-এ /chat/completions append করে। উল্টো ভুল, baseURL হিসেবে একটা full completions URL paste করা, আলাদা directEndpoint option-এর অন্তর্গত এবং একটা normal entry-এর সাথে combine করা উচিত নয়। fetch off অবস্থায় একটা খালি model dropdown মানে models.default missing বা খালি; এটা একটা required array। fetch on থাকলে, একটা খালি dropdown সাধারণত মানে fetch-টাই fail করেছে, যা key বা baseURL-এ ফিরে যায়। এবং অন্যথায় কাজ করা একটা endpoint-এ ব্যর্থ conversation title মানে titleModel default এমন একটা id-তে point করছে যা gateway serve করে না; এটা explicitly সেট করুন।

কারা একটা gateway দিয়ে LibreChat route করে।

  • Team যারা একটা shared chat workspace self-host করে এবং প্রতিটার জন্য একটা endpoints.custom entry ও একটা vendor account maintain না করে এক dropdown-এ Claude, GPT, Gemini, এবং DeepSeek চান।
  • Admin যারা multi-user deployment চালান এবং এক usage surface দরকার। Per-key log দেখায় team আসলে কোন model ব্যবহার করছে, priced, vendor dashboard মেলানো ছাড়াই।
  • Operator যারা department-কে নিজস্ব key দেন: একই YAML, প্রতি group এক key, এবং usage log per-team cost report হয়ে যায়।
  • Household এবং ছোট group যারা একাধিক chat subscription-এর জায়গায় এক metered endpoint বসায়, seat-এর বদলে ব্যবহৃত token-এর জন্য পেমেন্ট করে।
  • Developer যাদের কোনো নির্দিষ্ট vendor-এর billing-এ access নেই। কোনো card requirement ছাড়া Top-up based access per-provider sign-up dependency সরিয়ে দেয়।

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

LibreChat touch করার আগে gateway অংশ প্রমাণ করুন: আপনার key দিয়ে model list করুন, এবং confirm করুন আপনি models.default-এ যে id গুলো দিয়েছেন তা দেখা যাচ্ছে। এটা কাজ করলে, বাকি প্রতিটা symptom wire-এর LibreChat side-এ। তারপর stack শুরু করুন এবং endpoint selector খুলুন। APIsRouter entry একদমই দেখা যাওয়া প্রমাণ করে YAML load হয়েছে; model list populate হওয়া fetch এবং key প্রমাণ করে; প্রথম reply chat path প্রমাণ করে। এই তিনটা একসাথে না করে ক্রমান্বয়ে করুন, কারণ প্রতিটার আলাদা failure set আছে, যথাক্রমে mount, env var, এবং baseURL। Message চলতে শুরু করলে, APIsRouter console per-request model, token count, এবং spend দেখায়। একটা shared LibreChat instance ঠিক সেই ধরনের deployment যেখানে usage নীরবে দুই বা তিনটা model-এ concentrate হয়, এবং invoice আসার আগেই কোনগুলো তা জানার উপায় হলো usage log।

curl -s https://api.apisrouter.com/v1/models \
  -H "Authorization: Bearer $APISROUTER_API_KEY" | head -50

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

LibreChat-এ কোথায় একটা কাস্টম OpenAI-compatible endpoint configure করব?

librechat.yaml-এ endpoints.custom-এর নিচে, name, apiKey, baseURL, এবং একটা models block সহ provider entry-র একটা array। Docker install-এ file docker-compose.override.yml দিয়ে container-এ bind-mount করতে হবে নাহলে এটা নীরবে ignore হয়।

baseURL-এ কি /v1 অন্তর্ভুক্ত করা উচিত?

APIsRouter-এর জন্য হ্যাঁ: https://api.apisrouter.com/v1। LibreChat দেওয়া base-এ /chat/completions-এর মতো route path append করে, তাই একটা missing /v1 প্রতিটা request-এ 404 তৈরি করে।

এক LibreChat endpoint কি Claude, GPT, এবং DeepSeek মডেল একসাথে serve করতে পারে?

হ্যাঁ। LibreChat selected model id একটা plain string হিসেবে endpoint-এর baseURL-এ forward করে। endpoint একাধিক vendor serve করলে, এক endpoints.custom entry তাদের সব id একই dropdown-এ বসিয়ে দেয়, এবং models.fetch সেই list automatically current রাখে।

আমার কাস্টম endpoint কেন selector-এ দেখা যাচ্ছে না?

YAML load হয়নি। Docker-এ সাধারণ কারণ হলো librechat.yaml-এর জন্য একটা missing bind mount; container file ছাড়াই চলে এবং কিছুই error করে না। container-এর ভেতরে file আছে কিনা confirm করুন, তারপর restart করুন, যেহেতু config startup-এ পড়া হয়।

chat কাজ করলেও conversation title কেন fail করে?

titleConvo titleModel ব্যবহার করে, যার documented default হলো gpt-3.5-turbo, এমন একটা id যা আপনার endpoint হয়তো serve করে না। titleModel-কে explicitly claude-haiku-4-5-20251001-এর মতো একটা fast catalog id-তে, বা special value current_model-এ সেট করুন।

server key শেয়ার না করে কি প্রতিটা user নিজের key আনতে পারে?

হ্যাঁ। apiKey-কে special value user_provided সেট করুন এবং LibreChat প্রতিটা user-কে একটা key-এর জন্য prompt করে, per user stored। এটা gateway key-র সাথে ভালো fit করে, যেহেতু per user এক key usage log-কে একটা per-person cost view বানিয়ে দেয়।