Skip to content

Referensi SDK ​

@lex/sdk 0.1.2. SDK tidak memegang key apa pun dan tidak melakukan pekerjaan istimewa: setiap pemanggilan adalah pesan ke host, yang meneruskannya ke API untuk diotorisasi.

createLex(options?) ​

ts
import { createLex } from '@lex/sdk';
const lex = createLex();
OpsiBawaan
timeoutMs15000Batas waktu per request
streamIdleTimeoutMs120000Batas waktu diam untuk requestAgent
connectTimeoutMs10000Lama menunggu host tersambung
portport dari hostTransport kustom, untuk pengujian

getContext() ​

ts
const { user, miniProgram, locale } = await lex.getContext();
// user: { id, displayName? }, miniProgram: { id, version }, locale?: string

notify(input) · ui.notifications ​

ts
await lex.notify({ title: 'Tersimpan', message: 'Papan Anda sudah diperbarui', level: 'success' });

level bernilai info (bawaan), success, warning, atau error.

storage · storage.scoped ​

Pribadi untuk workspace ini, pengguna ini, dan Mini Program ini.

ts
await lex.storage.set('tasks', [{ id: 1, title: 'Rencanakan sprint' }]);
const tasks = await lex.storage.get<Task[]>('tasks'); // null jika tidak ada
await lex.storage.remove('tasks');
const keys = await lex.storage.keys();

Key maksimal 128 karakter, nilai maksimal 64 KB JSON, maksimal 200 key.

requestAgent(input) · agent.request ​

Men-streaming jawaban asisten. Keluar dari loop untuk membatalkan.

ts
let answer = '';
for await (const event of lex.requestAgent({ prompt: 'Susun rencana minggu ini untuk tugas-tugas ini: …' })) {
  if (event.type === 'delta') answer += event.text;
  if (event.type === 'completed') answer = event.output;
  if (event.type === 'failed') throw new Error(event.message);
}

Sertakan botId untuk bertanya ke bot tertentu. Asisten tidak mendapat tool saat dipanggil dari Mini Program.

ai.text(input) · ai.text ​

Teks dari model bahasa Lexcetha. Kirim satu prompt, atau percakapan di messages.

ts
const { text, credits } = await lex.ai.text({
  system: 'Anda menulis deskripsi produk yang singkat dan ramah.',
  prompt: 'Kotak bekal bambu yang bisa dipakai ulang',
  maxTokens: 300,
});

messages berbentuk [{ role: 'user' | 'assistant', content }] (maksimal 50). maxTokens adalah panjang jawaban maksimal, bawaannya 1024, paling banyak 2048. credits adalah biaya pemanggilan itu bagi Anda.

ai.transcribe(audio, options?) · ai.transcribe ​

Ucapan menjadi teks. audio adalah Blob berukuran maksimal 10 MB, misalnya dari media.recordAudio().

ts
const { text } = await lex.ai.transcribe(audio, { language: 'id' });

language opsional (kode ISO seperti en atau id); tanpanya, model mendeteksi bahasanya sendiri.

ai.speak(text, options?) · ai.speak ​

Teks menjadi suara, maksimal 4096 karakter. Hasilnya Blob MP3.

ts
const mp3 = await lex.ai.speak('Ringkasan rapat Anda sudah siap.');
new Audio(URL.createObjectURL(mp3)).play();

ai.image(prompt, options?) · ai.image ​

ts
const png = await lex.ai.image('Ilustrasi flat mercusuar saat fajar', { quality: 'high' });
img.src = URL.createObjectURL(png);

quality bernilai standard (bawaan) atau high, yang biayanya lebih besar.

ai.video · ai.video ​

Membuat video butuh beberapa menit. create memulainya, memantaunya, lalu mengembalikan Blob video:

ts
const video = await lex.ai.video.create('Logo 3D berputar di latar putih', {
  onProgress: (p) => (bar.value = p), // 0-100
});
player.src = URL.createObjectURL(video);

Opsi: intervalMs (seberapa sering dicek, bawaan 3000) dan timeoutMs (bawaan 20 menit; setelah itu gagal dengan TIMEOUT). Untuk mengelolanya sendiri, pakai start(prompt) → { jobId }, status(jobId) → { status: 'queued' | 'running' | 'succeeded' | 'failed', progress, error? }, dan result(jobId) → Blob. Simpan jobId (misalnya di storage) kalau pengguna mungkin menutup Mini Program selagi video dibuat.

media.recordAudio(options?) · media.microphone ​

Merekam dari mikrofon dan mengembalikan Blob audio. Iframe Anda tidak pernah menyentuh mikrofon: Lex yang meminta izin ke pengguna, menampilkan perekamnya sendiri dengan tombol Stop dan Batal, lalu menyerahkan hasilnya ke Anda.

ts
const audio = await lex.media.recordAudio({ maxSeconds: 1800 });

Perekaman berhenti saat pengguna menekan Stop atau setelah maxSeconds (bawaan 600, maksimal 3600). Gagal dengan CANCELLED bila pengguna membatalkan, dan PERMISSION_DENIED bila browser memblokir mikrofon.

Semua pemanggilan ai.* dibayar dari kredit AI Anda dan dihitung ke batas harian tiap pengguna; lihat Model AI & kredit.

Error ​

Setiap kegagalan menghasilkan LexError dengan code yang stabil:

KodeArti
PERMISSION_DENIEDKapabilitas tidak ada di manifest yang disetujui
INVALID_REQUESTInput salah (misalnya nilai terlalu besar untuk storage)
RATE_LIMITEDTerlalu banyak pemanggilan (satu sesi maksimal 2.000), kuota workspace habis, atau pengguna sudah mencapai batas AI hariannya di Mini Program Anda
TIMEOUTTidak ada jawaban tepat waktu
CANCELLEDAnda menghentikannya
BRIDGE_UNAVAILABLETidak berjalan di dalam host Lex, atau host tidak tersambung
UNSUPPORTED_PROTOCOLSDK dan host memakai versi protokol yang berbeda
SESSION_ENDEDSesi runtime berakhir (ditutup, kedaluwarsa setelah satu jam, atau versinya dinonaktifkan)
INSUFFICIENT_CREDITSKredit AI Anda habis (khusus ai.*)
UNAVAILABLEModel AI tersebut belum disiapkan di instance Lexcetha ini
INTERNALAda masalah di platform
ts
import { LexError } from '@lex/sdk';
try {
  await lex.storage.set('besar', nilaiBesar);
} catch (e) {
  if (e instanceof LexError && e.code === 'INVALID_REQUEST') tampilkanTerlaluBesar();
}

Protokol bridge ​

@lex/sdk/protocol mengekspor tipe pesan versi 1 untuk siapa pun yang membuat host. Pesan membawa lex: 1; request dan response dipasangkan lewat id, dan stream diakhiri dengan stream_end.

Lex oleh Gavalytics AI