Web API LiteRT-LM untuk JavaScript dan TypeScript di browser. Ini adalah pratinjau awal yang mendukung fitur teks dalam / teks luar yang berjalan di WebGPU.
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({ model: '/path/to/model.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. Library ini menangani pemuatan model, pembuatan
sesi, dan pengelolaan resource. Jangan lupa untuk delete mesin untuk melepaskan
resource saat model tidak lagi diperlukan.
Catatan: Menginisialisasi mesin 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
} 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 mesin 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
}
}