LiteRT-LM Web API

Die Web-API von LiteRT-LM für JavaScript und TypeScript im Browser. Dies ist eine erste Vorschau, die Text-in / Text-out unterstützt und in WebGPU ausgeführt wird.

Einführung

Hier sehen Sie ein Beispiel für eine REPL-Chat-App, die mit der JavaScript API erstellt wurde:

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

Erste Schritte

LiteRT-LM ist als NPM-Paket verfügbar. Sie können die aktuelle Version über npm installieren oder direkt über ein CDN importieren:

# 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';

Engine initialisieren

Engine ist der Einstiegspunkt zur API. Sie kümmert sich um das Laden von Modellen, das Erstellen von Sitzungen und die Ressourcenverwaltung. Denken Sie daran, die Engine zu delete, um Ressourcen freizugeben, wenn das Modell nicht mehr benötigt wird.

Hinweis:Das Initialisieren der Engine kann einige Sekunden dauern, da das Modell geladen werden muss.

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();

Unterhaltung erstellen

Erstellen Sie nach der Initialisierung der Engine eine Conversation-Instanz. Sie können einen ConversationConfig angeben, um das Verhalten anzupassen.

const conversation = await engine.createConversation({
  preface: {
    messages: [
      {role: 'system', content: 'You are a helpful assistant'}
    ]
  }
});

conversation.sendMessage({
  role: 'user',
  content: 'Write a poem',
});

Nachrichten senden

Sie können Nachrichten mit oder ohne Streaming senden.

Beispiel für Nicht-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: '...'});

Streaming-Beispiel

// 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);
    }
  }
}

Generierung abbrechen

Sie können eine laufende Generierung explizit abbrechen, indem Sie cancel() für die Conversation-Instanz aufrufen:

// Cancel any ongoing generation
conversation.cancel();

Wenn Sie die Antwort streamen, wird die laufende Generierung automatisch abgebrochen, wenn Sie die for await...of-Schleife vorzeitig verlassen (z. B. mit break):

for await (const chunk of stream) {
  if (shouldStop()) {
    break; // Cancels the stream and underlying generation
  }
}