Keural Kit
Skrip benam yang meletakkan skrin sembang, Drive, dan prompt Keural dalam perkhidmatan web anda.
Keural Kit memasang skrin Keural ke dalam halaman dengan satu skrip. Skrin dilukis dalam Shadow DOM, jadi tidak bercampur dengan CSS halaman. Kit dikemas kini bersama setiap pelancaran web Keural. Jika skrin lama masih kelihatan selepas penerbitan, kosongkan cache pelayar dan CDN, kemudian semak masa binaan dengan window.KeuralKit.__build.
Kit berfungsi dengan sesi log masuk Keural (kuki pada domain API Keural). userInfo hanya untuk paparan, dan pengguna disahkan melalui sesi kuki. Untuk menggunakannya pada domain perkhidmatan anda, selaraskan pendaftaran domain dan integrasi log masuk (seperti SSO) dengan pegawai Keural sebelum melaksanakannya.
Memuatkan
Kit dimuatkan daripada alamat web persekitaran Keural yang digunakan. Untuk keural.ai, alamatnya https://keural.ai; untuk persekitaran on-premise atau khusus, gunakan alamat web Keural bagi persekitaran tersebut. Sebelum skrip dimasukkan, tetapkan window.__KEURAL_ENV__ dengan alamat pelayan yang akan dipanggil oleh Kit. Ketiga-tiga alamat mesti tergolong dalam persekitaran yang sama dan diperoleh daripada pegawai hubungan Keural semasa pelaksanaan.
<script>
window.__KEURAL_ENV__ = {
NEXT_PUBLIC_API_BASE_URL: '<KEURAL_API_URL>',
NEXT_PUBLIC_FAST_API_BASE_URL: '<KEURAL_AGENT_URL>',
NEXT_PUBLIC_MODE: 'prd',
};
</script>
<script src="<KEURAL_WEB_URL>/plugin/kit/keural.js" async></script>| Nilai | Penerangan |
|---|---|
<KEURAL_WEB_URL> | Alamat web Keural. Contoh: https://keural.ai |
<KEURAL_API_URL> | Alamat pelayan API Keural. Contoh: https://api.keural.ai |
<KEURAL_AGENT_URL> | Alamat pelayan ejen Keural |
NEXT_PUBLIC_MODE | prd untuk produksi, dev untuk pembangunan |
Jika Kit yang sama digunakan pada domain kedua, isi ketiga-tiga nilai NEXT_PUBLIC_ADDITIONAL_FRONTEND_URL, NEXT_PUBLIC_ADDITIONAL_API_BASE_URL, dan NEXT_PUBLIC_ADDITIONAL_FAST_API_BASE_URL sekali gus. Jika salah satu tiada, ralat akan berlaku. Nilai ialah alamat https:// tanpa laluan.
Selepas skrip dimuatkan, window.KeuralKit tersedia. Dalam SPA seperti React, gunakan pemuat supaya skrip hanya dimasukkan sekali.
export function loadKeuralKit(src = '<KEURAL_WEB_URL>/plugin/kit/keural.js') {
if (window.KeuralKit) return Promise.resolve(window.KeuralKit);
return new Promise((resolve, reject) => {
const s = document.createElement('script');
s.src = src;
s.async = true;
s.onload = () => resolve(window.KeuralKit);
s.onerror = () => {
s.remove();
reject(new Error('Keural Kit failed to load'));
};
document.head.appendChild(s);
});
}Pasang sembang
const el = document.getElementById('keural-chat')!;
window.KeuralKit.mountChat(el, {
userInfo: { userId: user.id, name: user.name },
colorMode: 'light',
initialData: { message: 'Ringkaskan jualan suku tahun ini', room_name: 'Laporan suku tahun' },
onSessionCreated: (roomId) => router.push(`/c/${roomId}`),
onError: () => router.push('/'),
});
// Apabila meninggalkan skrin
window.KeuralKit.unmount(el);- Untuk membuka perbualan sedia ada, isi ID perbualan dalam
sessionId. initialDatahanya dimasukkan semasa membuka perbualan baharu. Jika dimasukkan semasa membuka semula perbualan sedia ada, mesej yang sama akan dihantar semula.- Jika
userInfo.userIdtiada, pengguna dianggap belum log masuk. Pasang (mount) selepas maklumat log masuk sedia.
Kaedah
| Kaedah | Penerangan |
|---|---|
mountChat(el, options) | Skrin sembang |
mountDrivePage(el, options) | Skrin Drive. Menerima fail untuk ditanya melalui onAsk(files) |
mountPromptPage(el, options) | Skrin prompt. Menerima prompt yang dipilih melalui onAsk(prompts) |
mountDriveDialog(el, options) / updateDriveDialog | Tetingkap pilih fail Drive (open wajib, onClose, onSelect(files), initialSelected) |
mountPromptDialog(el, options) / updatePromptDialog | Tetingkap pilih prompt (open wajib, onClose, onSelect, onDefaultSelect, selectDefaultPrompt, defaultPromptDismissed) |
unmount(el) | Mengalih keluar skrin yang dipasang |
Kaedah mount* dan update* menerima colorMode dan userInfo bersama-sama, dan unmount(el) hanya menerima elemen. update* melukis semula pilihan pada elemen yang sama. Untuk membuka atau menutup tetingkap, tukar nilai open dan panggil update*. Jika mount* dipanggil semula pada elemen yang sama, skrin sedia ada digunakan semula.
Pilihan mountChat
| Pilihan | Jenis | Penerangan |
|---|---|---|
sessionId | string | ID perbualan yang akan dibuka. Jika tiada, perbualan baharu |
userInfo | { userId, name?, orgId?, orgName? } | Maklumat pengguna. userId wajib |
initialData | object | Mesej pertama perbualan baharu. Lihat initialData di bawah |
colorMode | 'light' | 'dark' | Tema. Lalai light |
initialEffort | 'fast' | 'balanced' | 'high' | 'xhigh' | 'max' | Tahap awal. Lalai fast |
initialWebSearch | boolean | Mula dengan carian web dihidupkan. Lalai true |
initialDeepResearch | boolean | Mula dengan Deep Research dihidupkan |
hideHomeButton / hideNewChatButton | boolean | Menyembunyikan butang pada pengepala |
hideModePopup | boolean | Menyembunyikan pop timbul pemilihan mod |
messageActions | { id, label, onClick(messageId) }[] | Menambah tindakan sendiri pada menu jawapan |
headerLeftActions / headerRightActions | HeaderLeftAction[] | Menambah butang sendiri pada pengepala |
onHeaderLeftMount | (el: HTMLElement) => void | Menerima elemen kawasan kiri pengepala apabila kawasan itu dilukis |
mobileMenuItems / mobileBottomActions | array | Menambah menu dan butang bawah pada lebar mudah alih |
onMobileHomeButton | () => void | Apabila butang laman utama pada lebar mudah alih ditekan |
chatInputFooter | string | Teks panduan di bawah kotak input |
shareTooltip | string | Teks tooltip butang kongsi |
onSessionCreated | (roomId) => void | Apabila perbualan baharu dicipta |
onStreamDone | (roomId) => void | Apabila jawapan selesai |
onSummaryDone | (roomId) => void | Apabila tajuk dan ringkasan perbualan dicipta |
onRoomInfo | (info) => void | Apabila maklumat perbualan berubah |
onShare / onExport | (roomId) => void | Apabila butang kongsi atau eksport ditekan |
onError | (error: Error) => void | Apabila ralat berlaku |
initialData
| Medan | Jenis | Penerangan |
|---|---|---|
message | string | Wajib. Mesej pertama |
files | FileType[] | Fail Drive yang dihantar bersama (nilai yang diterima daripada onSelect mountDriveDialog) |
prompts | object[] | Prompt yang digunakan bersama |
webSearch | boolean | Carian web |
deepResearch | boolean | Deep Research |
effort | 'fast' | 'balanced' | 'high' | 'xhigh' | 'max' | Tahap |
model | { label, value } | Model yang menjawab |
room_name | string | Nama perbualan. roomName, title, dan name juga diterima. |
folder_id | string | null | Folder untuk disimpan |
hideModePopup | boolean | Menyembunyikan pop timbul pemilihan mod |
Bahasa skrin
Skrin Kit dipaparkan dalam bahasa Korea.
Tetapan dan log masuk
- Tetapan pengguna ditukar dalam web atau aplikasi Keural. Skrin Kit mengikut tetapan tersebut.
- Log masuk diuruskan oleh perkhidmatan anda, dan Kit hanya menerima maklumat pengguna yang telah log masuk.