Prompt API

Veröffentlicht: 20. Mai 2025

Erklärung Web Erweiterungen Chrome-Status Absicht
GitHub Experimentell Im EPP Chrome 138 Ansicht Absicht, Tests durchzuführen

Mit der Prompt API können Sie Anfragen in natürlicher Sprache an Gemini Nano im Browser senden.

Es gibt viele Möglichkeiten, die Prompt API zu verwenden. In einer Webanwendung oder auf einer Website können Sie Folgendes erstellen:

  • KI‑basierte Suche: Fragen basierend auf dem Inhalt einer Webseite beantworten.
  • Personalisierte Newsfeeds: Erstellen Sie einen Feed, in dem Artikel dynamisch in Kategorien eingeteilt werden und Nutzer diese Inhalte filtern können.

Das sind nur einige der Möglichkeiten. Wir sind gespannt, was Sie damit anstellen.

Hardwareanforderungen prüfen

Die APIs für die Spracherkennung und die Übersetzung funktionieren auf Computern nur in Chrome.

Die Prompt API, Summarizer API, Writer API und Rewriter API funktionieren in Chrome, wenn die folgenden Bedingungen erfüllt sind:

  • Betriebssystem: Windows 10 oder 11, macOS 13 oder höher (Ventura und höher) oder Linux. Chrome für Android, iOS und ChromeOS wird noch nicht von unseren APIs unterstützt, die auf Gemini Nano basieren.
  • Speicherplatz: Mindestens 22 GB auf dem Volume, das Ihr Chrome-Profil enthält.
  • GPU: Mehr als 4 GB VRAM.
  • Netzwerk: Unbegrenzte Daten oder eine Verbindung ohne Volumenbegrenzung.

Diese Anforderungen gelten für Sie im Entwicklungsprozess und für Ihre Nutzer, die mit den von Ihnen entwickelten Funktionen arbeiten.

Prompt API verwenden

Bevor Sie diese API verwenden, müssen Sie die Richtlinie zur unzulässigen Nutzung von generativer KI von Google zur Kenntnis nehmen.

Im Namespace LanguageModel stehen Ihnen zwei Funktionen zur Verfügung:

  • availability(), um zu prüfen, was das Modell kann und ob es verfügbar ist.
  • create(), um eine Sitzung mit einem Language Model zu starten.

Download des Modells

Für die Prompt API wird das Gemini Nano-Modell in Chrome verwendet. Die API ist zwar in Chrome integriert, das Modell wird jedoch beim ersten Mal, wenn ein Ursprung die API verwendet, separat heruntergeladen.

Rufen Sie die asynchrone Funktion LanguageModel.availability() auf, um festzustellen, ob das Modell einsatzbereit ist. In diesem Fall sollte eine der folgenden Antworten zurückgegeben werden:

  • "unavailable" bedeutet, dass die Implementierung die angeforderten Optionen nicht unterstützt oder das Auffordern eines Sprachmodells überhaupt nicht unterstützt.
  • "downloadable" bedeutet, dass die Implementierung die angeforderten Optionen unterstützt, aber etwas herunterladen muss (z. B. das Sprachmodell selbst oder eine Feinabstimmung), bevor sie eine Sitzung mit diesen Optionen erstellen kann.
  • "downloading" bedeutet, dass die Implementierung die angeforderten Optionen unterstützt, aber einen laufenden Downloadvorgang abschließen muss, bevor eine Sitzung mit diesen Optionen erstellt werden kann.
  • "available" bedeutet, dass die Implementierung die angeforderten Optionen unterstützt, ohne dass neue Downloads erforderlich sind.

Rufen Sie die asynchrone Funktion LanguageModel.create() auf, um den Modelldownload auszulösen und die Sprachmodellsitzung zu erstellen. Wenn die Antwort auf availability() 'downloadable' war, empfiehlt es sich, den Downloadfortschritt zu überwachen. So können Sie den Nutzer informieren, falls der Download länger dauert.

const session = await LanguageModel.create({
  monitor(m) {
    m.addEventListener("downloadprogress", (e) => {
      console.log(`Downloaded ${e.loaded * 100}%`);
    });
  },
});

Modellfunktionen

Die params()-Funktion informiert Sie über die Parameter des Sprachmodells. Das Objekt hat die folgenden Felder:

  • defaultTopK: Der Standardwert für Top-K (Standard: 3).
  • maxTopK: Der maximale Top-K-Wert (8).
  • defaultTemperature: Die Standard-Temperatur (1.0). Der Temperaturwert muss zwischen 0.0 und 2.0 liegen.
  • maxTemperature: Die maximale Temperatur.
await LanguageModel.params();
// {defaultTopK: 3, maxTopK: 8, defaultTemperature: 1, maxTemperature: 2}

Sitzung erstellen

Sobald die Prompt API ausgeführt werden kann, erstellen Sie eine Sitzung mit der Funktion create(). Sie können das Modell entweder mit der Funktion prompt() oder mit der Funktion promptStreaming() auffordern.

Sitzung anpassen

Jede Sitzung kann mit topK und temperature mithilfe eines optionalen Optionenobjekts angepasst werden. Die Standardwerte für diese Parameter werden von LanguageModel.params() zurückgegeben.

const params = await LanguageModel.params();
// Initializing a new session must either specify both `topK` and
// `temperature` or neither of them.
const slightlyHighTemperatureSession = await LanguageModel.create({
  temperature: Math.max(params.defaultTemperature * 1.2, 2.0),
  topK: params.defaultTopK,
});

Das optionale Optionenobjekt der Funktion create() akzeptiert auch das Feld signal, mit dem Sie ein AbortSignal übergeben können, um die Sitzung zu beenden.

const controller = new AbortController();
stopButton.onclick = () => controller.abort();

const session = await LanguageModel.create({
  signal: controller.signal,
})

Erste Prompts

Mit Initial-Prompts können Sie dem Sprachmodell Kontext zu früheren Interaktionen geben, damit der Nutzer beispielsweise eine gespeicherte Sitzung nach einem Neustart des Browsers fortsetzen kann.

const session = await LanguageModel.create({
  initialPrompts: [
    { role: 'system', content: 'You are a helpful and friendly assistant.' },
    { role: 'user', content: 'What is the capital of Italy?' },
    { role: 'assistant', content: 'The capital of Italy is Rome.'},
    { role: 'user', content: 'What language is spoken there?' },
    { role: 'assistant', content: 'The official language of Italy is Italian. [...]' }
  ]
});

Sitzungen

Eine bestimmte Language Model-Sitzung kann nur eine maximale Anzahl von Tokens verarbeiten. Mit den folgenden Eigenschaften des Sitzungsobjekts können Sie die Nutzung und den Fortschritt in Richtung dieses Limits prüfen:

console.log(`${session.inputUsage}/${session.inputQuota}`);

Sitzungspersistenz

In jeder Sitzung wird der Kontext der Unterhaltung beibehalten. Vorherige Interaktionen werden bei zukünftigen Interaktionen berücksichtigt, bis das Kontextfenster der Sitzung voll ist.

const session = await LanguageModel.create({
  initialPrompts: [{
    role: "system",
    content: "You are a friendly, helpful assistant specialized in clothing choices."
  }]
});

const result1 = await session.prompt(
  "What should I wear today? It is sunny. I am unsure between a t-shirt and a polo."
);
console.log(result1);

const result2 = await session.prompt(
  "That sounds great, but oh no, it is actually going to rain! New advice?"
);
console.log(result2);

Sitzung klonen

Um Ressourcen zu schonen, können Sie eine vorhandene Sitzung mit der Funktion clone() klonen. Der Kontext der Unterhaltung wird zurückgesetzt, die ursprüngliche Aufforderung bleibt jedoch erhalten. Die Funktion clone() verwendet ein optionales Optionenobjekt mit dem Feld signal, mit dem Sie ein AbortSignal übergeben können, um die geklonte Sitzung zu beenden.

const controller = new AbortController();
stopButton.onclick = () => controller.abort();

const clonedSession = await session.clone({
  signal: controller.signal,
});

Prompt für das Modell erstellen

Sie können das Modell entweder mit der Funktion prompt() oder mit der Funktion promptStreaming() auffordern.

Nicht gestreamte Ausgabe

Wenn Sie ein kurzes Ergebnis erwarten, können Sie die Funktion prompt() verwenden, die die Antwort zurückgibt, sobald sie verfügbar ist.

// Start by checking if it's possible to create a session based on the
// availability of the model, and the characteristics of the device.
const {defaultTemperature, maxTemperature, defaultTopK, maxTopK } =
  await LanguageModel.params();

const available = await LanguageModel.availability();

if (available !== 'unavailable') {
  const session = await LanguageModel.create();

  // Prompt the model and wait for the whole result to come back.
  const result = await session.prompt("Write me a poem!");
  console.log(result);
}

Gestreamte Ausgabe

Wenn Sie eine längere Antwort erwarten, sollten Sie die Funktion promptStreaming() verwenden. Damit können Sie Teilergebnisse anzeigen, sobald sie vom Modell eingehen. Die Funktion promptStreaming() gibt eine ReadableStream zurück.

const {defaultTemperature, maxTemperature, defaultTopK, maxTopK } =
  await LanguageModel.params();

const available = await LanguageModel.availability();
if (available !== 'unavailable') {
  const session = await LanguageModel.create();

  // Prompt the model and stream the result:
  const stream = session.promptStreaming('Write me an extra-long poem!');
  for await (const chunk of stream) {
    console.log(chunk);
  }
}

Ausführung eines Prompts beenden

Sowohl prompt() als auch promptStreaming() akzeptieren einen optionalen zweiten Parameter mit einem signal-Feld, mit dem Sie das Ausführen von Prompts beenden können.

const controller = new AbortController();
stopButton.onclick = () => controller.abort();

const result = await session.prompt(
  'Write me a poem!',
  { signal: controller.signal }
);

Sitzung beenden

Rufen Sie destroy() auf, um Ressourcen freizugeben, wenn Sie eine Sitzung nicht mehr benötigen. Wenn eine Sitzung beendet wird, kann sie nicht mehr verwendet werden und alle laufenden Ausführungen werden abgebrochen. Es kann sinnvoll sein, die Sitzung beizubehalten, wenn Sie das Modell häufig auffordern möchten, da das Erstellen einer Sitzung einige Zeit in Anspruch nehmen kann.

await session.prompt(
  "You are a friendly, helpful assistant specialized in clothing choices."
);

session.destroy();

// The promise is rejected with an error explaining that
// the session is destroyed.
await session.prompt(
  "What should I wear today? It is sunny, and I am unsure between a
  t-shirt and a polo."
);

Multimodale Funktionen

Die Prompt API unterstützt Audio- und Bildeingaben ab Chrome 138 Canary für lokale Tests. Die API gibt eine Textausgabe zurück.

Mit diesen Funktionen haben Sie folgende Möglichkeiten:

  • Nutzern erlauben, in einer Chat-App gesendete Sprachnachrichten transkribieren zu lassen
  • Beschreiben Sie ein auf Ihre Website hochgeladenes Bild, das in einer Bildunterschrift oder einem Alternativtext verwendet werden soll.
const session = await LanguageModel.create({
  // { type: "text" } is not necessary to include explicitly, unless
  // you also want to include expected input languages for text.
  expectedInputs: [
    { type: "audio" },
    { type: "image" }
  ]
});

const referenceImage = await (await fetch("/reference-image.jpeg")).blob();
const userDrawnImage = document.querySelector("canvas");

const response1 = await session.prompt([{
  role: "user",
  content: [
    { type: "text", value: "Give a helpful artistic critique of how well the second image matches the first:" },
    { type: "image", value: referenceImage },
    { type: "image", value: userDrawnImage }
  ]
}]);

console.log(response1);

const audioBlob = await captureMicrophoneInput({ seconds: 10 });

const response2 = await session.prompt([{
  role: "user",
  content: [
    { type: "text", value: "My response to your critique:" },
    { type: "audio", value: audioBlob }
  ]
}]);

Multimodale Demos

Im Mediarecorder Audio Prompt-Demo sehen Sie, wie Sie die Prompt API mit Audioeingabe verwenden, und im Canvas Image Prompt-Demo, wie Sie die Prompt API mit Bildeingabe verwenden.

Leistungsstrategie

Die Prompt API für das Web wird noch entwickelt. Bis wir diese API entwickelt haben, können Sie sich an unsere Best Practices zur Sitzungsverwaltung halten, um eine optimale Leistung zu erzielen.

Feedback

Ihr Feedback hilft uns, die Zukunft dieser API und Verbesserungen an Gemini Nano zu gestalten. Möglicherweise werden sogar spezielle Task-APIs (z. B. APIs für die Audio-Transkription oder Bildbeschreibung) entwickelt, damit wir Ihre Anforderungen und die Anforderungen Ihrer Nutzer erfüllen können.

Teilnehmen und Feedback geben

Ihr Feedback kann sich direkt darauf auswirken, wie wir zukünftige Versionen dieser API und aller integrierten KI-APIs entwickeln und implementieren.