Die Web API von LiteRT-LM für JavaScript und TypeScript im Browser. Dies ist eine frühe Vorschau, die Text-in / Text-out unterstützt, das in WebGPU ausgeführt wird.
Unterstützte Modelle
Die LiteRT-LM JS API unterstützt derzeit nur eine begrenzte Anzahl von webkompatiblen Modellen.
Wir arbeiten daran, dies auf allgemeine .litertlm-Modelldateien auszuweiten. Derzeit werden jedoch die folgenden Modelle unterstützt:
gemma-4-E2B-it-web.litertlmvon litert-community/gemma-4-E2B-it-litert-lmgemma-4-E4B-it-web.litertlmvon litert-community/gemma-4-E4B-it-litert-lm
Einführung
Hier ist eine Beispiel-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({
// 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>
Erste Schritte
LiteRT-LM ist als NPM-Paket verfügbar. Sie können die neueste Version von NPM installieren oder direkt aus einem 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
Die Engine ist der Einstiegspunkt zur API. Sie verarbeitet das Laden von Modellen, die Erstellung von Sitzungen und die Ressourcenverwaltung. Denken Sie daran, die Engine mit delete zu löschen, 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
// 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();
Unterhaltung erstellen
Nachdem die Engine initialisiert wurde, erstellen Sie eine Conversation-Instanz. Sie können eine 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 ohne 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: '...'});
Beispiel mit 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);
}
}
}
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 auch automatisch abgebrochen, wenn Sie die for await...of-Schleife vorzeitig beenden (z. B. mit break):
for await (const chunk of stream) {
if (shouldStop()) {
break; // Cancels the stream and underlying generation
}
}