Powrót do bloga

Narzędzia i integracjePrzewodnik

Podłącz LibreChat do CheapTokens: niestandardowy endpoint w librechat.yaml

Dodaj endpoint CheapTokens do samodzielnie hostowanego LibreChat: jeden wpis w librechat.yaml, klucz jako zmienna środowiskowa, trzy modele w menu.

Autor: CheapTokens TeamOpublikowano 4 min czytania

Wpis konfiguracji LibreChat wskazujący na API CheapTokens
Na tej stronie
  1. Czego potrzebuje wpis
  2. Podłącz to w trzech krokach
  3. Trzy modele w jednym menu
  4. Jeśli endpoint się nie pojawia lub odpowiada błędem

Twój LibreChat działa, ale menu modeli pokazuje tylko to, co było w zestawie. Aby dodać CheapTokens, wpisujesz jeden wpis endpoints.custom w librechat.yaml: nazwę, bazowy URL https://api.cheaptokens.dev/v1, klucz jako zmienną środowiskową i listę identyfikatorów modeli. Zrestartuj kontener, a w menu pojawi się endpoint „CheapTokens”.

Nazwy pól poniżej pochodzą z dokumentacji niestandardowych endpointów LibreChat (gałąź dokumentacji „Latest (dev)”, sprawdzona 30 października 2026). Strona nie ma numeru wersji, więc jeśli Twoja instalacja jest starsza i jakieś pole działa inaczej, porównaj z dokumentacją dla swojej wersji. Strona API to ta z naszej dokumentacji: format OpenAI Chat Completions, jedno saldo dla wszystkich modeli.

Czego potrzebuje wpis#

Wymagane są cztery pola, a każde ma proste zadanie:

  • name — nazwa endpointu w menu.
  • apiKey — klucz. Dokumentacja zaleca odwołanie takie jak ${VAR} zamiast samego klucza, aby sekret nie trafił do YAML.
  • baseURL — gdzie trafiają żądania: https://api.cheaptokens.dev/v1.
  • models.default — lista identyfikatorów modeli pokazywanych w menu.

Warto ustawić dwa opcjonalne pola. titleConvo: true pozwala LibreChat nazywać Twoje czaty (tytuły są tworzone, chyba że ma wartość false), a modelDisplayLabel to etykieta obok odpowiedzi (domyślnie „AI”). models.fetch domyślnie ma wartość false, więc LibreChat nie zapyta API o listę modeli; menu pochodzi z models.default. Dlatego poniższe identyfikatory są podane w pełni.

Podłącz to w trzech krokach#

Krok po kroku

Podłącz LibreChat (Docker)

Przekaż kontenerowi klucz

Klucz musi dotrzeć do kontenera LibreChat jako zmienna środowiskowa. Dokumentacja LibreChat pozwala ustawiać zmienne w docker-compose.override.yml w sekcji environment, więc utwórz ten plik obok docker-compose.yml. Nazwa zmiennej jest nasza, wybierz dowolną, tylko zachowaj ją identyczną w YAML:

yaml
services:
  api:
    environment:
      CHEAPTOKENS_API_KEY: ct_your_key_here

Wartość to placeholder: użyj klucza z panelu CheapTokens.

Dodaj endpoint do librechat.yaml

Utwórz librechat.yaml obok docker-compose.yml. Kształt jest zgodny z przykładem Mistral w dokumentacji LibreChat, z naszym adresem i identyfikatorami:

yaml
endpoints:
  custom:
    - name: 'CheapTokens'
      apiKey: '${CHEAPTOKENS_API_KEY}'
      baseURL: 'https://api.cheaptokens.dev/v1'
      models:
        default:
          - 'zai-org/GLM-5.3-Flash'
          - 'deepseek-ai/DeepSeek-V4-Flash-0731'
          - 'MiniMaxAI/MiniMax-M2.7'
      titleConvo: true
      modelDisplayLabel: 'CheapTokens'

Zamontuj plik i zrestartuj

Kontener musi widzieć plik. Dodaj volumes do tego samego docker-compose.override.yml, aby teraz zawierał oba:

yaml
services:
  api:
    environment:
      CHEAPTOKENS_API_KEY: ct_your_key_here
    volumes:
      - ./librechat.yaml:/app/librechat.yaml

Następnie zastosuj to:

bash
docker compose up -d
Od klucza do menu: zmienna środowiskowa, librechat.yaml, montowanie, a potem CheapTokens na liście modeli
Ścieżka od klucza do endpointu CheapTokens w menu LibreChat

Otwórz LibreChat w przeglądarce, rozpocznij nowy czat i wybierz CheapTokens w menu endpointów. Trzy modele są na liście. Wyślij „Say hi in one sentence” i powinieneś otrzymać odpowiedź. Jeśli nie, przejdź do ostatniej sekcji.

Trzy modele w jednym menu#

To jest część, która sprawia, że samodzielnie hostowany czat jest wart zachodu. Załóżmy, że prowadzisz go dla małego zespołu. Większość pytań to codzienne sprawy: przepisz tego maila, wyjaśnij ten błąd. Do nich wystarczy zai-org/GLM-5.3-Flash, z oknem kontekstu 390K i do 8 192 tokenów na odpowiedź. Gdy ktoś wkleja długi dokument i chce długiej odpowiedzi, przełącza ten sam czat na deepseek-ai/DeepSeek-V4-Flash-0731 (kontekst 380K, do 32 768 tokenów na odpowiedź). MiniMaxAI/MiniMax-M2.7 (kontekst 180K) to trzecia opinia, gdy dwie odpowiedzi się nie zgadzają. Bez drugiej subskrypcji, bez drugiego klucza: wszystkie trzy są rozliczane z jednego salda.

Ile kosztuje taki czat? Weźmy zespół pięciu osób wysyłających 200 wiadomości dziennie, z których każda niesie około 3 000 tokenów wejściowych (historia rośnie) i zwraca około 500 tokenów:

Model Za żądanie 200 żądań OpenRouter, 200 żądań
GLM-5.3-Flash $0.00008 $0.016 $0.0284
DeepSeek-V4-Flash $0.000095 $0.019 $0.056
MiniMax-M2.7 $0.00023 $0.045 $0.54

3000 tokenów wejściowych i 500 tokenów wyjściowych na żądanie. Ceny za 1 mln tokenów są aktualne i zmieniają się wraz z naszymi taryfami; kolumna OpenRouter pokazuje ceny referencyjne dla tego samego obciążenia.

W tabeli cena każdego modelu za te 200 żądań jest liczona razem z wejściem i wyjściem, a w sumie wychodzi taniej niż OpenRouter. Wybierz wiersz odpowiadający Twojemu użyciu i porównaj go ze stroną cennika.

Spróbuj samWypróbuj: wyślij jedno pytanie do dwóch modeliPokaż odpowiedź

Otwórz nowy czat, wybierz zai-org/GLM-5.3-Flash i poproś o streszczenie akapitu, który dobrze znasz. Przełącz model w tym samym menu na deepseek-ai/DeepSeek-V4-Flash-0731 i zapytaj ponownie. Porównaj długość i ton obu odpowiedzi — na tej podstawie decydujesz o domyślnym modelu.

Jeśli endpoint się nie pojawia lub odpowiada błędem#

Większość problemów to jedna z trzech rzeczy. Wybierz tę, która pasuje do tego, co widzisz:

Wybierz swój przypadek

Co widzisz?

Brak CheapTokens w menu

LibreChat nigdy nie odczytał Twojego pliku. Sprawdź, czy librechat.yaml jest zamontowany w /app/librechat.yaml (plik nadpisujący powyżej), czy wcięcia YAML są nienaruszone i czy uruchomiłeś docker compose up -d po zmianie.

401 Unauthorized

Brakuje klucza lub jest błędny. Sprawdź, czy nazwa po ${ w librechat.yaml jest dokładnie nazwą zmiennej środowiskowej i czy w klucz nie wklejono spacji ani cudzysłowów. Więcej o tym błędzie w API 401 lub 404.

404 lub błąd modelu

Identyfikator modelu jest błędny. Użyj pełnego identyfikatora, takiego jak deepseek-ai/DeepSeek-V4-Flash-0731; krótka nazwa nie jest akceptowana. Dokładne identyfikatory możesz wylistować krokami z List models with GET /v1/models.

Gdy pierwsza wiadomość przejdzie, możesz dodawać kolejne identyfikatory do models.default, kiedy tylko chcesz mieć inny model w menu. Wolisz inny front end? Ten sam pomysł, bazowy URL plus klucz, jest w Connect Open WebUI to CheapTokens, a ogólny obraz w OpenAI-compatible API: what base_url is. Same modele są na stronie GLM.