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

Struktur Objek Endpoint Kustom

Setiap endpoint dalam array custom harus memiliki struktur berikut:

Contoh

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

Kunci:

KeyTypeDescriptionExample
nameStringNama unik untuk endpoint tersebut.Will be used as the "title" in the Endpoints Selector

Wajib

Contoh:

name: 'Mistral'

apiKey

Kunci:

KeyTypeDescriptionExample
apiKeyString (apiKey | "user_provided")Kunci API Anda untuk layanan tersebut. Dapat merujuk ke variabel lingkungan, atau mengizinkan pengguna untuk memberikan nilainya.It's highly recommended to use the env. variable reference for this field, i.e. `${YOUR_VARIABLE}`

Wajib

Contoh:

apiKey: '${MISTRAL_API_KEY}'

atau

apiKey: 'your_api_key'

atau

apiKey: 'user_provided'

baseURL

Kunci:

KeyTypeDescriptionExample
baseURLString (baseURL | "user_provided")URL Dasar untuk API. Dapat mereferensikan variabel lingkungan, atau mengizinkan pengguna untuk memberikan nilainya.It's highly recommended to use the env. variable reference for this field, i.e. `${YOUR_VARIABLE}`

Wajib

Contoh:

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

atau

baseURL: '${MISTRAL_BASE_URL}'

atau

baseURL: 'user_provided'

Catatan:

  • Jika baseURL yang Anda tetapkan adalah endpoint penyelesaian penuh, Anda dapat mengatur kolom directEndpoint ke true untuk menggunakannya secara langsung.
    • Ini diperlukan karena aplikasi secara default menambahkan "/chat/completions" atau "/completion" ke baseURL.
  • Saat menggunakan provider: anthropic, atur baseURL ke root API yang harus dipanggil oleh SDK Anthropic, seperti https://api.anthropic.com atau root gateway Anda. LibreChat menggunakan path /v1/messages Anthropic bawaan untuk provider tersebut.

provider

Kunci:

KeyTypeDescriptionExample
providerStringMengarahkan endpoint kustom melalui klien penyedia asli alih-alih klien yang kompatibel dengan OpenAI standar.Currently supports `anthropic`.

Default: dihilangkan, yang menggunakan jalur endpoint kustom yang kompatibel dengan OpenAI.

Nilai yang Didukung:

  • "anthropic" - Menggunakan klien asli Anthropic /v1/messages dengan baseURL, apiKey, headers, addParams, dropParams, dan customParams.paramDefinitions milik endpoint ini.

Contoh:

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

Catatan:

  • Gunakan provider: anthropic untuk Anthropic itu sendiri atau gateway yang kompatibel dengan Anthropic yang menggunakan Messages API asli.
  • Cantumkan model secara eksplisit di bawah models.default; models.fetch gaya OpenAI tidak digunakan untuk endpoint kustom Anthropic bawaan.
  • Penyedia menyiratkan parameter UI Anthropic kecuali Anda secara eksplisit menetapkan customParams.defaultParamsEndpoint yang berbeda.
  • endpoint tanpa provider tetap mempertahankan perilaku yang kompatibel dengan OpenAI.

iconURL

Kunci:

KeyTypeDescriptionExample
iconURLStringURL gambar, jalur aset publik, atau kunci ikon endpoint bawaan untuk digunakan sebagai ikon endpoint.

Default: ""

Contoh:

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

atau gunakan kembali ikon endpoint bawaan:

iconURL: openAI

Catatan:

  • Jangan mengatur name endpoint kustom ke nama endpoint bawaan hanya untuk menggunakan kembali ikon. Nama endpoint kustom harus unik dan tidak boleh menggunakan nilai endpoint default seperti:
    • "openAI" | "azureOpenAI" | "google" | "anthropic" | "assistants" | "azureAssistants" | "agents" | "bedrock"
  • Untuk menggunakan ikon endpoint yang disertakan dalam proyek, pastikan name endpoint kustom tetap unik dan atur iconURL ke salah satu kunci endpoint bawaan sebagai gantinya.
    • "openAI" | "azureOpenAI" | "google" | "anthropic" | "assistants" | "azureAssistants" | "agents" | "bedrock"
  • Untuk menggunakan gambar kustom, atur iconURL ke URL gambar atau jalur yang disajikan oleh LibreChat, seperti /assets/my-icon.svg.
  • Terdapat juga "known endpoints" (tidak peka huruf besar/kecil), yang telah disediakan ikonnya. Jika name endpoint Anda cocok dengan nama-nama berikut, Anda harus menghilangkan kolom ini:
    • Anyscale
    • APIpie
    • Cohere
    • Deepseek
    • Fireworks
    • groq
    • Helicone
    • Huggingface
    • Mistral
    • MLX
    • Moonshot
    • ollama
    • OpenRouter
    • Perplexity
    • Qwen
    • ShuttleAI
    • together.ai
    • Satukan
    • xai

models

Kunci:

KeyTypeDescriptionExample
modelsObjectKonfigurasi untuk model.

Wajib

Properti:

default

Kunci:

KeyTypeDescriptionExample
defaultArray of StringsSekumpulan string yang menunjukkan model default untuk digunakan.If fetching models fails, these defaults are used as a fallback.

Wajib

Contoh:

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

fetch

Kunci:

KeyTypeDescriptionExample
fetchBooleanJika diatur ke `true`, mencoba untuk mengambil daftar model dari API.May cause slowdowns during initial use of the app if the response is delayed. Defaults to `false`.

Default: false

Contoh:

fetch: true

userIdQuery

Kunci:

KeyTypeDescriptionExample
userIdQueryBooleanJika diatur ke `true`, akan menambahkan ID pengguna LibreChat sebagai parameter kueri ke permintaan model API.

Default: false

Contoh:

userIdQuery: true

titleConvo

Kunci:

KeyTypeDescriptionExample
titleConvoBooleanMengaktifkan judul percakapan saat disetel ke `true`.

Default: false

Contoh:

titleConvo: true

titleTiming

Kunci:

KeyTypeDescriptionExample
titleTimingStringMengontrol kapan judul percakapan dibuat. Nilai yang valid: "immediate" atau "final".Defaults to "immediate".

Default: "immediate"

Nilai yang Tersedia:

  • "immediate" - Menghasilkan judul segera setelah permintaan dimulai, secara paralel dengan respons model, menggunakan pesan pertama pengguna.
  • "final" - Menunda pembuatan judul hingga respons penuh selesai. Ini mempertahankan perilaku lama.

Contoh:

titleTiming: 'final'

titleMethod

Kunci:

KeyTypeDescriptionExample
titleMethodStringMengontrol metode yang digunakan untuk membuat judul percakapan.Valid values: "completion" (default), "structured", "functions" (legacy alias for "structured")

Default: "completion"

Metode yang Tersedia:

  • "completion" - Menggunakan API penyelesaian standar tanpa alat/fungsi. Kompatibel dengan sebagian besar LLM.
  • "structured" - Menggunakan output terstruktur untuk pembuatan judul. Memerlukan dukungan penyedia/model.
  • "functions" - Alias lama untuk "structured". Secara fungsional identik.

Contoh:

titleMethod: 'completion'

titleModel

Kunci:

KeyTypeDescriptionExample
titleModelStringMenentukan model yang digunakan untuk judul.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".

Default: "gpt-3.5-turbo"

Contoh:

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

titlePrompt

Kunci:

KeyTypeDescriptionExample
titlePromptStringPrompt kustom untuk pembuatan judul. Harus menyertakan placeholder {convo}.Allows full control over how titles are generated.

Default:

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}

Catatan:

  • Harus selalu menyertakan placeholder {convo}
  • Placeholder {convo} akan digantikan dengan percakapan yang telah diformat

Contoh:

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

titlePromptTemplate

Kunci:

KeyTypeDescriptionExample
titlePromptTemplateStringTemplat untuk memformat konten percakapan yang menggantikan {convo} di titlePrompt.Must include {input} and {output} placeholders.

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

Catatan:

  • Harus menyertakan placeholder {input} dan {output}
  • Mengontrol bagaimana percakapan diformat saat dimasukkan ke dalam titlePrompt

Contoh:

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

titleEndpoint

Kunci:

KeyTypeDescriptionExample
titleEndpointStringMenentukan endpoint alternatif yang digunakan untuk pembuatan judul.Allows using a different model/endpoint for titles.

Default: Menggunakan endpoint kustom saat ini

Nilai yang Diterima:

  • openAI
  • azureOpenAI
  • google
  • anthropic
  • bedrock
  • Nama endpoint kustom lainnya

Contoh:

# 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

Kunci:

KeyTypeDescriptionExample
modelDisplayLabelStringLabel yang ditampilkan di pesan di samping Ikon untuk model AI saat ini.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".

Default: "AI"

Contoh:

modelDisplayLabel: 'Mistral'

addParams

Kunci:

KeyTypeDescriptionExample
addParamsObject/DictionaryMenambahkan parameter tambahan ke permintaan. Nilai dapat berupa string, angka, boolean, array, atau objek bersarang. Mendukung toggle alat penyedia seperti `web_search: true` dan `url_context: true` untuk Google.Adds/Overrides parameters. Useful for specifying API-specific options.

Contoh:

addParams:
  safe_prompt: true
  max_tokens: 2048

Catatan:

  • Kolom addParams memungkinkan Anda untuk menyertakan parameter tambahan yang bukan merupakan bagian dari payload default (lihat bagian "Default Parameters"). Hal ini sangat berguna untuk opsi spesifik API.

dropParams

Kunci:

KeyTypeDescriptionExample
dropParamsArray/List of StringsMenghapus parameter default dari permintaan.Excludes specified default parameters. Useful for APIs that do not accept or recognize certain parameters.

Contoh:

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

Catatan:

  • Kolom dropParams memungkinkan Anda untuk menghapus "Default Parameters" yang dikirimkan bersama setiap permintaan. Hal ini berguna saat bekerja dengan API yang tidak menerima atau mengenali parameter tertentu.

customParams

Kunci:

KeyTypeDescriptionExample
customParamsObject/DictionaryMendefinisikan perilaku endpoint kustom dan metadata pengaturan yang bukan merupakan bagian dari body permintaan provider.Used for endpoint-specific configuration such as reasoning parameter shape.

Sub-kunci:

KeyTypeDescriptionExample
defaultParamsEndpointStringDefault endpoint yang digunakan untuk metadata parameter permintaan. Default-nya adalah `custom`. Ketika `provider: anthropic` diatur dan kolom ini dihilangkan, LibreChat menggunakan set parameter Anthropic.defaultParamsEndpoint: custom
reasoningFormatStringMengontrol bagaimana parameter penalaran dikirim ke endpoint kustom yang kompatibel dengan OpenAI. Nilai yang valid: `reasoning_effort`, `reasoning_object`, `disabled`.reasoningFormat: reasoning_object
reasoningKeyStringMengontrol kunci respons mana yang dibaca untuk konten penalaran penyedia. Nilai yang valid: `reasoning` atau `reasoning_content`.reasoningKey: reasoning_content
includeReasoningContentBooleanMemutar ulang `reasoning_content` penyedia dalam giliran pemanggilan alat untuk endpoint kustom yang kompatibel dengan OpenAI yang memerlukannya.includeReasoningContent: true
includeReasoningHistoryBooleanMerekonstruksi `reasoning_content` dari riwayat percakapan yang tersimpan di seluruh giliran. Menyiratkan `includeReasoningContent`.includeReasoningHistory: true
paramDefinitionsArray/ListDefinisi pengaturan kustom untuk endpoint ini.See default parameter definitions.

Format Penalaran:

  • reasoning_effort - Mengirim parameter reasoning_effort versi lama.
  • reasoning_object - Mengirim objek reasoning, seperti { effort, summary }, untuk penyedia yang mengikuti bentuk yang kompatibel dengan OpenAI yang lebih baru.
  • disabled - Menekan parameter penalaran (reasoning) bahkan ketika pengguna atau Model Specs memilih penalaran.

Pemutaran ulang penalaran (Reasoning replay):

  • Gunakan includeReasoningContent: true untuk penyedia yang kompatibel dengan OpenAI yang memerlukan reasoning_content asisten untuk diputar ulang selama giliran pemanggilan alat (tool-call).
  • Gunakan includeReasoningHistory: true hanya untuk penyedia yang juga memerlukan reasoning_content yang direkonstruksi dari riwayat yang dipertahankan di seluruh giliran berikutnya, seperti beberapa gateway yang kompatibel dengan Xiaomi MiMo atau Kimi.

Catatan penyedia Anthropic:

Gunakan provider: anthropic ketika endpoint kustom harus menggunakan API Messages Anthropic asli. Gunakan customParams.defaultParamsEndpoint: anthropic tanpa provider hanya ketika Anda masih memerlukan jalur endpoint kustom yang kompatibel dengan OpenAI tetapi menginginkan metadata parameter dan adaptasi permintaan bergaya Anthropic.

Contoh:

customParams:
  reasoningFormat: reasoning_object
  reasoningKey: reasoning_content
  includeReasoningContent: true

tokenConfig

Kunci:

KeyTypeDescriptionExample
tokenConfigObject/DictionaryMendefinisikan jendela konteks khusus model dan tarif per satu juta token untuk endpoint kustom ini.Used by context usage, visible cost breakdowns, balance transactions, and multi-endpoint agent billing.

Setiap kunci adalah nama model. Setiap entri model mendukung:

KeyTypeDescriptionExample
promptNumberTarif token prompt/input per satu juta token.Required
completionNumberLaju token penyelesaian/output per satu juta token.Required
contextNumberJendela konteks maksimum untuk model tersebut.Required
cacheReadNumberLaju baca input yang di-cache per satu juta token.Optional
cacheWriteNumberLaju penulisan input yang di-cache per satu juta token.Optional

Contoh:

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

Catatan:

  • Tarif dinyatakan per satu juta token dalam USD sebelum konversi interface.currency apa pun diterapkan untuk tampilan.
  • Nama model harus sesuai dengan nilai model yang dikirim melalui endpoint kustom.
  • Untuk Agen yang menggunakan beberapa endpoint, konfigurasi token endpoint/model yang cocok akan digunakan saat mencatat penggunaan dan biaya.

headers

Kunci:

KeyTypeDescriptionExample
headersObject/DictionaryMenambahkan header tambahan ke permintaan. Semua nilai header harus berupa string. Mendukung substitusi bidang pengguna dinamis dengan `{{LIBRECHAT_USER_*}}`, placeholder isi permintaan dengan `{{LIBRECHAT_BODY_*}}`, dan variabel lingkungan dengan `${ENV_VAR}`.The `headers` object specifies custom headers for requests. Useful for authentication and setting content types.

Contoh:

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

Catatan: Mendukung nilai variabel lingkungan dinamis, yang menggunakan format: "${VARIABLE_NAME}".

Ketika models.fetch: true digunakan, header-header ini juga diselesaikan dan diteruskan ke permintaan daftar model untuk URL dasar yang dikontrol admin. Header Authorization yang dikonfigurasi lebih diutamakan daripada fallback apiKey endpoint, yang berguna untuk proksi yang sadar autentikasi yang mengembalikan daftar model per pengguna. Jika baseURL: "user_provided" dikonfigurasi, LibreChat tidak meneruskan templat header yang dikonfigurasi ke tujuan yang disediakan pengguna. Untuk provider: anthropic, header diteruskan melalui klien Anthropic asli alih-alih klien yang kompatibel dengan OpenAI.

Placeholder Bidang Pengguna yang Tersedia:

PlaceholderUser FieldTypeDeskripsi
{{LIBRECHAT_USER_ID}}idStringPengidentifikasi unik pengguna
{{LIBRECHAT_USER_NAME}}nameStringNama tampilan pengguna
{{LIBRECHAT_USER_USERNAME}}usernameStringNama pengguna
{{LIBRECHAT_USER_EMAIL}}emailStringAlamat email pengguna
{{LIBRECHAT_USER_PROVIDER}}providerStringPenyedia autentikasi (contoh: "email", "google", "github")
{{LIBRECHAT_USER_ROLE}}roleStringPeran pengguna (contoh: "user", "admin")
{{LIBRECHAT_USER_GOOGLEID}}googleIdStringID akun Google
{{LIBRECHAT_USER_FACEBOOKID}}facebookIdStringID akun Facebook
{{LIBRECHAT_USER_OPENIDID}}openidIdStringID akun OpenID
{{LIBRECHAT_USER_SAMLID}}samlIdStringID akun SAML
{{LIBRECHAT_USER_LDAPID}}ldapIdStringID akun LDAP
{{LIBRECHAT_USER_GITHUBID}}githubIdStringID akun GitHub
{{LIBRECHAT_USER_DISCORDID}}discordIdStringID akun Discord
{{LIBRECHAT_USER_APPLEID}}appleIdStringID akun Apple
{{LIBRECHAT_USER_EMAILVERIFIED}}emailVerifiedBoolean → StringStatus verifikasi email ("true" atau "false")
{{LIBRECHAT_USER_TWOFACTORENABLED}}twoFactorEnabledBoolean → StringStatus 2FA ("true" atau "false")
{{LIBRECHAT_USER_TERMSACCEPTED}}termsAcceptedBoolean → StringStatus penerimaan ketentuan ("true" atau "false")

Placeholder Isi Permintaan yang Tersedia:

PlaceholderBody FieldTypeDescription
{{LIBRECHAT_BODY_CONVERSATIONID}}conversationIdStringPengidentifikasi percakapan saat ini
{{LIBRECHAT_BODY_PARENTMESSAGEID}}parentMessageIdStringPengidentifikasi pesan induk
{{LIBRECHAT_BODY_MESSAGEID}}messageIdStringPengidentifikasi pesan saat ini

Contoh menggunakan placeholder body permintaan:

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

directEndpoint

Kunci:

KeyTypeDescriptionExample
directEndpointBooleanJika diatur ke `true`, memperlakukan `baseURL` yang dikonfigurasi sebagai endpoint completions yang akan digunakan

Default: false

Contoh:

directEndpoint: true

titleMessageRole

  • Opsi: "system" | "user" | "assistant"

Kunci:

KeyTypeDescriptionExample
titleMessageRoleStringMenentukan nilai peran yang akan digunakan dalam payload pesan untuk pembuatan judul. Harus salah satu dari: `"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.

Default: "system"

Contoh:

titleMessageRole: 'user'

Bagaimana panduan ini?