Idagdag ang APIsRouter bilang custom endpoint sa LibreChat.
Updated 2026-07-29
Itinuturing ng LibreChat ang mga custom OpenAI-compatible na endpoint bilang first-class feature: isang endpoints.custom block sa librechat.yaml na may baseURL, apiKey, at models.fetch na naka-set sa true, at lumilitaw ang buong katalogo sa model selector sa ilalim ng isang key.
Mabilisang sagot: isang block sa librechat.yaml.
Na-configure ang mga custom endpoint ng LibreChat sa librechat.yaml sa ilalim ng endpoints.custom, isang array kung saan ang bawat entry ay isang provider. Ang tatlong field na mahalaga ay ang name (ang label sa endpoint selector), apiKey (na nagi-interpolate ng mga environment variable sa anyong ${VARIABLE}, kaya ang key ay nasa .env at hindi kailanman sa YAML), at baseURL. Para sa APIsRouter, ang baseURL ay https://api.apisrouter.com/v1, kasama ang /v1, dahil idinaragdag ng LibreChat ang mga route path tulad ng /chat/completions sa base na ibinigay mo. Ang models block ang nagpapasya kung ano ang lilitaw sa model dropdown. Itakda ang models.fetch sa true at kinukuha ng LibreChat ang listahan ng /v1/models ng endpoint sa oras ng pag-load, kaya nagiging mapipili ang bawat id ng katalogo nang hindi nagpapanatili ng manu-manong listahan. Kailangan pa ring maging array ang models.default at nagsisilbi itong fallback na ipinapakita bago o sa halip ng isang fetch. Ito ay naka-document na configuration mula sa itaas, hindi isang patch: idinideklara ng custom endpoint object structure sa dokumentasyon ng LibreChat ang bawat key na ginamit dito.
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: truePaano iniruruta ng LibreChat ang mga custom endpoint.
Ang LibreChat (danny-avila sa GitHub, humigit-kumulang 41K stars) ang pinaka-malawak na na-deploy na self-hosted na interface na may hugis ChatGPT: multi-user, multi-model, na may conversation search, agents, paghawak ng file, at mga key bawat user. Hindi tulad ng mga client na naka-hardcode ang listahan ng provider, tumatanggap ang endpoints.custom array nito ng anumang OpenAI-compatible na serbisyo, at ilang kilalang provider sa dokumentasyon ay na-configure sa pamamagitan mismo ng mekanismong ito. Kapag pumili ang isang user ng model mula sa isang custom endpoint, nagpapadala ang LibreChat ng standard na /v1/chat/completions na request sa baseURL ng endpoint na iyon gamit ang model field bilang plain string. Walang pinapansin sa client kung sino ang nag-train sa likod ng isang id; ipinapasa ang string as-is. Kapag ang endpoint sa likod ng baseURL ay nagse-serve ng ilang vendor, inilalagay ng isang entry ng librechat.yaml ang mga id ng Claude, GPT, Gemini, DeepSeek, at GLM sa parehong dropdown, at nagpapalit ang isang user ng vendor kalagitnaan ng usapan sa parehong paraan kung papaano niya papalitan ang dalawang variant ng GPT. Binabago nito ang karaniwang multi-provider na setup ng LibreChat. Sa halip na isang custom entry bawat vendor, ang bawat isa ay may sariling key sa .env at sariling billing surface, sinasakop ng isang entry na may isang key ang katalogo, at nakikita ng admin ang paggamit bawat model sa isang lugar sa halip na pagsamahin ang ilang dashboard.
Buong setup: YAML, .env, at ang Docker mount.
Gumawa ng librechat.yaml sa root ng proyekto at ilagay ang key sa .env. Nalulutas ang ${APISROUTER_API_KEY} na reference sa YAML mula sa environment sa oras ng startup, kaya nananatiling committable ang config file. Ang hakbang na pinaka-nalilimutan ng mga unang beses na setup ay specific sa Docker: hindi nakikita ng container ang librechat.yaml mo hanggang i-mount mo ito. Ipinapagawa ng dokumentasyon ang docker-compose.override.yml na may bind mount mula sa ./librechat.yaml patungo sa /app/librechat.yaml, pagkatapos ay gawin muli ang mga container. Ang pag-e-edit ng YAML pagkatapos nito ay nangangailangan din ng restart, dahil binabasa ang file sa startup, hindi binabantayan. Sulit itakda ang ilang opsyonal na field sa isang entry ng gateway. Pinapagana ng titleConvo ang mga awtomatikong titulo ng usapan, at pinipili ng titleModel ang model na sumusulat ng mga ito; ang naka-document na default ng LibreChat para sa titleModel ay gpt-3.5-turbo, isang id na maaaring hindi si-serve ng isang non-OpenAI na endpoint, kaya itakda ito nang tahasan sa isang mabilis na catalog id o sa espesyal na value na current_model. Kinokontrol ng modelDisplayLabel ang pangalang ipinapakita sa mga mensahe ng assistant. At tumatanggap ang apiKey ng espesyal na value na user_provided kung gusto mong mag-paste ng sarili nilang key ang bawat user sa halip na ibahagi ang key ng server.
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"Pagpili ng mga model para sa isang shared na chat workspace.
Dahil bini-bill ang bawat model sa parehong key, ang praktikal na loop para sa isang admin ay panoorin ang isang linggo ng paggamit sa console, tingnan kung anong mga model talaga ang pinipili ng mga user, at i-prune ang models.default para tumugma, panatilihing naka-on ang fetch para maabot pa rin ng mga power user ang buong listahan.
- Gusto ng daily-driver na chat ng isang malakas na generalist. Dinadala ng claude-sonnet-4-6 at gpt-5.5 ang mahahabang usapan, talakayan ng file, at mga agent run nang walang per-message na pag-aalala sa model.
- Ang mga madalas at maiikling tanong ay volume work. Sumasagot nang mabilis ang claude-haiku-4-5-20251001 at gemini-3.5-flash at pinipigilan nitong mag-concentrate ang gastos sa mga throwaway na turn sa isang deployment na maraming user.
- Nagpapaputok ang title generation sa bawat usapan. Ituro ang titleModel sa isang mabilis na id; ang pagbabayad ng frontier rates para sumulat ng anim-na-salitang titulo ang pinaka-karaniwang tahimik na sayang sa isang deployment ng LibreChat.
- Dapat i-test ng mga multilingual na team ang deepseek-v4-pro at glm-5.2 sa tunay nilang timpla ng wika; ginagawa itong in-app na paghahambing ng isang multi-vendor na dropdown sa halip na muling configuration.
- Ibig sabihin ng models.fetch, lumilitaw ang mga bagong model ng katalogo nang hindi hinihipo ang YAML, kaya ang isang model na idinagdag sa itaas ay mapipili sa susunod na pag-refresh ng listahan.
Pay-as-you-go · mas mababa sa opisyal na presyo
Selected models are priced below official list prices. Exact input, output, cache, and per-request prices are shown for each model.
| Model | Opisyal na Presyo | Aming Presyo |
|---|---|---|
| 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 |
Mga failure mode na specific sa LibreChat.
Ang classic ay ang tahimik na hindi pag-load ng config, at halos palaging ito ang Docker mount. Kung wala ang bind mount ng docker-compose.override.yml, tumatakbo ang container nang walang librechat.yaml, hindi kailanman lumilitaw ang custom endpoint sa selector, at walang nagki-error. Kumpirmahin muna na umiiral ang file sa loob ng container bago i-debug ang iba pa. Ang isang apiKey na dumarating nang literal bilang ${APISROUTER_API_KEY} ay nangangahulugang wala ang variable sa environment na kinasimulan ng server; nangyayari ang interpolation sa startup mula sa .env, kaya kailangan ng restart ng container ang isang key na idinagdag pagkatapos. Ang sintomas ay isang 401 mula sa gateway na may walang-kwentang bearer token. Ang isang baseURL nang walang /v1 ay gumagawa ng 404 sa bawat request, dahil idinaragdag ng LibreChat ang /chat/completions sa base gaya ng ibinigay. Ang kabaligtaran na pagkakamali, ang pag-paste ng isang buong completions URL bilang baseURL, ay kabilang sa hiwalay na opsyong directEndpoint at hindi dapat pagsamahin sa isang normal na entry. Ang isang walang-laman na model dropdown na naka-off ang fetch ay nangangahulugang nawawala o walang laman ang models.default; kailangan itong array. Kapag naka-on ang fetch, ang isang walang-laman na dropdown ay karaniwang nangangahulugang nabigo ang fetch mismo, na bumabalik sa key o sa baseURL. At ang mga nabigong titulo ng usapan sa isang endpoint na gumagana naman ay ang default ng titleModel na nakaturo sa isang id na hindi si-serve ng gateway; itakda ito nang tahasan.
Sino ang nagru-route ng LibreChat sa pamamagitan ng isang gateway.
- Mga team na nag-se-self-host ng shared na chat workspace na gustong makita ang Claude, GPT, Gemini, at DeepSeek sa isang dropdown nang hindi nagpapanatili ng isang entry ng endpoints.custom at isang vendor account bawat isa.
- Mga admin na nagpapatakbo ng multi-user na deployment na kailangan ng isang usage surface. Ipinapakita ng per-key na log kung aling mga model talaga ginagamit ng team, presyo na, nang hindi pinagsasama ang mga dashboard ng vendor.
- Mga operator na nagbibigay sa mga departamento ng sarili nilang key: parehong YAML, isang key bawat grupo, at ang usage log ang nagiging per-team na ulat ng gastos.
- Mga sambahayan at maliliit na grupo na pumapalit sa ilang chat subscription ng isang metered na endpoint, na binabayaran ang mga token na ginamit sa halip na mga seat.
- Mga developer na walang access sa billing ng isang partikular na vendor. Inaalis ng top-up based na access na walang kailangang card ang per-provider na sign-up dependency.
I-verify ang endpoint at i-debug ang unang mensahe.
Patunayan muna ang panig ng gateway bago hipuin ang LibreChat: ilista ang mga model gamit ang key mo, at kumpirmahin na lumilitaw ang mga id na inilagay mo sa models.default. Kung gumana ito, nasa panig ng LibreChat ng wire ang lahat ng natitirang sintomas. Pagkatapos, simulan ang stack at buksan ang endpoint selector. Ang paglitaw mismo ng entry ng APIsRouter ay nagpapatunay na na-load ang YAML; ang pagpuno ng model list ay nagpapatunay sa fetch at sa key; ang unang sagot ay nagpapatunay sa chat path. Gawin ang tatlong ito nang paisa-isa sa halip na sabay-sabay, dahil bawat isa ay may hiwalay na set ng pagkabigo, ang mount, ang env var, at ang baseURL ayon sa pagkakasunod-sunod. Kapag dumadaloy na ang mga mensahe, ipinapakita ng APIsRouter console ang per-request na model, token counts, at gastos. Isang shared na instance ng LibreChat ang eksaktong klase ng deployment kung saan tahimik na nagko-concentrate ang paggamit sa dalawa o tatlong model, at ang usage log ang paraan mo para malaman kung alin bago pa man malaman ng invoice.
curl -s https://api.apisrouter.com/v1/models \
-H "Authorization: Bearer $APISROUTER_API_KEY" | head -50Mga madalas itanong
Saan ko i-configure ang custom OpenAI-compatible endpoint sa LibreChat?
Sa librechat.yaml sa ilalim ng endpoints.custom, isang array ng mga entry ng provider na may name, apiKey, baseURL, at isang models block. Sa mga Docker install, dapat bind-mount ang file sa loob ng container sa pamamagitan ng docker-compose.override.yml o tahimik itong babalewalain.
Dapat bang isama ng baseURL ang /v1?
Oo para sa APIsRouter: https://api.apisrouter.com/v1. Idinaragdag ng LibreChat ang mga route path tulad ng /chat/completions sa base gaya ng ibinigay, kaya ang isang nawawalang /v1 ay gumagawa ng 404 sa bawat request.
Maaari bang si-serve ng isang endpoint ng LibreChat ang mga model ng Claude, GPT, at DeepSeek nang magkasama?
Oo. Ipinapasa ng LibreChat ang piniling model id bilang plain string sa baseURL ng endpoint. Kapag nagse-serve ang endpoint ng ilang vendor, inilalagay ng isang entry ng endpoints.custom ang lahat ng kanilang mga id sa parehong dropdown, at pinapanatiling updated ni models.fetch ang listahang iyon nang awtomatiko.
Bakit nawawala ang aking custom endpoint sa selector?
Hindi na-load ang YAML. Sa Docker, karaniwang sanhi ay isang nawawalang bind mount para sa librechat.yaml; tumatakbo ang container nang walang file at walang nagki-error. Kumpirmahin na umiiral ang file sa loob ng container, pagkatapos ay mag-restart, dahil binabasa ang config sa startup.
Bakit nabibigo ang mga titulo ng usapan gayong gumagana ang chat?
Gumagamit ang titleConvo ng titleModel, na ang naka-document na default ay gpt-3.5-turbo, isang id na maaaring hindi si-serve ng endpoint mo. Itakda ang titleModel nang tahasan sa isang mabilis na catalog id tulad ng claude-haiku-4-5-20251001, o sa espesyal na value na current_model.
Maaari bang magdala ang bawat user ng sarili nilang key sa halip na ibahagi ang key ng server?
Oo. Itakda ang apiKey sa espesyal na value na user_provided at ang LibreChat ay nagtatanong sa bawat user ng key, na naka-imbak bawat user. Bagay ito sa mga key ng gateway, dahil ginagawang per-person na view ng gastos ng usage log ang isang key bawat user.