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

Veröffentlicht am 13. Januar 2025

Dies ist der letzte Teil einer dreiteiligen Reihe zu LLM-Chatbots. In den vorherigen Artikeln ging es um die Leistungsfähigkeit von clientseitigen LLMs und darum, wie Sie einer To-do-Listen-Anwendung einen WebLLM-gestützten Chatbot hinzufügen.

Einige neuere Geräte werden mit großen Sprachmodellen und anderen KI-Modellen direkt auf dem Gerät ausgeliefert. Chrome hat vorgeschlagen, integrierte KI-APIs in den Browser einzubinden. Eine Reihe von APIs befinden sich in verschiedenen Entwicklungsstadien. Viele dieser APIs durchlaufen den Standardisierungsprozess, sodass Websites dieselbe Implementierung und dasselbe Modell verwenden können, um die maximale Inferenzleistung zu erzielen.

Die Prompt API ist eine solche KI-API. Entwickler sollten sich für das Early Preview Program registrieren, um sie zu verwenden. Nach der Annahme erhalten Sie eine Anleitung zum Aktivieren der Prompt API in Browsern. Die Prompt API ist in einer Ursprungstestversion für Chrome-Erweiterungen, verfügbar. So können Sie diese API 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 die integrierte KI aktivieren, lädt Chrome ein Foundation Model in den Browser herunter. Dieses Modell kann dann für mehrere Ursprünge freigegeben werden und wird mit maximaler Leistung ausgeführt. Es gibt ein GitHub-Problem bei dem ein Entwickler die Hinzufügung einer Funktion zur Modellauswahl angefordert hat.

Unterhaltung einrichten

Sie können die Nachrichtenunterhaltung auf dieselbe Weise starten. Die Prompt API bietet jedoch auch eine Kurzschreibweise, um den System-Prompt anzugeben. Starten Sie die Sprachmodellsitzung 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 zum Konfigurieren des Streamings bietet die Prompt API zwei separate Methoden:

  • prompt() gibt den vollständigen String zurück.
  • promptStreaming() gibt ein asynchrones iterierbares Objekt zurück. Im Gegensatz zu WebLLM antwortet die Prompt API mit der vollständigen Stringantwort. Sie müssen die Ergebnisse also nicht selbst kombinieren.

Wenn kein anderer Ursprung den Modell-Download zuvor ausgelöst hat, kann Ihre erste Anfrage sehr lange dauern, während das Modell 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

Durch die Integration von LLMs in Anwendungen kann die Nutzerfreundlichkeit erheblich verbessert werden. Cloud-Dienste bieten hochwertigere Modelle und eine hohe Inferenzleistung unabhängig vom Gerät des Nutzers. On-Device-Lösungen wie WebLLM und die Prompt API von Chrome sind offline verfügbar, verbessern den Datenschutz und sparen im Vergleich zu cloudbasierten Alternativen Kosten. Probieren Sie diese neuen APIs aus und machen Sie Ihre Webanwendungen intelligenter.