Lewati ke konten utama

Alat Chat

Chat dapat mengizinkan model memanggil alat. Giliran dengan alat yang diaktifkan menjalankan loop native beberapa putaran: model meminta alat, Libre WebUI mengeksekusinya berdasarkan identitas dan izin pengguna pemanggil, hasil dikembalikan kepada model, lalu loop berlanjut sampai model menjawab—maksimum delapan putaran per giliran dan delapan panggilan per putaran. Hentikan membatalkan panggilan model, panggilan alat yang sedang berjalan, dan penantian persetujuan yang tertunda.

Panggilan alat dicatat sebagai peristiwa ternormalisasi (chat.tool-call.v1, chat.tool-result.v1, chat.approval.v1) yang mengalir secara identik melalui jalur WebSocket privat dan aliran peristiwa tahan lama. Karena itu, penyegaran atau penyambungan ulang memutar kembali keadaan yang sama. Giliran yang selesai menyimpan panggilannya, beserta pratinjau hasil terbatas, pada pesan asisten.

Mengaktifkan Alat

Alat dinonaktifkan secara bawaan. Administrator membukanya di bawah Pengaturan → Manajemen Pengguna (khusus administrator atau semua pengguna); setiap giliran kemudian ikut serta melalui ikon kunci inggris di penyusun, yang membuka pemilih: satu sakelar utama serta satu kotak centang untuk setiap alat bawaan dan server terdaftar, sehingga giliran hanya berjalan dengan alat yang Anda pilih. Pemilih dapat mempersempit alat yang terikat pada profil, tetapi tidak pernah memperluasnya. Chat privat (inkognito) tidak pernah menawarkan alat: panggilan alat merupakan tindakan yang mengarah keluar dan dapat meninggalkan persetujuan serta catatan audit.

Profil asisten (persona) dapat membatasi alat yang ditawarkan: server alat terikat, sebagian alat bawaan, keterampilan terikat, dan koleksi pengetahuan terikat membatasi apa yang dilihat model dalam sesi yang menggunakan profil tersebut.

Alat Bawaan

Chat menyertakan tiga belas alat pihak pertama (semuanya hanya baca kecuali alat mutasi catatan dan kalender, yang melewati alur persetujuan efek samping):

  • web_search — mesin pencari yang dikonfigurasi administrator, sesuai mode akses pencarian web.
  • search_documents — pencarian hibrida atas dokumen unggahan dan koleksi pengetahuan pengguna, termasuk koleksi yang dibagikan kepadanya (ikatan profil dapat membatasi koleksi); setiap bagian disitasi beserta potongan dan lokasi sumbernya.
  • list_documents — mencantumkan dokumen dalam cakupan chat ini beserta ID, jenis, dan ukurannya, agar model dapat menentukan dokumen yang perlu dibaca.
  • read_document — membaca jendela terbatas dari satu dokumen yang tersedia berdasarkan ID dan offset, diberi label lokasi sumber, untuk menelusuri berkas yang tidak dapat dijawab hanya melalui pengambilan.
  • load_skill — memuat instruksi lengkap suatu keterampilan berdasarkan slug; deskripsi alat membawa manifes keterampilan aktif milik pengguna, sehingga keterampilan tetap dimuat secara malas sampai model memerlukannya. Jika keterampilan menyertakan berkas pendamping, instruksi yang dimuat diakhiri dengan inventaris berkas.
  • read_skill_file — membaca satu berkas pendamping dalam sebuah keterampilan berdasarkan slug dan jalur relatif, sehingga dokumen referensi besar tidak memakan konteks sampai model benar-benar membukanya.
  • list_notes — mencantumkan catatan sendiri dan catatan berbagi milik pengguna beserta ID-nya.
  • read_note — membaca isi lengkap sebuah catatan berdasarkan ID.
  • create_note — membuat catatan (memiliki efek samping, memerlukan persetujuan).
  • update_note — mengganti isi catatan; keadaan sebelumnya disimpan sebagai revisi yang dapat dipulihkan, sehingga pengeditan model selalu dapat dibatalkan (memiliki efek samping, memerlukan persetujuan).
  • list_calendar_events — mencantumkan acara kalender sendiri dan berbagi milik pengguna dalam rentang milidetik epoch.
  • create_calendar_event — membuat acara kalender (memiliki efek samping, memerlukan persetujuan).
  • delete_calendar_event — menghapus satu acara kalender berdasarkan ID (memiliki efek samping, memerlukan persetujuan).

Server Alat

Administrator mendaftarkan server alat eksternal di Pengaturan → Alat (templat awal di sana mengisi formulir terlebih dahulu, termasuk API demo publik yang aman):

  • OpenAPI: spesifikasi JSON OpenAPI 3.x diambil sekali dan dikunci dengan digest SHA-256. Setiap operasi menjadi alat; operasi GET digolongkan hanya baca dan operasi lainnya sebagai efek samping sampai administrator mengganti klasifikasi tiap alat. Eksekusi menyusun ulang panggilan dari operasi yang dikunci—argumen model tidak pernah memilih tujuan.
  • MCP (HTTP yang Dapat Dialirkan): daftar alat server diambil melalui JSON-RPC dan dikunci dengan cara yang sama. annotations.readOnlyHint menandai alat sebagai hanya baca. Server MCP stdio sengaja tidak didukung: proses eksternal tidak pernah berjalan di dalam proses web.

Inventaris yang berubah hanya berlaku setelah administrator menyegarkan server, yang memajukan revisi terkunci dan mempertahankan override per alat. Ketersediaan per server dapat dibatasi untuk administrator, semua pengguna, atau berdasarkan pemberian akses melalui model pemberian sumber daya bersama (izin pengguna dan grup pada server alat).

Kredensial

Server yang memerlukan autentikasi menggunakan kredensial per pengguna (token bearer atau header bernama). Setiap rahasia dienkripsi dengan data terautentikasi tambahan yang mengikatnya kepada pengguna dan server yang persis, dimasukkan oleh setiap pengguna di Pengaturan → Alat, dan tidak pernah dibagikan antar akun.

Kebijakan Egress

Setiap permintaan alat menyelesaikan sendiri alamat tujuannya, menolak ruang alamat privat, loopback, dan metadata, lalu menyematkan koneksi ke alamat hasil resolusi agar pengikatan ulang DNS tidak dapat mengalihkan panggilan. Respons pengalihan ditolak. Ukuran respons dibatasi dan setiap panggilan memiliki batas waktu ketat. Nama host internal yang persis dapat diizinkan melalui TOOLS_PRIVATE_NETWORK_ALLOWLIST (dipisahkan koma); host yang diizinkan tetap disematkan dan dibatasi. Keluaran alat masuk kembali ke model sebagai teks yang tidak tepercaya.

Persetujuan

Alat hanya baca berjalan tanpa bertanya. Alat yang memiliki efek samping menjeda giliran dan meminta pengguna memilih: izinkan sekali, izinkan untuk chat ini, selalu izinkan alat ini pada server ini, atau tolak. Keputusan bersifat tahan lama—izin "selalu" bertahan setelah mulai ulang dan dapat dicabut di Pengaturan → Alat—sedangkan permintaan tertunda kedaluwarsa setelah dua menit, yang dilihat model sebagai penolakan. Penolakan dan waktu habis tidak pernah mengeksekusi panggilan. Setiap keputusan dan panggilan meninggalkan peristiwa audit keamanan yang disunting.

Contoh

Aktifkan sakelar kunci inggris di penyusun terlebih dahulu; setiap contoh berikut adalah pesan chat biasa.

web_search — mencari informasi

Apa yang berubah dalam rilis SQLite terbaru? Cari di web sebelum menjawab.

Model memanggil web_search dengan kueri seperti {"query": "SQLite latest release changelog"}, kartu panggilan menampilkan cuplikan hasil yang diterimanya, dan balasan menyitasi temuannya. Pencarian web harus dikonfigurasi dan diizinkan untuk akun Anda.

search_documents — menanyakan berkas Anda sendiri

Unggah PDF atau tambahkan dokumen ke koleksi pengetahuan, lalu:

Cari klausul pengakhiran dalam dokumen saya dan kutip secara persis.

Model memanggil search_documents dengan {"query": "termination clause"} dan menerima bagian yang cocok beserta label dokumen sumber, sehingga jawaban dapat mengutip dan mencantumkan sumbernya.

load_skill — menerapkan keterampilan tersimpan

Buat keterampilan di Pengaturan → Keterampilan (misalnya $release-notes—cara Anda ingin catatan rilis ditulis), lalu:

Buat draf catatan rilis untuk diff ini menggunakan $release-notes.

Model melihat keterampilan dalam manifesnya, memanggil load_skill {"slug": "release-notes"} untuk mengambil instruksi lengkap, lalu mengikutinya. Mengetik $ di penyusun melengkapi otomatis slug keterampilan Anda.

Server OpenAPI — misalnya API cuaca

  1. Pengaturan → Alat → Daftarkan server: nama Weather, jenis OpenAPI, URL dasar https://api.example-weather.dev, URL spesifikasi https://api.example-weather.dev/openapi.json, mode autentikasi bearer.

  2. Spesifikasi dikunci dan operasinya muncul sebagai alat—misalnya getForecast (GET, hanya baca) dan createAlert (POST, efek samping).

  3. Setiap pengguna yang ingin menggunakannya menyimpan kunci API miliknya sendiri pada kartu server.

  4. Dalam chat:

    Bagaimana prakiraan cuaca Montreal akhir pekan ini?

    Model memanggil weather__getForecast {"city": "Montreal"} dan langsung menjalankannya—alat hanya baca tidak pernah meminta persetujuan.

    Peringatkan saya jika suhu turun di bawah -20 malam ini.

    weather__createAlert memiliki efek samping, sehingga giliran dijeda dengan kartu persetujuan: Izinkan sekali, Izinkan untuk chat ini, Selalu izinkan, atau Tolak. Tidak ada data yang dikirim sampai Anda memilih.

Server MCP — misalnya pelacak issue

  1. Pengaturan → Alat → Daftarkan server: nama Issues, jenis MCP, URL dasar https://mcp.example-tracker.dev/mcp, mode autentikasi header dengan nama header X-Api-Key.

  2. Daftar alatnya dikunci; alat yang ditandai hanya baca oleh server (seperti search_issues) berjalan bebas, sedangkan alat lain (seperti create_issue) meminta persetujuan terlebih dahulu.

  3. Dalam chat:

    Temukan issue terbuka yang menyebut "database lock", lalu buat issue baru yang merangkum polanya.

    issues__search_issues langsung berjalan; issues__create_issue menampilkan argumen persis pada kartu persetujuan sehingga Anda dapat membaca apa yang akan diajukan sebelum mengizinkannya.

Variabel Lingkungan

VariabelEfek
TOOLS_ACCESS_MODEMengunci fitur alat ke admins atau all-users dan mengunci sakelar administrator.
TOOLS_PRIVATE_NETWORK_ALLOWLISTNama host persis yang boleh diresolusi server alat ke alamat privat (daftar dipisahkan koma).

Batasan

  • Panggilan alat berjalan pada jalur WebSocket (transportasi sesi privat sengaja dikecualikan) dan jalur pembuatan tahan lama yang digunakan untuk chat persisten. Endpoint streaming REST lama tidak menjalankan loop alat.
  • Agen Work memanggil server yang sama melalui gerbang yang sama: hanya proses dengan jaringan aktif, server tanpa kredensial disaring saat penawaran, alat berefek samping dikendalikan oleh persetujuan Work.
  • Model Gemini dan CLI agen tidak menerima alat; penyedia Ollama, kompatibel OpenAI, Responses-API, dan Anthropic menerimanya.
  • Server MCP melakukan autentikasi dengan kredensial statis per pengguna; server MCP yang hanya mendukung OAuth interaktif belum dapat didaftarkan.