Qu'est-ce que l'API Prompt de Chrome ? IA du navigateur pour les développeurs d'API

Ashley Innocent

Ashley Innocent

29 April 2026

Qu'est-ce que l'API Prompt de Chrome ? IA du navigateur pour les développeurs d'API

Chrome a intégré un modèle d'IA directement dans le navigateur. L'API Prompt est l'interface JavaScript que vous appelez pour l'utiliser. Aucune clé API, aucun aller-retour réseau, aucune facturation par jeton. Le modèle est Gemini Nano, il s'exécute sur l'appareil de l'utilisateur, et depuis Chrome 138, il est généralement disponible pour les extensions et derrière un drapeau pour les pages web. Pour les développeurs d'API, cela change ce qu'il est raisonnable de faire côté client.

Ce guide couvre ce qu'est l'API Prompt de Chrome, comment elle diffère de l'API Gemini basée sur le cloud, quand elle s'intègre réellement dans un flux de travail d'API, du code pratique pour les extensions et les pages web, et les limites que vous atteindrez plus rapidement que les documents ne l'admettent. Nous l'associons à Apidog à la fin afin que les mêmes tâches aient un chemin de repli lorsque le modèle n'est pas disponible.

bouton

En bref

Ce que l'API Prompt expose réellement

L'API Prompt fait partie d'un petit groupe d'API « IA intégrées » que Chrome a commencé à déployer l'année dernière. Les autres sont plus spécifiques : Summarizer (résumeur), Writer (rédacteur), Rewriter (réécrivain), Translator (traducteur) et Language Detector (détecteur de langue). L'API Prompt est l'interface à usage général ; les autres l'enveloppent avec des paramètres par défaut spécifiques à la tâche.

Trois primitives sont importantes :

La forme est intentionnellement proche du SDK cloud de Gemini mais allégée. Il n'y a pas encore d'appel d'outils, pas d'entrée d'image sur le canal stable (elle est en Origin Trial), et la fenêtre contextuelle est petite (4K jetons d'entrée, 1K de sortie, avec une extension douce à 8K au total).

Un premier appel depuis une page web ressemble à ceci :

if (!('LanguageModel' in window)) {
  console.warn('Prompt API not available. Falling back to cloud.');
} else {
  const status = await LanguageModel.availability();
  if (status === 'unavailable') {
    console.warn('Device does not support Gemini Nano.');
  } else {
    if (status !== 'available') {
      // Triggers a background download. Show a UI.
      await LanguageModel.create({ monitor(m) {
        m.addEventListener('downloadprogress', e => {
          console.log(`downloaded ${(e.loaded * 100).toFixed(0)}%`);
        });
      }});
    }
    const session = await LanguageModel.create({
      systemPrompt: 'You answer in three concise bullets. JSON only.',
    });
    const reply = await session.prompt(
      'Summarize this changelog in three bullets.\n\n' + changelog
    );
    console.log(reply);
  }
}

Chaque élément significatif est affiché dans l'extrait : détection de fonctionnalité, vérification de disponibilité, téléchargement optionnel, création de session, prompt système, appel de prompt.

Comment elle diffère de l'API Gemini basée sur le cloud

Même famille, déploiement différent. Les différences déterminent ce que vous pouvez et ne pouvez pas construire avec elle.

Propriété API Prompt de Chrome API Gemini (cloud)
Modèle Gemini Nano (sur l'appareil) gemini-3-flash, gemini-3-flash-preview, gemini-3-pro
Coût par appel Zéro Facturation par jeton
Latence 50 à 300 ms (premier jeton typique) 200 à 800 ms (premier jeton)
Réseau Aucun requis après le téléchargement du modèle Requis à chaque appel
Confidentialité L'entrée ne quitte jamais l'appareil Envoyée aux serveurs Google
Fenêtre de contexte 4K entrée / 1K sortie (8K combiné) Jusqu'à 1M jetons
Appel d'outils Non (prévu) Oui
Multimodal Entrée d'image en Origin Trial Oui
Mode JSON Meilleur effort via le prompt système De première classe avec schéma
Disponibilité Chrome uniquement, matériel compatible uniquement Tout client avec réseau

Le modèle sur l'appareil est environ deux ordres de grandeur plus petit que gemini-3-flash. Utilisez-le pour des tâches courtes où vous auriez utilisé une expression régulière ou un classificateur de prompts ajusté manuellement. Ne l'utilisez pas comme un substitut direct pour Gemini cloud.

Où elle s'intègre réellement dans le flux de travail d'un développeur d'API

Quatre cas d'utilisation justifient le coût d'intégration. En dehors de ceux-ci, l'API cloud reste le bon choix.

1. Analyse et reformulation des entrées utilisateur côté client.Prenez une requête en forme libre et transformez-la en un filtre structuré pour votre API. L'utilisateur tape « frais Stripe de plus de 100 $ la semaine dernière » ; l'API Prompt la transforme en { "amount_gt": 100, "since": "2026-04-22", "provider": "stripe" } avant que vous n'appeliez votre endpoint de recherche. Cela économise un aller-retour et protège la vie privée de l'utilisateur.

2. Résumé des réponses API pour l'interface utilisateur.Vous interrogez votre propre API, obtenez 40 enregistrements et avez besoin d'un résumé d'une ligne à afficher dans une carte. L'envoi des enregistrements à un modèle cloud ajoute de la latence et des coûts. L'API Prompt s'exécute localement et renvoie un résultat en moins de 200 ms.

3. Réparation de la structure JSON.Les réponses des LLM arrivent suffisamment souvent mal formées pour que cela compte. Exécutez une passe de réparation unique via Gemini Nano : « Voici un JSON invalide. Retournez uniquement un JSON valide avec les mêmes champs. » Peu coûteux, rapide, sans frais.

4. Création de stubs locaux pendant le développement.Pendant que vous câblez un nouvel endpoint et que le backend est à moitié construit, générez des corps de réponse plausibles à la volée. Les structures ne seront pas parfaites pour la production, mais elles débloquent le travail frontal. Combinez-le avec le serveur de mock d'Apidog pour une configuration hybride où les endpoints critiques proviennent d'exemples enregistrés et les endpoints exploratoires proviennent de l'API Prompt.

L'intégrer dans une extension

Les extensions reçoivent l'API Prompt sur le canal stable à partir de Chrome 138. Vous déclarez la permission et appelez chrome.languageModel.

manifest.json:

{
  "manifest_version": 3,
  "name": "Endpoint Summarizer",
  "version": "1.0.0",
  "permissions": ["languageModel"],
  "action": { "default_popup": "popup.html" }
}

popup.js:

const status = await chrome.languageModel.availability();
if (status === 'unavailable') {
  document.getElementById('out').textContent =
    'Device does not support on-device AI.';
  return;
}

const session = await chrome.languageModel.create({
  systemPrompt: [
    'You summarize HTTP responses in three short bullets.',
    'Mention status, the most-changed field, and any error keys.',
  ].join(' '),
  temperature: 0.3,
  topK: 3,
});

document.getElementById('go').addEventListener('click', async () => {
  const tab = await chrome.tabs.query({ active: true, currentWindow: true });
  const [{ result }] = await chrome.scripting.executeScript({
    target: { tabId: tab[0].id },
    func: () => document.body.innerText.slice(0, 4000),
  });
  const stream = session.promptStreaming(result);
  const out = document.getElementById('out');
  out.textContent = '';
  for await (const chunk of stream) {
    out.textContent += chunk;
  }
});

Deux points méritent d'être soulignés. temperature et topK sont les seuls paramètres d'échantillonnage que l'API expose ; topP n'est pas pris en charge sur le canal stable. Le streaming est un itérateur asynchrone, et non des événements envoyés par le serveur (SSE), de sorte que le modèle de consommation est for await plutôt que le lecteur SSE que vous écririez pour Gemini cloud.

L'intégrer dans une page web

Les pages web nécessitent que l'utilisateur active un drapeau ou que votre origine soit inscrite à l'Origin Trial. Le jeton d'essai est placé dans une balise meta.

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="origin-trial" content="YOUR_TRIAL_TOKEN_HERE" />
</head>
<body>
  <textarea id="in" placeholder="Paste an API response..."></textarea>
  <button id="go">Summarize</button>
  <pre id="out"></pre>
  <script type="module">
    if (!('LanguageModel' in window)) {
      document.getElementById('out').textContent =
        'Prompt API not available in this browser.';
    } else {
      const session = await LanguageModel.create({
        systemPrompt: 'Reply in JSON: { "summary": "...", "tags": [...] }',
        temperature: 0.2,
      });
      document.getElementById('go').onclick = async () => {
        const text = document.getElementById('in').value;
        const reply = await session.prompt(text);
        try {
          document.getElementById('out').textContent =
            JSON.stringify(JSON.parse(reply), null, 2);
        } catch {
          document.getElementById('out').textContent = reply;
        }
      };
    }
  </script>
</body>
</html>

Si vous souhaitez tester la page sans jeton Origin Trial, ouvrez chrome://flags/#prompt-api-for-gemini-nano, activez-le et redémarrez Chrome. Ce drapeau est stable depuis les six dernières versions, mais il n'est pas garanti qu'il le reste indéfiniment ; utilisez le chemin de l'Origin Trial si vous voulez un comportement prévisible.

Limites et pièges que la documentation ne souligne pas suffisamment

Six choses qui vous poseront problème.

  1. 1. Le contexte est petit. 4K en entrée, 1K en sortie. Tronquez de manière agressive. Ne collez pas un document JSON de 50K jetons en vous attendant à une réponse utile.
  2. 2. Le support matériel est inégal. Le modèle nécessite environ 4 Go de VRAM ou de mémoire unifiée et ne fonctionne que sur Chrome 138+ sous Windows, macOS, Linux et les versions récentes de ChromeOS. Chrome mobile n'est pas pris en charge au moment de la rédaction.
  3. 3. Le premier chargement est lent. Le téléchargement de 2 Go s'effectue en arrière-plan mais bloque la première session. Affichez toujours une interface utilisateur de progression du téléchargement.
  4. 4. Pas d'appel d'outils. Si votre tâche nécessite que le modèle appelle votre API, faites-le vous-même côté client ; le modèle décide seulement quoi appeler.
  5. 5. Dérive du prompt système. Le modèle sur l'appareil suit les prompts système moins rigidement que les variantes cloud. Fixez le format avec des exemples directs dans le prompt système.
  6. 6. Les permissions sont importantes. Les extensions ont besoin de "languageModel" dans permissions. Oubliez-le et l'API renverra silencieusement unavailable.

Prévoyez un repli vers le cloud avant de déployer

Votre application est déployée auprès d'utilisateurs qui n'ont pas le modèle. Prévoyez toujours un repli. Le modèle est court :

async function summarize(text) {
  if ('LanguageModel' in window) {
    const status = await LanguageModel.availability();
    if (status === 'available') {
      const session = await LanguageModel.create({
        systemPrompt: 'Reply with one bullet summary, max 12 words.',
      });
      return session.prompt(text);
    }
  }
  // Repli : appelez votre serveur, qui appelle Gemini cloud ou votre propre modèle.
  const r = await fetch('/api/summarize', {
    method: 'POST', body: JSON.stringify({ text }),
  });
  return (await r.json()).summary;
}

Confidentialité et ce qu'il faut dire aux utilisateurs

L'argument de vente de l'API Prompt est que l'entrée ne quitte jamais l'appareil. C'est vrai aujourd'hui et c'est l'intention de conception explicite de l'initiative IA intégrée. Deux nuances à connaître :

Pour la plupart des applications grand public, c'est un argument de confidentialité solide que vous pouvez intégrer à votre interface utilisateur sans examen juridique. Pour les charges de travail réglementées (HIPAA, PCI), consultez un conseiller juridique avant de vous en dépendre.

Quand ignorer l'API Prompt

Choisissez plutôt l'API Gemini cloud lorsque :

Pour l'angle des modèles à poids ouverts, Comment exécuter DeepSeek V4 localement explique comment exécuter un modèle significativement plus grand sur une machine de développeur sans quitter le réseau local.

FAQ

Pour les équipes exécutant déjà des flux de travail LLM côté cloud en parallèle, l'article Qu'est-ce que GPT-5.5 couvre plus en détail les compromis côté cloud, et Apidog gère le mock et le câblage de repli sans outil de test séparé.

bouton

Pratiquez le Design-first d'API dans Apidog

Découvrez une manière plus simple de créer et utiliser des API