Mit der Prompt API einen lokalen und offlinefähigen Chatbot erstellen

Veröffentlicht: 13. Januar 2025

Dies ist der letzte Teil einer dreiteiligen Reihe über LLM-Chatbots. In den vorherigen Artikeln haben wir die Leistungsfähigkeit von clientseitigen LLMs erläutert und gezeigt, wie Sie einer To-do-Liste einen WebLLM-gestützten Chatbot hinzufügen.

Einige neuere Geräte werden mit Large Language Models und anderen KI‑Modellen direkt auf dem Gerät ausgeliefert. Chrome hat vorgeschlagen, integrierte KI-APIs in den Browser einzubinden. Es gibt eine Reihe von APIs in verschiedenen Entwicklungsphasen. Viele dieser APIs durchlaufen den Standardisierungsprozess, damit Websites dieselbe Implementierung und dasselbe Modell verwenden können, um die maximale Inferenzleistung zu erzielen.

Die Prompt API ist eine solche KI-API. Entwickler, die das Tool verwenden möchten, sollten sich für das Early Preview Program registrieren. Nach der Genehmigung erhalten Sie eine Anleitung zum Aktivieren der Prompt API in Browsern. Die Prompt API ist in einem Ursprungstest für Chrome-Erweiterungen verfügbar. Sie können diese API also für echte Erweiterungsnutzer testen.

Gemeinsamer Modellzugriff

Die Prompt API verhält sich ähnlich wie WebLLM. Dieses Mal gibt es jedoch keine Modellauswahl. Sie müssen das LLM verwenden, das mit dem Browser ausgeliefert wird. Wenn Sie integrierte KI aktivieren, lädt Chrome Gemini Nano in den Browser herunter. Dieses Modell kann dann für mehrere Quellen und Läufe mit maximaler Leistung freigegeben werden. Es gibt ein GitHub-Problem, in dem ein Entwickler die Funktion zur Modellauswahl angefordert hat.

Unterhaltung einrichten

Sie können die Unterhaltung auf genau dieselbe Weise beginnen, aber die Prompt API bietet auch eine Kurzschreibweise, um den Systemprompt anzugeben. Starten Sie die Sprachmodell-Sitzung mit der Methode create() auf der Schnittstelle LanguageModel:

const session = await LanguageModel.create({
  initialPrompt: [
    {
      type: 'system',
      content: `You are a helpful assistant. You will answer questions related
        to the user's to-do list. Decline all other requests not related to the
         user's todos. This is the to-do list in JSON: ${JSON.stringify(todos)}`,
    },
  ],
});

Erste Frage beantworten

Anstelle eines Konfigurationsobjekts für die Konfiguration des Streamings bietet die Prompt API zwei separate Methoden:

  • prompt() gibt den vollständigen String zurück.
  • promptStreaming() gibt einen asynchronen iterierbaren Wert zurück. Im Gegensatz zu WebLLM gibt die Prompt API die vollständige String-Antwort zurück, sodass Sie die Ergebnisse nicht selbst kombinieren müssen.

Wenn kein anderer Ursprung den Modelldownload zuvor ausgelöst hat, kann es bei Ihrer ersten Anfrage sehr lange dauern, bis Gemini Nano in Ihren Browser heruntergeladen wird. Wenn das Modell bereits verfügbar ist, beginnt die Inferenz sofort.

const stream = session.promptStreaming("How many open todos do I have?");
for await (const reply of stream) {
  console.log(reply);
}

Demo

Zusammenfassung

Die Integration von LLMs in Anwendungen kann die Nutzerfreundlichkeit erheblich verbessern. Cloud-Dienste bieten zwar unabhängig vom Gerät des Nutzers Modelle von höherer Qualität und eine hohe Inferenzleistung, aber On-Device-Lösungen wie WebLLM und die Prompt API von Chrome sind offlinefähig, verbessern den Datenschutz und sparen im Vergleich zu cloudbasierten Alternativen Kosten. Probieren Sie diese neuen APIs aus und machen Sie Ihre Webanwendungen intelligenter.