Structuur van het Custom Endpoint-object
Elk endpoint in de custom array moet de volgende structuur hebben:
Voorbeeld
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
Sleutel:
| Key | Type | Description | Example |
|---|---|---|---|
| name | String | Een unieke naam voor de endpoint. | Will be used as the "title" in the Endpoints Selector |
Vereist
Voorbeeld:
name: 'Mistral'apiKey
Sleutel:
| Key | Type | Description | Example |
|---|---|---|---|
| apiKey | String (apiKey | "user_provided") | Uw API-sleutel voor de service. Kan verwijzen naar een omgevingsvariabele of de gebruiker toestaan de waarde op te geven. | It's highly recommended to use the env. variable reference for this field, i.e. `${YOUR_VARIABLE}` |
Vereist
Voorbeeld:
apiKey: '${MISTRAL_API_KEY}'of
apiKey: 'your_api_key'of
apiKey: 'user_provided'baseURL
Sleutel:
| Key | Type | Description | Example |
|---|---|---|---|
| baseURL | String (baseURL | "user_provided") | Basis-URL voor de API. Kan verwijzen naar een omgevingsvariabele, of de gebruiker toestaan de waarde op te geven. | It's highly recommended to use the env. variable reference for this field, i.e. `${YOUR_VARIABLE}` |
Vereist
Voorbeeld:
baseURL: 'https://api.mistral.ai/v1'of
baseURL: '${MISTRAL_BASE_URL}'of
baseURL: 'user_provided'Opmerkingen:
- Als de
baseURLdie je instelt het volledige completions-endpoint is, kun je het veld directEndpoint optruezetten om het direct te gebruiken.- Dit is noodzakelijk omdat de app standaard "/chat/completions" of "/completion" toevoegt aan de
baseURL.
- Dit is noodzakelijk omdat de app standaard "/chat/completions" of "/completion" toevoegt aan de
- Wanneer je
provider: anthropicgebruikt, stelbaseURLdan in op de API-root die de Anthropic SDK moet aanroepen, zoalshttps://api.anthropic.comof je gateway-root. LibreChat gebruikt het native Anthropic/v1/messagespad voor die provider.
provider
Sleutel:
| Key | Type | Description | Example |
|---|---|---|---|
| provider | String | Routeert een aangepast endpoint via een native provider-client in plaats van de standaard OpenAI-compatibele client. | Currently supports `anthropic`. |
Standaard: weggelaten, wat het OpenAI-compatibele aangepaste endpoint-pad gebruikt.
Ondersteunde waarden:
"anthropic"- Gebruikt de native Anthropic/v1/messagesclient met debaseURL,apiKey,headers,addParams,dropParamsencustomParams.paramDefinitionsvan dit endpoint.
Voorbeeld:
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)'Opmerkingen:
- Gebruik
provider: anthropicvoor Anthropic zelf of voor Anthropic-compatibele gateways die de native Messages API ondersteunen. - Lijst modellen expliciet op onder
models.default; OpenAI-stijlmodels.fetchwordt niet gebruikt voor native Anthropic custom endpoints. - De provider impliceert Anthropic UI-parameters, tenzij je expliciet een andere
customParams.defaultParamsEndpointinstelt. - Endpoints zonder
providerbehouden het OpenAI-compatibele gedrag.
iconURL
Sleutel:
| Key | Type | Description | Example |
|---|---|---|---|
| iconURL | String | Afbeeldings-URL, pad naar publieke asset of ingebouwde endpoint-pictogramsleutel om te gebruiken als het endpoint-pictogram. |
Standaard: ""
Voorbeeld:
iconURL: https://github.com/danny-avila/LibreChat/raw/main/docs/assets/LibreChat.svgof hergebruik een ingebouwd endpoint icoon:
iconURL: openAIOpmerkingen:
- Stel geen aangepaste endpoint
namein op een ingebouwde endpoint-naam enkel om een icoon te hergebruiken. Aangepaste endpoint-namen moeten uniek zijn en mogen geen standaard endpoint-waarden gebruiken zoals:- "openAI" | "azureOpenAI" | "google" | "anthropic" | "assistants" | "azureAssistants" | "agents" | "bedrock"
- Om een in het project opgenomen endpoint-icoon te gebruiken, moet je de
namevan het aangepaste endpoint uniek houden en in plaats daarvaniconURLinstellen op een van de ingebouwde endpoint-sleutels.- "openAI" | "azureOpenAI" | "google" | "anthropic" | "assistants" | "azureAssistants" | "agents" | "bedrock"
- Om een aangepaste afbeelding te gebruiken, stelt u
iconURLin op een afbeeldings-URL of een pad dat door LibreChat wordt geserveerd, zoals/assets/my-icon.svg. - Er zijn ook "bekende endpoints" (niet hoofdlettergevoelig), waarvoor iconen beschikbaar zijn. Als de
namevan je endpoint overeenkomt met de volgende namen, moet je dit veld weglaten:- Anyscale
- APIpie
- Cohere
- Deepseek
- Vuurwerk
- groq
- Helicone
- Huggingface
- Mistral
- MLX
- Moonshot
- ollama
- OpenRouter
- Perplexity
- Qwen
- ShuttleAI
- together.ai
- Verenig
- xai
models
Sleutel:
| Key | Type | Description | Example |
|---|---|---|---|
| models | Object | Configuratie voor modellen. |
Vereist
Eigenschappen:
default
Sleutel:
| Key | Type | Description | Example |
|---|---|---|---|
| default | Array of Strings | Een reeks strings die de standaardmodellen aangeeft die moeten worden gebruikt. | If fetching models fails, these defaults are used as a fallback. |
Vereist
Voorbeeld:
default:
- 'mistral-tiny'
- 'mistral-small'
- 'mistral-medium'fetch
Sleutel:
| Key | Type | Description | Example |
|---|---|---|---|
| fetch | Boolean | Indien ingesteld op `true`, wordt geprobeerd een lijst met modellen op te halen van de API. | May cause slowdowns during initial use of the app if the response is delayed. Defaults to `false`. |
Standaard: false
Voorbeeld:
fetch: trueuserIdQuery
Sleutel:
| Key | Type | Description | Example |
|---|---|---|---|
| userIdQuery | Boolean | Indien ingesteld op `true`, wordt de LibreChat gebruikers-ID als queryparameter toegevoegd aan het API-modelverzoek. |
Standaard: false
Voorbeeld:
userIdQuery: truetitleConvo
Sleutel:
| Key | Type | Description | Example |
|---|---|---|---|
| titleConvo | Boolean | Schakelt gespreks titels in wanneer ingesteld op `true`. |
Standaard: false
Voorbeeld:
titleConvo: truetitleTiming
Sleutel:
| Key | Type | Description | Example |
|---|---|---|---|
| titleTiming | String | Bepaalt wanneer gesprekstitels worden gegenereerd. Geldige waarden: "immediate" of "final". | Defaults to "immediate". |
Standaard: "immediate"
Beschikbare waarden:
"immediate"- Genereert de titel zodra het verzoek start, parallel aan het antwoord van het model, met behulp van het eerste bericht van de gebruiker."final"- Stelt het genereren van de titel uit totdat het volledige antwoord is voltooid. Dit behoudt het verouderde gedrag.
Voorbeeld:
titleTiming: 'final'titleMethod
Sleutel:
| Key | Type | Description | Example |
|---|---|---|---|
| titleMethod | String | Bepaalt de methode die wordt gebruikt voor het genereren van gesprektitels. | Valid values: "completion" (default), "structured", "functions" (legacy alias for "structured") |
Standaard: "completion"
Beschikbare methoden:
"completion"- Gebruikt de standaard completion API zonder tools/functies. Compatibel met de meeste LLM's."structured"- Gebruikt gestructureerde output voor het genereren van titels. Vereist ondersteuning van de provider/het model."functions"- Verouderde alias voor "structured". Functioneel identiek.
Voorbeeld:
titleMethod: 'completion'titleModel
Sleutel:
| Key | Type | Description | Example |
|---|---|---|---|
| titleModel | String | Specificeert het model dat gebruikt moet worden voor titels. | 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". |
Standaard: "gpt-3.5-turbo"
Voorbeeld:
titleModel: 'mistral-tiny'titleModel: 'current_model'titlePrompt
Sleutel:
| Key | Type | Description | Example |
|---|---|---|---|
| titlePrompt | String | Aangepaste prompt voor het genereren van titels. Moet de {convo} placeholder bevatten. | Allows full control over how titles are generated. |
Standaard:
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}Opmerkingen:
- Moet altijd de
{convo}placeholder bevatten - De
{convo}placeholder zal worden vervangen door het geformatteerde gesprek
Voorbeeld:
titlePrompt: "Create a brief, descriptive title for the following conversation:\n\n{convo}\n\nTitle:"titlePromptTemplate
Sleutel:
| Key | Type | Description | Example |
|---|---|---|---|
| titlePromptTemplate | String | Sjabloon voor het opmaken van de gespreksinhoud dat {convo} in titlePrompt vervangt. | Must include {input} and {output} placeholders. |
Standaard: "User: {input}\nAI: {output}"
Opmerkingen:
- Moet zowel de
{input}als{output}placeholders bevatten - Bepaalt hoe de conversatie wordt geformatteerd wanneer deze in
titlePromptwordt ingevoegd
Voorbeeld:
titlePromptTemplate: "Human: {input}\n\nAssistant: {output}"titleEndpoint
Sleutel:
| Key | Type | Description | Example |
|---|---|---|---|
| titleEndpoint | String | Specificeert een alternatief endpoint om te gebruiken voor het genereren van titels. | Allows using a different model/endpoint for titles. |
Standaard: Gebruikt het huidige aangepaste endpoint
Geaccepteerde waarden:
openAIazureOpenAIgoogleanthropicbedrock- Nog een aangepaste endpoint-naam
Voorbeeld:
# 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
Sleutel:
| Key | Type | Description | Example |
|---|---|---|---|
| modelDisplayLabel | String | Het label dat in berichten naast het icoon voor het huidige AI-model wordt weergegeven. | 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". |
Standaard: "AI"
Voorbeeld:
modelDisplayLabel: 'Mistral'addParams
Sleutel:
| Key | Type | Description | Example |
|---|---|---|---|
| addParams | Object/Dictionary | Voegt extra parameters toe aan verzoeken. Waarden kunnen strings, getallen, booleans, arrays of geneste objecten zijn. Ondersteunt provider-tool-toggles zoals `web_search: true` en Google `url_context: true`. | Adds/Overrides parameters. Useful for specifying API-specific options. |
Voorbeeld:
addParams:
safe_prompt: true
max_tokens: 2048Opmerkingen:
- Het
addParamsveld stelt je in staat om extra parameters toe te voegen die geen deel uitmaken van de standaard payload (zie de "Default Parameters" sectie). Dit is bijzonder nuttig voor API-specifieke opties.
dropParams
Sleutel:
| Key | Type | Description | Example |
|---|---|---|---|
| dropParams | Array/List of Strings | Verwijdert standaardparameters uit verzoeken. | Excludes specified default parameters. Useful for APIs that do not accept or recognize certain parameters. |
Voorbeeld:
dropParams:
- 'stop'
- 'user'
- 'frequency_penalty'
- 'presence_penalty'Let op:
- Het
dropParamsveld stelt je in staat om "Default Parameters" te verwijderen die met elk verzoek worden meegestuurd. Dit is handig bij het werken met API's die bepaalde parameters niet accepteren of herkennen.
customParams
Sleutel:
| Key | Type | Description | Example |
|---|---|---|---|
| customParams | Object/Dictionary | Definieert aangepast endpoint-gedrag en instellingen-metadata die geen deel uitmaken van de request body van de provider. | Used for endpoint-specific configuration such as reasoning parameter shape. |
Sub-keys:
| Key | Type | Description | Example |
|---|---|---|---|
| defaultParamsEndpoint | String | Endpoint-standaardwaarden gebruikt voor metadata van aanvraagparameters. Standaard ingesteld op `custom`. Wanneer `provider: anthropic` is ingesteld en dit veld wordt weggelaten, gebruikt LibreChat de Anthropic-parameterset. | defaultParamsEndpoint: custom |
| reasoningFormat | String | Bepaalt hoe reasoning-parameters worden verzonden naar OpenAI-compatibele aangepaste endpoints. Geldige waarden: `reasoning_effort`, `reasoning_object`, `disabled`. | reasoningFormat: reasoning_object |
| reasoningKey | String | Bepaalt welke antwoordsleutel wordt gelezen voor de redeneringsinhoud van de provider. Geldige waarden: `reasoning` of `reasoning_content`. | reasoningKey: reasoning_content |
| includeReasoningContent | Boolean | Speelt `reasoning_content` opnieuw af binnen tool-call turns voor OpenAI-compatibele aangepaste endpoints die dit vereisen. | includeReasoningContent: true |
| includeReasoningHistory | Boolean | Reconstrueert `reasoning_content` uit de opgeslagen gespreksgeschiedenis over verschillende beurten heen. Impliceert `includeReasoningContent`. | includeReasoningHistory: true |
| paramDefinitions | Array/List | Aangepaste instellingsdefinities voor dit endpoint. | See default parameter definitions. |
Redeneerformaten:
reasoning_effort- Verstuurt de legacyreasoning_effortparameter.reasoning_object- Verstuurt eenreasoningobject, zoals{ effort, summary }, voor providers die de nieuwere OpenAI-compatibele vorm volgen.disabled- Onderdrukt reasoning-parameters, zelfs wanneer een gebruiker of Model Specs reasoning selecteert.
Reasoning replay:
- Gebruik
includeReasoningContent: truevoor OpenAI-compatibele providers die vereisen datreasoning_contentvan de assistant opnieuw wordt afgespeeld tijdens tool-call turns. - Gebruik
includeReasoningHistory: truealleen voor providers die ookreasoning_contentvereisen dat wordt gereconstrueerd uit de opgeslagen geschiedenis in latere beurten, zoals sommige Xiaomi MiMo- of Kimi-compatibele gateways.
Anthropic provider note:
Gebruik provider: anthropic wanneer het aangepaste endpoint de native Anthropic Messages API moet gebruiken. Gebruik customParams.defaultParamsEndpoint: anthropic zonder provider alleen wanneer je nog steeds het OpenAI-compatibele aangepaste endpoint-pad nodig hebt, maar wel Anthropic-stijl parametermetadata en verzoekadaptatie wilt.
Voorbeeld:
customParams:
reasoningFormat: reasoning_object
reasoningKey: reasoning_content
includeReasoningContent: truetokenConfig
Sleutel:
| Key | Type | Description | Example |
|---|---|---|---|
| tokenConfig | Object/Dictionary | Definieert modelspecifieke contextvensters en tarieven per miljoen tokens voor dit aangepaste endpoint. | Used by context usage, visible cost breakdowns, balance transactions, and multi-endpoint agent billing. |
Elke sleutel is een modelnaam. Elk model-item ondersteunt:
| Key | Type | Description | Example |
|---|---|---|---|
| prompt | Number | Prompt/input token-tarief per miljoen tokens. | Required |
| completion | Number | Voltooiing/output token-tarief per miljoen tokens. | Required |
| context | Number | Maximale contextvenster voor het model. | Required |
| cacheRead | Number | Cached input read rate per miljoen tokens. | Optional |
| cacheWrite | Number | Schrijfsnelheid van gecachte invoer per miljoen tokens. | Optional |
Voorbeeld:
tokenConfig:
gpt-4o-mini:
prompt: 0.15
completion: 0.6
context: 128000
cacheRead: 0.075
cacheWrite: 0.15Opmerkingen:
- Tarieven worden uitgedrukt per miljoen tokens in USD voordat enige
interface.currencyconversie wordt toegepast voor weergave. - De modelnaam moet overeenkomen met de modelwaarde die via de custom endpoint wordt verzonden.
- Voor Agents die meerdere endpoints gebruiken, wordt de bijbehorende endpoint/model token-configuratie gebruikt bij het registreren van het gebruik en de kosten.
headers
Sleutel:
| Key | Type | Description | Example |
|---|---|---|---|
| headers | Object/Dictionary | Voegt extra headers toe aan verzoeken. Alle header-waarden moeten strings zijn. Ondersteunt dynamische vervanging van gebruikersvelden met `{{LIBRECHAT_USER_*}}`, placeholders voor de request body met `{{LIBRECHAT_BODY_*}}` en omgevingsvariabelen met `${ENV_VAR}`. | The `headers` object specifies custom headers for requests. Useful for authentication and setting content types. |
Voorbeeld:
headers:
x-api-key: '${ENVIRONMENT_VARIABLE}'
Content-Type: 'application/json'
X-User-ID: '{{LIBRECHAT_USER_ID}}'
X-User-Email: '{{LIBRECHAT_USER_EMAIL}}'Opmerking: Ondersteunt dynamische omgevingsvariabelewaarden, die het formaat "${VARIABLE_NAME}" gebruiken.
Wanneer models.fetch: true wordt gebruikt, worden deze headers ook opgelost en doorgestuurd naar het model-lijstverzoek voor door de beheerder beheerde base URLs. Een geconfigureerde Authorization header krijgt voorrang op de apiKey fallback van de endpoint, wat handig is voor authenticatie-bewuste proxy's die per-gebruiker modellijsten retourneren. Als baseURL: "user_provided" is geconfigureerd, stuurt LibreChat geen geconfigureerde headertemplates door naar de door de gebruiker opgegeven bestemming. Voor provider: anthropic worden headers doorgestuurd via de native Anthropic-client in plaats van de OpenAI-compatibele client.
Beschikbare tijdelijke aanduidingen voor gebruikersvelden:
| Placeholder | User Field | Type | Description |
|---|---|---|---|
{{LIBRECHAT_USER_ID}} | id | String | Unieke gebruikers-ID |
{{LIBRECHAT_USER_NAME}} | name | String | Weergavenaam van de gebruiker |
{{LIBRECHAT_USER_USERNAME}} | username | String | Gebruikersnaam van de gebruiker |
{{LIBRECHAT_USER_EMAIL}} | email | String | E-mailadres van de gebruiker |
{{LIBRECHAT_USER_PROVIDER}} | provider | String | Authenticatieprovider (bijv. "email", "google", "github") |
{{LIBRECHAT_USER_ROLE}} | role | String | Rol van de gebruiker (bijv. "user", "admin") |
{{LIBRECHAT_USER_GOOGLEID}} | googleId | String | Google-account-ID |
{{LIBRECHAT_USER_FACEBOOKID}} | facebookId | String | Facebook-account-ID |
{{LIBRECHAT_USER_OPENIDID}} | openidId | String | OpenID-account-ID |
{{LIBRECHAT_USER_SAMLID}} | samlId | String | SAML-account-ID |
{{LIBRECHAT_USER_LDAPID}} | ldapId | String | LDAP-account-ID |
{{LIBRECHAT_USER_GITHUBID}} | githubId | String | GitHub-account-ID |
{{LIBRECHAT_USER_DISCORDID}} | discordId | String | Discord-account-ID |
{{LIBRECHAT_USER_APPLEID}} | appleId | String | Apple-account-ID |
{{LIBRECHAT_USER_EMAILVERIFIED}} | emailVerified | Boolean → String | E-mailverificatiestatus ("true" of "false") |
{{LIBRECHAT_USER_TWOFACTORENABLED}} | twoFactorEnabled | Boolean → String | 2FA-status ("true" of "false") |
{{LIBRECHAT_USER_TERMSACCEPTED}} | termsAccepted | Boolean → String | Status van acceptatie van voorwaarden ("true" of "false") |
Beschikbare Request Body Placeholders:
| Placeholder | Body Field | Type | Beschrijving |
|---|---|---|---|
{{LIBRECHAT_BODY_CONVERSATIONID}} | conversationId | String | Huidige gespreks-ID |
{{LIBRECHAT_BODY_PARENTMESSAGEID}} | parentMessageId | String | ID van het bovenliggende bericht |
{{LIBRECHAT_BODY_MESSAGEID}} | messageId | String | Huidige bericht-ID |
Voorbeeld met gebruik van request body placeholders:
headers:
X-Conversation-ID: '{{LIBRECHAT_BODY_CONVERSATIONID}}'
X-Parent-Message-ID: '{{LIBRECHAT_BODY_PARENTMESSAGEID}}'
X-Message-ID: '{{LIBRECHAT_BODY_MESSAGEID}}'directEndpoint
Sleutel:
| Key | Type | Description | Example |
|---|---|---|---|
| directEndpoint | Boolean | Indien ingesteld op `true`, wordt de geconfigureerde `baseURL` behandeld als het te gebruiken completions endpoint |
Standaard: false
Voorbeeld:
directEndpoint: truetitleMessageRole
- Opties:
"system"|"user"|"assistant"
Sleutel:
| Key | Type | Description | Example |
|---|---|---|---|
| titleMessageRole | String | Specificeert de rolwaarde die moet worden gebruikt in de bericht-payload voor het genereren van titels. Moet een van de volgende zijn: `"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. |
Standaard: "system"
Voorbeeld:
titleMessageRole: 'user'Hoe is deze gids?