Structure de l'objet endpoint personnalisé
Chaque endpoint dans le tableau custom doit avoir la structure suivante :
Exemple
name
Clé :
| Key | Type | Description | Example |
|---|---|---|---|
| name | String | Un nom unique pour le endpoint. | Will be used as the "title" in the Endpoints Selector |
Requis
Exemple :
apiKey
Clé :
| Key | Type | Description | Example |
|---|---|---|---|
| apiKey | String (apiKey | "user_provided") | Votre clé API pour le service. Peut faire référence à une variable d'environnement, ou permettre à l'utilisateur de fournir la valeur. | It's highly recommended to use the env. variable reference for this field, i.e. `${YOUR_VARIABLE}` |
Requis
Exemple :
ou
ou
baseURL
Clé :
| Key | Type | Description | Example |
|---|---|---|---|
| baseURL | String (baseURL | "user_provided") | URL de base pour l'API. Peut faire référence à une variable d'environnement ou permettre à l'utilisateur de fournir la valeur. | It's highly recommended to use the env. variable reference for this field, i.e. `${YOUR_VARIABLE}` |
Requis
Exemple :
ou
ou
Notes :
- Si la
baseURLque vous avez définie est le point de terminaison complet des complétions, vous pouvez définir le champ directEndpoint surtruepour l'utiliser directement.- Ceci est nécessaire car l'application ajoute par défaut "/chat/completions" ou "/completion" à la
baseURL.
- Ceci est nécessaire car l'application ajoute par défaut "/chat/completions" ou "/completion" à la
- Lorsque vous utilisez
provider: anthropic, définissezbaseURLsur la racine de l'API que le SDK Anthropic doit appeler, telle quehttps://api.anthropic.comou la racine de votre passerelle. LibreChat utilise le chemin natif/v1/messagesd'Anthropic pour ce fournisseur.
provider
Clé :
| Key | Type | Description | Example |
|---|---|---|---|
| provider | String | Achemine un endpoint personnalisé via un client fournisseur natif au lieu du client compatible OpenAI par défaut. | Currently supports `anthropic`. |
Par défaut : omis, ce qui utilise le chemin d'endpoint personnalisé compatible avec OpenAI.
Valeurs prises en charge :
"anthropic"- Utilise le client natif Anthropic/v1/messagesavec les propriétésbaseURL,apiKey,headers,addParams,dropParamsetcustomParams.paramDefinitionsde cet endpoint.
Exemple :
Notes :
- Utilisez
provider: anthropicpour Anthropic lui-même ou pour les passerelles compatibles avec Anthropic qui utilisent l'API Messages native. - Listez les modèles explicitement sous
models.default; le stylemodels.fetchd'OpenAI n'est pas utilisé pour les endpoints personnalisés natifs d'Anthropic. - Le fournisseur implique les paramètres d'interface Anthropic, sauf si vous définissez explicitement un
customParams.defaultParamsEndpointdifférent. - Les endpoints sans
providerconservent le comportement compatible avec OpenAI.
iconURL
Clé :
| Key | Type | Description | Example |
|---|---|---|---|
| iconURL | String | URL de l'image, chemin d'accès à une ressource publique ou clé d'icône d'endpoint intégrée à utiliser comme icône d'endpoint. |
Par défaut : ""
Exemple :
ou réutilisez une icône d'endpoint intégrée :
Notes :
- Ne définissez pas de
named'endpoint personnalisé avec le nom d'un endpoint intégré juste pour réutiliser une icône. Les noms d'endpoints personnalisés doivent être uniques et ne doivent pas utiliser les valeurs d'endpoints par défaut telles que :- "openAI" | "azureOpenAI" | "google" | "anthropic" | "assistants" | "azureAssistants" | "agents" | "bedrock"
- Pour utiliser une icône de endpoint incluse dans le projet, gardez le
namedu endpoint personnalisé unique et définissez plutôticonURLsur l'une des clés de endpoint intégrées.- "openAI" | "azureOpenAI" | "google" | "anthropic" | "assistants" | "azureAssistants" | "agents" | "bedrock"
- Pour utiliser une image personnalisée, définissez
iconURLsur une URL d'image ou un chemin servi par LibreChat, tel que/assets/my-icon.svg. - Il existe également des "known endpoints" (insensibles à la casse), pour lesquels des icônes sont fournies. Si le
namede votre endpoint correspond aux noms suivants, vous devez omettre ce champ :- Anyscale
- APIpie
- Cohere
- Deepseek
- Fireworks
- groq
- Helicone
- Huggingface
- Mistral
- MLX
- Moonshot
- ollama
- OpenRouter
- Perplexité
- Qwen
- ShuttleAI
- together.ai
- Unifier
- xai
models
Clé :
| Key | Type | Description | Example |
|---|---|---|---|
| models | Object | Configuration pour les modèles. |
Requis
Propriétés :
default
Clé :
| Key | Type | Description | Example |
|---|---|---|---|
| default | Array of Strings | Un tableau de chaînes indiquant les modèles par défaut à utiliser. | If fetching models fails, these defaults are used as a fallback. |
Requis
Exemple :
fetch
Clé :
| Key | Type | Description | Example |
|---|---|---|---|
| fetch | Boolean | Lorsqu'il est défini sur `true`, tente de récupérer une liste de modèles depuis l'API. | May cause slowdowns during initial use of the app if the response is delayed. Defaults to `false`. |
Par défaut : false
Exemple :
userIdQuery
Clé :
| Key | Type | Description | Example |
|---|---|---|---|
| userIdQuery | Boolean | Lorsqu'il est défini sur `true`, ajoute l'ID utilisateur LibreChat en tant que paramètre de requête à la requête des modèles de l'API. |
Par défaut : false
Exemple :
titleConvo
Clé :
| Key | Type | Description | Example |
|---|---|---|---|
| titleConvo | Boolean | Active la génération de titres de conversation lorsque défini sur `true`. |
Par défaut : false
Exemple :
titleTiming
Clé :
| Key | Type | Description | Example |
|---|---|---|---|
| titleTiming | String | Contrôle le moment où les titres des conversations sont générés. Valeurs valides : "immediate" ou "final". | Defaults to "immediate". |
Par défaut : "immediate"
Valeurs disponibles :
"immediate"- Génère le titre dès que la requête commence, en parallèle de la réponse du modèle, en utilisant le premier message de l'utilisateur."final"- Diffère la génération du titre jusqu'à ce que la réponse complète soit terminée. Cela préserve le comportement hérité.
Exemple :
titleMethod
Clé :
| Key | Type | Description | Example |
|---|---|---|---|
| titleMethod | String | Contrôle la méthode utilisée pour générer les titres de conversation. | Valid values: "completion" (default), "structured", "functions" (legacy alias for "structured") |
Par défaut : "completion"
Méthodes disponibles :
"completion"- Utilise l'API de complétion standard sans outils/fonctions. Compatible avec la plupart des LLM."structured"- Utilise une sortie structurée pour la génération de titres. Nécessite la prise en charge du fournisseur/modèle."functions"- Alias hérité pour "structured". Fonctionnellement identique.
Exemple :
titleModel
Clé :
| Key | Type | Description | Example |
|---|---|---|---|
| titleModel | String | Spécifie le modèle à utiliser pour les titres. | 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". |
Par défaut : "gpt-3.5-turbo"
Exemple :
titlePrompt
Clé :
| Key | Type | Description | Example |
|---|---|---|---|
| titlePrompt | String | Invite personnalisée pour la génération de titre. Doit inclure l'espace réservé {convo}. | Allows full control over how titles are generated. |
Par défaut :
Notes :
- Doit toujours inclure l'espace réservé
{convo} - Le paramètre fictif
{convo}sera remplacé par la conversation formatée
Exemple :
titlePromptTemplate
Clé :
| Key | Type | Description | Example |
|---|---|---|---|
| titlePromptTemplate | String | Modèle pour formater le contenu de la conversation qui remplace {convo} dans titlePrompt. | Must include {input} and {output} placeholders. |
Par défaut : "User: {input}\nAI: {output}"
Notes :
- Doit inclure les deux espaces réservés
{input}et{output} - Contrôle la façon dont la conversation est formatée lorsqu'elle est insérée dans
titlePrompt
Exemple :
titleEndpoint
Clé :
| Key | Type | Description | Example |
|---|---|---|---|
| titleEndpoint | String | Spécifie un endpoint alternatif à utiliser pour la génération de titres. | Allows using a different model/endpoint for titles. |
Par défaut : Utilise l'endpoint personnalisé actuel
Valeurs acceptées :
openAIazureOpenAIgoogleanthropicbedrock- Un autre nom d'endpoint personnalisé
Exemple :
modelDisplayLabel
Clé :
| Key | Type | Description | Example |
|---|---|---|---|
| modelDisplayLabel | String | L'étiquette affichée dans les messages à côté de l'icône du modèle d'IA actuel. | 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". |
Par défaut : "AI"
Exemple :
addParams
Clé :
| Key | Type | Description | Example |
|---|---|---|---|
| addParams | Object/Dictionary | Ajoute des paramètres supplémentaires aux requêtes. Les valeurs peuvent être des chaînes de caractères, des nombres, des booléens, des tableaux ou des objets imbriqués. Prend en charge `web_search: true` pour activer la recherche web dans les requêtes. | Adds/Overrides parameters. Useful for specifying API-specific options. |
Exemple :
Notes :
- Le champ
addParamsvous permet d'inclure des paramètres supplémentaires qui ne font pas partie de la charge utile par défaut (voir la section "Paramètres par défaut"). Ceci est particulièrement utile pour les options spécifiques à une API.
dropParams
Clé :
| Key | Type | Description | Example |
|---|---|---|---|
| dropParams | Array/List of Strings | Supprime les paramètres par défaut des requêtes. | Excludes specified default parameters. Useful for APIs that do not accept or recognize certain parameters. |
Exemple :
Remarque :
- Le champ
dropParamsvous permet de supprimer les "Paramètres par défaut" qui sont envoyés avec chaque requête. Cela est utile lorsque vous travaillez avec des API qui n'acceptent pas ou ne reconnaissent pas certains paramètres.
customParams
Clé :
| Key | Type | Description | Example |
|---|---|---|---|
| customParams | Object/Dictionary | Définit le comportement personnalisé de l'endpoint et les métadonnées de paramètres qui ne font pas partie du corps de la requête du fournisseur. | Used for endpoint-specific configuration such as reasoning parameter shape. |
Sous-clés :
| Key | Type | Description | Example |
|---|---|---|---|
| defaultParamsEndpoint | String | Valeurs par défaut de l'endpoint utilisées pour les métadonnées des paramètres de requête. La valeur par défaut est `custom`. Lorsque `provider: anthropic` est défini et que ce champ est omis, LibreChat utilise l'ensemble de paramètres Anthropic. | defaultParamsEndpoint: custom |
| reasoningFormat | String | Contrôle la manière dont les paramètres de raisonnement sont envoyés aux endpoints personnalisés compatibles avec OpenAI. Valeurs valides : `reasoning_effort`, `reasoning_object`, `disabled`. | reasoningFormat: reasoning_object |
| reasoningKey | String | Contrôle quelle clé de réponse est lue pour le contenu de raisonnement du fournisseur. Valeurs valides : `reasoning` ou `reasoning_content`. | reasoningKey: reasoning_content |
| paramDefinitions | Array/List | Définitions de paramètres personnalisés pour cet endpoint. | See default parameter definitions. |
Formats de raisonnement :
reasoning_effort- Envoie le paramètre héritéreasoning_effort.reasoning_object- Envoie un objetreasoning, tel que{ effort, summary }, pour les fournisseurs qui suivent la nouvelle structure compatible avec OpenAI.disabled- Supprime les paramètres de raisonnement même lorsqu'un utilisateur ou une Model Specs sélectionne le raisonnement.
Note sur le fournisseur Anthropic :
Utilisez provider: anthropic lorsque le point de terminaison personnalisé doit utiliser l'API native Anthropic Messages. Utilisez customParams.defaultParamsEndpoint: anthropic sans provider uniquement lorsque vous avez toujours besoin du chemin de point de terminaison personnalisé compatible avec OpenAI, mais que vous souhaitez bénéficier des métadonnées de paramètres et de l'adaptation de requête de style Anthropic.
Exemple :
tokenConfig
Clé :
| Key | Type | Description | Example |
|---|---|---|---|
| tokenConfig | Object/Dictionary | Définit les fenêtres de contexte spécifiques au modèle et les tarifs par million de jetons pour cet endpoint personnalisé. | Used by context usage, visible cost breakdowns, balance transactions, and multi-endpoint agent billing. |
Chaque clé est un nom de modèle. Chaque entrée de modèle prend en charge :
| Key | Type | Description | Example |
|---|---|---|---|
| prompt | Number | Taux de jetons de prompt/entrée par million de jetons. | Required |
| completion | Number | Taux de jetons de complétion/sortie par million de jetons. | Required |
| context | Number | Fenêtre de contexte maximale pour le modèle. | Required |
| cacheRead | Number | Taux de lecture des entrées en cache par million de jetons. | Optional |
| cacheWrite | Number | Taux d'écriture des entrées en cache par million de jetons. | Optional |
Exemple :
Notes :
- Les tarifs sont exprimés par million de jetons en USD avant que toute conversion
interface.currencyne soit appliquée pour l'affichage. - Le nom du modèle doit correspondre à la valeur du modèle envoyée via le endpoint personnalisé.
- Pour les Agents utilisant plusieurs endpoints, la configuration de jetons de l'endpoint/modèle correspondant est utilisée lors de l'enregistrement de l'utilisation et du coût.
headers
Clé :
| Key | Type | Description | Example |
|---|---|---|---|
| headers | Object/Dictionary | Ajoute des en-têtes supplémentaires aux requêtes. Toutes les valeurs d'en-tête doivent être des chaînes de caractères. Prend en charge la substitution dynamique des champs utilisateur avec `{{LIBRECHAT_USER_*}}`, les espaces réservés du corps de la requête avec `{{LIBRECHAT_BODY_*}}` et les variables d'environnement avec `${ENV_VAR}`. | The `headers` object specifies custom headers for requests. Useful for authentication and setting content types. |
Exemple :
Remarque : Prend en charge les valeurs de variables d'environnement dynamiques, qui utilisent le format : "${VARIABLE_NAME}".
Lorsque models.fetch: true est utilisé, ces en-têtes sont également résolus et transmis à la requête de liste de modèles pour les URLs de base contrôlées par l'administrateur. Un en-tête Authorization configuré a priorité sur le recours à l' apiKey de l'endpoint, ce qui est utile pour les proxys sensibles à l'authentification qui renvoient des listes de modèles par utilisateur. Si baseURL: "user_provided" est configuré, LibreChat ne transmet pas les modèles d'en-têtes configurés vers la destination fournie par l'utilisateur. Pour provider: anthropic, les en-têtes sont transmis via le client Anthropic natif au lieu du client compatible OpenAI.
Espaces réservés pour les champs utilisateur disponibles :
| Espace réservé | Champ utilisateur | Type | Description |
|---|---|---|---|
{{LIBRECHAT_USER_ID}} | id | String | Identifiant unique de l'utilisateur |
{{LIBRECHAT_USER_NAME}} | name | String | Nom d'affichage de l'utilisateur |
{{LIBRECHAT_USER_USERNAME}} | username | String | Nom d'utilisateur |
{{LIBRECHAT_USER_EMAIL}} | email | String | Adresse e-mail de l'utilisateur |
{{LIBRECHAT_USER_PROVIDER}} | provider | String | Fournisseur d'authentification (ex: "email", "google", "github") |
{{LIBRECHAT_USER_ROLE}} | role | String | Rôle de l'utilisateur (ex: "user", "admin") |
{{LIBRECHAT_USER_GOOGLEID}} | googleId | String | ID de compte Google |
{{LIBRECHAT_USER_FACEBOOKID}} | facebookId | String | ID de compte Facebook |
{{LIBRECHAT_USER_OPENIDID}} | openidId | String | ID de compte OpenID |
{{LIBRECHAT_USER_SAMLID}} | samlId | String | ID de compte SAML |
{{LIBRECHAT_USER_LDAPID}} | ldapId | String | ID de compte LDAP |
{{LIBRECHAT_USER_GITHUBID}} | githubId | String | ID de compte GitHub |
{{LIBRECHAT_USER_DISCORDID}} | discordId | String | ID de compte Discord |
{{LIBRECHAT_USER_APPLEID}} | appleId | String | ID de compte Apple |
{{LIBRECHAT_USER_EMAILVERIFIED}} | emailVerified | Boolean → String | Statut de vérification de l'e-mail ("true" ou "false") |
{{LIBRECHAT_USER_TWOFACTORENABLED}} | twoFactorEnabled | Boolean → String | Statut de la 2FA ("true" ou "false") |
{{LIBRECHAT_USER_TERMSACCEPTED}} | termsAccepted | Boolean → String | Statut d'acceptation des conditions ("true" ou "false") |
Espaces réservés disponibles pour le corps de la requête :
| Espace réservé | Champ du corps | Type | Description |
|---|---|---|---|
{{LIBRECHAT_BODY_CONVERSATIONID}} | conversationId | String | Identifiant de la conversation actuelle |
{{LIBRECHAT_BODY_PARENTMESSAGEID}} | parentMessageId | String | Identifiant du message parent |
{{LIBRECHAT_BODY_MESSAGEID}} | messageId | String | Identifiant du message actuel |
Exemple utilisant des espaces réservés dans le corps de la requête :
directEndpoint
Clé :
| Key | Type | Description | Example |
|---|---|---|---|
| directEndpoint | Boolean | Lorsqu'il est défini sur `true`, traite la `baseURL` configurée comme le point de terminaison (endpoint) de complétion à utiliser |
Par défaut : false
Exemple :
titleMessageRole
- Options :
"system"|"user"|"assistant"
Clé :
| Key | Type | Description | Example |
|---|---|---|---|
| titleMessageRole | String | Spécifie la valeur du rôle à utiliser dans la charge utile du message pour la génération du titre. Doit être l'un des suivants : `"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. |
Par défaut : "system"
Exemple :
Que pensez-vous de ce guide ?