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

Estrutura do Objeto de endpoint Personalizado

Cada endpoint no array custom deve ter a seguinte estrutura:

Exemplo

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

Chave:

KeyTypeDescriptionExample
nameStringUm nome único para o endpoint.Will be used as the "title" in the Endpoints Selector

Obrigatório

Exemplo:

name: 'Mistral'

apiKey

Chave:

KeyTypeDescriptionExample
apiKeyString (apiKey | "user_provided")Sua chave de API para o serviço. Pode referenciar uma variável de ambiente ou permitir que o usuário forneça o valor.It's highly recommended to use the env. variable reference for this field, i.e. `${YOUR_VARIABLE}`

Obrigatório

Exemplo:

apiKey: '${MISTRAL_API_KEY}'

ou

apiKey: 'your_api_key'

ou

apiKey: 'user_provided'

baseURL

Chave:

KeyTypeDescriptionExample
baseURLString (baseURL | "user_provided")URL base para a API. Pode referenciar uma variável de ambiente ou permitir que o usuário forneça o valor.It's highly recommended to use the env. variable reference for this field, i.e. `${YOUR_VARIABLE}`

Obrigatório

Exemplo:

baseURL: 'https://api.mistral.ai/v1'

ou

baseURL: '${MISTRAL_BASE_URL}'

ou

baseURL: 'user_provided'

Notas:

  • Se a baseURL que você definiu for o endpoint completo de completions, você pode definir o campo directEndpoint como true para usá-lo diretamente.
    • Isso é necessário porque o app anexa "/chat/completions" ou "/completion" à baseURL por padrão.
  • Ao usar provider: anthropic, defina baseURL para a raiz da API que o SDK da Anthropic deve chamar, como https://api.anthropic.com ou a raiz do seu gateway. O LibreChat usa o caminho nativo /v1/messages da Anthropic para esse endpoint.

provider

Chave:

KeyTypeDescriptionExample
providerStringRoteia um endpoint personalizado através de um cliente de provedor nativo em vez do cliente padrão compatível com OpenAI.Currently supports `anthropic`.

Padrão: omitido, o que utiliza o caminho de endpoint personalizado compatível com OpenAI.

Valores Suportados:

  • "anthropic" - Usa o cliente nativo Anthropic /v1/messages com o baseURL, apiKey, headers, addParams, dropParams e customParams.paramDefinitions deste endpoint.

Exemplo:

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)'

Notas:

  • Use provider: anthropic para a própria Anthropic ou gateways compatíveis com Anthropic que utilizam a Messages API nativa.
  • Liste os modelos explicitamente em models.default; o models.fetch no estilo OpenAI não é usado para endpoints personalizados nativos da Anthropic.
  • O provedor implica parâmetros de UI da Anthropic, a menos que você defina explicitamente um customParams.defaultParamsEndpoint diferente.
  • Endpoints sem provider mantêm o comportamento compatível com OpenAI.

iconURL

Chave:

KeyTypeDescriptionExample
iconURLStringURL da imagem, caminho de ativo público ou chave de ícone de endpoint integrada para usar como ícone do endpoint.

Padrão: ""

Exemplo:

iconURL: https://github.com/danny-avila/LibreChat/raw/main/docs/assets/LibreChat.svg

ou reutilize um ícone de endpoint integrado:

iconURL: openAI

Notas:

  • Não defina um name de endpoint personalizado para um nome de endpoint nativo apenas para reutilizar um ícone. Nomes de endpoints personalizados devem ser únicos e não devem usar valores de endpoint padrão, tais como:
    • "openAI" | "azureOpenAI" | "google" | "anthropic" | "assistants" | "azureAssistants" | "agents" | "bedrock"
  • Para usar um ícone de endpoint incluído no projeto, mantenha o name do endpoint personalizado único e defina iconURL como uma das chaves de endpoint integradas.
    • "openAI" | "azureOpenAI" | "google" | "anthropic" | "assistants" | "azureAssistants" | "agents" | "bedrock"
  • Para usar uma imagem personalizada, defina iconURL como uma URL de imagem ou um caminho servido pelo LibreChat, como /assets/my-icon.svg.
  • Existem também "endpoints conhecidos" (que não diferenciam maiúsculas de minúsculas), os quais possuem ícones fornecidos. Se o name do seu endpoint corresponder aos nomes a seguir, você deve omitir este campo:
    • Anyscale
    • APIpie
    • Cohere
    • Deepseek
    • Fireworks
    • groq
    • Helicone
    • Huggingface
    • Mistral
    • MLX
    • Moonshot
    • ollama
    • OpenRouter
    • Perplexity
    • Qwen
    • ShuttleAI
    • together.ai
    • Unificar
    • xai

models

Chave:

KeyTypeDescriptionExample
modelsObjectConfiguração para modelos.

Obrigatório

Propriedades:

default

Chave:

KeyTypeDescriptionExample
defaultArray of StringsUma matriz de strings indicando os modelos padrão a serem usados.If fetching models fails, these defaults are used as a fallback.

Obrigatório

Exemplo:

default:
  - 'mistral-tiny'
  - 'mistral-small'
  - 'mistral-medium'

fetch

Chave:

KeyTypeDescriptionExample
fetchBooleanQuando definido como `true`, tenta buscar uma lista de modelos da API.May cause slowdowns during initial use of the app if the response is delayed. Defaults to `false`.

Padrão: false

Exemplo:

fetch: true

userIdQuery

Chave:

KeyTypeDescriptionExample
userIdQueryBooleanQuando definido como `true`, adiciona o ID de usuário do LibreChat como um parâmetro de consulta à solicitação de modelos da API.

Padrão: false

Exemplo:

userIdQuery: true

titleConvo

Chave:

KeyTypeDescriptionExample
titleConvoBooleanHabilita o título da conversa quando definido como `true`.

Padrão: false

Exemplo:

titleConvo: true

titleTiming

Chave:

KeyTypeDescriptionExample
titleTimingStringControla quando os títulos das conversas são gerados. Valores válidos: "immediate" ou "final".Defaults to "immediate".

Padrão: "immediate"

Valores Disponíveis:

  • "immediate" - Gera o título assim que a solicitação é iniciada, em paralelo com a resposta do modelo, usando a primeira mensagem do usuário.
  • "final" - Adia a geração do título até que a resposta completa seja concluída. Isso preserva o comportamento legado.

Exemplo:

titleTiming: 'final'

titleMethod

Chave:

KeyTypeDescriptionExample
titleMethodStringControla o método usado para gerar títulos de conversas.Valid values: "completion" (default), "structured", "functions" (legacy alias for "structured")

Padrão: "completion"

Métodos Disponíveis:

  • "completion" - Usa a API de conclusão padrão sem ferramentas/funções. Compatível com a maioria dos LLMs.
  • "structured" - Usa saída estruturada para a geração de títulos. Requer suporte do provedor/modelo.
  • "functions" - Alias legado para "structured". Funcionalmente idêntico.

Exemplo:

titleMethod: 'completion'

titleModel

Chave:

KeyTypeDescriptionExample
titleModelStringEspecifica o modelo a ser usado para títulos.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".

Padrão: "gpt-3.5-turbo"

Exemplo:

titleModel: 'mistral-tiny'
titleModel: 'current_model'

titlePrompt

Chave:

KeyTypeDescriptionExample
titlePromptStringPrompt personalizado para geração de título. Deve incluir o placeholder {convo}.Allows full control over how titles are generated.

Padrão:

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}

Notas:

  • Deve sempre incluir o placeholder {convo}
  • O placeholder {convo} será substituído pela conversa formatada

Exemplo:

titlePrompt: "Create a brief, descriptive title for the following conversation:\n\n{convo}\n\nTitle:"

titlePromptTemplate

Chave:

KeyTypeDescriptionExample
titlePromptTemplateStringModelo para formatar o conteúdo da conversa que substitui {convo} em titlePrompt.Must include {input} and {output} placeholders.

Padrão: "User: {input}\nAI: {output}"

Notas:

  • Deve incluir ambos os placeholders {input} e {output}
  • Controla como a conversa é formatada quando inserida no titlePrompt

Exemplo:

titlePromptTemplate: "Human: {input}\n\nAssistant: {output}"

titleEndpoint

Chave:

KeyTypeDescriptionExample
titleEndpointStringEspecifica um endpoint alternativo a ser usado para a geração de títulos.Allows using a different model/endpoint for titles.

Padrão: Usa o endpoint personalizado atual

Valores Aceitos:

  • openAI
  • azureOpenAI
  • google
  • anthropic
  • bedrock
  • Outro nome de endpoint personalizado

Exemplo:

# 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

Chave:

KeyTypeDescriptionExample
modelDisplayLabelStringO rótulo exibido nas mensagens ao lado do ícone do modelo de IA atual.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".

Padrão: "AI"

Exemplo:

modelDisplayLabel: 'Mistral'

addParams

Chave:

KeyTypeDescriptionExample
addParamsObject/DictionaryAdiciona parâmetros adicionais às solicitações. Os valores podem ser strings, números, booleanos, arrays ou objetos aninhados. Suporta alternadores de ferramentas de provedores, como `web_search: true` e `url_context: true` do Google.Adds/Overrides parameters. Useful for specifying API-specific options.

Exemplo:

addParams:
  safe_prompt: true
  max_tokens: 2048

Notas:

  • O campo addParams permite incluir parâmetros adicionais que não fazem parte do payload padrão (consulte a seção "Default Parameters"). Isso é particularmente útil para opções específicas de APIs.

dropParams

Chave:

KeyTypeDescriptionExample
dropParamsArray/List of StringsRemove parâmetros padrão das solicitações.Excludes specified default parameters. Useful for APIs that do not accept or recognize certain parameters.

Exemplo:

dropParams:
  - 'stop'
  - 'user'
  - 'frequency_penalty'
  - 'presence_penalty'

Nota:

  • O campo dropParams permite que você remova "Parâmetros Padrão" que são enviados com cada solicitação. Isso é útil ao trabalhar com APIs que não aceitam ou não reconhecem determinados parâmetros.

customParams

Chave:

KeyTypeDescriptionExample
customParamsObject/DictionaryDefine o comportamento de endpoint personalizado e metadados de configurações que não fazem parte do corpo da requisição do provedor.Used for endpoint-specific configuration such as reasoning parameter shape.

Sub-chaves:

KeyTypeDescriptionExample
defaultParamsEndpointStringPadrões de endpoint usados para metadados de parâmetros de solicitação. O padrão é `custom`. Quando `provider: anthropic` é definido e este campo é omitido, o LibreChat usa o conjunto de parâmetros da Anthropic.defaultParamsEndpoint: custom
reasoningFormatStringControla como os parâmetros de raciocínio são enviados para endpoints personalizados compatíveis com OpenAI. Valores válidos: `reasoning_effort`, `reasoning_object`, `disabled`.reasoningFormat: reasoning_object
reasoningKeyStringControla qual chave de resposta é lida para o conteúdo de raciocínio do provedor. Valores válidos: `reasoning` ou `reasoning_content`.reasoningKey: reasoning_content
includeReasoningContentBooleanReplays provider `reasoning_content` within tool-call turns for OpenAI-compatible custom endpoints that require it.includeReasoningContent: true
includeReasoningHistoryBooleanReconstrói o `reasoning_content` a partir do histórico de conversas persistido entre turnos. Implica `includeReasoningContent`.includeReasoningHistory: true
paramDefinitionsArray/ListDefinições de configuração personalizadas para este endpoint.See default parameter definitions.

Formatos de Raciocínio:

  • reasoning_effort - Envia o parâmetro legado reasoning_effort.
  • reasoning_object - Envia um objeto reasoning, como { effort, summary }, para provedores que seguem o formato mais recente compatível com OpenAI.
  • disabled - Suprime os parâmetros de raciocínio mesmo quando um usuário ou Model Specs seleciona o raciocínio.

Repetição de raciocínio:

  • Use includeReasoningContent: true para provedores compatíveis com OpenAI que exigem que o reasoning_content do assistente seja reproduzido durante turnos de chamada de ferramenta (tool-call).
  • Use includeReasoningHistory: true apenas para provedores que também exigem que reasoning_content seja reconstruído a partir do histórico persistido em turnos posteriores, como alguns gateways Xiaomi MiMo ou compatíveis com Kimi.

Nota do provedor Anthropic:

Use provider: anthropic quando o endpoint personalizado deve usar a API nativa de Messages da Anthropic. Use customParams.defaultParamsEndpoint: anthropic sem provider apenas quando você ainda precisar do caminho do endpoint personalizado compatível com OpenAI, mas desejar metadados de parâmetros e adaptação de solicitação no estilo Anthropic.

Exemplo:

customParams:
  reasoningFormat: reasoning_object
  reasoningKey: reasoning_content
  includeReasoningContent: true

tokenConfig

Chave:

KeyTypeDescriptionExample
tokenConfigObject/DictionaryDefine janelas de contexto específicas do modelo e taxas por milhão de tokens para este endpoint personalizado.Used by context usage, visible cost breakdowns, balance transactions, and multi-endpoint agent billing.

Cada chave é um nome de modelo. Cada entrada de modelo suporta:

KeyTypeDescriptionExample
promptNumberTaxa de tokens de prompt/entrada por milhão de tokens.Required
completionNumberTaxa de tokens de conclusão/saída por milhão de tokens.Required
contextNumberJanela de contexto máxima para o modelo.Required
cacheReadNumberTaxa de leitura de entrada em cache por milhão de tokens.Optional
cacheWriteNumberTaxa de gravação de entrada em cache por milhão de tokens.Optional

Exemplo:

tokenConfig:
  gpt-4o-mini:
    prompt: 0.15
    completion: 0.6
    context: 128000
    cacheRead: 0.075
    cacheWrite: 0.15

Notas:

  • As taxas são expressas por milhão de tokens em USD antes que qualquer conversão interface.currency seja aplicada para exibição.
  • O nome do modelo deve corresponder ao valor do modelo enviado através do endpoint personalizado.
  • Para Agents que utilizam múltiplos endpoints, a configuração de token do endpoint/modelo correspondente é usada ao registrar o uso e o custo.

headers

Chave:

KeyTypeDescriptionExample
headersObject/DictionaryAdiciona cabeçalhos adicionais às solicitações. Todos os valores de cabeçalho devem ser strings. Suporta substituição dinâmica de campos de usuário com `{{LIBRECHAT_USER_*}}`, placeholders do corpo da solicitação com `{{LIBRECHAT_BODY_*}}` e variáveis de ambiente com `${ENV_VAR}`.The `headers` object specifies custom headers for requests. Useful for authentication and setting content types.

Exemplo:

headers:
  x-api-key: '${ENVIRONMENT_VARIABLE}'
  Content-Type: 'application/json'
  X-User-ID: '{{LIBRECHAT_USER_ID}}'
  X-User-Email: '{{LIBRECHAT_USER_EMAIL}}'

Nota: Suporta valores dinâmicos de variáveis de ambiente, que utilizam o formato: "${VARIABLE_NAME}".

Quando models.fetch: true é usado, esses cabeçalhos também são resolvidos e encaminhados para a requisição de lista de modelos para URLs base controladas pelo administrador. Um cabeçalho Authorization configurado tem precedência sobre o fallback de apiKey do endpoint, o que é útil para proxies que reconhecem autenticação e retornam listas de modelos por usuário. Se baseURL: "user_provided" estiver configurado, o LibreChat não encaminha modelos de cabeçalho configurados para o destino fornecido pelo usuário. Para provider: anthropic, os cabeçalhos são encaminhados através do cliente nativo da Anthropic em vez do cliente compatível com OpenAI.

Placeholders de Campo de Usuário Disponíveis:

PlaceholderUser FieldTypeDescription
{{LIBRECHAT_USER_ID}}idStringIdentificador único do usuário
{{LIBRECHAT_USER_NAME}}nameStringNome de exibição do usuário
{{LIBRECHAT_USER_USERNAME}}usernameStringNome de usuário
{{LIBRECHAT_USER_EMAIL}}emailStringEndereço de e-mail do usuário
{{LIBRECHAT_USER_PROVIDER}}providerStringProvedor de autenticação (ex: "email", "google", "github")
{{LIBRECHAT_USER_ROLE}}roleStringFunção do usuário (ex: "user", "admin")
{{LIBRECHAT_USER_GOOGLEID}}googleIdStringID da conta Google
{{LIBRECHAT_USER_FACEBOOKID}}facebookIdStringID da conta Facebook
{{LIBRECHAT_USER_OPENIDID}}openidIdStringID da conta OpenID
{{LIBRECHAT_USER_SAMLID}}samlIdStringID da conta SAML
{{LIBRECHAT_USER_LDAPID}}ldapIdStringID da conta LDAP
{{LIBRECHAT_USER_GITHUBID}}githubIdStringID da conta GitHub
{{LIBRECHAT_USER_DISCORDID}}discordIdStringID da conta Discord
{{LIBRECHAT_USER_APPLEID}}appleIdStringID da conta Apple
{{LIBRECHAT_USER_EMAILVERIFIED}}emailVerifiedBoolean → StringStatus de verificação de e-mail ("true" ou "false")
{{LIBRECHAT_USER_TWOFACTORENABLED}}twoFactorEnabledBoolean → StringStatus do 2FA ("true" ou "false")
{{LIBRECHAT_USER_TERMSACCEPTED}}termsAcceptedBoolean → StringStatus de aceitação dos termos ("true" ou "false")

Placeholders de Corpo de Requisição Disponíveis:

PlaceholderBody FieldTypeDescrição
{{LIBRECHAT_BODY_CONVERSATIONID}}conversationIdStringIdentificador da conversa atual
{{LIBRECHAT_BODY_PARENTMESSAGEID}}parentMessageIdStringIdentificador da mensagem pai
{{LIBRECHAT_BODY_MESSAGEID}}messageIdStringIdentificador da mensagem atual

Exemplo usando placeholders no corpo da requisição:

headers:
  X-Conversation-ID: '{{LIBRECHAT_BODY_CONVERSATIONID}}'
  X-Parent-Message-ID: '{{LIBRECHAT_BODY_PARENTMESSAGEID}}'
  X-Message-ID: '{{LIBRECHAT_BODY_MESSAGEID}}'

directEndpoint

Chave:

KeyTypeDescriptionExample
directEndpointBooleanQuando definido como `true`, trata a `baseURL` configurada como o endpoint de completions a ser utilizado

Padrão: false

Exemplo:

directEndpoint: true

titleMessageRole

  • Opções: "system" | "user" | "assistant"

Chave:

KeyTypeDescriptionExample
titleMessageRoleStringEspecifica o valor da função (role) a ser usado no payload da mensagem para a geração de títulos. Deve ser um dos seguintes: `"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.

Padrão: "system"

Exemplo:

titleMessageRole: 'user'

Como está este guia?