Chrome Prompt API
(developer.chrome.com)- Eine browsernative API, die natürlichsprachliche Anfragen an das in Chrome integrierte Gemini Nano-Modell sendet und AI-Inferenz auf dem Gerät ohne Server-Roundtrip ausführt
- Vielfältige Einsatzmöglichkeiten wie AI-gestützte Suche, personalisierte Feeds durch Nachrichtenklassifizierung, Inhaltsfilterung, Erstellung von Kalendereinträgen und Extraktion von Kontakten
- Mit
prompt()ist eine Antwort auf einmal möglich oder mitpromptStreaming()eine Streaming-Antwort auf Basis vonReadableStream - Bietet feingranulare Sitzungssteuerung wie sitzungsbasiertes Kontextmanagement, Streaming-Antworten und Sitzungsklone
- Da die AI-Inferenz ohne Server-Roundtrip im Browser erfolgt, ist sie vorteilhaft für Datenschutz und minimale Antwortlatenz
- Eingebaute multimodale Funktionen mit Unterstützung nicht nur für Text, sondern auch für Bild- und Audioeingaben
- Audio:
AudioBuffer,ArrayBuffer,Blobusw. - Bild:
HTMLImageElement,HTMLCanvasElement,VideoFrame,Blobusw.
- Audio:
- Über das Feld
responseConstraintkann ein JSON-Schema übergeben werden, um das Ausgabeformat des Modells aufboolean, eine bestimmte JSON-Struktur usw. zu beschränken - Mit
initialPromptslassen sich System-Prompts und vorheriger Gesprächskontext einfügen, und mitappend()kann auch nach Erstellung der Sitzung zusätzlicher Kontext vorab gesendet werden - Wenn einer nachfolgenden
assistant-Nachrichtprefix: truehinzugefügt wird, kann das Modell dazu veranlasst werden, eine Antwort in einem bestimmten Format zu beginnen - Unterstützung für die Verwaltung des Kontextfensters pro Sitzung: Mit
contextUsage/contextWindowlässt sich der Token-Verbrauch prüfen, und bei Overflow werden frühe Gespräche automatisch gelöscht (der System-Prompt bleibt erhalten) - Mit
clone()lassen sich Sitzungen verzweigen, mitdestroy()Ressourcen freigeben, und mitAbortSignalkönnen Sitzung und Prompt vorzeitig abgebrochen werden - Mit
expectedInputs/expectedOutputslassen sich Ein-/Ausgabeformate und Sprache festlegen (derzeit unterstützt:en,ja,es) - Hardware-Anforderungen: Windows 10+/macOS 13+/Linux/ChromeOS, mindestens 22 GB Speicherplatz, mehr als 4 GB GPU-VRAM oder mindestens 16 GB CPU-RAM plus mindestens 4 Kerne
- Für iframes mit fremder Origin kann der Zugriff über das Attribut
allow="language-model"delegiert werden, in Web Workern derzeit nicht unterstützt - Seit Chrome 138 als Origin Trial verfügbar
1 Kommentare
Hacker-News-Kommentare
Diese API scheint perfekt zu der de-snarkifier-Idee zu passen, über die ich schon lange nachdenke
Social Media kann intellektuell anregend sein und man kann dabei etwas lernen, aber man wird leicht in ideologische Wortgefechte und Flamewars hineingezogen, auch wenn man das gar nicht will. Sich im Internet mit Unbekannten emotional aufzureiben, kommt fast einer Verschwendung von Humankapital gleich
Mit so einer API könnte man wohl eine Browser-Erweiterung bauen, die vor dem Anzeigen eines Textes nur aggressive oder spöttische Formulierungen entschärft und die sachlichen Informationen unverändert lässt. Man könnte sogar noch weiter gehen und einen aggressiven Ton umso lächerlicher oder inkompetenter klingen lassen, je schärfer er ist
Dann wären Lesende vor persönlichen Angriffen Fremder geschützt, und Schreibende hätten keinen Anreiz mehr, sich unhöflich zu verhalten. Wenn alle solche Filter nutzen, gibt es auch keinen Grund mehr, darum zu konkurrieren, wer gemeiner ist
Alle Nährstoffe sind drin, aber geschmacklich ist es eher nichts Besonderes
Ich will im Grunde nur Clickbait-Überschriften und Werbung entfernen und stattdessen trockene, faktenbasierte Titel sehen
Zu jedem Thema reicht mir ein zentraler Artikel und ein paar brauchbare Kommentare, der Rest ist meist nur Rauschen, das ich gar nicht sehen will
Der Zustand von Social Media ist inzwischen so schlecht, dass ich es fast gar nicht mehr nutze, und HN war die einzige Ausnahme, aber auch hier scheint es wegen der AI-Sättigung in eine ähnliche Richtung zu gehen. Trotzdem verliere ich etwa alle zwei Wochen ein paar Stunden daran, und selbst das würde ich gern komplett abstellen
Idealerweise würden 98 % der Inhalte herausgefiltert oder zusammengefasst verschwinden, und mit der Zeit würde ich das Internet nur noch für gezielte Suche nutzen. Im Grunde möchte ich den Unterhaltungscharakter des Internets größtenteils entfernen und Zeit und Energie wieder in die reale Welt und hochwertige Quellen wie Bücher stecken
Die Erweiterung versucht per Crowdsourcing, Sensationsmache zu reduzieren, wobei ich den Eindruck habe, dass einige der Top-Beitragenden auch LLM-Bots sein könnten
Allerdings sind solche Dinge in der Realität schwer vorhersehbar, und selbst wenn es funktioniert, wird es wahrscheinlich ziemlich anders laufen, als man es sich anfangs vorgestellt hat
Ich konnte nicht widerstehen und habe hastig einen Snarknada-Prototyp gebaut, um mir gleichzeitig Low-Latency-Muster und die mögliche Genauigkeit anzusehen
Genau deshalb halte ich on-device bei solchen Anwendungsfällen für richtig. Wenn man einen endlosen Scroll-Feed komplett über eine Cloud-API entschärfen wollte, würden die Token-Kosten für Entwickler untragbar werden. Außerdem ist es völlig nachvollziehbar, dass niemand seinen persönlichen Feed oder DMs zur Tonbereinigung an einen Drittserver schicken will
Wenn man das ins Gerät verlagert, könnten hochfrequente Semantic Mutation-Anwendungen kosten- und technikseitig erstmals realistisch werden. Falls jemand daraus etwas Ernsthafteres macht als meinen spielzeughaften PM-Prototyp und dabei auf konkrete Reibungspunkte stößt, würde ich das sehr gern hören. Das hilft bei der Priorisierung der Roadmap
[1]: Wenn ihr Coding-Agenten (Cursor, Claude Code usw.) nutzt, würde ich empfehlen, auf https://www.npmjs.com/package/built-in-ai-skills-md-agent-md zu verweisen. Viele Modelle wurden noch mit dem inzwischen veralteten Namespace
window.aitrainiert, und diese Skill-Datei hilft ihnen, die aktuelle API korrekt zu verwendenIch habe die Designarbeit für diese API geleitet und vor meinem Ruhestand auch einen Beitrag zu den entsprechenden Designüberlegungen geschrieben
https://domenic.me/builtin-ai-api-design/
Und auch, ob Browser bei solchen Dingen eher praktisch untereinander auf gemeinsame Nenner hinarbeiten, statt das auf W3C-Ebene zu koordinieren. Die Branche ist am Ende ja doch ziemlich klein
Das funktioniert tatsächlich, und ich habe es bereits für local inference produktiv eingesetzt
Für einfache LLM-Aufgaben wie Suche konnte man es als eine Art ollama für Leute mit kleinem Budget verwenden. Der größte Vorteil ist, dass es kostenlos ist, die Privatsphäre wahrt und von Nutzern fast nichts verlangt, was es gut geeignet macht, nichttechnischen Nutzern lokale Inferenz zu geben
Die tatsächliche User Experience ist allerdings nicht gut. Der Model-Download ist um Größenordnungen größer als der Browser selbst, und man muss diesen Prozess abschließen, bevor man das erste Token bekommt
Das scheint schwer lösbar, solange das Betriebssystem nicht zuverlässig vorinstallierte Modelle bereitstellt, an die sich solche APIs anhängen können
Das größere Problem ist, dass die Modelle auf den meisten normalen PCs zu klein und zu langsam sind. Ich wollte einmal die Sätze eines infocom-Textadventures in Echtzeit umschreiben, aber dafür ist es auf vielen heutigen PCs einfach zu langsam, um praktisch zu sein
Ähnlich wie bei bittorrent, wo Dateifragmente von mehreren Hosts kommen. Gemeinsame Layer müssten zwar weiterhin heruntergeladen werden, aber die Zeit bis zum ersten Token könnte dann proportional zur aktiv genutzten statt zur gesamten Größe werden
Natürlich wäre das dann keine vollständig Offline-Inferenz mehr, aber für eine Browser-Webfunktion muss das vielleicht kein zentrales Kriterium sein
Wenn das Modell aber viel größer als der Browser ist und vor dem ersten Token heruntergeladen werden muss, frage ich mich, ob das Lazy Downloading bedeutet. Falls Erstnutzer beim ersten Aufruf warten müssen, bis der Download abgeschlossen ist, klingt das nach einer ziemlich schrecklichen User Experience
Ich frage mich auch, ob Chrome so etwas wie einen Download-Statusdialog anzeigt, um Verwirrung zu vermeiden, und wie hoch der Speicherplatzverbrauch ist
Oberflächlich sieht es so aus, als würde hier Gemini Nano verwendet, aber das aktuelle Gemma 4 E2B/E4B scheint deutlich besser zu sein, daher wäre es kurzfristig vielleicht sinnvoller, quantisierte Versionen über Erweiterungen auszuliefern
Quelle:
Wenn Gemma 4 oder das entsprechende Gemini Nano noch nicht in Chrome ist, würde ich erwarten, dass es bald kommt
Und dieser Beitrag wurde zuletzt am 2025-09-21 aktualisiert, damals war man bereits bei Gemini Nano 3
Es heißt, dass die Prompt API einfach natürlichsprachliche Anfragen an Gemini Nano im Browser sendet
In Edge dürfte das vermutlich Phi4 sein
Das wirkt auch wie ein guter Weg, bösartige JS-Skripte nichtsahnende Besucher Token erzeugen zu lassen
Interessant wäre auch, ob sich durch Zerlegung größerer Prompts in kleine Teile, verteilt über viele Browser, mit einem Subagent-Pattern oder einer RLM-ähnlichen Struktur etwas Nützliches als verteiltes System bauen ließe
Technisch und geschäftlich würde die Infrastruktur extrem komplex, und wenn man Prompts wirklich an Nutzerbrowser auslagern will, wäre es vermutlich sinnvoller, einfach die Chrome API direkt sauber zu nutzen. Ich bezweifle auch, wie oft das serverseitige Offloading auf solche schwachen Modelle tatsächlich einen nennenswerten Nutzen bringt
Und wenn man das wirklich wollte, gibt es WebGPU ohnehin schon seit Langem
Das sieht wie ein Schritt hin zu einer echten Model API aus, aber bislang eben nur ein kleiner Schritt
Es erinnert auch an Apples Foundation Models
Viele AI-Integrationen konzentrieren sich auf Textkommunikation oder Chat-Stil, aber tatsächlich gibt es auch viel Software, die eher von nichttextuellen Interfaces profitiert
Letztlich sollten Betriebssystem und Browser APIs bereitstellen, die Modelle verwalten, sodass Apps per einfacher Schnittstelle auf on-device- und Remote-Modelle zugreifen können
Wenn das plattformübergreifend standardisiert würde, wäre das großartig, und da auch Mobile dazugehören muss, wären Apple und Google wohl realistischerweise die Akteure, die so etwas am ehesten vorantreiben könnten. Meta könnte folgen oder umgekehrt sogar zuerst aktiv werden
Entscheidend ist, dass es nicht an ein bestimmtes Werbemodell gebunden sein darf
Apps sollten anfragen können und dann ein geeignetes Modell auswählen
(1) https://developer.apple.com/documentation/foundationmodels
Natürlich ist das alles noch in einer frühen Phase
https://github.com/mozilla/standards-positions/issues/1067
Wir nutzen das für Hackday-Retrospektiven-Zusammenfassungen
https://remotehack.space/previous-hacks/
Ein kleines Skript, das RSS-Feeds liest und daraus Zusammenfassungen für den Haupttext erzeugt; das passt ziemlich gut zu statischen Websites. Irgendwann würde ich es gern erweitern, um zum selben Inhalt auch andere Fragen stellen zu können
Ein im Browser zugängliches lokales LLM ist gut für die Privatsphäre, aber wenn hinter dieser API je nach Browser unterschiedliche Modelle hängen, könnte das Testen noch viel schlimmer werden als ohnehin schon
Wahrscheinlich würden sich die meisten Implementierungen am Ende an Gemini Nano ausrichten, daher frage ich mich, ob das Nutzer noch stärker in Richtung Chrome ziehen könnte
Prompts sind in der Praxis eben nicht modellagnostisch, daher kann ein sorgfältig auf Gemini Nano 3 v2025 abgestimmter Prompt bei einem Gecko-Modell stillschweigend deutlich schlechter funktionieren. Die API bietet aber nicht einmal Capability Detection, um darauf zu reagieren
Das ist noch schlechter als bei WebGL, wo man wenigstens verfügbare Erweiterungen abfragen konnte. Funktionen auf Prompt-Qualität eines hinter dem Browser verborgenen Modells auszurollen, ohne Namen oder Version zu kennen, ist ungefähr so, als würde man Software veröffentlichen, deren Features davon abhängen, welches Wörterbuch der Nutzer installiert hat
Soweit ich weiß, ist Gemini Nano anders als Gemma kein Open-Weights-Modell
Falls das nicht schon jemand getan hat, würde ich die Modellgewichte gern dumpen