ctx.ai
Di RunJS, ctx.ai digunakan untuk memicu tugas karyawan AI. API ini cocok untuk JSBlock, JSAction, dan interaksi lain ketika tombol, formulir, atau alur bisnis perlu menyerahkan pekerjaan kepada karyawan AI tertentu.
ctx.ai mengunggah lampiran untuk tugas AI dan memicu tugas. Unggahan file dapat ditunggu, tetapi pemicu tugas tidak mengembalikan hasil eksekusinya. Setelah dipanggil, tugas akan masuk ke alur percakapan karyawan AI.
ctx.ai disediakan oleh plugin AI. Jika plugin AI belum diaktifkan, atau lingkungan RunJS saat ini belum memuat kemampuan client yang sesuai, ctx.ai mungkin tidak ada. Anda dapat memeriksa ctx.ai?.uploadFile, ctx.ai?.triggerTask, atau ctx.ai?.triggerModelTask sebelum memanggilnya.
Metode
ctx.ai.uploadFile()
Mengunggah satu file dan mengembalikan objek lampiran yang dapat langsung diteruskan ke tugas karyawan AI.
Unggahan menggunakan penyimpanan file yang dikonfigurasi oleh plugin AI dan membuat record di aiFiles. Objek yang dikembalikan mencakup field seperti id, filename, url, dan source:
Promise akan ditolak jika unggahan gagal. Menghapus lampiran dari daftar lokal tidak menghapus record yang sudah dibuat di aiFiles, sama seperti perilaku jendela chat AI default.
ctx.ai.triggerTask()
Memicu tugas karyawan AI secara langsung.
Field umum pada Task:
Melacak status pemuatan respons
Berikan onResponseLoadingChange pada opsi tingkat atas untuk melacak status pemuatan respons model. Callback menerima true saat NocoBase mulai menunggu respons, lalu false saat respons selesai, dibatalkan, atau gagal. Jika komponen React sudah mendeklarasikan setResponseLoading dengan useState, Anda dapat menulis:
onResponseLoadingChange hanya melacak respons yang dimulai langsung oleh pemanggilan triggerTask() ini. Dengan autoSend: false, tugas hanya masuk ke draft chat dan callback tidak dijalankan. Jika pengguna mengirim draft tersebut secara manual nanti, pengiriman itu tidak menggunakan kembali callback ini.
Dalam komponen React pada blok JS, perubahan status ini akan memicu render ulang selama komponen masih dimuat.
Menargetkan AI Chat Box
Atur chatBoxUid pada opsi tingkat atas triggerTask() untuk memicu tugas di blok AI Chat Box yang sudah dimuat, bukan membuka dialog global karyawan AI.
uid harus berasal dari blok luar AI Chat Box yang saat ini dimuat pada halaman. Jangan tempatkan nilai routing ini di dalam tasks. Jika blok target tidak ditemukan, NocoBase menampilkan error dan tidak kembali ke dialog global. Jika chatBoxUid tidak diberikan, tugas menggunakan dialog global karyawan AI.
Mengunggah dan mengirim lampiran di JSBlock
Contoh berikut merender unggahan file, instruksi tugas, dan tombol kirim di JSBlock. File yang sudah diunggah diteruskan ke karyawan AI melalui message.attachments:
Dengan autoSend: false, lampiran dan instruksi tugas ditempatkan di draft chat AI dan tidak langsung dikirim.
Menambahkan konteks blok halaman
message.workContext saat ini digunakan untuk meneruskan blok halaman. Masukkan uid FlowModel dari blok target:
Jika ingin menggunakan JSBlock saat ini sebagai konteks, gunakan uid model saat ini:
Menentukan model
model menentukan model untuk satu tugas. Jika dihilangkan, konfigurasi model default karyawan AI digunakan. Mengirim null berarti tidak menentukan model pada level tugas.
Mengonfigurasi skills / tools
skillSettings menentukan skills dan tools yang tersedia untuk satu tugas. Jika dihilangkan, konfigurasi kemampuan karyawan AI digunakan.
Untuk menonaktifkan semua skills atau tools secara eksplisit untuk tugas ini, kirim array kosong dan pertahankan field versi:
Contoh:
Jika aiEmployee berupa string, NocoBase mencocokkan secara persis berdasarkan username pada karyawan AI yang dapat diakses oleh pengguna saat ini.
ctx.ai.triggerModelTask()
Membaca tugas dari model aksi karyawan AI pada halaman dan memicunya.
Opsi publik triggerModelTask() tidak menerima chatBoxUid. Untuk menargetkan AI Chat Box, konfigurasikan chatBoxUid pada tugas preset dari aksi karyawan AI. triggerModelTask() akan tetap menggunakan nilai preset tersebut.
options.onResponseLoadingChange berperilaku sama seperti pada triggerTask(). Callback dijalankan sesuai nilai autoSend pada tugas yang dikonfigurasi. Callback tidak dijalankan ketika tugas menggunakan autoSend: false.
Jika model target tidak ada, belum mengonfigurasi karyawan AI, atau indeks yang diberikan tidak memiliki tugas, tugas tidak akan dipicu dan peringatan akan dicetak di console.
Catatan
triggerTask()dantriggerModelTask()bersifat fire-and-forget. Keduanya tidak mengembalikan hasil eksekusi tugas.uploadFile()mengembalikan Promise. Tunggu unggahan selesai sebelum memicu tugas yang menggunakan lampiran tersebut.- String
aiEmployeehanya cocok secara persis denganAIEmployee.username. triggerModelTask()menggunakantaskIndexberbasis0.message.workContextsaat ini hanya menjelaskan konteks blok halaman.triggerTask().chatBoxUidtingkat atas harus merujuk ke blok AI Chat Box yang sedang dimuat pada halaman.triggerModelTask()tetap menggunakanchatBoxUidyang dikonfigurasi pada tugas preset.- Lampiran dinamis dari
triggerModelTask()ditambahkan kemessage.attachmentsyang sudah ada pada tugas preset tanpa mengubah konfigurasi tersimpan. onResponseLoadingChangehanya melacak respons model yang dikirim otomatis oleh pemanggilan saat ini. Callback tidak melacak pesan yang dikirim manual oleh pengguna setelahnya.
Terkait
- ctx.message: Menampilkan pesan ringan sebelum dan sesudah memicu tugas.
- ctx.render: Merender tombol atau formulir di JSBlock.
- ctx.model: Mengambil informasi FlowModel saat ini.

