Skip to main content
LibreChat is joining ClickHouse to power the open-source Agentic Data Stack 🎉 Learn more
LibreChat

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:

KeyTypeDescriptionExample
nameStringUn nome univoco per l'endpoint.Will be used as the "title" in the Endpoints Selector

Obbligatorio

Esempio:

name: 'Mistral'

apiKey

Chiave:

KeyTypeDescriptionExample
apiKeyString (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:

KeyTypeDescriptionExample
baseURLString (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 baseURL impostato è l'endpoint completo per i completamenti, puoi impostare il campo directEndpoint su true per utilizzarlo direttamente.
    • Questo è necessario perché l'app aggiunge "/chat/completions" o "/completion" alla baseURL per impostazione predefinita.
  • Quando si utilizza provider: anthropic, impostare baseURL sulla root dell'API che l'SDK di Anthropic deve chiamare, come https://api.anthropic.com o la root del proprio gateway. LibreChat utilizza il percorso nativo di Anthropic /v1/messages per quel provider.

provider

Chiave:

KeyTypeDescriptionExample
providerStringInstrada 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/messages con baseURL, apiKey, headers, addParams, dropParams e customParams.paramDefinitions di 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: anthropic per Anthropic stessa o per gateway compatibili con Anthropic che utilizzano la Messages API nativa.
  • Elenca i modelli esplicitamente sotto models.default; lo stile OpenAI models.fetch non 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.defaultParamsEndpoint diverso.
  • Gli endpoint senza provider mantengono il comportamento compatibile con OpenAI.

iconURL

Chiave:

KeyTypeDescriptionExample
iconURLStringURL 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.svg

o riutilizzare un'icona endpoint integrata:

iconURL: openAI

Note:

  • Non impostare un name di 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 name dell'endpoint personalizzato e imposta invece iconURL su una delle chiavi degli endpoint predefiniti.
    • "openAI" | "azureOpenAI" | "google" | "anthropic" | "assistants" | "azureAssistants" | "agents" | "bedrock"
  • Per utilizzare un'immagine personalizzata, imposta iconURL su 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 name del 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:

KeyTypeDescriptionExample
modelsObjectConfigurazione per i modelli.

Obbligatorio

Proprietà:

default

Chiave:

KeyTypeDescriptionExample
defaultArray of StringsUn 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:

KeyTypeDescriptionExample
fetchBooleanQuando 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: true

userIdQuery

Chiave:

KeyTypeDescriptionExample
userIdQueryBooleanQuando impostato su `true`, aggiunge l'ID utente LibreChat come parametro di query alla richiesta dei modelli API.

Predefinito: false

Esempio:

userIdQuery: true

titleConvo

Chiave:

KeyTypeDescriptionExample
titleConvoBooleanAbilita la generazione del titolo della conversazione quando impostato su `true`.

Predefinito: false

Esempio:

titleConvo: true

titleTiming

Chiave:

KeyTypeDescriptionExample
titleTimingStringControlla 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:

KeyTypeDescriptionExample
titleMethodStringControlla 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:

KeyTypeDescriptionExample
titleModelStringSpecifica 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:

KeyTypeDescriptionExample
titlePromptStringPrompt 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:

KeyTypeDescriptionExample
titlePromptTemplateStringModello 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:

KeyTypeDescriptionExample
titleEndpointStringSpecifica 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:

  • openAI
  • azureOpenAI
  • google
  • anthropic
  • bedrock
  • 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:

KeyTypeDescriptionExample
modelDisplayLabelStringL'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:

KeyTypeDescriptionExample
addParamsObject/DictionaryAggiunge 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: 2048

Note:

  • Il campo addParams ti 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:

KeyTypeDescriptionExample
dropParamsArray/List of StringsRimuove 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 dropParams ti 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:

KeyTypeDescriptionExample
customParamsObject/DictionaryDefinisce 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:

KeyTypeDescriptionExample
defaultParamsEndpointStringValori 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
reasoningFormatStringControlla come i parametri di ragionamento vengono inviati agli endpoint personalizzati compatibili con OpenAI. Valori validi: `reasoning_effort`, `reasoning_object`, `disabled`.reasoningFormat: reasoning_object
reasoningKeyStringControlla quale chiave di risposta viene letta per il contenuto di ragionamento del provider. Valori validi: `reasoning` o `reasoning_content`.reasoningKey: reasoning_content
includeReasoningContentBooleanRiproduce il `reasoning_content` del provider all'interno dei turni di chiamata agli strumenti per endpoint personalizzati compatibili con OpenAI che lo richiedono.includeReasoningContent: true
includeReasoningHistoryBooleanRicostruisce `reasoning_content` dalla cronologia delle conversazioni persistenti tra i vari turni. Implica `includeReasoningContent`.includeReasoningHistory: true
paramDefinitionsArray/ListDefinizioni delle impostazioni personalizzate per questo endpoint.See default parameter definitions.

Formati di ragionamento:

  • reasoning_effort - Invia il parametro legacy reasoning_effort.
  • reasoning_object - Invia un oggetto reasoning, 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: true per i provider compatibili con OpenAI che richiedono che il reasoning_content dell'assistente venga riprodotto durante i turni di chiamata agli strumenti (tool-call).
  • Usa includeReasoningHistory: true solo per i provider che richiedono anche che il reasoning_content venga 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: true

tokenConfig

Chiave:

KeyTypeDescriptionExample
tokenConfigObject/DictionaryDefinisce 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:

KeyTypeDescriptionExample
promptNumberTasso di token di prompt/input per milione di token.Required
completionNumberTasso di token di completamento/output per milione di token.Required
contextNumberFinestra di contesto massima per il modello.Required
cacheReadNumberTasso di lettura dell'input in cache per milione di token.Optional
cacheWriteNumberTasso 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.15

Note:

  • Le tariffe sono espresse per milione di token in USD prima che venga applicata qualsiasi conversione interface.currency per 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:

KeyTypeDescriptionExample
headersObject/DictionaryAggiunge 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:

SegnapostoCampo UtenteTipoDescrizione
{{LIBRECHAT_USER_ID}}idStringIdentificativo univoco dell'utente
{{LIBRECHAT_USER_NAME}}nameStringNome visualizzato dell'utente
{{LIBRECHAT_USER_USERNAME}}usernameStringNome utente
{{LIBRECHAT_USER_EMAIL}}emailStringIndirizzo email dell'utente
{{LIBRECHAT_USER_PROVIDER}}providerStringProvider di autenticazione (es. "email", "google", "github")
{{LIBRECHAT_USER_ROLE}}roleStringRuolo dell'utente (es. "user", "admin")
{{LIBRECHAT_USER_GOOGLEID}}googleIdStringID account Google
{{LIBRECHAT_USER_FACEBOOKID}}facebookIdStringID account Facebook
{{LIBRECHAT_USER_OPENIDID}}openidIdStringID account OpenID
{{LIBRECHAT_USER_SAMLID}}samlIdStringID account SAML
{{LIBRECHAT_USER_LDAPID}}ldapIdStringID account LDAP
{{LIBRECHAT_USER_GITHUBID}}githubIdStringID account GitHub
{{LIBRECHAT_USER_DISCORDID}}discordIdStringID account Discord
{{LIBRECHAT_USER_APPLEID}}appleIdStringID account Apple
{{LIBRECHAT_USER_EMAILVERIFIED}}emailVerifiedBoolean → StringStato verifica email ("true" o "false")
{{LIBRECHAT_USER_TWOFACTORENABLED}}twoFactorEnabledBoolean → StringStato 2FA ("true" o "false")
{{LIBRECHAT_USER_TERMSACCEPTED}}termsAcceptedBoolean → StringStato accettazione termini ("true" o "false")

Segnaposto disponibili per il corpo della richiesta:

SegnapostoCampo BodyTipoDescrizione
{{LIBRECHAT_BODY_CONVERSATIONID}}conversationIdStringIdentificativo della conversazione corrente
{{LIBRECHAT_BODY_PARENTMESSAGEID}}parentMessageIdStringIdentificativo del messaggio genitore
{{LIBRECHAT_BODY_MESSAGEID}}messageIdStringIdentificativo 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:

KeyTypeDescriptionExample
directEndpointBooleanQuando impostato su `true`, tratta il `baseURL` configurato come l'endpoint di completamento da utilizzare

Predefinito: false

Esempio:

directEndpoint: true

titleMessageRole

  • Opzioni: "system" | "user" | "assistant"

Chiave:

KeyTypeDescriptionExample
titleMessageRoleStringSpecifica 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?