Web API LiteRT-LM untuk JavaScript dan TypeScript di browser. Ini adalah pratinjau awal yang mendukung teks masuk / teks keluar yang berjalan di WebGPU.
Model yang Didukung
LiteRT-LM JS API saat ini mendukung serangkaian model yang kompatibel dengan web.
Kami berupaya memperluasnya untuk mencakup file model .litertlm umum, tetapi untuk saat ini, model berikut didukung:
gemma-4-E2B-it-web.litertlmdari litert-community/gemma-4-E2B-it-litert-lmgemma-4-E4B-it-web.litertlmdari litert-community/gemma-4-E4B-it-litert-lm
Pengantar
Berikut adalah contoh aplikasi chat REPL yang dibuat dengan JavaScript API:
<div id="out" style="white-space: pre-wrap; font-family: monospace;"></div>
<input id="in" onkeydown="if(event.key === 'Enter') repl(this)">
<script type="module">
import { Engine } from 'https://cdn.jsdelivr.net/npm/@litert-lm/core/+esm';
const engine = await Engine.create({
// Load the Gemma 4 E2B model
model: 'https://huggingface.co/litert-community/gemma-4-E2B-it-litert-lm/resolve/main/gemma-4-E2B-it-web.litertlm'
// Or use the E4B model by swapping in this line
// model: 'https://huggingface.co/litert-community/gemma-4-E4B-it-litert-lm/resolve/main/gemma-4-E4B-it-web.litertlm'
});
const chat = await engine.createConversation();
window.repl = async (el) => {
const text = el.value;
el.value = ''; // Clear immediately
out.append(`\n>>> ${text}\nAI: `);
for await (const chunk of chat.sendMessageStreaming(text)) {
out.append(chunk.content[0].text);
}
};
</script>
Memulai
LiteRT-LM tersedia sebagai paket npm. Anda dapat menginstal versi terbaru dari npm atau mengimpornya langsung dari CDN:
# From npm
npm i --save @litert-lm/core
# From a CDN (in your JavaScript file)
import * as litertlm from 'https://cdn.jsdelivr.net/npm/@litert-lm/core/+esm';
Menginisialisasi Engine
Engine adalah titik entri ke API. Engine menangani pemuatan model, pembuatan sesi, dan pengelolaan resource. Jangan lupa untuk delete engine untuk merilis resource saat model tidak lagi diperlukan.
Catatan: Menginisialisasi engine dapat memerlukan waktu beberapa detik untuk memuat model.
import {Engine, EngineSettings} from '@litert-lm/core';
const engineSettings = {
model: 'url/path/to/model.litertlm', // or a ReadableStream, or a Blob
// You can configure context length and other settings here
mainExecutorSettings: {
maxNumTokens: 8192,
},
} satisfies EngineSettings;
const engine = await Engine.create(engineSettings);
// ... Use the engine to create a conversation ...
// Delete the engine when done.
await engine.delete();
Membuat Percakapan
Setelah engine diinisialisasi, buat instance Conversation. Anda dapat memberikan ConversationConfig untuk menyesuaikan perilakunya.
const conversation = await engine.createConversation({
preface: {
messages: [
{role: 'system', content: 'You are a helpful assistant'}
]
}
});
conversation.sendMessage({
role: 'user',
content: 'Write a poem',
});
Mengirim Pesan
Anda dapat mengirim pesan dengan atau tanpa streaming.
Contoh Non-Streaming
// Simple string input
let response = await conversation.sendMessage("What is the capital of France?");
console.log(response.content[0].text);
// Or with full message structure
response = await conversation.sendMessage({role: 'user', content: '...'});
Contoh Streaming
// sendMessageStreaming returns a ReadableStream of response chunks
const stream = conversation.sendMessageStreaming('Tell me a long story.');
for await (const chunk of stream) {
// Chunks are Records containing pieces of the response
for (const item of chunk.content) {
if (item.type === 'text') {
console.log(item.text);
}
}
}
Membatalkan Pembuatan
Anda dapat membatalkan pembuatan yang sedang berlangsung secara eksplisit dengan memanggil cancel() pada instance Conversation:
// Cancel any ongoing generation
conversation.cancel();
Jika Anda melakukan streaming respons, keluar dari loop for await...of lebih awal (seperti dengan break) juga akan otomatis membatalkan pembuatan yang sedang berlangsung:
for await (const chunk of stream) {
if (shouldStop()) {
break; // Cancels the stream and underlying generation
}
}