Plugin
Libre WebUI menggunakan plugin untuk menghubungkan penyedia AI eksternal dan kapabilitas model bersama Ollama lokal.
Jenis Plugin
| Jenis | Tujuan |
|---|---|
| Chat/pelengkapan | Model teks dan chat dari API penyedia |
| Embedding | Embedding vektor untuk pencarian dokumen dan memori |
| Pembuatan gambar | Model gambar dan backend bergaya ComfyUI |
| Teks-ke-ucapan | Penyedia sintesis suara |
| Ucapan-ke-teks | Penyedia transkripsi |
| Pembuatan audio | Penyedia pembuatan suara dan audio |
| Pembuatan video | Penyedia pembuatan video asinkron |
Plugin dapat menyediakan peta model statis dan, jika didukung, menyegarkan model yang tersedia dari API penyedia.
Keluarga Penyedia Bawaan
Libre WebUI menyertakan definisi penyedia untuk layanan umum:
- OpenAI dan API kompatibel OpenAI
- Anthropic
- Google Gemini
- Groq
- Kimi Code dari Moonshot AI
- Mistral
- OpenRouter
- Hugging Face
- GitHub Models
- MLX LM untuk inferensi Apple Silicon lokal
- ComfyUI
- ElevenLabs
Katalog penyedia sering berubah. Jika plugin mendukung penemuan model langsung, perlakukan UI sebagai sumber informasi yang benar.
Kepemilikan dan Otorisasi
Definisi plugin merupakan konfigurasi instans bersama. Setiap rute /api/plugins memerlukan autentikasi, dan hanya administrator yang dapat mengunggah, menginstal, memperbarui, atau menghapus definisi. Aktivasi berbeda: setiap pengguna terautentikasi dapat mengaktifkan atau menonaktifkan plugin bersama hanya untuk akunnya sendiri. Keadaan tersebut disimpan di SQLite dan bertahan setelah backend dimulai ulang tanpa memengaruhi penyedia aktif pengguna lain.
Saat peningkatan, daftar aktivasi global lama .status.json disalin sekali ke akun yang sudah ada, tetapi hanya untuk definisi yang persis cocok dengan anchor kepercayaan terkompilasi Libre WebUI. Definisi khusus atau bayangan lama tetap dikarantina dan tidak aktif. Akun yang dibuat setelah migrasi tersebut dimulai tanpa plugin aktif.
Definisi terpaket hanya dipercaya jika isi ternormalisasinya cocok dengan hash yang dikompilasi ke backend. Definisi yang dapat ditulis disetujui dalam SQLite berdasarkan jalur sumber ternormalisasi dan hash definisi lengkap. Instalasi, pembaruan, atau impor ulang oleh administrator mencatat persetujuan itu; perubahan berkas langsung membatalkannya. Persetujuan dan pembaruan menghapus aktivasi setiap akun sebelum mengganti berkas, sehingga setiap pengguna harus mengaktifkan ulang definisi yang telah ditinjau. Definisi khusus sebelum peningkatan harus diimpor ulang administrator sebelum dapat muncul dalam katalog, menemukan model, menerima kredensial, atau mengeksekusi kapabilitas apa pun.
Variabel plugin dipisahkan berdasarkan tujuan. Hanya administrator yang dapat menyimpan variabel perutean koneksi yang dikenali:
endpoint, base_url, api_path, models_endpoint, api_url,
image_endpoint, embedding_endpoint, stt_endpoint, tts_endpoint,
voice_clone_endpoint, api_mode, model, dan model_id. Nilai
config.endpoint_variable, config.models_endpoint_variable, atau
config.voice_clone_endpoint_variable yang dideklarasikan suatu kapabilitas juga merupakan perutean koneksi, meskipun menggunakan nama berbeda.
Nonadministrator tetap dapat menyimpan kontrol pembuatan seperti temperatur dan preferensi streaming. Baris perutean lama milik nonadministrator diabaikan, tidak dikembalikan sebagai nilai terkonfigurasi, dan dihapus saat akun tersebut mengatur ulang seluruh variabel plugin. Ini mencegah promosi peran di kemudian hari menghidupkan kembali rute dorman secara diam-diam.
Kredensial
Kredensial dapat berasal dari variabel lingkungan atau pengaturan pengguna.
Contoh lingkungan:
OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...
GROQ_API_KEY=gsk_...
GEMINI_API_KEY=...
MISTRAL_API_KEY=...
OPENROUTER_API_KEY=sk-or-...
KIMI_API_KEY=...
GITHUB_API_KEY=github_pat_...
ELEVENLABS_API_KEY=...
Untuk deployment bersama, kredensial tingkat pengguna biasanya lebih baik karena setiap pengguna mengontrol penagihan dan batas penyedia mereka sendiri. Kunci lingkungan berguna untuk instalasi satu pengguna, demo, atau deployment terkelola.
Kunci lingkungan hanya menjadi fallback selama permintaan menggunakan proyeksi perutean dan autentikasi dari definisi plugin terpaket yang tidak dibayangi. Definisi impor, definisi dapat-tulis yang membayangi ID terpaket, atau override perutean koneksi tersimpan milik administrator memerlukan kredensial yang disimpan akun yang sama. Sebelum mengizinkan fallback lingkungan, Libre WebUI membandingkan endpoint root, kolom autentikasi, endpoint kapabilitas dan pemilih variabel endpoint, serta definisi dan nilai bawaan variabel perutean yang dikenali. Hash manifes terkompilasi tetap menjadi acuan meskipun direktori plugin lama dan terpaket berbagi jalur, seperti dalam tata letak kontainer standar; manifes paket yang ditimpa tidak dapat menetapkan kepercayaannya sendiri.
Aturan ini berlaku untuk penemuan, Chat, Work, pemeriksaan ketersediaan, dan katalog kapabilitas. Aturan mencegah endpoint khusus atau manifes khusus sebelum peningkatan menerima rahasia yang dikelola operator.
Kredensial tersimpan pengguna diikat pada sumber definisi efektif, hash definisi lengkap, kontrak autentikasi, endpoint dan pemilih kapabilitas, serta nilai perutean efektif pada saat disimpan. Perubahan rute atau definisi membuat kredensial lama tidak tersedia sampai pengguna meninjau tujuan baru dan menyimpan kredensial lagi. Kredensial lama tanpa ikatan hanya diterima pada rute terpaket ber-anchor yang persis; penggunaan berhasil pertama menulis ikatan sebelum mengembalikan kunci yang didekripsi.
Penyedia Kompatibel OpenAI
Banyak penyedia mengekspos API kompatibel OpenAI. Plugin dapat menentukan:
- URL endpoint API lengkap
- Variabel lingkungan kunci API
- Perilaku endpoint Chat
- Dukungan embedding
- Perilaku penemuan model
- Fallback peta model opsional
Jika penyedia tidak mendukung penemuan model langsung, Libre WebUI menggunakan peta model yang dikonfigurasi. JSON plugin impor mengonfigurasi penyedia yang sudah menggunakan salah satu format wire yang didukung Libre WebUI: OpenAI Chat Completions, OpenAI Responses, Anthropic Messages, atau Gemini. JSON saja tidak menerjemahkan protokol proprieter sembarang; penyedia dengan bentuk permintaan, streaming, panggilan alat, atau respons berbeda memerlukan adapter backend kecil.
Pembuatan Gambar OpenAI
Penyedia OpenAI terpaket mengekspos API Gambar di https://api.openai.com/v1/images/generations. gpt-image-2 adalah model saat ini. Katalog juga mempertahankan ID gpt-image-1.5, gpt-image-1, dan gpt-image-1-mini yang telah dihentikan untuk deployment kompatibel yang sudah ada; konfigurasi baru sebaiknya memilih gpt-image-2.
Pembuatan gambar menggunakan kredensial OpenAI efektif yang sama dengan Chat: kunci tersimpan milik pengguna saat ini atau fallback lingkungan penyedia terpaket tepercaya. Kapabilitas ini memiliki override image_endpoint opsional terpisah agar endpoint Chat khusus tidak menerima permintaan gambar secara tidak sengaja. Biarkan image_endpoint kosong untuk mewarisi endpoint API Gambar terpaket.
Pilihan gambar dikualifikasi berdasarkan penyedia. Jika dua plugin gambar mengekspos ID model yang sama, Libre WebUI hanya mengirim permintaan kepada penyedia yang dipilih di panel gambar. Respons GPT Image menggunakan data gambar base64; Libre WebUI mengubah data tersebut menjadi gambar dalam aplikasi dan menyimpannya ke galeri pengguna saat ini. Rute API Gambar memerlukan autentikasi, dan permintaan pembuatan langsung harus menyertakan pluginId serta model. Permintaan dapat menetapkan n ke bilangan bulat JSON dari 1 hingga 10; string numerik dan nilai pecahan ditolak sebelum mencapai penyedia.
Mode API Chat Completions dan Responses
Plugin pelengkapan kompatibel OpenAI dapat menggunakan semantik permintaan chat_completions atau responses. Plugin OpenAI terpaket menampilkan pilihan ini di Pengaturan → Plugin.
Pengaturan koneksi diselesaikan dalam urutan berikut:
- Override
endpointlengkap, jika dikonfigurasi. base_urlditambahapi_pathopsional.endpointlama milik plugin.
Nilai endpoint yang persis cocok dengan endpoint manifes plugin diperlakukan sebagai nilai bawaan manifes, bukan override. Ini mencegah nilai bawaan tersimpan lama membayangi URL Dasar baru setelah peningkatan. Endpoint lengkap yang benar-benar khusus tetap memiliki prioritas tertinggi.
Jalur bawaan adalah /chat/completions dalam mode Chat Completions dan /responses dalam mode Responses. base_url harus berupa root API, seperti https://api.example.com/v1; gunakan api_path jika penyedia kompatibel mengekspos operasi pada jalur relatif lain. Endpoint lengkap harus menyertakan seluruh jalur operasi dan mengalahkan kedua kolom tersebut. Sufiks /chat/completions, /completions, atau /responses yang dikenal menentukan semantik permintaan; jalur endpoint khusus mempertahankan api_mode terpilih.
JSON plugin impor dapat menyediakan nilai bawaan yang sama:
{
"endpoint": "https://api.example.com/v1/chat/completions",
"api_mode": "responses",
"base_url": "https://api.example.com/v1",
"api_path": "/responses"
}
Permintaan Responses menggunakan input, max_output_tokens, alat fungsi yang diratakan, store: false, dan meminta konten penalaran terenkripsi untuk kelanjutan tanpa keadaan. Keluaran Responses yang selesai maupun streaming dinormalkan kembali ke format peristiwa chat dan Work milik Libre WebUI. Keadaan pemutaran ulang hanya dipertahankan jika array Item keluaran lengkap dan berurutan berisi paling banyak 64 Item serta 90 KB; Item dipertahankan persis dan kolomnya tidak pernah dipotong. Item yang dapat diputar ulang memerlukan ID dan tipe unik yang tidak kosong, serta struktur pesan, penalaran, dan panggilan fungsi divalidasi sebelum panggilan alat apa pun dipancarkan. Keadaan Chat yang terlalu besar kembali ke riwayat terlihat yang dinormalkan. Chat juga membuang Item panggilan fungsi mentah karena tidak menyimpan keluaran alat yang sesuai. Respons Work berisi alat tanpa keadaan pemutaran ulang yang terbatas dan persis ditolak sebelum efek samping alat apa pun.
Penyimpanan Chat berbasis SQLite mengenkripsi keadaan penyedia yang dipertahankan bersama pesan; Work menyimpan keadaan khusus-alat dalam baris konteks tersembunyi yang tidak dikembalikan API pesan. Cakupan ter-hash mengikat pemutaran ulang pada penyedia, model, mode Responses, endpoint akhir yang dikonfigurasi, serta sidik jari satu arah buram dari kredensial terpilih yang sama. Jika cakupan berubah, termasuk setelah rotasi kunci API, Libre WebUI kembali ke riwayat pesan ternormalisasi alih-alih mengirim Item khusus penyedia melintasi batas autentikasi. Proses Work aktif juga membuat sidik jari perutean dan kredensialnya lalu memvalidasi ulang tepat sebelum setiap putaran penyedia; mengubah mode, endpoint, atau kunci API menghentikan proses sebelum permintaan lain dapat menerima keadaan alat sebelumnya. Keadaan berisi alat harus memenuhi batas pemutaran ulang dan pembungkus metadata persisten lengkap 100 KB sebelum Work melakukan efek samping. Jika batch Work persisten terganggu, setiap hasil alat yang hilang dipulihkan dengan ID panggilan persis dan peringatan hasil-tidak-diketahui agar penyedia dapat memeriksa ruang kerja alih-alih mengulangi kemungkinan efek samping secara membabi buta. Hasil Responses yang tidak lengkap tidak dianggap sebagai giliran Chat atau Work yang berhasil; incomplete_details.reason dipertahankan dan ditampilkan kepada pemanggil.
Penemuan model menurunkan /models dari salah satu jalur operasi. Misalnya, https://api.example.com/v1/responses melakukan penemuan dari https://api.example.com/v1/models. Penyedia tanpa endpoint daftar model kompatibel tetap dapat menggunakan model_map manual. Penemuan dibatasi pada variabel dan kredensial pengguna saat ini. Hasil dipertahankan per pengguna, bukan ditulis ke manifes plugin bersama. Penemuan berjalan setelah aktivasi, penyegaran eksplisit, perubahan kunci API, perubahan variabel koneksi, dan pengaturan ulang variabel; penyimpanan variabel pembuatan yang tidak terkait tidak memicu permintaan jaringan.
Penemuan juga berjalan sendiri. Membaca daftar plugin menemukan ulang penyedia pelengkapan aktif yang katalognya hilang atau lebih lama dari PLUGIN_MODEL_DISCOVERY_TTL_MS, sehingga memuat ulang aplikasi mencerminkan model penyedia saat ini, bukan katalog ketika aktivasi. Jeda per penyedia mencegah penyedia yang tidak dapat dijangkau diperiksa pada setiap permintaan, dan tenggat mencegah penyedia lambat menunda respons; penyegaran yang melampauinya disajikan pada permintaan berikutnya. URL penemuan turunan akhir diperiksa sebelum kredensial pengguna dibaca atau header otorisasi dibuat, termasuk jika URL berasal dari manifes plugin impor. Permintaan penemuan dan kapabilitas penyedia tidak mengikuti pengalihan HTTP. Konfigurasikan endpoint akhir Chat, Work, daftar model, gambar, embedding, transkripsi, ucapan, kloning suara, audio, atau video secara langsung; ini mencegah kredensial diteruskan dari URL tervalidasi ke tujuan pengalihan yang tidak divalidasi.
Endpoint penyedia dapat menggunakan HTTP atau HTTPS. HTTP mengirim kunci API, prompt, hasil alat, dan konten yang dihasilkan tanpa enkripsi transportasi, jadi gunakan hanya untuk gateway yang dihosting sendiri pada jaringan tepercaya; utamakan HTTPS jika gateway mendukung TLS. Permintaan berasal dari backend. Dalam deployment kontainer, ini berarti URL layanan seperti http://ai-gateway:8080/v1, sedangkan localhost mengidentifikasi kontainer Libre WebUI itu sendiri. Rute kapabilitas plugin, termasuk pembuatan gambar, menyelesaikan variabel endpoint dan kredensial bagi akun terautentikasi yang meminta. Libre WebUI tidak memiliki mode satu pengguna tanpa autentikasi.
Endpoint Khusus Kapabilitas
Override endpoint Chat dipisahkan dari kapabilitas gambar, embedding, transkripsi, teks-ke-ucapan, audio, dan video. Plugin multikapabilitas dapat mengekspos image_endpoint, embedding_endpoint, stt_endpoint, tts_endpoint, atau variabel lain yang dinamai oleh config.endpoint_variable. Rute kloning suara juga dapat menamai config.voice_clone_endpoint_variable. Membiarkan kolom tersebut kosong menggunakan endpoint kapabilitas yang dideklarasikan plugin; endpoint Chat generik tidak pernah digunakan sebagai override kapabilitas.
Plugin GitHub Models terpaket mewarisi endpoint models.github.ai/inference/chat/completions saat ini ketika override opsionalnya kosong. Plugin Hugging Face menggunakan rute dan payload khusus tugas hf-inference/models/{model} untuk embedding, gambar, dan teks-ke-ucapan, bukan mengirim permintaan tersebut ke endpoint Chat.
Override Endpoint
Variabel endpoint adalah URL permintaan lengkap, termasuk jalur operasi. Misalnya, plugin chat kompatibel OpenAI biasanya menggunakan URL seperti https://provider.example/v1/chat/completions, bukan hanya https://provider.example. Konfigurasi plugin lama yang diimpor mungkin menyebut variabel ini api_url; Libre WebUI menerima alias tersebut, tetapi endpoint yang tidak kosong selalu mengalahkan jika keduanya tersedia.
URL endpoint HTTP dan HTTPS absolut diterima; protokol lain ditolak. HTTP ditujukan bagi gateway yang dihosting sendiri pada jaringan tepercaya karena mengirim kredensial dan isi permintaan tanpa enkripsi transportasi. Utamakan HTTPS untuk rute yang keluar dari batas deployment privat. Membiarkan override kosong menggunakan endpoint lengkap dari definisi plugin; override tidak valid yang eksplisit ditolak, bukan diam-diam dirutekan ke nilai bawaan tersebut.
Permintaan penyedia tidak mengikuti pengalihan. Konfigurasikan URL operasi akhir yang tervalidasi secara langsung; respons pengalihan dilaporkan sebagai kesalahan penyedia, bukan meneruskan kredensial atau isi permintaan ke hop lain.
Ingat bahwa permintaan berasal dari backend Libre WebUI. Dalam kontainer, localhost mengidentifikasi kontainer itu sendiri, bukan otomatis host kontainer atau layanan lain. Gunakan nama layanan kontainer gateway, atau nama yang dapat dijangkau host seperti host.docker.internal jika disediakan runtime kontainer.
Penemuan Model
Pengaturan → Plugin menyediakan ruang kerja Koneksi penyedia untuk alur ini. Cari penyedia di panel kiri, pilih, lalu gunakan panel kanan untuk meninjau keadaan aktif dan katalog model efektifnya. Konfigurasi penyedia tetap diciutkan sampai Konfigurasikan dipilih. Dengan demikian, endpoint, kredensial, dan kontrol pembuatan lanjutan tidak memenuhi tampilan bawaan.
Untuk penyedia chat dan pelengkapan, Segarkan model menjalankan penemuan bagi penyedia terpilih lalu memuat ulang katalog plugin dan daftar model Chat. Katalog hanya baca: barisnya berasal dari ID yang ditemukan pengguna saat ini ditambah peta model kapabilitas definisi plugin. Label kapabilitas menjelaskan rute plugin yang mencantumkan model; label tersebut bukan pemeriksaan kesehatan. Tambahkan ID model fallback atau yang dikelola manual melalui model_map JSON plugin, bukan dengan mengedit baris hasil penemuan.
Ketika plugin diaktifkan, Libre WebUI mencoba penemuan model dengan endpoint dan kredensial efektif akun tersebut. Rute khusus administrator memerlukan kredensial yang disimpan akun yang sama; fallback lingkungan hanya digunakan dengan rute manifes tepercaya. Untuk API kompatibel, Libre WebUI menurunkan URL daftar model dari endpoint lengkap:
- URL yang berakhir dengan
/modelsdigunakan apa adanya; - sufiks operasi yang dikenal seperti
/chat/completions,/completions,/responses,/embeddings, atau/messagesdiganti dengan/models; - jika tidak,
/modelsditambahkan ke jalur.
Plugin yang tidak dapat menggunakan URL turunan dapat mengekspos models_endpoint sebagai URL daftar model lengkap yang eksplisit. Nilai ini mengalahkan penurunan, tunduk pada kebijakan URL keluar yang sama, dan diminta tanpa mengikuti pengalihan. Menyimpan atau mengatur ulang endpoint, api_url, models_endpoint, base_url, api_path, atau api_mode menghapus dan menyegarkan katalog hasil penemuan pengguna saat ini sebelum UI memuat ulang.
Semua rute khusus diselesaikan dan divalidasi sebelum pemilihan kredensial. Kebijakan kredensial tidak boleh kembali ke kunci lingkungan server untuk rute khusus tersimpan; konfigurasikan kunci per pengguna untuk rute tersebut. Fallback lingkungan dikhususkan bagi endpoint yang disediakan definisi plugin tepercaya.
Penemuan mengharapkan respons kompatibel OpenAI yang memuat ID model dalam array data. Aktivasi menunggu upaya tersebut sebelum kembali, sehingga penyegaran daftar plugin pertama dapat menyertakan katalog hasil penemuan. Hasil yang berhasil disimpan per pengguna dan dilapiskan pada tampilan plugin pengguna tersebut; Libre WebUI tidak menulis ulang JSON plugin bersama atau mengekspos ID model yang ditemukan satu pengguna kepada akun lain. Jika penyedia tidak memiliki endpoint daftar model kompatibel, tidak dapat dijangkau, atau mengembalikan bentuk respons lain, aktivasi biasa mempertahankan hasil penemuan sebelumnya milik pengguna. Perubahan kolom koneksi yang disengaja terlebih dahulu menghapus katalog usang dan karena itu menggunakan fallback model_map plugin jika rute baru tidak dapat ditemukan.
Menyimpan atau mengatur ulang perutean koneksi menghapus katalog hasil penemuan sebelumnya milik akun sebelum upaya penemuan berikutnya, sehingga model yang dipelajari dari satu tujuan tidak tetap dapat dipilih setelah perubahan rute.
Status plugin, ketersediaan Work, katalog model, dan rute kapabilitas menggunakan konteks pengguna serta batas kredensial yang sama. Misalnya, ketersediaan model gambar, variabel endpoint, dan kredensial diselesaikan bagi pengguna yang membuat permintaan.
Pemilihan Penyedia yang Persis dalam Chat
ID model tidak unik secara global. Model Ollama dan beberapa plugin aktif dapat mengekspos model bernama example-model. Karena itu, Chat menyimpan ID model mentah bersama identitas penyedia opsional:
providerType: "ollama"mengidentifikasi rute Ollama lokal atau terkonfigurasi;providerType: "plugin"ditambahproviderIdmengidentifikasi satu plugin persis.
Nilai berkualifikasi penyedia dan dikodekan URL hanya digunakan sebagai kunci tahan benturan dalam pemilih model. Permintaan tetap mengirim ID model mentah milik penyedia. Nama model Ollama/plugin dan plugin/plugin duplikat tetap menjadi pilihan terpisah, dan membuka ulang chat memulihkan pilihan persis yang disimpan.
Identitas penyedia eksplisit menolak secara aman. Jika plugin terpilih dinonaktifkan, dihapus, atau tidak lagi mengumumkan model tersebut, Libre WebUI mempertahankan pilihan tersimpan sebagai tidak tersedia dan tidak diam-diam beralih ke penyedia lain dengan nama model yang sama. Aktifkan ulang penyedia atau pilih model lain secara eksplisit sebelum membuat lagi.
Sesi dan preferensi yang dibuat sebelum identitas penyedia disimpan dapat memiliki providerType dan providerId yang tidak ditetapkan atau null. Demi kompatibilitas, rekaman lama ini mempertahankan perutean historis berdasarkan nama saja karena penyedia asli tidak dapat direkonstruksi secara andal. Pemilih menampilkan rekaman tersebut sebagai "penyedia tidak tercatat", bukan menebak label Ollama atau plugin. Memilih entri penyedia konkret mencatat penyedia persis untuk permintaan berikutnya. Pilihan persona baru mempertahankan identitas UI persona:<id> dan dicatat sebagai berbasis Ollama.
Pengaturan dan Pewarisan Penyedia
Buka Pengaturan → Plugin lalu pilih Konfigurasikan untuk suatu penyedia. Panel penyedia ditutup secara bawaan. Administrator dapat mengelola definisi bersama dan nilai perutean koneksi. Pengguna terautentikasi lain dapat mengaktifkan penyedia, menyimpan kunci API sendiri, dan mengubah kontrol pembuatan sendiri, tetapi UI tidak menampilkan kontrol unggah, instal, ekspor, hapus, atau perutean plugin kepada mereka.
Untuk administrator, override koneksi muncul lebih dahulu. Sampling dan kontrol khusus lain tetap berada di Parameter lanjutan, yang juga ditutup secara bawaan. Nilai koneksi dan pembuatan yang diwarisi tampil sebagai input kosong dengan petunjuk nilai bawaan penyedia. Libre WebUI tidak menyalin nilai bawaan manifes ke pengaturan tersimpan akun hanya karena panel dibuka.
Penyimpanan hanya mengirim kolom yang berubah dalam sesi editor saat ini. Mengosongkan nilai nonsensitif tersimpan menghapus override akun tersebut dan memulihkan nilai bawaan penyedia; kolom sensitif tersamarkan yang kosong dibiarkan tanpa perubahan. Atur Ulang ke Bawaan menghapus setiap override variabel yang boleh dikelola akun. Jika penyimpanan atau pengaturan ulang gagal, editor mempertahankan nilai yang belum disimpan agar pengguna dapat mencoba lagi.
Perbedaan ini penting bagi endpoint khusus: administrator membiarkan endpoint kosong untuk mewarisi URL terpaket plugin, atau memasukkan URL kompatibel lengkap sebagai override bagi koneksi penyedia administrator tersebut.
Plugin dalam Work
Work dapat menggunakan plugin completion dan chat aktif selain Ollama serta Ollama Cloud. Proses Work berbasis plugin hanya diterima jika:
- plugin aktif;
- modelnya ada dalam katalog hasil penemuan pengguna saat ini atau peta model terkonfigurasi plugin; dan
- kredensial tersedia bagi administrator saat ini.
Work menyimpan jenis penyedia dan ID plugin terpilih bersama tugas dan setiap proses. Karena itu, perutean didasarkan pada penyedia tersimpan yang persis, bukan hanya nama model. Mengaktifkan plugin dengan nama model yang cocok dengan model Ollama tidak dapat diam-diam mengalihkan tugas yang sudah ada.
Work mengadaptasi panggilan alat melalui format permintaan/respons native kompatibel OpenAI, Anthropic, dan Gemini. Model terpilih harus mendukung panggilan alat sekalipun penyedia menawarkan pelengkapan chat biasa. Jika penyedia menolak alat atau mengembalikan respons tidak kompatibel, proses gagal tanpa beralih ke penyedia lain.
Proses Work jarak jauh dapat membuat beberapa permintaan penyedia. Penyedia menerima prompt sistem Work, konteks percakapan, definisi alat, dan hasil alat yang diminta. Hasil alat dapat memuat berkas sumber, daftar direktori, atau keluaran perintah. Libre WebUI menampilkan pengungkapan penyedia jarak jauh per pengguna yang dapat ditutup dalam Work; operator tetap harus meninjau kebijakan harga, retensi, dan pelatihan penyedia sebelum mengaktifkan layanan untuk proyek sensitif.
Embeddings
Plugin berkemampuan embedding dapat muncul dalam pengaturan embedding dokumen. Libre WebUI juga mendeteksi kemungkinan model embedding Ollama seperti nomic-embed-text, bge, e5, gte, dan nama model serupa.
Jika tidak ada model embedding yang ditemukan, UI kembali ke nomic-embed-text sebagai kandidat bawaan lokal.
Catatan Pengembangan Plugin
Definisi plugin harus menjelaskan kapabilitas dengan jelas dan tidak berpura-pura bahwa penyedia mendukung fitur yang tidak dieksposnya. Jaga peta model cukup kecil agar berguna sebagai fallback, dan utamakan penemuan bagi penyedia dengan API daftar model yang cepat serta andal.
Saat menambahkan penyedia:
- Tambahkan definisi plugin.
- Tentukan kunci kredensial atau kolom kredensial pengguna.
- Implementasikan penemuan model jika penyedia menawarkan endpoint daftar model.
- Tambahkan pemetaan permintaan untuk chat, embedding, gambar, TTS, atau STT.
- Uji keadaan kunci hilang, kunci salah, dan kesalahan penyedia.