Struttura dell'oggetto endpoint personalizzato
Ogni endpoint nell'array custom dovrebbe avere la seguente struttura:
Esempio
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
Chiave:
| Key | Type | Description | Example |
|---|---|---|---|
| name | String | Un nome univoco per l'endpoint. | Will be used as the "title" in the Endpoints Selector |
Obbligatorio
Esempio:
name: 'Mistral'apiKey
Chiave:
| Key | Type | Description | Example |
|---|---|---|---|
| apiKey | String (apiKey | "user_provided") | La tua chiave API per il servizio. Può fare riferimento a una variabile d'ambiente o consentire all'utente di fornire il valore. | It's highly recommended to use the env. variable reference for this field, i.e. `${YOUR_VARIABLE}` |
Obbligatorio
Esempio:
apiKey: '${MISTRAL_API_KEY}'o
apiKey: 'your_api_key'o
apiKey: 'user_provided'baseURL
Chiave:
| Key | Type | Description | Example |
|---|---|---|---|
| baseURL | String (baseURL | "user_provided") | URL di base per l'API. Può fare riferimento a una variabile d'ambiente o consentire all'utente di fornire il valore. | It's highly recommended to use the env. variable reference for this field, i.e. `${YOUR_VARIABLE}` |
Obbligatorio
Esempio:
baseURL: 'https://api.mistral.ai/v1'o
baseURL: '${MISTRAL_BASE_URL}'o
baseURL: 'user_provided'Note:
- Se il
baseURLimpostato è l'endpoint completo per i completamenti, puoi impostare il campo directEndpoint sutrueper utilizzarlo direttamente.- Questo è necessario perché l'app aggiunge "/chat/completions" o "/completion" alla
baseURLper impostazione predefinita.
- Questo è necessario perché l'app aggiunge "/chat/completions" o "/completion" alla
- Quando si utilizza
provider: anthropic, impostarebaseURLsulla root dell'API che l'SDK di Anthropic deve chiamare, comehttps://api.anthropic.como la root del proprio gateway. LibreChat utilizza il percorso nativo di Anthropic/v1/messagesper quel provider.
provider
Chiave:
| Key | Type | Description | Example |
|---|---|---|---|
| provider | String | Instrada un endpoint personalizzato attraverso un client provider nativo invece del client predefinito compatibile con OpenAI. | Currently supports `anthropic`. |
Predefinito: omesso, il che utilizza il percorso dell'endpoint personalizzato compatibile con OpenAI.
Valori supportati:
"anthropic"- Utilizza il client nativo Anthropic/v1/messagesconbaseURL,apiKey,headers,addParams,dropParamsecustomParams.paramDefinitionsdi questo endpoint.
Esempio:
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)'Note:
- Usa
provider: anthropicper Anthropic stessa o per gateway compatibili con Anthropic che utilizzano la Messages API nativa. - Elenca i modelli esplicitamente sotto
models.default; lo stile OpenAImodels.fetchnon viene utilizzato per gli endpoint personalizzati nativi di Anthropic. - Il provider implica i parametri dell'interfaccia utente di Anthropic a meno che non si imposti esplicitamente un
customParams.defaultParamsEndpointdiverso. - Gli endpoint senza
providermantengono il comportamento compatibile con OpenAI.
iconURL
Chiave:
| Key | Type | Description | Example |
|---|---|---|---|
| iconURL | String | URL dell'immagine, percorso dell'asset pubblico o chiave dell'icona dell'endpoint integrata da utilizzare come icona dell'endpoint. |
Predefinito: ""
Esempio:
iconURL: https://github.com/danny-avila/LibreChat/raw/main/docs/assets/LibreChat.svgo riutilizzare un'icona endpoint integrata:
iconURL: openAINote:
- Non impostare un
namedi un endpoint personalizzato con il nome di un endpoint integrato solo per riutilizzare un'icona. I nomi degli endpoint personalizzati devono essere univoci e non dovrebbero utilizzare valori di endpoint predefiniti come:- "openAI" | "azureOpenAI" | "google" | "anthropic" | "assistants" | "azureAssistants" | "agents" | "bedrock"
- Per utilizzare un'icona dell'endpoint inclusa nel progetto, mantieni univoco il
namedell'endpoint personalizzato e imposta inveceiconURLsu una delle chiavi degli endpoint predefiniti.- "openAI" | "azureOpenAI" | "google" | "anthropic" | "assistants" | "azureAssistants" | "agents" | "bedrock"
- Per utilizzare un'immagine personalizzata, imposta
iconURLsu un URL di un'immagine o su un percorso servito da LibreChat, come/assets/my-icon.svg. - Esistono anche degli "endpoint noti" (case-insensitive), per i quali vengono fornite delle icone. Se il
namedel tuo endpoint corrisponde ai seguenti nomi, dovresti omettere questo campo:- Anyscale
- APIpie
- Cohere
- Deepseek
- Fireworks
- groq
- Helicone
- Huggingface
- Mistral
- MLX
- "Moonshot"
- ollama
- OpenRouter
- Perplexity
- Qwen
- ShuttleAI
- together.ai
- Unifica
- xai
models
Chiave:
| Key | Type | Description | Example |
|---|---|---|---|
| models | Object | Configurazione per i modelli. |
Obbligatorio
Proprietà :
default
Chiave:
| Key | Type | Description | Example |
|---|---|---|---|
| default | Array of Strings | Un array di stringhe che indica i modelli predefiniti da utilizzare. | If fetching models fails, these defaults are used as a fallback. |
Obbligatorio
Esempio:
default:
- 'mistral-tiny'
- 'mistral-small'
- 'mistral-medium'fetch
Chiave:
| Key | Type | Description | Example |
|---|---|---|---|
| fetch | Boolean | Quando impostato su `true`, tenta di recuperare un elenco di modelli dall'API. | May cause slowdowns during initial use of the app if the response is delayed. Defaults to `false`. |
Predefinito: false
Esempio:
fetch: trueuserIdQuery
Chiave:
| Key | Type | Description | Example |
|---|---|---|---|
| userIdQuery | Boolean | Quando impostato su `true`, aggiunge l'ID utente LibreChat come parametro di query alla richiesta dei modelli API. |
Predefinito: false
Esempio:
userIdQuery: truetitleConvo
Chiave:
| Key | Type | Description | Example |
|---|---|---|---|
| titleConvo | Boolean | Abilita la generazione del titolo della conversazione quando impostato su `true`. |
Predefinito: false
Esempio:
titleConvo: truetitleTiming
Chiave:
| Key | Type | Description | Example |
|---|---|---|---|
| titleTiming | String | Controlla quando vengono generati i titoli delle conversazioni. Valori validi: "immediate" o "final". | Defaults to "immediate". |
Predefinito: "immediate"
Valori disponibili:
"immediate"- Genera il titolo non appena la richiesta ha inizio, in parallelo con la risposta del modello, utilizzando il primo messaggio dell'utente."final"- Posticipa la generazione del titolo fino al completamento della risposta completa. Questo preserva il comportamento legacy.
Esempio:
titleTiming: 'final'titleMethod
Chiave:
| Key | Type | Description | Example |
|---|---|---|---|
| titleMethod | String | Controlla il metodo utilizzato per generare i titoli delle conversazioni. | Valid values: "completion" (default), "structured", "functions" (legacy alias for "structured") |
Predefinito: "completion"
Metodi disponibili:
"completion"- Utilizza l'API di completamento standard senza strumenti/funzioni. Compatibile con la maggior parte degli LLM."structured"- Utilizza l'output strutturato per la generazione del titolo. Richiede il supporto del provider/modello."functions"- Alias legacy per "structured". Funzionalmente identico.
Esempio:
titleMethod: 'completion'titleModel
Chiave:
| Key | Type | Description | Example |
|---|---|---|---|
| titleModel | String | Specifica il modello da utilizzare per i titoli. | 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". |
Predefinito: "gpt-3.5-turbo"
Esempio:
titleModel: 'mistral-tiny'titleModel: 'current_model'titlePrompt
Chiave:
| Key | Type | Description | Example |
|---|---|---|---|
| titlePrompt | String | Prompt personalizzato per la generazione del titolo. Deve includere il segnaposto {convo}. | Allows full control over how titles are generated. |
Predefinito:
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}Note:
- Deve sempre includere il segnaposto
{convo} - Il segnaposto
{convo}verrà sostituito con la conversazione formattata
Esempio:
titlePrompt: "Create a brief, descriptive title for the following conversation:\n\n{convo}\n\nTitle:"titlePromptTemplate
Chiave:
| Key | Type | Description | Example |
|---|---|---|---|
| titlePromptTemplate | String | Modello per la formattazione del contenuto della conversazione che sostituisce {convo} in titlePrompt. | Must include {input} and {output} placeholders. |
Predefinito: "User: {input}\nAI: {output}"
Note:
- Deve includere entrambi i segnaposto
{input}e{output} - Controlla come viene formattata la conversazione quando viene inserita in
titlePrompt
Esempio:
titlePromptTemplate: "Human: {input}\n\nAssistant: {output}"titleEndpoint
Chiave:
| Key | Type | Description | Example |
|---|---|---|---|
| titleEndpoint | String | Specifica un endpoint alternativo da utilizzare per la generazione del titolo. | Allows using a different model/endpoint for titles. |
Predefinito: Utilizza l'endpoint personalizzato corrente
Valori accettati:
openAIazureOpenAIgoogleanthropicbedrock- Un altro nome di endpoint personalizzato
Esempio:
# 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
Chiave:
| Key | Type | Description | Example |
|---|---|---|---|
| modelDisplayLabel | String | L'etichetta visualizzata nei messaggi accanto all'icona per il modello AI corrente. | 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". |
Predefinito: "AI"
Esempio:
modelDisplayLabel: 'Mistral'addParams
Chiave:
| Key | Type | Description | Example |
|---|---|---|---|
| addParams | Object/Dictionary | Aggiunge parametri aggiuntivi alle richieste. I valori possono essere stringhe, numeri, booleani, array o oggetti nidificati. Supporta i toggle degli strumenti del provider come `web_search: true` e `url_context: true` di Google. | Adds/Overrides parameters. Useful for specifying API-specific options. |
Esempio:
addParams:
safe_prompt: true
max_tokens: 2048Note:
- Il campo
addParamsti consente di includere parametri aggiuntivi che non fanno parte del payload predefinito (consulta la sezione "Default Parameters"). Questo è particolarmente utile per le opzioni specifiche dell'API.
dropParams
Chiave:
| Key | Type | Description | Example |
|---|---|---|---|
| dropParams | Array/List of Strings | Rimuove i parametri predefiniti dalle richieste. | Excludes specified default parameters. Useful for APIs that do not accept or recognize certain parameters. |
Esempio:
dropParams:
- 'stop'
- 'user'
- 'frequency_penalty'
- 'presence_penalty'Nota:
- Il campo
dropParamsti consente di rimuovere i "Default Parameters" che vengono inviati con ogni richiesta. Questo è utile quando si lavora con API che non accettano o non riconoscono determinati parametri.
customParams
Chiave:
| Key | Type | Description | Example |
|---|---|---|---|
| customParams | Object/Dictionary | Definisce il comportamento dell'endpoint personalizzato e i metadati delle impostazioni che non fanno parte del corpo della richiesta del provider. | Used for endpoint-specific configuration such as reasoning parameter shape. |
Sotto-chiavi:
| Key | Type | Description | Example |
|---|---|---|---|
| defaultParamsEndpoint | String | Valori predefiniti dell'endpoint utilizzati per i metadati dei parametri di richiesta. L'impostazione predefinita è `custom`. Quando `provider: anthropic` è impostato e questo campo viene omesso, LibreChat utilizza il set di parametri Anthropic. | defaultParamsEndpoint: custom |
| reasoningFormat | String | Controlla come i parametri di ragionamento vengono inviati agli endpoint personalizzati compatibili con OpenAI. Valori validi: `reasoning_effort`, `reasoning_object`, `disabled`. | reasoningFormat: reasoning_object |
| reasoningKey | String | Controlla quale chiave di risposta viene letta per il contenuto di ragionamento del provider. Valori validi: `reasoning` o `reasoning_content`. | reasoningKey: reasoning_content |
| includeReasoningContent | Boolean | Riproduce il `reasoning_content` del provider all'interno dei turni di chiamata agli strumenti per endpoint personalizzati compatibili con OpenAI che lo richiedono. | includeReasoningContent: true |
| includeReasoningHistory | Boolean | Ricostruisce `reasoning_content` dalla cronologia delle conversazioni persistenti tra i vari turni. Implica `includeReasoningContent`. | includeReasoningHistory: true |
| paramDefinitions | Array/List | Definizioni delle impostazioni personalizzate per questo endpoint. | See default parameter definitions. |
Formati di ragionamento:
reasoning_effort- Invia il parametro legacyreasoning_effort.reasoning_object- Invia un oggettoreasoning, come{ effort, summary }, per i provider che seguono la struttura più recente compatibile con OpenAI.disabled- Sopprime i parametri di ragionamento anche quando un utente o una Model Specs seleziona il ragionamento.
Riproduzione del ragionamento:
- Usa
includeReasoningContent: trueper i provider compatibili con OpenAI che richiedono che ilreasoning_contentdell'assistente venga riprodotto durante i turni di chiamata agli strumenti (tool-call). - Usa
includeReasoningHistory: truesolo per i provider che richiedono anche che ilreasoning_contentvenga ricostruito dalla cronologia persistente nei turni successivi, come alcuni gateway Xiaomi MiMo o compatibili con Kimi.
Nota sul provider Anthropic:
Utilizza provider: anthropic quando l'endpoint personalizzato deve utilizzare l'API nativa Anthropic Messages. Utilizza customParams.defaultParamsEndpoint: anthropic senza provider solo quando hai ancora bisogno del percorso dell'endpoint personalizzato compatibile con OpenAI, ma desideri i metadati dei parametri e l'adattamento della richiesta in stile Anthropic.
Esempio:
customParams:
reasoningFormat: reasoning_object
reasoningKey: reasoning_content
includeReasoningContent: truetokenConfig
Chiave:
| Key | Type | Description | Example |
|---|---|---|---|
| tokenConfig | Object/Dictionary | Definisce le finestre di contesto specifiche per il modello e le tariffe per milione di token per questo endpoint personalizzato. | Used by context usage, visible cost breakdowns, balance transactions, and multi-endpoint agent billing. |
Ogni chiave è un nome di modello. Ogni voce di modello supporta:
| Key | Type | Description | Example |
|---|---|---|---|
| prompt | Number | Tasso di token di prompt/input per milione di token. | Required |
| completion | Number | Tasso di token di completamento/output per milione di token. | Required |
| context | Number | Finestra di contesto massima per il modello. | Required |
| cacheRead | Number | Tasso di lettura dell'input in cache per milione di token. | Optional |
| cacheWrite | Number | Tasso di scrittura dell'input in cache per milione di token. | Optional |
Esempio:
tokenConfig:
gpt-4o-mini:
prompt: 0.15
completion: 0.6
context: 128000
cacheRead: 0.075
cacheWrite: 0.15Note:
- Le tariffe sono espresse per milione di token in USD prima che venga applicata qualsiasi conversione
interface.currencyper la visualizzazione. - Il nome del modello deve corrispondere al valore del modello inviato tramite l'endpoint personalizzato.
- Per gli Agent che utilizzano endpoint multipli, viene utilizzata la configurazione del token endpoint/model corrispondente durante la registrazione dell'utilizzo e dei costi.
headers
Chiave:
| Key | Type | Description | Example |
|---|---|---|---|
| headers | Object/Dictionary | Aggiunge intestazioni aggiuntive alle richieste. Tutti i valori delle intestazioni devono essere stringhe. Supporta la sostituzione dinamica dei campi utente con `{{LIBRECHAT_USER_*}}`, i segnaposto del corpo della richiesta con `{{LIBRECHAT_BODY_*}}` e le variabili d'ambiente con `${ENV_VAR}`. | The `headers` object specifies custom headers for requests. Useful for authentication and setting content types. |
Esempio:
headers:
x-api-key: '${ENVIRONMENT_VARIABLE}'
Content-Type: 'application/json'
X-User-ID: '{{LIBRECHAT_USER_ID}}'
X-User-Email: '{{LIBRECHAT_USER_EMAIL}}'Nota: Supporta valori dinamici delle variabili d'ambiente, che utilizzano il formato: "${VARIABLE_NAME}".
Quando si utilizza models.fetch: true, queste intestazioni vengono anche risolte e inoltrate alla richiesta dell'elenco dei modelli per i base URL controllati dall'amministratore. Un'intestazione Authorization configurata ha la precedenza sul fallback dell'apiKey dell'endpoint, il che è utile per i proxy che gestiscono l'autenticazione e restituiscono elenchi di modelli specifici per utente. Se è configurato baseURL: "user_provided", LibreChat non inoltra i template di intestazione configurati alla destinazione fornita dall'utente. Per provider: anthropic, le intestazioni vengono inoltrate tramite il client Anthropic nativo invece che tramite il client compatibile con OpenAI.
Segnaposto dei campi utente disponibili:
| Segnaposto | Campo Utente | Tipo | Descrizione |
|---|---|---|---|
{{LIBRECHAT_USER_ID}} | id | String | Identificativo univoco dell'utente |
{{LIBRECHAT_USER_NAME}} | name | String | Nome visualizzato dell'utente |
{{LIBRECHAT_USER_USERNAME}} | username | String | Nome utente |
{{LIBRECHAT_USER_EMAIL}} | email | String | Indirizzo email dell'utente |
{{LIBRECHAT_USER_PROVIDER}} | provider | String | Provider di autenticazione (es. "email", "google", "github") |
{{LIBRECHAT_USER_ROLE}} | role | String | Ruolo dell'utente (es. "user", "admin") |
{{LIBRECHAT_USER_GOOGLEID}} | googleId | String | ID account Google |
{{LIBRECHAT_USER_FACEBOOKID}} | facebookId | String | ID account Facebook |
{{LIBRECHAT_USER_OPENIDID}} | openidId | String | ID account OpenID |
{{LIBRECHAT_USER_SAMLID}} | samlId | String | ID account SAML |
{{LIBRECHAT_USER_LDAPID}} | ldapId | String | ID account LDAP |
{{LIBRECHAT_USER_GITHUBID}} | githubId | String | ID account GitHub |
{{LIBRECHAT_USER_DISCORDID}} | discordId | String | ID account Discord |
{{LIBRECHAT_USER_APPLEID}} | appleId | String | ID account Apple |
{{LIBRECHAT_USER_EMAILVERIFIED}} | emailVerified | Boolean → String | Stato verifica email ("true" o "false") |
{{LIBRECHAT_USER_TWOFACTORENABLED}} | twoFactorEnabled | Boolean → String | Stato 2FA ("true" o "false") |
{{LIBRECHAT_USER_TERMSACCEPTED}} | termsAccepted | Boolean → String | Stato accettazione termini ("true" o "false") |
Segnaposto disponibili per il corpo della richiesta:
| Segnaposto | Campo Body | Tipo | Descrizione |
|---|---|---|---|
{{LIBRECHAT_BODY_CONVERSATIONID}} | conversationId | String | Identificativo della conversazione corrente |
{{LIBRECHAT_BODY_PARENTMESSAGEID}} | parentMessageId | String | Identificativo del messaggio genitore |
{{LIBRECHAT_BODY_MESSAGEID}} | messageId | String | Identificativo del messaggio corrente |
Esempio che utilizza segnaposto nel corpo della richiesta:
headers:
X-Conversation-ID: '{{LIBRECHAT_BODY_CONVERSATIONID}}'
X-Parent-Message-ID: '{{LIBRECHAT_BODY_PARENTMESSAGEID}}'
X-Message-ID: '{{LIBRECHAT_BODY_MESSAGEID}}'directEndpoint
Chiave:
| Key | Type | Description | Example |
|---|---|---|---|
| directEndpoint | Boolean | Quando impostato su `true`, tratta il `baseURL` configurato come l'endpoint di completamento da utilizzare |
Predefinito: false
Esempio:
directEndpoint: truetitleMessageRole
- Opzioni:
"system"|"user"|"assistant"
Chiave:
| Key | Type | Description | Example |
|---|---|---|---|
| titleMessageRole | String | Specifica il valore del ruolo da utilizzare nel payload del messaggio per la generazione del titolo. Deve essere uno tra: `"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. |
Predefinito: "system"
Esempio:
titleMessageRole: 'user'Com’è questa guida?