LiteRT-LM Web API

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:

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