Chuyển đến nội dung
KeuralDocs
Nhà phát triển

Keural Kit

Script nhúng đưa màn hình chat, Drive và prompt của Keural vào dịch vụ web của bạn.

Keural Kit đưa các màn hình Keural vào trang của bạn chỉ bằng một script. Các màn hình được vẽ trong Shadow DOM, nên không bị lẫn với CSS của trang bạn. Kit được cập nhật cùng lúc khi ứng dụng web Keural được triển khai. Nếu sau khi triển khai vẫn thấy màn hình cũ, hãy xóa cache của trình duyệt và CDN, rồi kiểm tra thời điểm build bằng window.KeuralKit.__build.

Kit hoạt động bằng phiên đăng nhập Keural (cookie của tên miền API Keural). userInfo chỉ dùng để hiển thị; người dùng được xác định qua phiên cookie. Để dùng trên tên miền dịch vụ của bạn, hãy thống nhất với người liên hệ Keural về đăng ký tên miền và tích hợp đăng nhập (ví dụ SSO) trước khi triển khai.

Tải script

Kit được tải từ địa chỉ web của môi trường Keural bạn đang dùng. Nếu dùng keural.ai thì là https://keural.ai; với môi trường on-premise hoặc môi trường riêng, hãy dùng địa chỉ web Keural của môi trường đó. Trước khi chèn script, hãy đặt địa chỉ máy chủ mà Kit sẽ gọi vào window.__KEURAL_ENV__. Cả ba địa chỉ phải thuộc cùng một môi trường; hãy lấy từ người liên hệ Keural khi triển khai.

<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>
Giá trịMô tả
<KEURAL_WEB_URL>Địa chỉ web Keural. Ví dụ: https://keural.ai
<KEURAL_API_URL>Địa chỉ máy chủ API Keural. Ví dụ: https://api.keural.ai
<KEURAL_AGENT_URL>Địa chỉ máy chủ agent Keural
NEXT_PUBLIC_MODEprd cho môi trường vận hành, dev cho môi trường phát triển

Nếu dùng cùng Kit trên tên miền thứ hai, hãy đặt đủ ba giá trị NEXT_PUBLIC_ADDITIONAL_FRONTEND_URL, NEXT_PUBLIC_ADDITIONAL_API_BASE_URL và NEXT_PUBLIC_ADDITIONAL_FAST_API_BASE_URL. Thiếu bất kỳ giá trị nào sẽ gây lỗi. Các giá trị là địa chỉ https:// không có đường dẫn.

Sau khi script tải xong, window.KeuralKit được tạo ra. Trong SPA như React, hãy dùng bộ tải để script chỉ được tải một lần.

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);
  });
}

Nhúng chat

const el = document.getElementById('keural-chat')!;

window.KeuralKit.mountChat(el, {
  userInfo: { userId: user.id, name: user.name },
  colorMode: 'light',
  initialData: { message: 'Tóm tắt doanh thu quý này', room_name: 'Báo cáo quý' },
  onSessionCreated: (roomId) => router.push(`/c/${roomId}`),
  onError: () => router.push('/'),
});

// Khi rời khỏi màn hình
window.KeuralKit.unmount(el);
  • Để mở một cuộc trò chuyện đã có, hãy đặt ID cuộc trò chuyện vào sessionId.
  • Chỉ đưa initialData vào khi mở một cuộc trò chuyện mới. Nếu đưa vào khi mở lại cuộc trò chuyện đã có, cùng một tin nhắn sẽ được gửi lại.
  • Nếu thiếu userInfo.userId, người dùng được coi là chưa đăng nhập. Hãy gắn component sau khi thông tin đăng nhập đã sẵn sàng.

Phương thức

Phương thứcMô tả
mountChat(el, options)Màn hình chat
mountDrivePage(el, options)Màn hình Drive. Nhận các tệp cần hỏi qua onAsk(files)
mountPromptPage(el, options)Màn hình prompt. Nhận các prompt đã chọn qua onAsk(prompts)
mountDriveDialog(el, options) / updateDriveDialogCửa sổ chọn tệp Drive (bắt buộc open, onClose, onSelect(files), initialSelected)
mountPromptDialog(el, options) / updatePromptDialogCửa sổ chọn prompt (bắt buộc open, onClose, onSelect, onDefaultSelect, selectDefaultPrompt, defaultPromptDismissed)
unmount(el)Gỡ màn hình đã gắn

Các phương thức mount* và update* nhận colorMode và userInfo cùng lúc. unmount(el) chỉ nhận phần tử. update* vẽ lại tùy chọn trên cùng phần tử với giá trị mới. Để mở và đóng cửa sổ, hãy đổi giá trị open rồi gọi update*. Gọi lại mount* trên cùng phần tử sẽ dùng lại màn hình hiện có.

Tùy chọn của mountChat

Tùy chọnKiểuMô tả
sessionIdstringID cuộc trò chuyện sẽ mở. Nếu bỏ trống, một cuộc trò chuyện mới được tạo
userInfo{ userId, name?, orgId?, orgName? }Thông tin người dùng. userId là bắt buộc
initialDataobjectTin nhắn đầu tiên của cuộc trò chuyện mới. Xem initialData bên dưới
colorMode'light' | 'dark'Chủ đề. Mặc định light
initialEffort'fast' | 'balanced' | 'high' | 'xhigh' | 'max'Mức ban đầu. Mặc định fast
initialWebSearchbooleanBắt đầu với tìm kiếm web đang bật. Mặc định true
initialDeepResearchbooleanBắt đầu với Deep Research đang bật
hideHomeButton / hideNewChatButtonbooleanẨn các nút trên tiêu đề
hideModePopupbooleanẨn cửa sổ chọn chế độ
messageActions{ id, label, onClick(messageId) }[]Thêm thao tác riêng vào menu của câu trả lời
headerLeftActions / headerRightActionsHeaderLeftAction[]Thêm nút riêng vào tiêu đề
onHeaderLeftMount(el: HTMLElement) => voidNhận phần tử khi vùng bên trái của tiêu đề được vẽ
mobileMenuItems / mobileBottomActionsarrayThêm mục menu hoặc nút dưới cùng khi ở màn hình hẹp
onMobileHomeButton() => voidKhi nhấn nút trang chủ ở màn hình hẹp
chatInputFooterstringDòng hướng dẫn bên dưới ô nhập
shareTooltipstringChú thích của nút chia sẻ
onSessionCreated(roomId) => voidKhi một cuộc trò chuyện mới được tạo
onStreamDone(roomId) => voidKhi một câu trả lời kết thúc
onSummaryDone(roomId) => voidKhi tiêu đề hoặc tóm tắt cuộc trò chuyện được tạo
onRoomInfo(info) => voidKhi thông tin cuộc trò chuyện thay đổi
onShare / onExport(roomId) => voidKhi nhấn nút chia sẻ hoặc xuất
onError(error: Error) => voidKhi xảy ra lỗi

initialData

TrườngKiểuMô tả
messagestringBắt buộc. Tin nhắn đầu tiên
filesFileType[]Tệp Drive gửi kèm (giá trị nhận từ onSelect của mountDriveDialog)
promptsobject[]Prompt dùng kèm
webSearchbooleanTìm kiếm web
deepResearchbooleanDeep Research
effort'fast' | 'balanced' | 'high' | 'xhigh' | 'max'Mức
model{ label, value }Mô hình trả lời
room_namestringTên cuộc trò chuyện. Cũng nhận roomName, title và name.
folder_idstring | nullThư mục để lưu
hideModePopupbooleanẨn cửa sổ chọn chế độ

Ngôn ngữ màn hình

Màn hình Kit hiển thị bằng tiếng Hàn.

Cài đặt và đăng nhập

  • Thiết lập người dùng thay đổi trên ứng dụng web hoặc ứng dụng Keural, và màn hình Kit theo các thiết lập đó.
  • Đăng nhập do dịch vụ của bạn xử lý, Kit chỉ nhận thông tin người dùng đã đăng nhập.

Trên trang này