LiteRT-LM Web API

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