Langkau ke kandungan
KeuralDocs
Pembangun

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>
NilaiPenerangan
<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_MODEprd 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.
  • initialData hanya dimasukkan semasa membuka perbualan baharu. Jika dimasukkan semasa membuka semula perbualan sedia ada, mesej yang sama akan dihantar semula.
  • Jika userInfo.userId tiada, pengguna dianggap belum log masuk. Pasang (mount) selepas maklumat log masuk sedia.

Kaedah

KaedahPenerangan
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) / updateDriveDialogTetingkap pilih fail Drive (open wajib, onClose, onSelect(files), initialSelected)
mountPromptDialog(el, options) / updatePromptDialogTetingkap 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

PilihanJenisPenerangan
sessionIdstringID perbualan yang akan dibuka. Jika tiada, perbualan baharu
userInfo{ userId, name?, orgId?, orgName? }Maklumat pengguna. userId wajib
initialDataobjectMesej pertama perbualan baharu. Lihat initialData di bawah
colorMode'light' | 'dark'Tema. Lalai light
initialEffort'fast' | 'balanced' | 'high' | 'xhigh' | 'max'Tahap awal. Lalai fast
initialWebSearchbooleanMula dengan carian web dihidupkan. Lalai true
initialDeepResearchbooleanMula dengan Deep Research dihidupkan
hideHomeButton / hideNewChatButtonbooleanMenyembunyikan butang pada pengepala
hideModePopupbooleanMenyembunyikan pop timbul pemilihan mod
messageActions{ id, label, onClick(messageId) }[]Menambah tindakan sendiri pada menu jawapan
headerLeftActions / headerRightActionsHeaderLeftAction[]Menambah butang sendiri pada pengepala
onHeaderLeftMount(el: HTMLElement) => voidMenerima elemen kawasan kiri pengepala apabila kawasan itu dilukis
mobileMenuItems / mobileBottomActionsarrayMenambah menu dan butang bawah pada lebar mudah alih
onMobileHomeButton() => voidApabila butang laman utama pada lebar mudah alih ditekan
chatInputFooterstringTeks panduan di bawah kotak input
shareTooltipstringTeks tooltip butang kongsi
onSessionCreated(roomId) => voidApabila perbualan baharu dicipta
onStreamDone(roomId) => voidApabila jawapan selesai
onSummaryDone(roomId) => voidApabila tajuk dan ringkasan perbualan dicipta
onRoomInfo(info) => voidApabila maklumat perbualan berubah
onShare / onExport(roomId) => voidApabila butang kongsi atau eksport ditekan
onError(error: Error) => voidApabila ralat berlaku

initialData

MedanJenisPenerangan
messagestringWajib. Mesej pertama
filesFileType[]Fail Drive yang dihantar bersama (nilai yang diterima daripada onSelect mountDriveDialog)
promptsobject[]Prompt yang digunakan bersama
webSearchbooleanCarian web
deepResearchbooleanDeep Research
effort'fast' | 'balanced' | 'high' | 'xhigh' | 'max'Tahap
model{ label, value }Model yang menjawab
room_namestringNama perbualan. roomName, title, dan name juga diterima.
folder_idstring | nullFolder untuk disimpan
hideModePopupbooleanMenyembunyikan 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.

Pada halaman ini