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

Struktur des benutzerdefinierten endpoint-Objekts

Jeder endpoint im custom Array sollte die folgende Struktur aufweisen:

Beispiel

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

Schlüssel:

KeyTypeDescriptionExample
nameStringEin eindeutiger Name für den endpoint.Will be used as the "title" in the Endpoints Selector

Erforderlich

Beispiel:

name: 'Mistral'

apiKey

Schlüssel:

KeyTypeDescriptionExample
apiKeyString (apiKey | "user_provided")Ihr API-Schlüssel für den Dienst. Kann auf eine Umgebungsvariable verweisen oder dem Benutzer erlauben, den Wert bereitzustellen.It's highly recommended to use the env. variable reference for this field, i.e. `${YOUR_VARIABLE}`

Erforderlich

Beispiel:

apiKey: '${MISTRAL_API_KEY}'

oder

apiKey: 'your_api_key'

oder

apiKey: 'user_provided'

baseURL

Schlüssel:

KeyTypeDescriptionExample
baseURLString (baseURL | "user_provided")Basis-URL für die API. Kann auf eine Umgebungsvariable verweisen oder dem Benutzer erlauben, den Wert anzugeben.It's highly recommended to use the env. variable reference for this field, i.e. `${YOUR_VARIABLE}`

Erforderlich

Beispiel:

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

oder

baseURL: '${MISTRAL_BASE_URL}'

oder

baseURL: 'user_provided'

Hinweise:

  • Wenn die von dir festgelegte baseURL der vollständige Completions-Endpunkt ist, kannst du das Feld directEndpoint auf true setzen, um ihn direkt zu verwenden.
    • Dies ist notwendig, da die App standardmäßig "/chat/completions" oder "/completion" an die baseURL anhängt.
  • Wenn Sie provider: anthropic verwenden, setzen Sie baseURL auf den API-Root, den das Anthropic SDK aufrufen soll, wie zum Beispiel https://api.anthropic.com oder Ihren Gateway-Root. LibreChat verwendet für diesen Anbieter den nativen Anthropic-Pfad /v1/messages.

provider

Schlüssel:

KeyTypeDescriptionExample
providerStringLeitet einen benutzerdefinierten endpoint über einen nativen Provider-Client anstelle des standardmäßigen OpenAI-kompatiblen Clients weiter.Currently supports `anthropic`.

Standard: weggelassen, wodurch der OpenAI-kompatible benutzerdefinierte endpoint-Pfad verwendet wird.

Unterstützte Werte:

  • "anthropic" - Verwendet den nativen Anthropic /v1/messages-Client mit dem baseURL, apiKey, headers, addParams, dropParams und customParams.paramDefinitions dieses Endpoints.

Beispiel:

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

Hinweise:

  • Verwenden Sie provider: anthropic für Anthropic selbst oder für Anthropic-kompatible Gateways, die die native Messages API unterstützen.
  • Listen Sie Modelle explizit unter models.default auf; der OpenAI-Stil models.fetch wird für native benutzerdefinierte Anthropic-endpoints nicht verwendet.
  • Der Provider impliziert Anthropic UI-Parameter, sofern Sie nicht explizit einen anderen customParams.defaultParamsEndpoint festlegen.
  • Endpoints ohne provider behalten das OpenAI-kompatible Verhalten bei.

iconURL

Schlüssel:

KeyTypeDescriptionExample
iconURLStringBild-URL, Pfad zu einem öffentlichen Asset oder integrierter endpoint-Icon-Schlüssel, der als Icon für den endpoint verwendet werden soll.

Standard: ""

Beispiel:

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

oder ein integriertes endpoint-Icon wiederverwenden:

iconURL: openAI

Hinweise:

  • Verwenden Sie für einen benutzerdefinierten endpoint name keinen Namen eines integrierten endpoints, nur um ein Symbol wiederzuverwenden. Benutzerdefinierte endpoint-Namen müssen eindeutig sein und sollten keine Standard-endpoint-Werte verwenden, wie zum Beispiel:
    • "openAI" | "azureOpenAI" | "google" | "anthropic" | "assistants" | "azureAssistants" | "agents" | "bedrock"
  • Um ein im Projekt enthaltenes Endpoint-Icon zu verwenden, halten Sie den name des benutzerdefinierten Endpoints eindeutig und setzen Sie stattdessen iconURL auf einen der integrierten Endpoint-Schlüssel.
    • "openAI" | "azureOpenAI" | "google" | "anthropic" | "assistants" | "azureAssistants" | "agents" | "bedrock"
  • Um ein benutzerdefiniertes Bild zu verwenden, setzen Sie iconURL auf eine Bild-URL oder einen Pfad, der von LibreChat bereitgestellt wird, wie zum Beispiel /assets/my-icon.svg.
  • Es gibt auch "bekannte endpoints" (Groß-/Kleinschreibung wird ignoriert), für die Icons bereitgestellt werden. Wenn der name Ihres endpoints mit den folgenden Namen übereinstimmt, sollten Sie dieses Feld weglassen:
    • Anyscale
    • APIpie
    • Cohere
    • Deepseek
    • Fireworks
    • groq
    • Helicone
    • Huggingface
    • Mistral
    • MLX
    • Moonshot
    • ollama
    • OpenRouter
    • Perplexity
    • Qwen
    • ShuttleAI
    • together.ai
    • Vereinen
    • xai

models

Schlüssel:

KeyTypeDescriptionExample
modelsObjectKonfiguration für Modelle.

Erforderlich

Eigenschaften:

default

Schlüssel:

KeyTypeDescriptionExample
defaultArray of StringsEin Array von Strings, das die zu verwendenden Standardmodelle angibt.If fetching models fails, these defaults are used as a fallback.

Erforderlich

Beispiel:

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

fetch

Schlüssel:

KeyTypeDescriptionExample
fetchBooleanWenn auf `true` gesetzt, wird versucht, eine Liste der Modelle von der API abzurufen.May cause slowdowns during initial use of the app if the response is delayed. Defaults to `false`.

Standard: false

Beispiel:

fetch: true

userIdQuery

Schlüssel:

KeyTypeDescriptionExample
userIdQueryBooleanWenn auf `true` gesetzt, wird die LibreChat-Benutzer-ID als Abfrageparameter zur API-Modellanfrage hinzugefügt.

Standard: false

Beispiel:

userIdQuery: true

titleConvo

Schlüssel:

KeyTypeDescriptionExample
titleConvoBooleanAktiviert die Titelgenerierung für Unterhaltungen, wenn dies auf `true` gesetzt ist.

Standard: false

Beispiel:

titleConvo: true

titleTiming

Schlüssel:

KeyTypeDescriptionExample
titleTimingStringSteuert, wann Konversationstitel generiert werden. Gültige Werte: "immediate" oder "final".Defaults to "immediate".

Standard: "immediate"

Verfügbare Werte:

  • "immediate" - Generiert den Titel, sobald die Anfrage beginnt, parallel zur Antwort des Modells, unter Verwendung der ersten Nachricht des Benutzers.
  • "final" – Verschiebt die Titelgenerierung, bis die vollständige Antwort abgeschlossen ist. Dies bewahrt das ursprüngliche Verhalten.

Beispiel:

titleTiming: 'final'

titleMethod

Schlüssel:

KeyTypeDescriptionExample
titleMethodStringSteuert die Methode, die zum Generieren von Konversationstiteln verwendet wird.Valid values: "completion" (default), "structured", "functions" (legacy alias for "structured")

Standard: "completion"

Verfügbare Methoden:

  • "completion" - Verwendet die Standard-Completion-API ohne Tools/Funktionen. Kompatibel mit den meisten LLMs.
  • "structured" - Verwendet strukturierte Ausgabe für die Titelgenerierung. Erfordert Unterstützung durch den Anbieter/das Modell.
  • "functions" - Veralteter Alias für "structured". Funktionell identisch.

Beispiel:

titleMethod: 'completion'

titleModel

Schlüssel:

KeyTypeDescriptionExample
titleModelStringGibt das für Titel zu verwendende Modell an.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".

Standard: "gpt-3.5-turbo"

Beispiel:

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

titlePrompt

Schlüssel:

KeyTypeDescriptionExample
titlePromptStringBenutzerdefinierter Prompt für die Titelgenerierung. Muss den Platzhalter {convo} enthalten.Allows full control over how titles are generated.

Standard:

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}

Hinweise:

  • Muss immer den {convo} Platzhalter enthalten
  • Der {convo}-Platzhalter wird durch die formatierte Konversation ersetzt

Beispiel:

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

titlePromptTemplate

Schlüssel:

KeyTypeDescriptionExample
titlePromptTemplateStringVorlage für die Formatierung des Konversationsinhalts, die {convo} in titlePrompt ersetzt.Must include {input} and {output} placeholders.

Standard: "User: {input}\nAI: {output}"

Hinweise:

  • Muss sowohl die Platzhalter {input} als auch {output} enthalten
  • Steuert, wie die Konversation formatiert wird, wenn sie in titlePrompt eingefügt wird.

Beispiel:

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

titleEndpoint

Schlüssel:

KeyTypeDescriptionExample
titleEndpointStringGibt einen alternativen endpoint an, der für die Titelgenerierung verwendet werden soll.Allows using a different model/endpoint for titles.

Standard: Verwendet den aktuellen benutzerdefinierten endpoint

Akzeptierte Werte:

  • openAI
  • azureOpenAI
  • google
  • anthropic
  • bedrock
  • Ein weiterer benutzerdefinierter endpoint-Name

Beispiel:

# 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

Schlüssel:

KeyTypeDescriptionExample
modelDisplayLabelStringDas Label, das in Nachrichten neben dem Icon für das aktuelle KI-Modell angezeigt wird.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".

Standard: "AI"

Beispiel:

modelDisplayLabel: 'Mistral'

addParams

Schlüssel:

KeyTypeDescriptionExample
addParamsObject/DictionaryFügt Anfragen zusätzliche Parameter hinzu. Werte können Strings, Zahlen, Booleans, Arrays oder verschachtelte Objekte sein. Unterstützt `web_search: true` zur Aktivierung der Websuche in Anfragen.Adds/Overrides parameters. Useful for specifying API-specific options.

Beispiel:

addParams:
  safe_prompt: true
  max_tokens: 2048

Hinweise:

  • Das Feld addParams ermöglicht es Ihnen, zusätzliche Parameter einzufügen, die nicht Teil der Standard-Payload sind (siehe den Abschnitt "Default Parameters"). Dies ist besonders nützlich für API-spezifische Optionen.

dropParams

Schlüssel:

KeyTypeDescriptionExample
dropParamsArray/List of StringsEntfernt Standardparameter aus Anfragen.Excludes specified default parameters. Useful for APIs that do not accept or recognize certain parameters.

Beispiel:

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

Hinweis:

  • Das Feld dropParams ermöglicht es Ihnen, "Standardparameter" zu entfernen, die mit jeder Anfrage gesendet werden. Dies ist hilfreich bei der Arbeit mit APIs, die bestimmte Parameter nicht akzeptieren oder erkennen.

customParams

Schlüssel:

KeyTypeDescriptionExample
customParamsObject/DictionaryDefiniert benutzerdefiniertes endpoint-Verhalten und Einstellungs-Metadaten, die nicht Teil des Provider-Request-Bodys sind.Used for endpoint-specific configuration such as reasoning parameter shape.

Untergeordnete Schlüssel:

KeyTypeDescriptionExample
defaultParamsEndpointStringEndpunkt-Standardwerte, die für Metadaten von Anfrageparametern verwendet werden. Standardmäßig auf `custom` gesetzt. Wenn `provider: anthropic` festgelegt ist und dieses Feld weggelassen wird, verwendet LibreChat den Anthropic-Parametersatz.defaultParamsEndpoint: custom
reasoningFormatStringSteuert, wie Reasoning-Parameter an OpenAI-kompatible benutzerdefinierte endpoints gesendet werden. Gültige Werte: `reasoning_effort`, `reasoning_object`, `disabled`.reasoningFormat: reasoning_object
reasoningKeyStringSteuert, welcher Antwortschlüssel für den Reasoning-Inhalt des Anbieters gelesen wird. Gültige Werte: `reasoning` oder `reasoning_content`.reasoningKey: reasoning_content
paramDefinitionsArray/ListBenutzerdefinierte Einstellungsdefinitionen für diesen endpoint.See default parameter definitions.

Reasoning-Formate:

  • reasoning_effort - Sendet den Legacy-Parameter reasoning_effort.
  • reasoning_object - Sendet ein reasoning-Objekt, wie z. B. { effort, summary }, für Anbieter, die dem neueren OpenAI-kompatiblen Format folgen.
  • disabled - Unterdrückt Reasoning-Parameter, selbst wenn ein Benutzer oder Model Specs Reasoning auswählen.

Hinweis zum Anthropic-Anbieter:

Verwenden Sie provider: anthropic, wenn der benutzerdefinierte endpoint die native Anthropic Messages API verwenden soll. Verwenden Sie customParams.defaultParamsEndpoint: anthropic ohne provider nur dann, wenn Sie weiterhin den OpenAI-kompatiblen benutzerdefinierten endpoint-Pfad benötigen, aber Parameter-Metadaten und eine Anforderungsanpassung im Anthropic-Stil wünschen.

Beispiel:

customParams:
  reasoningFormat: reasoning_object
  reasoningKey: reasoning_content

tokenConfig

Schlüssel:

KeyTypeDescriptionExample
tokenConfigObject/DictionaryDefiniert modellspezifische Kontextfenster und Raten pro Million Token für diesen benutzerdefinierten endpoint.Used by context usage, visible cost breakdowns, balance transactions, and multi-endpoint agent billing.

Jeder Schlüssel ist ein Modellname. Jeder Modelleintrag unterstützt:

KeyTypeDescriptionExample
promptNumberPrompt-/Eingabe-Token-Rate pro Million Token.Required
completionNumberRate der Completion-/Ausgabe-Token pro Million Token.Required
contextNumberMaximale Kontextfenstergröße für das Modell.Required
cacheReadNumberLeserate für zwischengespeicherte Eingaben pro Million Token.Optional
cacheWriteNumberSchreibrate für zwischengespeicherte Eingaben pro Million Token.Optional

Beispiel:

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

Hinweise:

  • Die Preise werden pro Million Token in USD angegeben, bevor eine interface.currency-Umrechnung für die Anzeige angewendet wird.
  • Der Modellname muss mit dem Modellwert übereinstimmen, der über den benutzerdefinierten endpoint gesendet wird.
  • Für Agents, die mehrere endpoints verwenden, wird die passende endpoint/model-Token-Konfiguration bei der Erfassung von Nutzung und Kosten verwendet.

headers

Schlüssel:

KeyTypeDescriptionExample
headersObject/DictionaryFügt Anfragen zusätzliche Header hinzu. Alle Header-Werte müssen Strings sein. Unterstützt dynamische Benutzerfeld-Ersetzung mit `{{LIBRECHAT_USER_*}}`, Platzhalter für den Request-Body mit `{{LIBRECHAT_BODY_*}}` und Umgebungsvariablen mit `${ENV_VAR}`.The `headers` object specifies custom headers for requests. Useful for authentication and setting content types.

Beispiel:

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

Hinweis: Unterstützt dynamische Umgebungsvariablenwerte, die das Format "${VARIABLE_NAME}" verwenden.

Wenn models.fetch: true verwendet wird, werden diese Header ebenfalls aufgelöst und an die Modelllisten-Anfrage für vom Administrator gesteuerte base URLs weitergeleitet. Ein konfigurierter Authorization-Header hat Vorrang vor dem apiKey-Fallback des endpoint, was für authentifizierungsbewusste Proxys nützlich ist, die benutzerspezifische Modelllisten zurückgeben. Wenn baseURL: "user_provided" konfiguriert ist, leitet LibreChat konfigurierte Header-Vorlagen nicht an das vom Benutzer bereitgestellte Ziel weiter. Für provider: anthropic werden die Header über den nativen Anthropic-Client anstelle des OpenAI-kompatiblen Clients weitergeleitet.

Verfügbare Platzhalter für Benutzerfelder:

PlatzhalterBenutzerfeldTypBeschreibung
{{LIBRECHAT_USER_ID}}idStringEindeutige Benutzerkennung
{{LIBRECHAT_USER_NAME}}nameStringAnzeigename des Benutzers
{{LIBRECHAT_USER_USERNAME}}usernameStringBenutzername des Benutzers
{{LIBRECHAT_USER_EMAIL}}emailStringE-Mail-Adresse des Benutzers
{{LIBRECHAT_USER_PROVIDER}}providerStringAuthentifizierungsanbieter (z. B. "email", "google", "github")
{{LIBRECHAT_USER_ROLE}}roleStringRolle des Benutzers (z. B. "user", "admin")
{{LIBRECHAT_USER_GOOGLEID}}googleIdStringGoogle-Konto-ID
{{LIBRECHAT_USER_FACEBOOKID}}facebookIdStringFacebook-Konto-ID
{{LIBRECHAT_USER_OPENIDID}}openidIdStringOpenID-Konto-ID
{{LIBRECHAT_USER_SAMLID}}samlIdStringSAML-Konto-ID
{{LIBRECHAT_USER_LDAPID}}ldapIdStringLDAP-Konto-ID
{{LIBRECHAT_USER_GITHUBID}}githubIdStringGitHub-Konto-ID
{{LIBRECHAT_USER_DISCORDID}}discordIdStringDiscord-Konto-ID
{{LIBRECHAT_USER_APPLEID}}appleIdStringApple-Konto-ID
{{LIBRECHAT_USER_EMAILVERIFIED}}emailVerifiedBoolean → StringE-Mail-Verifizierungsstatus ("true" oder "false")
{{LIBRECHAT_USER_TWOFACTORENABLED}}twoFactorEnabledBoolean → String2FA-Status ("true" oder "false")
{{LIBRECHAT_USER_TERMSACCEPTED}}termsAcceptedBoolean → StringStatus der Akzeptanz der Nutzungsbedingungen ("true" oder "false")

Verfügbare Platzhalter für den Request Body:

PlatzhalterBody-FeldTypBeschreibung
{{LIBRECHAT_BODY_CONVERSATIONID}}conversationIdStringKennung der aktuellen Konversation
{{LIBRECHAT_BODY_PARENTMESSAGEID}}parentMessageIdStringKennung der übergeordneten Nachricht
{{LIBRECHAT_BODY_MESSAGEID}}messageIdStringKennung der aktuellen Nachricht

Beispiel unter Verwendung von Request-Body-Platzhaltern:

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

directEndpoint

Schlüssel:

KeyTypeDescriptionExample
directEndpointBooleanWenn auf `true` gesetzt, wird die konfigurierte `baseURL` als der zu verwendende Completions-endpoint behandelt

Standard: false

Beispiel:

directEndpoint: true

titleMessageRole

  • Optionen: "system" | "user" | "assistant"

Schlüssel:

KeyTypeDescriptionExample
titleMessageRoleStringGibt den Rollenwert an, der in der Nachrichten-Payload für die Titelgenerierung verwendet werden soll. Muss einer der folgenden Werte sein: `"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.

Standard: "system"

Beispiel:

titleMessageRole: 'user'

Wie finden Sie diese Anleitung?