Dokumentasi
LibreChat
LibreChat menggunakan gateway dalam bentuk blok di librechat.yaml: empat kolom wajib, variabel lingkungan untuk kunci, dan proses mulai ulang. Setelah itu, pemilih menyediakan ID Claude dan GPT di balik satu nama endpoint.
LibreChat menerima gateway sebagai blok endpoints.custom di librechat.yaml — empat field wajib, key dari .env, dan restart sebelum pemilih menampilkannya.
# librechat.yaml — project root, beside your .env
version: 1.3.5 # the value the documentation's own example carries
endpoints:
custom:
# Required: name, apiKey, baseURL, models. The name must be unique and
# must not reuse a built-in endpoint name such as openAI or anthropic.
- name: "Kunavo"
apiKey: "${KUNAVO_API_KEY}" # resolved from .env, not written here
# Keep the /v1. LibreChat appends /chat/completions to this by default.
baseURL: "https://api.kunavo.com/v1"
models:
default: ["claude-sonnet-5", "claude-haiku-4-5"]
fetch: true # fills the picker from GET /v1/models
titleConvo: true
titleModel: "claude-haiku-4-5" # titles are a separate call — pin a cheap id
modelDisplayLabel: "Kunavo"
# Optional but worth the four lines: without it LibreChat prices your
# traffic from a table it ships. prompt/completion are USD per million
# tokens; context is that model's own window. All three required.
tokenConfig:
claude-sonnet-5:
prompt: 1.4
completion: 7
context: 1000000
claude-haiku-4-5:
prompt: 0.7
completion: 3.5
context: 200000baseURL mempertahankan /v1. Dokumentasi menjelaskan hal ini dalam uraian, bukan melalui contoh: dokumentasi menyebutkan bahwa directEndpoint tersedia untuk URL dasar yang sudah merupakan endpoint completions lengkap, dan bahwa hal ini “diperlukan karena aplikasi secara bawaan menambahkan ‘/chat/completions’ atau ‘/completion’ ke baseURL”. Jadi, https://api.kunavo.com/v1 mengarah ke /v1/chat/completions, yaitu rute yang harus diakses, dan directEndpoint tetap tidak diatur. Kedua contoh di situsnya sendiri juga memiliki akhiran yang sama — https://api.mistral.ai/v1 dan https://openrouter.ai/api/v1. Origin tanpa akhiran di sini akan menghasilkan 404, bukan kesalahan autentikasi.librechat.yaml harus ada di direktori root proyek, dipasang ke dalam kontainer API, dan LibreChat harus dimulai ulang agar perubahan terlihat di UI. Jika endpoint baru tidak muncul di pemilih, penyebabnya hampir selalu hal ini, bukan kredensial — periksa kredensial secara terpisah dengan curl di bawah.tokenConfig di atas disediakan untuk menggantinya. Deklarasikan blok tersebut untuk setiap ID yang Anda sediakan, atau anggap catatan di aplikasi sebagai perkiraan dan saldo Anda di /app/billing sebagai angka yang sebenarnya.curl di bawah; perilaku klien menjadi tanggung jawab Anda bersama LibreChat.sk-kn-) dan tambahkan kredit mulai dari $10 — panggilan dibayar dari saldo tersebut, dan panggilan yang gagal tidak ditagihkan. Dasbor kemudian terbuka pada penyiapan LibreChat.Langkah demi langkah
- Buat key di
/app/keysdan salin — key hanya ditampilkan sekali. - Untuk Docker, pasang konfigurasi terlebih dahulu: panduan mulai cepat meminta Anda menyalin
docker-compose.override.yml.examplekedocker-compose.override.ymldan menghapus komentar pada volumelibrechat.yaml. Instalasi langsung tanpa Docker tidak memerlukan langkah ini. - Buat atau edit
librechat.yamldi direktori root proyek — direktori yang sama dengan.env— lalu tambahkan entriendpoints.customdi atas. - Simpan kunci di
.envsebagaiKUNAVO_API_KEY=sk-kn-.... Placeholder${KUNAVO_API_KEY}dalam YAML akan diisi dari sana, sehingga rahasia tidak tersimpan dalam berkas konfigurasi yang Anda commit. - Mulai ulang LibreChat, lalu buka pemilih endpoint: Kunavo akan muncul sebagai entri tersendiri di samping entri bawaan. Daftar model diambil dari
GET /v1/modelsatau, jika pengambilan gagal, menggunakan arraymodels.defaultAnda. - Kirim satu pesan, lalu pastikan pemilih model benar-benar beralih model — ID diselesaikan di endpoint, jadi ID Claude dan GPT dalam satu entri adalah hal yang wajar di sini, bukan kesalahan konfigurasi.
Diperiksa terhadap Referensi objek endpoint khusus LibreChat pada 21 September 2026. Pengaturan pihak ketiga dapat berubah; jika nama bidang di sini tidak lagi sama dengan yang Anda lihat, halaman tersebut adalah acuan, bukan halaman ini.
Verifikasi sebelum men-debug klien
Satu permintaan menentukan apakah masalahnya ada pada endpoint, kunci, atau berkas konfigurasi. Jika ini mengembalikan JSON, base URL dan kunci yang sama berfungsi di LibreChat.
# Settles whether a failure is the endpoint, the key, or the client.
curl -sS https://api.kunavo.com/v1/models \
-H "Authorization: Bearer sk-kn-..."ID model yang harus dimasukkan ke bidang
Setiap model teks dapat diakses melalui ID model — daftar terkininya ada di GET /v1/models, dan katalog beserta harga ada di halaman model. Tarif dalam USD per 1 juta token, input / output.
| ID model | Kunavo masuk / keluar | Kegunaannya di LibreChat |
|---|---|---|
claude-sonnet-5 | $1.40 / $7.00 | entri bawaan di models. |
claude-opus-5 | $3.50 / $17.50 | ID yang Anda pilih untuk analisis panjang, saat jawaban yang lebih baik sepadan dengan biaya satu giliran |
claude-haiku-4-5 | $0.70 / $3.50 | lalu lintas volume instans bersama dan titleModel — LibreChat memberi judul pada setiap percakapan melalui panggilan terpisah |
gpt-5-6-terra | $0.70 / $4.20 | dokumen panjang yang ditempel, saat jendela konteks menjadi faktor penentu |
Tiga kolom opsional dengan perilaku berbeda di balik gateway
Semua informasi dalam tabel ini berasal dari referensi kolom yang sama, dibaca pada tanggal di atas. Ini adalah penjelasan LibreChat tentang konfigurasinya sendiri — bukan hasil pengujian Kunavo dan bukan klaim tentang perilaku ID model tertentu setelah permintaan meninggalkan klien.
| Kolom | Isi menurut referensi | Dampaknya bagi gateway |
|---|---|---|
provider | Mengarahkan endpoint khusus melalui klien penyedia bawaan. Saat ini, Anthropic adalah nilai yang didukung. | Pengaturan ini mengganti protokol komunikasi, bukan vendor: blok yang sama dapat menggunakan Anthropic Messages alih-alih chat completions. Pengambilan model bergaya OpenAI tidak digunakan pada jalur ini, jadi cantumkan ID secara eksplisit di models. |
models.fetch | Jika bernilai true, sistem mencoba mengambil daftar model dari API dan dapat memperlambat penggunaan awal jika respons tertunda. | Kunavo merespons GET /v1/models, sehingga pemilih terisi dengan sendirinya. models. |
tokenConfig | Menentukan jendela konteks khusus model dan tarif per sejuta token untuk pelacakan biaya dan penghitungan penggunaan. | Tanpanya, catatan penggunaan menetapkan harga lalu lintas Anda berdasarkan tabel bawaan LibreChat yang dicocokkan dengan ID yang tidak pernah dirancang untuk tabel itu. Dengan pengaturan ini, angka di UI sesuai dengan nilai yang Anda tetapkan. |
Panduan empat langkah — pasang, konfigurasi, tetapkan variabel lingkungan, lalu mulai ulang — tersedia di halaman mulai cepat LibreChat untuk endpoint khusus, yang menggunakan gateway sebagai contoh.
Pertanyaan umum
Bagaimana cara menambahkan endpoint khusus ke LibreChat?
Buat librechat.yaml di direktori root proyek, berdampingan dengan .env, lalu tambahkan entri di bawah endpoints.custom dengan empat kolom wajib: name, apiKey, baseURL, dan models. name harus unik dan tidak boleh menggunakan kembali nama endpoint bawaan seperti openAI atau anthropic. Simpan kredensial di .env dan rujuk dari YAML sebagai ${YOUR_ENV_VAR}, lalu mulai ulang. Untuk Docker, berkas tersebut juga harus dipasang ke dalam kontainer API melalui docker-compose.override.yml. Entri baru hanya muncul di pemilih endpoint setelah proses mulai ulang.
Apakah baseURL LibreChat harus diakhiri dengan /v1?
Ya, untuk gateway yang kompatibel dengan OpenAI. Referensi kolom LibreChat sendiri menyebutkan bahwa opsi directEndpoint tersedia untuk URL dasar yang sudah berupa endpoint completions lengkap, dan opsi tersebut diperlukan karena aplikasi secara bawaan menambahkan /chat/completions atau /completion ke baseURL. Jadi, URL dasar harus berupa root API dengan akhiran /v1 — https://api.kunavo.com/v1 — dan directEndpoint tidak diatur. Kedua contoh di situs LibreChat menggunakan format yang sama. Kesalahan dalam pengaturan ini menghasilkan 404, bukan kegagalan autentikasi; inilah cara membedakannya dari kunci yang keliru.
Mengapa biaya yang dilaporkan LibreChat tidak sesuai dengan jumlah yang ditagihkan penyedia?
Karena LibreChat menetapkan harga permintaan berdasarkan tabel harga bawaan, bukan jumlah yang ditagihkan penyedia, lalu mencocokkan tabel tersebut dengan ID model Anda. ID gateway yang menyerupai entri tabel akan dikenai tarif entri tersebut, sedangkan ID yang sama sekali tidak cocok akan menggunakan tarif tetap. Solusinya adalah menambahkan blok tokenConfig di bawah endpoint khusus dan mencantumkan prompt, completion, serta context untuk setiap ID yang Anda sediakan, dalam USD per sejuta token. LibreChat memeriksa pengaturan tersebut sebelum merujuk tabelnya sendiri. Anggap catatan dalam aplikasi sebagai perkiraan dan saldo penyedia sebagai catatan yang sebenarnya.
Bisakah LibreChat menggunakan model Claude melalui endpoint khusus?
Bisa, dengan dua cara. Endpoint khusus biasa yang kompatibel dengan OpenAI meneruskan ID model langsung ke baseURL Anda. Jadi, ID Claude diselesaikan di endpoint tersebut, bukan di LibreChat, dan Anda tidak memerlukan akun Anthropic. Cara lainnya, kolom provider mengarahkan blok yang sama melalui klien Anthropic Messages bawaan LibreChat — saat ini, nilai yang didukung adalah anthropic. Pada jalur tersebut, pengambilan model bergaya OpenAI tidak digunakan, jadi cantumkan ID yang diinginkan di models.default alih-alih mengandalkan pengambilan otomatis.
Apakah Kunavo telah menguji LibreChat?
Belum. Konfigurasi di halaman ini disalin dari dokumentasi endpoint khusus LibreChat sendiri pada tanggal yang tertera, dan tidak ada bagian yang merupakan hasil saat dijalankan — belum ada percakapan, giliran streaming, siklus bolak-balik pemanggilan alat, atau proses Agents. Hal yang sama berlaku untuk setiap klien yang didokumentasikan di sini; halaman penyiapan yang dipublikasikan bukanlah pengujian. Anda dapat memeriksa sendiri dalam sepuluh detik apakah URL dasar dan kunci berfungsi, menggunakan curl di halaman ini; selebihnya bergantung pada perilaku LibreChat dengan ID model yang Anda pilih.