Terrain de jeu Chrome AI Prompt Chat
Testez l'API Prompt expérimentale intégrée de Chrome (LanguageModel) directement dans votre navigateur. Envoyez des invites à Gemini Nano sur l'appareil, configurez une invite système et des paramètres d'échantillonnage, regardez les réponses s'afficher en temps réel et surveillez le téléchargement du modèle et l'utilisation de la fenêtre de contexte — aucun serveur requis.
Documentation
Qu'est-ce que l'API Prompt ?
L'API Prompt est une proposition expérimentale de plateforme web du W3C Web Machine Learning Community Group qui expose un grand modèle de langage fourni par le navigateur à JavaScript via une interface window.LanguageModel. Les pages créent une session avec LanguageModel.create(), la configurent optionnellement avec une invite système, puis appellent prompt() ou promptStreaming() pour obtenir une réponse.
Contrairement à l'appel d'une API LLM hébergée, le modèle s'exécute sur l'appareil de l'utilisateur. Cela signifie que les entrées ne quittent jamais la machine, la page fonctionne hors ligne une fois le modèle mis en cache, et il n'y a pas de coûts par requête. Dans Chrome, le modèle sous-jacent est Gemini Nano, mais l'API est intentionnellement indépendante du modèle afin que d'autres navigateurs puissent intégrer des implémentations différentes.
Une session est avec état : elle suit l'historique de la conversation dans une fenêtre de contexte mesurée en tokens. Lorsque la fenêtre se remplit, les messages non-système les plus anciens sont automatiquement supprimés (un événement contextoverflow se déclenche), et vous pouvez inspecter session.contextUsage et session.contextWindow à tout moment pour voir l'espace restant.
Description de l'outil
Ce terrain de jeu est une surface de chat interactive connectée à window.LanguageModel. Il vous permet de définir une invite système, d'envoyer des messages et de regarder le modèle diffuser les tokens en temps réel. Une barre de progression affiche la disponibilité du modèle et la progression du téléchargement, et une barre d'utilisation des tokens indique la quantité de fenêtre de contexte de la session consommée.
La session est créée paresseusement au premier envoi et réutilisée entre les messages jusqu'à ce que vous changiez l'invite système, auquel cas elle est détruite et une nouvelle est créée avec les nouvelles instructions.
Fonctionnalités
- Réponses en streaming — utilise
promptStreaming()afin que les tokens apparaissent dans le chat au fur et à mesure qu'ils sont produits. - Éditeur d'invite système — définissez un rôle ou un comportement persistant qui conditionne chaque réponse.
- Bouton Arrêter — abandonnez une invite en cours avec un
AbortControllersans détruire la session. - Utilisation du contexte en direct — visualise
contextUsagepar rapport àcontextWindowafin que vous puissiez voir quand la conversation est sur le point de déborder. - Disponibilité et progression du téléchargement — affiche l'état
availability()et les événementsdownloadprogresspendant que le modèle est en cours de téléchargement.
Cas d'usage
- Essayer des invites localement — itérez sur les invites système et les modèles few-shot sans payer pour une API cloud.
- Tester la faisabilité de l'IA sur appareil — vérifiez que l'API Prompt est disponible, voyez la taille de la fenêtre de contexte et évaluez la vitesse de réponse sur votre matériel.
- Rédaction sensible à la confidentialité — brainstormez ou reformulez du texte qui ne doit pas être envoyé à un serveur tiers.
Exigences
- Un navigateur qui implémente l'API Prompt. Chrome 138+ l'expose de manière expérimentale ; dans les versions antérieures, vous devrez peut-être l'activer via
chrome://flags/#prompt-api-for-gemini-nanoet avoir le modèle sur appareil téléchargé. - Un contexte sécurisé (HTTPS ou
localhost). - Un appareil qui répond aux exigences matérielles du modèle (espace disque suffisant, RAM et GPU/CPU pris en charge). Sur les appareils non pris en charge,
availability()retourneunavailable. - Bande passante initiale pour télécharger le modèle. Les sessions suivantes réutilisent le modèle mis en cache.
Comment ça marche
- Au montage, l'outil vérifie
typeof window.LanguageModel. S'il est absent, un avertissement remplace l'entrée de chat. LanguageModel.availability()signale l'un des étatsavailable,downloadable,downloadingouunavailable. Le résultat est affiché dans la barre de progression.- La première fois que vous appuyez sur Envoyer, l'outil appelle
LanguageModel.create()avec unmonitorqui diffuse les événementsdownloadprogressvers l'interface utilisateur. Si une invite système est définie, elle est transmise viainitialPrompts: [{ role: "system", content: ... }]. - Le message utilisateur est envoyé via
session.promptStreaming(text, { signal }). LeReadableStream<string>retourné est consommé bloc par bloc et ajouté au message de l'assistant. - Après chaque réponse,
session.contextUsageetsession.contextWindowsont lus et reflétés dans la barre d'utilisation des tokens. - Appuyer sur Arrêter appelle
controller.abort(), ce qui rejette le flux en cours avec uneAbortErrortout en laissant la session active pour l'invite suivante. - Éditer l'invite système invalide la session mise en cache : la session existante est
destroy()-ée et l'envoi suivant crée une nouvelle session avec les instructions mises à jour.
Options expliquées
- Invite système — une instruction libre transmise comme premier message avec le rôle
system. Elle conditionne tous les tours suivants. La laisser vide crée une session sans message système. - Envoyer / Arrêter — Envoyer soumet l'entrée comme message
user. Arrêter abandonne la réponse en streaming sans supprimer les messages antérieurs. - Utilisation des tokens — tokens
used / totalpour la session actuelle. Lorsqueusedapprochetotal, les paires utilisateur/assistant les plus anciennes seront supprimées à la prochaine invite. - État du modèle — lecture combinée de
availability()etdownloadprogress. Pendant que le modèle se télécharge, la barre s'anime et affiche un pourcentage.
Limitations
- L'API Prompt est expérimentale. Les noms de méthodes, les options (par exemple
inputUsagevscontextUsage) et la sémantique des événements peuvent changer entre les versions de Chrome. - La qualité de sortie, la factualité et le suivi des instructions dépendent entièrement du modèle fourni par le navigateur et ne sont pas garantis.
- La fenêtre de contexte est petite par rapport aux LLM hébergés. Les longues conversations déborderont et supprimeront silencieusement les tours les plus anciens.
- L'API n'est pas exposée aux web workers et peut nécessiter une délégation Permissions Policy (
language-model) sur les iframes cross-origin. - Cet outil n'expose intentionnellement pas
temperature,topK, l'utilisation d'outils, les entrées multimodales, la sortie structurée (responseConstraint) ou le clonage de session. Ils font partie de la spécification mais sont exclus du terrain de jeu pour rester concentré sur le chat simple.
FAQ
Pourquoi dit-il que l'API n'est pas prise en charge ?
window.LanguageModel est indéfini dans votre navigateur. Essayez le dernier Chrome sur bureau et, si nécessaire, activez le drapeau API Prompt et attendez que le modèle sur appareil se télécharge via chrome://components.
Pourquoi la première réponse est-elle lente ? Le premier appel peut déclencher un téléchargement de modèle (regardez la barre de progression) et une étape de création de session. Les invites ultérieures réutilisent la même session et commencent à diffuser presque immédiatement.
Mon invite quitte-t-elle l'appareil ? Non. Le modèle s'exécute localement. Votre texte n'est envoyé à aucun serveur par cet outil.
Que se passe-t-il quand le contexte se remplit ?
La session déclenche un événement contextoverflow et supprime les tours non-système les plus anciens pour faire de la place. L'invite système est conservée.
Pourquoi le changement de l'invite système a-t-il effacé le style de réponse en milieu de conversation ? Éditer l'invite système détruit la session actuelle et en crée une nouvelle à l'envoi suivant. La nouvelle session n'a aucun souvenir des tours précédents.