Struktura obiektu niestandardowego endpoint
Każdy endpoint w tablicy custom powinien mieć następującą strukturę:
Przykład
endpoints:
custom:
# Example using Mistral AI API
- name: 'Mistral'
apiKey: '${YOUR_ENV_VAR_KEY}'
baseURL: 'https://api.mistral.ai/v1'
models:
default: ['mistral-tiny', 'mistral-small', 'mistral-medium', 'mistral-large-latest']
titleConvo: true
titleTiming: 'immediate'
titleModel: 'mistral-tiny'
modelDisplayLabel: 'Mistral'
# customParams:
# reasoningFormat: reasoning_object
# reasoningKey: reasoning_content
# tokenConfig:
# mistral-large-latest:
# prompt: 2
# completion: 6
# context: 128000
# addParams:
# safe_prompt: true # Mistral specific value for moderating messages
# NOTE: For Mistral, it is necessary to drop the following parameters or you will encounter a 422 Error:
dropParams: ['stop', 'user', 'frequency_penalty', 'presence_penalty']
# Example using the native Anthropic Messages API
- name: 'Claude-Compatible'
provider: 'anthropic'
apiKey: '${ANTHROPIC_API_KEY}'
baseURL: 'https://api.anthropic.com'
headers:
anthropic-version: '2023-06-01'
models:
default: ['claude-sonnet-4-5', 'claude-opus-4-5']
fetch: false
titleConvo: true
titleModel: 'claude-sonnet-4-5'
modelDisplayLabel: 'Claude (Compatible)'name
Klucz:
| Key | Type | Description | Example |
|---|---|---|---|
| name | String | Unikalna nazwa dla endpoint. | Will be used as the "title" in the Endpoints Selector |
Wymagane
Przykład:
name: 'Mistral'apiKey
Klucz:
| Key | Type | Description | Example |
|---|---|---|---|
| apiKey | String (apiKey | "user_provided") | Twój klucz API dla tej usługi. Może odwoływać się do zmiennej środowiskowej lub pozwalać użytkownikowi na podanie wartości. | It's highly recommended to use the env. variable reference for this field, i.e. `${YOUR_VARIABLE}` |
Wymagane
Przykład:
apiKey: '${MISTRAL_API_KEY}'lub
apiKey: 'your_api_key'lub
apiKey: 'user_provided'baseURL
Klucz:
| Key | Type | Description | Example |
|---|---|---|---|
| baseURL | String (baseURL | "user_provided") | Podstawowy adres URL dla API. Może odwoływać się do zmiennej środowiskowej lub pozwalać użytkownikowi na podanie wartości. | It's highly recommended to use the env. variable reference for this field, i.e. `${YOUR_VARIABLE}` |
Wymagane
Przykład:
baseURL: 'https://api.mistral.ai/v1'lub
baseURL: '${MISTRAL_BASE_URL}'lub
baseURL: 'user_provided'Uwagi:
- Jeśli ustawiony przez Ciebie
baseURLjest pełnym punktem końcowym (endpoint) uzupełnień, możesz ustawić pole directEndpoint natrue, aby użyć go bezpośrednio.- Jest to konieczne, ponieważ aplikacja domyślnie dodaje "/chat/completions" lub "/completion" do
baseURL.
- Jest to konieczne, ponieważ aplikacja domyślnie dodaje "/chat/completions" lub "/completion" do
- Podczas korzystania z
provider: anthropic, ustawbaseURLna główny adres API, z którym ma łączyć się zestaw SDK Anthropic, na przykładhttps://api.anthropic.comlub adres główny Twojej bramy (gateway). LibreChat używa natywnej ścieżki Anthropic/v1/messagesdla tego dostawcy.
provider
Klucz:
| Key | Type | Description | Example |
|---|---|---|---|
| provider | String | Kieruje niestandardowy endpoint przez natywnego klienta dostawcy zamiast domyślnego klienta zgodnego z OpenAI. | Currently supports `anthropic`. |
Domyślnie: pominięto, co używa ścieżki niestandardowego endpoint zgodnego z OpenAI.
Obsługiwane wartości:
"anthropic"- Używa natywnego klienta Anthropic/v1/messageszbaseURL,apiKey,headers,addParams,dropParamsorazcustomParams.paramDefinitionstego endpointu.
Przykład:
endpoints:
custom:
- name: 'Claude-Compatible'
provider: 'anthropic'
apiKey: '${ANTHROPIC_API_KEY}'
baseURL: 'https://api.anthropic.com'
headers:
anthropic-version: '2023-06-01'
models:
default:
- 'claude-sonnet-4-5'
- 'claude-opus-4-5'
fetch: false
titleConvo: true
titleModel: 'claude-sonnet-4-5'
modelDisplayLabel: 'Claude (Compatible)'Uwagi:
- Użyj
provider: anthropicdla samej usługi Anthropic lub bramek kompatybilnych z Anthropic, które obsługują natywne Messages API. - Wymień modele jawnie w
models.default; styl OpenAImodels.fetchnie jest używany dla natywnych niestandardowych endpointów Anthropic. - Dostawca sugeruje parametry UI Anthropic, chyba że jawnie ustawisz inny
customParams.defaultParamsEndpoint. - Endpointy bez
providerzachowują zachowanie zgodne z OpenAI.
iconURL
Klucz:
| Key | Type | Description | Example |
|---|---|---|---|
| iconURL | String | Adres URL obrazu, ścieżka do zasobu publicznego lub wbudowany klucz ikony endpoint, który ma być użyty jako ikona endpoint. |
Domyślnie: ""
Przykład:
iconURL: https://github.com/danny-avila/LibreChat/raw/main/docs/assets/LibreChat.svglub użyj wbudowanej ikony endpoint:
iconURL: openAIUwagi:
- Nie ustawiaj niestandardowej
name(nazwy) endpointu na nazwę wbudowanego endpointu tylko po to, aby użyć ponownie ikony. Niestandardowe nazwy endpointów muszą być unikalne i nie powinny używać domyślnych wartości endpointów, takich jak:- "openAI" | "azureOpenAI" | "google" | "anthropic" | "assistants" | "azureAssistants" | "agents" | "bedrock"
- Aby użyć ikony punktu końcowego dołączonej do projektu, zachowaj unikalną nazwę
nameniestandardowego punktu końcowego i ustawiconURLna jeden z wbudowanych kluczy punktów końcowych.- "openAI" | "azureOpenAI" | "google" | "anthropic" | "assistants" | "azureAssistants" | "agents" | "bedrock"
- Aby użyć niestandardowego obrazu, ustaw
iconURLna adres URL obrazu lub ścieżkę obsługiwaną przez LibreChat, taką jak/assets/my-icon.svg. - Istnieją również „znane endpointy” (wielkość liter nie ma znaczenia), dla których dostarczono ikony. Jeśli
nameTwojego endpointu pasuje do poniższych nazw, powinieneś pominąć to pole:- Anyscale
- APIpie
- Cohere
- Deepseek
- Fajerwerki
- groq
- Helicone
- Huggingface
- Mistral
- MLX
- Moonshot
- ollama
- OpenRouter
- Perplexity
- Qwen
- ShuttleAI
- together.ai
- Ujednolicenie
- xai
models
Klucz:
| Key | Type | Description | Example |
|---|---|---|---|
| models | Object | Konfiguracja modeli. |
Wymagane
Właściwości:
default
Klucz:
| Key | Type | Description | Example |
|---|---|---|---|
| default | Array of Strings | Tablica ciągów znaków wskazująca domyślne modele do użycia. | If fetching models fails, these defaults are used as a fallback. |
Wymagane
Przykład:
default:
- 'mistral-tiny'
- 'mistral-small'
- 'mistral-medium'fetch
Klucz:
| Key | Type | Description | Example |
|---|---|---|---|
| fetch | Boolean | Gdy ustawiono na `true`, podejmuje próbę pobrania listy modeli z API. | May cause slowdowns during initial use of the app if the response is delayed. Defaults to `false`. |
Domyślnie: false
Przykład:
fetch: trueuserIdQuery
Klucz:
| Key | Type | Description | Example |
|---|---|---|---|
| userIdQuery | Boolean | Gdy ustawiono na `true`, dodaje identyfikator użytkownika LibreChat jako parametr zapytania do żądania modeli API. |
Domyślnie: false
Przykład:
userIdQuery: truetitleConvo
Klucz:
| Key | Type | Description | Example |
|---|---|---|---|
| titleConvo | Boolean | Włącza tytułowanie konwersacji, gdy ustawiono na `true`. |
Domyślnie: false
Przykład:
titleConvo: truetitleTiming
Klucz:
| Key | Type | Description | Example |
|---|---|---|---|
| titleTiming | String | Określa, kiedy generowane są tytuły konwersacji. Prawidłowe wartości: "immediate" lub "final". | Defaults to "immediate". |
Domyślnie: "immediate"
Dostępne wartości:
"immediate"- Generuje tytuł natychmiast po rozpoczęciu żądania, równolegle z odpowiedzią modelu, używając pierwszej wiadomości użytkownika."final"- Odracza generowanie tytułu do momentu zakończenia pełnej odpowiedzi. Zachowuje to starsze zachowanie (legacy behavior).
Przykład:
titleTiming: 'final'titleMethod
Klucz:
| Key | Type | Description | Example |
|---|---|---|---|
| titleMethod | String | Określa metodę używaną do generowania tytułów konwersacji. | Valid values: "completion" (default), "structured", "functions" (legacy alias for "structured") |
Domyślnie: "completion"
Dostępne metody:
"completion"- Używa standardowego API completion bez narzędzi/funkcji. Kompatybilne z większością LLM."structured"- Używa ustrukturyzowanego wyjścia do generowania tytułów. Wymaga wsparcia ze strony dostawcy/modelu."functions"- Starszy alias dla "structured". Funkcjonalnie identyczny.
Przykład:
titleMethod: 'completion'titleModel
Klucz:
| Key | Type | Description | Example |
|---|---|---|---|
| titleModel | String | Określa model używany do tytułów. | Defaults to "gpt-3.5-turbo" if omitted. May cause issues if "gpt-3.5-turbo" is not available. You can also dynamically use the current conversation model by setting it to "current_model". |
Domyślnie: "gpt-3.5-turbo"
Przykład:
titleModel: 'mistral-tiny'titleModel: 'current_model'titlePrompt
Klucz:
| Key | Type | Description | Example |
|---|---|---|---|
| titlePrompt | String | Niestandardowy prompt do generowania tytułu. Musi zawierać symbol zastępczy {convo}. | Allows full control over how titles are generated. |
Domyślne:
Analyze this conversation and provide:
1. The detected language of the conversation
2. A concise title in the detected language (5 words or less, no punctuation or quotation)
{convo}Uwagi:
- Musi zawsze zawierać symbol zastępczy
{convo} - Symbol zastępczy
{convo}zostanie zastąpiony sformatowaną konwersacją
Przykład:
titlePrompt: "Create a brief, descriptive title for the following conversation:\n\n{convo}\n\nTitle:"titlePromptTemplate
Klucz:
| Key | Type | Description | Example |
|---|---|---|---|
| titlePromptTemplate | String | Szablon formatowania zawartości konwersacji, który zastępuje {convo} w titlePrompt. | Must include {input} and {output} placeholders. |
Domyślnie: "User: {input}\nAI: {output}"
Uwagi:
- Musi zawierać oba symbole zastępcze
{input}oraz{output} - Określa, w jaki sposób konwersacja jest formatowana podczas wstawiania do
titlePrompt
Przykład:
titlePromptTemplate: "Human: {input}\n\nAssistant: {output}"titleEndpoint
Klucz:
| Key | Type | Description | Example |
|---|---|---|---|
| titleEndpoint | String | Określa alternatywny endpoint używany do generowania tytułów. | Allows using a different model/endpoint for titles. |
Domyślnie: Używa bieżącego niestandardowego endpoint.
Akceptowane wartości:
openAIazureOpenAIgoogleanthropicbedrock- Inna niestandardowa nazwa endpoint
Przykład:
# Use a different custom endpoint for titles
endpoints:
custom:
- name: 'my-chat-endpoint'
apiKey: '${CHAT_API_KEY}'
baseURL: 'https://api.example.com/v1/chat'
models:
default: ['gpt-4']
titleEndpoint: 'my-title-endpoint'
- name: 'my-title-endpoint'
apiKey: '${TITLE_API_KEY}'
baseURL: 'https://api.example.com/v1/title'
models:
default: ['gpt-3.5-turbo']modelDisplayLabel
Klucz:
| Key | Type | Description | Example |
|---|---|---|---|
| modelDisplayLabel | String | Etykieta wyświetlana w wiadomościach obok ikony bieżącego modelu AI. | The display order is: 1. Custom name set via preset (if available), 2. Label derived from the model name (if applicable), 3. This value is used if the above are not specified. Defaults to "AI". |
Domyślnie: "AI"
Przykład:
modelDisplayLabel: 'Mistral'addParams
Klucz:
| Key | Type | Description | Example |
|---|---|---|---|
| addParams | Object/Dictionary | Dodaje dodatkowe parametry do żądań. Wartościami mogą być ciągi znaków, liczby, wartości logiczne, tablice lub zagnieżdżone obiekty. Obsługuje przełączniki narzędzi dostawcy, takie jak `web_search: true` oraz `url_context: true` dla Google. | Adds/Overrides parameters. Useful for specifying API-specific options. |
Przykład:
addParams:
safe_prompt: true
max_tokens: 2048Uwagi:
- Pole
addParamspozwala na dołączenie dodatkowych parametrów, które nie są częścią domyślnego ładunku (zobacz sekcję "Parametry domyślne"). Jest to szczególnie przydatne w przypadku opcji specyficznych dla danego API.
dropParams
Klucz:
| Key | Type | Description | Example |
|---|---|---|---|
| dropParams | Array/List of Strings | Usuwa domyślne parametry z żądań. | Excludes specified default parameters. Useful for APIs that do not accept or recognize certain parameters. |
Przykład:
dropParams:
- 'stop'
- 'user'
- 'frequency_penalty'
- 'presence_penalty'Uwaga:
- Pole
dropParamspozwala na usunięcie "Parametrów domyślnych", które są wysyłane z każdym żądaniem. Jest to przydatne podczas pracy z API, które nie akceptują lub nie rozpoznają określonych parametrów.
customParams
Klucz:
| Key | Type | Description | Example |
|---|---|---|---|
| customParams | Object/Dictionary | Definiuje niestandardowe zachowanie endpoint oraz metadane ustawień, które nie są częścią treści żądania dostawcy. | Used for endpoint-specific configuration such as reasoning parameter shape. |
Podklucze:
| Key | Type | Description | Example |
|---|---|---|---|
| defaultParamsEndpoint | String | Domyślne ustawienia endpoint używane dla metadanych parametrów żądania. Domyślnie `custom`. Gdy ustawiono `provider: anthropic` i pominięto to pole, LibreChat używa zestawu parametrów Anthropic. | defaultParamsEndpoint: custom |
| reasoningFormat | String | Określa sposób przesyłania parametrów rozumowania do niestandardowych endpointów zgodnych z OpenAI. Prawidłowe wartości: `reasoning_effort`, `reasoning_object`, `disabled`. | reasoningFormat: reasoning_object |
| reasoningKey | String | Określa, który klucz odpowiedzi jest odczytywany dla treści rozumowania dostawcy. Prawidłowe wartości: `reasoning` lub `reasoning_content`. | reasoningKey: reasoning_content |
| includeReasoningContent | Boolean | Odtwarza `reasoning_content` dostawcy w turach wywołań narzędzi dla zgodnych z OpenAI niestandardowych endpoint, które tego wymagają. | includeReasoningContent: true |
| includeReasoningHistory | Boolean | Rekonstruuje `reasoning_content` z utrwalonej historii konwersacji pomiędzy turami. Implikuje `includeReasoningContent`. | includeReasoningHistory: true |
| paramDefinitions | Array/List | Niestandardowe definicje ustawień dla tego endpoint. | See default parameter definitions. |
Formaty rozumowania:
reasoning_effort- Wysyła starszy parametrreasoning_effort.reasoning_object- Wysyła obiektreasoning, taki jak{ effort, summary }, dla dostawców, którzy korzystają z nowszego formatu zgodnego z OpenAI.disabled- Pomija parametry rozumowania, nawet jeśli użytkownik lub Model Specs wybiorą rozumowanie.
Odtwarzanie rozumowania:
- Użyj
includeReasoningContent: truedla dostawców kompatybilnych z OpenAI, którzy wymagają, abyreasoning_contentasystenta było odtwarzane podczas tur wywołań narzędzi (tool-call turns). - Używaj
includeReasoningHistory: truetylko dla dostawców, którzy wymagają równieżreasoning_contentzrekonstruowanego z utrwalonej historii w późniejszych turach, takich jak niektóre bramki Xiaomi MiMo lub kompatybilne z Kimi.
Uwaga dotycząca dostawcy Anthropic:
Użyj provider: anthropic, gdy niestandardowy endpoint powinien korzystać z natywnego API Anthropic Messages. Użyj customParams.defaultParamsEndpoint: anthropic bez provider tylko wtedy, gdy nadal potrzebujesz ścieżki niestandardowego endpointu kompatybilnego z OpenAI, ale chcesz uzyskać metadane parametrów i adaptację żądań w stylu Anthropic.
Przykład:
customParams:
reasoningFormat: reasoning_object
reasoningKey: reasoning_content
includeReasoningContent: truetokenConfig
Klucz:
| Key | Type | Description | Example |
|---|---|---|---|
| tokenConfig | Object/Dictionary | Definiuje okna kontekstowe specyficzne dla modelu oraz stawki za milion tokenów dla tego niestandardowego endpoint. | Used by context usage, visible cost breakdowns, balance transactions, and multi-endpoint agent billing. |
Każdy klucz to nazwa modelu. Każdy wpis modelu obsługuje:
| Key | Type | Description | Example |
|---|---|---|---|
| prompt | Number | Stawka tokenów promptu/wejściowych na milion tokenów. | Required |
| completion | Number | Stawka tokenów wyjściowych/generowania na milion tokenów. | Required |
| context | Number | Maksymalne okno kontekstowe dla modelu. | Required |
| cacheRead | Number | Szybkość odczytu danych wejściowych z pamięci podręcznej na milion tokenów. | Optional |
| cacheWrite | Number | Szybkość zapisu danych wejściowych w pamięci podręcznej na milion tokenów. | Optional |
Przykład:
tokenConfig:
gpt-4o-mini:
prompt: 0.15
completion: 0.6
context: 128000
cacheRead: 0.075
cacheWrite: 0.15Uwagi:
- Stawki są wyrażone w USD za milion tokenów przed zastosowaniem jakiejkolwiek konwersji
interface.currencyna potrzeby wyświetlania. - Nazwa modelu musi być zgodna z wartością modelu wysyłaną przez niestandardowy endpoint.
- W przypadku Agentów korzystających z wielu endpoint, podczas rejestrowania użycia i kosztów stosowana jest pasująca konfiguracja tokenów dla danego endpoint/model.
headers
Klucz:
| Key | Type | Description | Example |
|---|---|---|---|
| headers | Object/Dictionary | Dodaje dodatkowe nagłówki do żądań. Wszystkie wartości nagłówków muszą być ciągami znaków. Obsługuje dynamiczne podstawianie pól użytkownika za pomocą `{{LIBRECHAT_USER_*}}`, symbole zastępcze treści żądania za pomocą `{{LIBRECHAT_BODY_*}}` oraz zmienne środowiskowe za pomocą `${ENV_VAR}`. | The `headers` object specifies custom headers for requests. Useful for authentication and setting content types. |
Przykład:
headers:
x-api-key: '${ENVIRONMENT_VARIABLE}'
Content-Type: 'application/json'
X-User-ID: '{{LIBRECHAT_USER_ID}}'
X-User-Email: '{{LIBRECHAT_USER_EMAIL}}'Uwaga: Obsługuje dynamiczne wartości zmiennych środowiskowych, które używają formatu: "${VARIABLE_NAME}".
Gdy używane jest models.fetch: true, te nagłówki są również rozwiązywane i przekazywane do żądania listy modeli dla adresów bazowych kontrolowanych przez administratora. Skonfigurowany nagłówek Authorization ma pierwszeństwo przed rezerwowym apiKey punktu końcowego, co jest przydatne w przypadku serwerów proxy z obsługą autoryzacji, które zwracają listy modeli dla poszczególnych użytkowników. Jeśli skonfigurowano baseURL: "user_provided", LibreChat nie przekazuje skonfigurowanych szablonów nagłówków do miejsca docelowego podanego przez użytkownika. W przypadku provider: anthropic, nagłówki są przekazywane przez natywnego klienta Anthropic zamiast klienta zgodnego z OpenAI.
Dostępne symbole zastępcze pól użytkownika:
| Symbol zastępczy | Pole użytkownika | Typ | Opis |
|---|---|---|---|
{{LIBRECHAT_USER_ID}} | id | String | Unikalny identyfikator użytkownika |
{{LIBRECHAT_USER_NAME}} | name | String | Wyświetlana nazwa użytkownika |
{{LIBRECHAT_USER_USERNAME}} | username | String | Nazwa użytkownika |
{{LIBRECHAT_USER_EMAIL}} | email | String | Adres e-mail użytkownika |
{{LIBRECHAT_USER_PROVIDER}} | provider | String | Dostawca uwierzytelniania (np. "email", "google", "github") |
{{LIBRECHAT_USER_ROLE}} | role | String | Rola użytkownika (np. "user", "admin") |
{{LIBRECHAT_USER_GOOGLEID}} | googleId | String | Identyfikator konta Google |
{{LIBRECHAT_USER_FACEBOOKID}} | facebookId | String | Identyfikator konta Facebook |
{{LIBRECHAT_USER_OPENIDID}} | openidId | String | Identyfikator konta OpenID |
{{LIBRECHAT_USER_SAMLID}} | samlId | String | Identyfikator konta SAML |
{{LIBRECHAT_USER_LDAPID}} | ldapId | String | Identyfikator konta LDAP |
{{LIBRECHAT_USER_GITHUBID}} | githubId | String | Identyfikator konta GitHub |
{{LIBRECHAT_USER_DISCORDID}} | discordId | String | Identyfikator konta Discord |
{{LIBRECHAT_USER_APPLEID}} | appleId | String | Identyfikator konta Apple |
{{LIBRECHAT_USER_EMAILVERIFIED}} | emailVerified | Boolean → String | Status weryfikacji e-mail ("true" lub "false") |
{{LIBRECHAT_USER_TWOFACTORENABLED}} | twoFactorEnabled | Boolean → String | Status 2FA ("true" lub "false") |
{{LIBRECHAT_USER_TERMSACCEPTED}} | termsAccepted | Boolean → String | Status akceptacji regulaminu ("true" lub "false") |
Dostępne symbole zastępcze treści żądania (Request Body):
| Symbol zastępczy | Pole treści | Typ | Opis |
|---|---|---|---|
{{LIBRECHAT_BODY_CONVERSATIONID}} | conversationId | String | Identyfikator bieżącej konwersacji |
{{LIBRECHAT_BODY_PARENTMESSAGEID}} | parentMessageId | String | Identyfikator wiadomości nadrzędnej |
{{LIBRECHAT_BODY_MESSAGEID}} | messageId | String | Identyfikator bieżącej wiadomości |
Przykład użycia symboli zastępczych w treści żądania (request body):
headers:
X-Conversation-ID: '{{LIBRECHAT_BODY_CONVERSATIONID}}'
X-Parent-Message-ID: '{{LIBRECHAT_BODY_PARENTMESSAGEID}}'
X-Message-ID: '{{LIBRECHAT_BODY_MESSAGEID}}'directEndpoint
Klucz:
| Key | Type | Description | Example |
|---|---|---|---|
| directEndpoint | Boolean | Gdy ustawiono na `true`, traktuje skonfigurowany `baseURL` jako endpoint completions, który ma być używany |
Domyślnie: false
Przykład:
directEndpoint: truetitleMessageRole
- Opcje:
"system"|"user"|"assistant"
Klucz:
| Key | Type | Description | Example |
|---|---|---|---|
| titleMessageRole | String | Określa wartość roli używaną w ładunku wiadomości do generowania tytułu. Musi być jedną z: `"system"`, `"user"`, `"assistant"`. | Defaults to "system" if omitted. May cause issues if "system" is not a valid value, which is sometimes the case for single message payloads, as it is for title generation. |
Domyślnie: "system"
Przykład:
titleMessageRole: 'user'Jaka jest ta instrukcja?