Model AI & kredit
Mini Program bisa memakai model AI Lexcetha untuk menulis, mentranskripsi, membacakan teks, membuat gambar, dan membuat video. Anda, sang developer, yang membayar pemanggilan ini dengan kredit AI. Workspace yang memasang Mini Program Anda tidak pernah ditagih untuk itu.
Yang tersedia
| Izin | Pemanggilan SDK | Fungsinya |
|---|---|---|
ai.text | lex.ai.text() | Menulis dan menjawab teks: satu prompt atau percakapan, maksimal 2048 token per jawaban |
ai.transcribe | lex.ai.transcribe() | Mengubah ucapan menjadi teks, maksimal 10 MB audio per pemanggilan |
ai.speak | lex.ai.speak() | Membacakan teks (MP3), maksimal 4096 karakter per pemanggilan |
ai.image | lex.ai.image() | Membuat gambar, dengan kualitas standar atau tinggi |
ai.video | lex.ai.video.* | Membuat video pendek. Prosesnya butuh beberapa menit |
media.microphone | lex.media.recordAudio() | Merekam audio setelah pengguna mengizinkan (gratis, tanpa kredit) |
Tambahkan yang Anda pakai ke manifest.permissions; reviewer menyetujuinya seperti izin lainnya. API lengkapnya ada di Referensi SDK.
Harga
| Kapabilitas | Kredit |
|---|---|
ai.text | 1 per 1.000 token (prompt dan jawaban digabung) |
ai.transcribe | 2 per MB audio |
ai.speak | 1 per 1.000 karakter |
ai.image | 4 per gambar (12 untuk kualitas tinggi) |
ai.video | 40 per video |
Setiap pemanggilan minimal 1 kredit. Kredit dipotong sebelum model berjalan dan dikembalikan kalau pemanggilannya gagal, jadi pemanggilan yang gagal tidak memakan biaya. ai.text() mengembalikan biayanya di credits.
Batas harian per pengguna
Supaya tidak ada satu orang pun yang menghabiskan kredit Anda, setiap pengguna punya batas kredit harian di Mini Program Anda. Atur di Store listing proyek Anda (bawaan 100 kredit per hari; 0 mematikan AI untuk semua orang). Begitu seseorang mencapainya, pemanggilan ai.* gagal dengan RATE_LIMITED sampai keesokan harinya. Tangani dengan pesan yang ramah.
Pratinjau
Pratinjau di dashboard kontributor memakai model sungguhan dan dibayar dari kredit Anda sendiri. Pratinjau tidak punya batas harian, jadi perhatikan pemakaian Anda selama menguji. Setiap pemanggilan dari pratinjau ditandai sebagai pratinjau di riwayat kredit Anda.
Mendapatkan kredit
Kredit ditambahkan ke akun Anda oleh Lexcetha. Belum ada pembelian mandiri: hubungi Lexcetha untuk top up. Halaman Kredit AI di dashboard kontributor menampilkan saldo, harga, setiap top up dan pemakaian, serta pemakaian tiap Mini Program dalam 30 hari terakhir.
Kalau saldo habis, pemanggilan ai.* gagal dengan INSUFFICIENT_CREDITS bagi semua pengguna Mini Program Anda, jadi pantau terus saldonya. Kalau sebuah model belum disiapkan di instance Lexcetha, pemanggilannya gagal dengan UNAVAILABLE.
import { LexError } from '@lex/sdk';
try {
const { text } = await lex.ai.text({ prompt });
tampilkan(text);
} catch (e) {
if (!(e instanceof LexError)) throw e;
if (e.code === 'RATE_LIMITED') tampilkan('Batas AI Anda hari ini sudah tercapai. Coba lagi besok.');
else if (e.code === 'INSUFFICIENT_CREDITS' || e.code === 'UNAVAILABLE') tampilkan('AI sedang tidak tersedia.');
else throw e;
}Merekam audio
Mini Program berjalan di iframe ber-sandbox yang tidak bisa memakai mikrofon. Dengan media.microphone, Lex yang merekam untuk Anda:
- Mini Program Anda memanggil
lex.media.recordAudio(). - Lex memastikan izinnya sudah disetujui, lalu bertanya ke pengguna: "Mini Program Anda ingin memakai mikrofon Anda".
- Kalau pengguna mulai, Lex menampilkan perekamnya sendiri dengan timer, tombol Stop dan Batal. Perekaman berhenti sendiri setelah
maxSeconds(bawaan 600, maksimal 3600). - Pemanggilan Anda selesai dengan
Blobaudio (biasanya WebM/Opus), atau gagal denganCANCELLEDbila pengguna membatalkan, atauPERMISSION_DENIEDbila browser memblokir mikrofon.
Kode Anda tidak pernah menyentuh mikrofon, hanya menerima rekaman jadi yang memang dibagikan pengguna. Merekam tidak memakan kredit; mentranskripsinya yang memakan kredit.
Contoh: pencatat rapat AI
Butuh media.microphone, ai.transcribe, ai.text, dan storage.scoped.
import { createLex, LexError } from '@lex/sdk';
const lex = createLex();
async function catatRapat() {
let audio: Blob;
try {
audio = await lex.media.recordAudio({ maxSeconds: 3600 });
} catch (e) {
if (e instanceof LexError && e.code === 'CANCELLED') return; // pengguna batal
throw e;
}
if (audio.size > 10 * 1024 * 1024) throw new Error('Rekamannya terlalu panjang untuk ditranskripsi sekaligus.');
status.textContent = 'Mentranskripsi…';
const { text: transkrip } = await lex.ai.transcribe(audio, { language: 'id' });
status.textContent = 'Merangkum…';
const { text: ringkasan } = await lex.ai.text({
system: 'Anda mengubah transkrip rapat menjadi catatan singkat: ringkasan, keputusan, dan tindak lanjut beserta penanggung jawabnya.',
prompt: transkrip,
maxTokens: 800,
});
await lex.storage.set(`catatan:${Date.now()}`, { transkrip, ringkasan });
tampilkan(ringkasan);
}Audio Opus berdurasi satu jam biasanya jauh di bawah 10 MB; untuk rapat yang lebih panjang, rekam per bagian lalu transkripsi satu per satu.
Contoh: video motion graphic
Butuh ai.video.
tombol.onclick = async () => {
progres.hidden = false;
try {
const video = await lex.ai.video.create(`Motion graphic: tulisan "${judul.value}" muncul melayang di atas gradasi lembut, bersih dan modern`, {
onProgress: (p) => (progres.value = p),
});
player.src = URL.createObjectURL(video);
} finally {
progres.hidden = true;
}
};Video biasanya selesai dalam beberapa menit. Beri tahu pengguna bahwa videonya sedang dibuat, dan biarkan halamannya tetap terbuka; agar tetap aman bila Mini Program ditutup, pakai ai.video.start() dan simpan jobId-nya, lalu cek ai.video.status() nanti.
