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:
| Key | Type | Description | Example |
|---|---|---|---|
| name | String | Nama unik untuk endpoint tersebut. | Will be used as the "title" in the Endpoints Selector |
Wajib
Contoh:
name: 'Mistral'apiKey
Kunci:
| Key | Type | Description | Example |
|---|---|---|---|
| apiKey | String (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:
| Key | Type | Description | Example |
|---|---|---|---|
| baseURL | String (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
baseURLyang Anda tetapkan adalah endpoint penyelesaian penuh, Anda dapat mengatur kolom directEndpoint ketrueuntuk menggunakannya secara langsung.- Ini diperlukan karena aplikasi secara default menambahkan "/chat/completions" atau "/completion" ke
baseURL.
- Ini diperlukan karena aplikasi secara default menambahkan "/chat/completions" atau "/completion" ke
- Saat menggunakan
provider: anthropic, aturbaseURLke root API yang harus dipanggil oleh SDK Anthropic, sepertihttps://api.anthropic.comatau root gateway Anda. LibreChat menggunakan path/v1/messagesAnthropic bawaan untuk provider tersebut.
provider
Kunci:
| Key | Type | Description | Example |
|---|---|---|---|
| provider | String | Mengarahkan 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/messagesdenganbaseURL,apiKey,headers,addParams,dropParams, dancustomParams.paramDefinitionsmilik 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: anthropicuntuk Anthropic itu sendiri atau gateway yang kompatibel dengan Anthropic yang menggunakan Messages API asli. - Cantumkan model secara eksplisit di bawah
models.default;models.fetchgaya OpenAI tidak digunakan untuk endpoint kustom Anthropic bawaan. - Penyedia menyiratkan parameter UI Anthropic kecuali Anda secara eksplisit menetapkan
customParams.defaultParamsEndpointyang berbeda. - endpoint tanpa
providertetap mempertahankan perilaku yang kompatibel dengan OpenAI.
iconURL
Kunci:
| Key | Type | Description | Example |
|---|---|---|---|
| iconURL | String | URL 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.svgatau gunakan kembali ikon endpoint bawaan:
iconURL: openAICatatan:
- Jangan mengatur
nameendpoint 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
nameendpoint kustom tetap unik dan aturiconURLke salah satu kunci endpoint bawaan sebagai gantinya.- "openAI" | "azureOpenAI" | "google" | "anthropic" | "assistants" | "azureAssistants" | "agents" | "bedrock"
- Untuk menggunakan gambar kustom, atur
iconURLke 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
nameendpoint 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:
| Key | Type | Description | Example |
|---|---|---|---|
| models | Object | Konfigurasi untuk model. |
Wajib
Properti:
default
Kunci:
| Key | Type | Description | Example |
|---|---|---|---|
| default | Array of Strings | Sekumpulan 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:
| Key | Type | Description | Example |
|---|---|---|---|
| fetch | Boolean | Jika 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: trueuserIdQuery
Kunci:
| Key | Type | Description | Example |
|---|---|---|---|
| userIdQuery | Boolean | Jika diatur ke `true`, akan menambahkan ID pengguna LibreChat sebagai parameter kueri ke permintaan model API. |
Default: false
Contoh:
userIdQuery: truetitleConvo
Kunci:
| Key | Type | Description | Example |
|---|---|---|---|
| titleConvo | Boolean | Mengaktifkan judul percakapan saat disetel ke `true`. |
Default: false
Contoh:
titleConvo: truetitleTiming
Kunci:
| Key | Type | Description | Example |
|---|---|---|---|
| titleTiming | String | Mengontrol 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:
| Key | Type | Description | Example |
|---|---|---|---|
| titleMethod | String | Mengontrol 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:
| Key | Type | Description | Example |
|---|---|---|---|
| titleModel | String | Menentukan 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:
| Key | Type | Description | Example |
|---|---|---|---|
| titlePrompt | String | Prompt 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:
| Key | Type | Description | Example |
|---|---|---|---|
| titlePromptTemplate | String | Templat 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:
| Key | Type | Description | Example |
|---|---|---|---|
| titleEndpoint | String | Menentukan endpoint alternatif yang digunakan untuk pembuatan judul. | Allows using a different model/endpoint for titles. |
Default: Menggunakan endpoint kustom saat ini
Nilai yang Diterima:
openAIazureOpenAIgoogleanthropicbedrock- 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:
| Key | Type | Description | Example |
|---|---|---|---|
| modelDisplayLabel | String | Label 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:
| Key | Type | Description | Example |
|---|---|---|---|
| addParams | Object/Dictionary | Menambahkan 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: 2048Catatan:
- Kolom
addParamsmemungkinkan 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:
| Key | Type | Description | Example |
|---|---|---|---|
| dropParams | Array/List of Strings | Menghapus 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
dropParamsmemungkinkan 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:
| Key | Type | Description | Example |
|---|---|---|---|
| customParams | Object/Dictionary | Mendefinisikan 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:
| Key | Type | Description | Example |
|---|---|---|---|
| defaultParamsEndpoint | String | Default 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 |
| reasoningFormat | String | Mengontrol bagaimana parameter penalaran dikirim ke endpoint kustom yang kompatibel dengan OpenAI. Nilai yang valid: `reasoning_effort`, `reasoning_object`, `disabled`. | reasoningFormat: reasoning_object |
| reasoningKey | String | Mengontrol kunci respons mana yang dibaca untuk konten penalaran penyedia. Nilai yang valid: `reasoning` atau `reasoning_content`. | reasoningKey: reasoning_content |
| includeReasoningContent | Boolean | Memutar ulang `reasoning_content` penyedia dalam giliran pemanggilan alat untuk endpoint kustom yang kompatibel dengan OpenAI yang memerlukannya. | includeReasoningContent: true |
| includeReasoningHistory | Boolean | Merekonstruksi `reasoning_content` dari riwayat percakapan yang tersimpan di seluruh giliran. Menyiratkan `includeReasoningContent`. | includeReasoningHistory: true |
| paramDefinitions | Array/List | Definisi pengaturan kustom untuk endpoint ini. | See default parameter definitions. |
Format Penalaran:
reasoning_effort- Mengirim parameterreasoning_effortversi lama.reasoning_object- Mengirim objekreasoning, 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: trueuntuk penyedia yang kompatibel dengan OpenAI yang memerlukanreasoning_contentasisten untuk diputar ulang selama giliran pemanggilan alat (tool-call). - Gunakan
includeReasoningHistory: truehanya untuk penyedia yang juga memerlukanreasoning_contentyang 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: truetokenConfig
Kunci:
| Key | Type | Description | Example |
|---|---|---|---|
| tokenConfig | Object/Dictionary | Mendefinisikan 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:
| Key | Type | Description | Example |
|---|---|---|---|
| prompt | Number | Tarif token prompt/input per satu juta token. | Required |
| completion | Number | Laju token penyelesaian/output per satu juta token. | Required |
| context | Number | Jendela konteks maksimum untuk model tersebut. | Required |
| cacheRead | Number | Laju baca input yang di-cache per satu juta token. | Optional |
| cacheWrite | Number | Laju 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.15Catatan:
- Tarif dinyatakan per satu juta token dalam USD sebelum konversi
interface.currencyapa 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:
| Key | Type | Description | Example |
|---|---|---|---|
| headers | Object/Dictionary | Menambahkan 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:
| Placeholder | User Field | Type | Deskripsi |
|---|---|---|---|
{{LIBRECHAT_USER_ID}} | id | String | Pengidentifikasi unik pengguna |
{{LIBRECHAT_USER_NAME}} | name | String | Nama tampilan pengguna |
{{LIBRECHAT_USER_USERNAME}} | username | String | Nama pengguna |
{{LIBRECHAT_USER_EMAIL}} | email | String | Alamat email pengguna |
{{LIBRECHAT_USER_PROVIDER}} | provider | String | Penyedia autentikasi (contoh: "email", "google", "github") |
{{LIBRECHAT_USER_ROLE}} | role | String | Peran pengguna (contoh: "user", "admin") |
{{LIBRECHAT_USER_GOOGLEID}} | googleId | String | ID akun Google |
{{LIBRECHAT_USER_FACEBOOKID}} | facebookId | String | ID akun Facebook |
{{LIBRECHAT_USER_OPENIDID}} | openidId | String | ID akun OpenID |
{{LIBRECHAT_USER_SAMLID}} | samlId | String | ID akun SAML |
{{LIBRECHAT_USER_LDAPID}} | ldapId | String | ID akun LDAP |
{{LIBRECHAT_USER_GITHUBID}} | githubId | String | ID akun GitHub |
{{LIBRECHAT_USER_DISCORDID}} | discordId | String | ID akun Discord |
{{LIBRECHAT_USER_APPLEID}} | appleId | String | ID akun Apple |
{{LIBRECHAT_USER_EMAILVERIFIED}} | emailVerified | Boolean → String | Status verifikasi email ("true" atau "false") |
{{LIBRECHAT_USER_TWOFACTORENABLED}} | twoFactorEnabled | Boolean → String | Status 2FA ("true" atau "false") |
{{LIBRECHAT_USER_TERMSACCEPTED}} | termsAccepted | Boolean → String | Status penerimaan ketentuan ("true" atau "false") |
Placeholder Isi Permintaan yang Tersedia:
| Placeholder | Body Field | Type | Description |
|---|---|---|---|
{{LIBRECHAT_BODY_CONVERSATIONID}} | conversationId | String | Pengidentifikasi percakapan saat ini |
{{LIBRECHAT_BODY_PARENTMESSAGEID}} | parentMessageId | String | Pengidentifikasi pesan induk |
{{LIBRECHAT_BODY_MESSAGEID}} | messageId | String | Pengidentifikasi 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:
| Key | Type | Description | Example |
|---|---|---|---|
| directEndpoint | Boolean | Jika diatur ke `true`, memperlakukan `baseURL` yang dikonfigurasi sebagai endpoint completions yang akan digunakan |
Default: false
Contoh:
directEndpoint: truetitleMessageRole
- Opsi:
"system"|"user"|"assistant"
Kunci:
| Key | Type | Description | Example |
|---|---|---|---|
| titleMessageRole | String | Menentukan 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?