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:
| Key | Type | Description | Example |
|---|---|---|---|
| name | String | Um nome único para o endpoint. | Will be used as the "title" in the Endpoints Selector |
Obrigatório
Exemplo:
name: 'Mistral'apiKey
Chave:
| Key | Type | Description | Example |
|---|---|---|---|
| apiKey | String (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:
| Key | Type | Description | Example |
|---|---|---|---|
| baseURL | String (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
baseURLque você definiu for o endpoint completo de completions, você pode definir o campo directEndpoint comotruepara usá-lo diretamente.- Isso é necessário porque o app anexa "/chat/completions" ou "/completion" Ã
baseURLpor padrão.
- Isso é necessário porque o app anexa "/chat/completions" ou "/completion" Ã
- Ao usar
provider: anthropic, definabaseURLpara a raiz da API que o SDK da Anthropic deve chamar, comohttps://api.anthropic.comou a raiz do seu gateway. O LibreChat usa o caminho nativo/v1/messagesda Anthropic para esse endpoint.
provider
Chave:
| Key | Type | Description | Example |
|---|---|---|---|
| provider | String | Roteia 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/messagescom obaseURL,apiKey,headers,addParams,dropParamsecustomParams.paramDefinitionsdeste 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: anthropicpara a própria Anthropic ou gateways compatÃveis com Anthropic que utilizam a Messages API nativa. - Liste os modelos explicitamente em
models.default; omodels.fetchno 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.defaultParamsEndpointdiferente. - Endpoints sem
providermantêm o comportamento compatÃvel com OpenAI.
iconURL
Chave:
| Key | Type | Description | Example |
|---|---|---|---|
| iconURL | String | URL 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.svgou reutilize um Ãcone de endpoint integrado:
iconURL: openAINotas:
- Não defina um
namede 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
namedo endpoint personalizado único e definaiconURLcomo uma das chaves de endpoint integradas.- "openAI" | "azureOpenAI" | "google" | "anthropic" | "assistants" | "azureAssistants" | "agents" | "bedrock"
- Para usar uma imagem personalizada, defina
iconURLcomo 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
namedo 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:
| Key | Type | Description | Example |
|---|---|---|---|
| models | Object | Configuração para modelos. |
Obrigatório
Propriedades:
default
Chave:
| Key | Type | Description | Example |
|---|---|---|---|
| default | Array of Strings | Uma 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:
| Key | Type | Description | Example |
|---|---|---|---|
| fetch | Boolean | Quando 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: trueuserIdQuery
Chave:
| Key | Type | Description | Example |
|---|---|---|---|
| userIdQuery | Boolean | Quando 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: truetitleConvo
Chave:
| Key | Type | Description | Example |
|---|---|---|---|
| titleConvo | Boolean | Habilita o tÃtulo da conversa quando definido como `true`. |
Padrão: false
Exemplo:
titleConvo: truetitleTiming
Chave:
| Key | Type | Description | Example |
|---|---|---|---|
| titleTiming | String | Controla 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:
| Key | Type | Description | Example |
|---|---|---|---|
| titleMethod | String | Controla 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:
| Key | Type | Description | Example |
|---|---|---|---|
| titleModel | String | Especifica 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:
| Key | Type | Description | Example |
|---|---|---|---|
| titlePrompt | String | Prompt 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:
| Key | Type | Description | Example |
|---|---|---|---|
| titlePromptTemplate | String | Modelo 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:
| Key | Type | Description | Example |
|---|---|---|---|
| titleEndpoint | String | Especifica 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:
openAIazureOpenAIgoogleanthropicbedrock- 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:
| Key | Type | Description | Example |
|---|---|---|---|
| modelDisplayLabel | String | O 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:
| Key | Type | Description | Example |
|---|---|---|---|
| addParams | Object/Dictionary | Adiciona 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: 2048Notas:
- O campo
addParamspermite 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:
| Key | Type | Description | Example |
|---|---|---|---|
| dropParams | Array/List of Strings | Remove 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
dropParamspermite 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:
| Key | Type | Description | Example |
|---|---|---|---|
| customParams | Object/Dictionary | Define 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:
| Key | Type | Description | Example |
|---|---|---|---|
| defaultParamsEndpoint | String | Padrõ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 |
| reasoningFormat | String | Controla 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 |
| reasoningKey | String | Controla qual chave de resposta é lida para o conteúdo de raciocÃnio do provedor. Valores válidos: `reasoning` ou `reasoning_content`. | reasoningKey: reasoning_content |
| includeReasoningContent | Boolean | Replays provider `reasoning_content` within tool-call turns for OpenAI-compatible custom endpoints that require it. | includeReasoningContent: true |
| includeReasoningHistory | Boolean | Reconstrói o `reasoning_content` a partir do histórico de conversas persistido entre turnos. Implica `includeReasoningContent`. | includeReasoningHistory: true |
| paramDefinitions | Array/List | Definições de configuração personalizadas para este endpoint. | See default parameter definitions. |
Formatos de RaciocÃnio:
reasoning_effort- Envia o parâmetro legadoreasoning_effort.reasoning_object- Envia um objetoreasoning, 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: truepara provedores compatÃveis com OpenAI que exigem que oreasoning_contentdo assistente seja reproduzido durante turnos de chamada de ferramenta (tool-call). - Use
includeReasoningHistory: trueapenas para provedores que também exigem quereasoning_contentseja 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: truetokenConfig
Chave:
| Key | Type | Description | Example |
|---|---|---|---|
| tokenConfig | Object/Dictionary | Define 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:
| Key | Type | Description | Example |
|---|---|---|---|
| prompt | Number | Taxa de tokens de prompt/entrada por milhão de tokens. | Required |
| completion | Number | Taxa de tokens de conclusão/saÃda por milhão de tokens. | Required |
| context | Number | Janela de contexto máxima para o modelo. | Required |
| cacheRead | Number | Taxa de leitura de entrada em cache por milhão de tokens. | Optional |
| cacheWrite | Number | Taxa 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.15Notas:
- As taxas são expressas por milhão de tokens em USD antes que qualquer conversão
interface.currencyseja 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:
| Key | Type | Description | Example |
|---|---|---|---|
| headers | Object/Dictionary | Adiciona 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:
| Placeholder | User Field | Type | Description |
|---|---|---|---|
{{LIBRECHAT_USER_ID}} | id | String | Identificador único do usuário |
{{LIBRECHAT_USER_NAME}} | name | String | Nome de exibição do usuário |
{{LIBRECHAT_USER_USERNAME}} | username | String | Nome de usuário |
{{LIBRECHAT_USER_EMAIL}} | email | String | Endereço de e-mail do usuário |
{{LIBRECHAT_USER_PROVIDER}} | provider | String | Provedor de autenticação (ex: "email", "google", "github") |
{{LIBRECHAT_USER_ROLE}} | role | String | Função do usuário (ex: "user", "admin") |
{{LIBRECHAT_USER_GOOGLEID}} | googleId | String | ID da conta Google |
{{LIBRECHAT_USER_FACEBOOKID}} | facebookId | String | ID da conta Facebook |
{{LIBRECHAT_USER_OPENIDID}} | openidId | String | ID da conta OpenID |
{{LIBRECHAT_USER_SAMLID}} | samlId | String | ID da conta SAML |
{{LIBRECHAT_USER_LDAPID}} | ldapId | String | ID da conta LDAP |
{{LIBRECHAT_USER_GITHUBID}} | githubId | String | ID da conta GitHub |
{{LIBRECHAT_USER_DISCORDID}} | discordId | String | ID da conta Discord |
{{LIBRECHAT_USER_APPLEID}} | appleId | String | ID da conta Apple |
{{LIBRECHAT_USER_EMAILVERIFIED}} | emailVerified | Boolean → String | Status de verificação de e-mail ("true" ou "false") |
{{LIBRECHAT_USER_TWOFACTORENABLED}} | twoFactorEnabled | Boolean → String | Status do 2FA ("true" ou "false") |
{{LIBRECHAT_USER_TERMSACCEPTED}} | termsAccepted | Boolean → String | Status de aceitação dos termos ("true" ou "false") |
Placeholders de Corpo de Requisição DisponÃveis:
| Placeholder | Body Field | Type | Descrição |
|---|---|---|---|
{{LIBRECHAT_BODY_CONVERSATIONID}} | conversationId | String | Identificador da conversa atual |
{{LIBRECHAT_BODY_PARENTMESSAGEID}} | parentMessageId | String | Identificador da mensagem pai |
{{LIBRECHAT_BODY_MESSAGEID}} | messageId | String | Identificador 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:
| Key | Type | Description | Example |
|---|---|---|---|
| directEndpoint | Boolean | Quando definido como `true`, trata a `baseURL` configurada como o endpoint de completions a ser utilizado |
Padrão: false
Exemplo:
directEndpoint: truetitleMessageRole
- Opções:
"system"|"user"|"assistant"
Chave:
| Key | Type | Description | Example |
|---|---|---|---|
| titleMessageRole | String | Especifica 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?