Demander un modèle de langage intégré avec l’API Prompt

L’API Prompt est une API web expérimentale qui vous permet d’inviter un petit modèle de langage (SLM) intégré à Microsoft Edge à partir du code JavaScript de votre site web ou de votre extension de navigateur. Utilisez l’API Invite pour générer et analyser du texte ou créer une logique d’application basée sur l’entrée de l’utilisateur, et découvrez des moyens innovants d’intégrer les fonctionnalités d’ingénierie d’invite dans votre application web.

Contenu détaillé :

Disponibilité de l’API Prompt

L’API d’invite est disponible en tant qu’aperçu pour les développeurs dans les canaux Microsoft Edge Canary et Edge Dev, à partir de la version 138.0.3309.2.

L’API d’invite est destinée à vous aider à découvrir les cas d’usage et à comprendre les défis liés aux SLM intégrés. Cette API devrait être remplacée par d’autres API expérimentales pour des tâches spécifiques basées sur l’IA, telles que l’aide à l’écriture et la traduction de texte. Pour en savoir plus sur ces autres API, consultez :

Alternatives et avantages de l’API Prompt

Pour tirer parti des fonctionnalités d’IA dans les sites web et les extensions de navigateur, vous pouvez également utiliser les méthodes suivantes :

L’API d’invite utilise un SLM qui s’exécute sur le même appareil où les entrées et les sorties du modèle sont utilisées (c’est-à-dire localement). Cela présente les avantages suivants par rapport aux solutions basées sur le cloud :

  • Coût réduit : L’utilisation d’un service d’IA cloud n’implique aucun coût.

  • Indépendance du réseau : Au-delà du téléchargement initial du modèle, il n’y a pas de latence réseau lors de l’invite du modèle, et peut également être utilisé lorsque l’appareil est hors ligne.

  • Confidentialité améliorée : Les données entrées dans le modèle ne quittent jamais l’appareil et ne sont pas collectées pour entraîner les modèles d’IA.

L’API d’invite utilise un modèle fourni par Microsoft Edge et intégré au navigateur, qui présente des avantages supplémentaires par rapport aux solutions locales personnalisées telles que celles basées sur WebGPU, WebNN ou WebAssembly :

  • Coût unique partagé : Le modèle fourni par le navigateur est téléchargé la toute première fois que l’API est appelée et partagé sur tous les sites Web qui s’exécutent dans le navigateur, ce qui réduit les coûts réseau pour l’utilisateur et le développeur.

  • Utilisation simplifiée pour les développeurs web : Le modèle intégré peut être exécuté à l’aide d’API web simples et ne nécessite pas d’expertise en IA/ML ni d’infrastructures tierces.

Petits modèles linguistiques intégrés à Microsoft Edge

Dans les canaux Microsoft Edge Canary et Dev, à partir de la version 138.0.3309.2, l’API Prompt utilise le modèle Phi-4-mini, qui est intégré à Microsoft Edge.

À partir de la version 150.0.4070, l’API Prompt peut également être utilisée avec la version préliminaire du modèle Aion-1.0-Instruct, également intégré à Microsoft Edge. Aion-1.0-Instruct est un modèle plus petit, plus rapide et plus efficace que Phi-4-mini, et est pris en charge sur les appareils dotés de GPU moins performants ou sans GPU, via l’inférence CPU. Si la classe de performances de votre appareil n’est pas suffisamment élevée pour prendre en charge Phi-4-mini, vous pouvez tester la version préliminaire du modèle Aion-1.0-Instruct.

Pour en savoir plus sur les deux modèles et sur la façon d’activer Aion-1.0-Instruct, lisez les sections ci-dessous.

Le modèle Phi-4-mini

L’API Prompt vous permet d’interroger Phi-4-mini, qui est intégré à Microsoft Edge. Phi-4-mini est un puissant petit modèle de langage qui excelle dans les tâches textuelles. Pour en savoir plus sur Phi-4-mini et ses fonctionnalités, consultez la carte modèle sur microsoft/Phi-4-mini-instruct.

Clause d’exclusion de responsabilité

Comme d’autres modèles de langage, la famille de modèles Phi peut potentiellement se comporter de manière injuste, peu fiable ou offensante. Pour en savoir plus sur les considérations relatives à l’IA du modèle, consultez Considérations relatives à l’IA responsable.

Configuration matérielle requise

La préversion du développeur d’API d’invite est destinée à fonctionner sur des appareils dotés de fonctionnalités matérielles qui produisent des sorties SLM avec une qualité et une latence prévisibles. L’API d’invite est actuellement limitée aux éléments suivants :

  • Système d’exploitation : Windows 10 ou 11 et macOS 13.3 ou version ultérieure.

  • Stockage : Au moins 20 Go disponibles sur le volume qui contient votre profil Edge. Si le stockage disponible tombe en dessous de 10 Go, le modèle est supprimé pour s’assurer que les autres fonctionnalités du navigateur disposent de suffisamment d’espace pour fonctionner.

  • GPU : 5,5 Go de VRAM ou plus.

  • Réseau : Forfait de données illimité ou connexion illimitée. Le modèle n’est pas téléchargé si vous utilisez une connexion limitée.

Pour case activée si votre appareil prend en charge l’aperçu du développeur de l’API Prompt, consultez Activer l’API Prompt ci-dessous et case activée la classe de performances de votre appareil.

En raison de la nature expérimentale de l’API d’invite, vous pouvez observer des problèmes sur des configurations matérielles spécifiques. Si vous rencontrez des problèmes sur des configurations matérielles spécifiques, faites-nous part de vos commentaires en ouvrant un nouveau problème dans le référentiel MSEdgeExplainers.

Disponibilité du modèle Phi-4-mini

Un téléchargement initial du modèle Phi-4-mini est requis la première fois qu’un site web appelle une API qui nécessite un modèle sur l’appareil. Vous pouvez surveiller le téléchargement du modèle Phi-4-mini à l’aide de l’option de surveillance lors de la création d’une nouvelle session d’API d’invite. Pour en savoir plus, consultez Suivre la progression du téléchargement du modèle, ci-dessous.

Modèle Aion-1.0-Instruct

Dans Microsoft Edge Canary ou Edge Dev, à partir de la version 150.0.4070, l’API d’invite peut également être utilisée avec la version préliminaire du modèle Aion-1.0-Instruct, intégré à Microsoft Edge.

Ce modèle Aion-1.0-Instruct est nettement plus petit, plus rapide et plus efficace que Phi-4-mini, et est pris en charge sur les appareils dotés de GPU moins performants ou sans GPU, via l’inférence CPU.

Aion-1.0-Instruct devrait être disponible en tant que modèle open source en juillet 2026.

Activer Aion-1.0-Instruct pour l’API d’invite

Par défaut, l’API d’invite utilise le modèle Phi-4-mini. Pour utiliser Aion-1.0-Instruct dans Microsoft Edge Canary ou Edge Dev, activez l’indicateur Activer le modèle de langue de la version préliminaire sur l’appareil, comme décrit dans les étapes ci-dessous. Lorsque cet indicateur est activé, Aion-1.0-Instruct remplace Phi-4-mini en tant que modèle par défaut pour l’API d’invite.

  1. Assurez-vous d’utiliser la dernière version de Edge Canary ou Edge Dev (version 150.0.4070 ou ultérieure). Consultez Devenir un Microsoft Edge Insider.

  2. Dans Edge Canary ou Edge Dev, ouvrez un nouvel onglet ou une nouvelle fenêtre et accédez à edge://flags.

  3. Dans la zone de recherche en haut de la page, entrez Activer le modèle de langue de l’appareil de préversion.

  4. Dans la liste déroulante Activer le modèle de langue de la version préliminaire sur l’appareil , sélectionnez Activé, puis cliquez sur le bouton Redémarrer :

    Page Indicateurs montrant l’indicateur de modèle de langue de la version préliminaire sur l’appareil

  5. Pour vérifier que la case activée Aion-1.0-Instruct est utilisé comme modèle de langue sur l’appareil, accédez à edge://on-device-internals, cliquez sur État du modèle et cochez la case activée que le nom du modèle est défini sur Aion-1.0-Instruct.

Clause d’exclusion de responsabilité

Le modèle Aion-1.0-Instruct est disponible dans Microsoft Edge pour les premiers tests et commentaires des développeurs. Outre les considérations relatives à l’IA responsable répertoriées ci-dessus, notez que, compte tenu de son état en préversion, les comportements et les fonctionnalités du modèle sont susceptibles de changer.

Disponibilité du modèle Aion-1.0-Instruct

Un téléchargement initial du modèle Aion-1.0-Instruct est requis la première fois qu’un site web appelle une API qui nécessite un modèle sur l’appareil. Vous pouvez surveiller le téléchargement du modèle Aion-1.0-Instruct à l’aide de l’option de surveillance lors de la création d’une nouvelle session Prompt API. Pour en savoir plus, consultez Suivre la progression du téléchargement du modèle, ci-dessous.

Activer l’API d’invite

Pour utiliser l’API Prompt dans Microsoft Edge :

  1. Vérifiez que vous utilisez la dernière version de Microsoft Edge Canary ou Edge Dev (version 138.0.3309.2 ou ultérieure). Consultez Devenir un Microsoft Edge Insider.

  2. Dans Edge Canary ou Edge Dev, ouvrez un nouvel onglet ou une nouvelle fenêtre et accédez à edge://flags/.

  3. Dans la zone de recherche, en haut de la page, entrez API d’invite pour le modèle de langue sur l’appareil.

    La page est filtrée pour afficher l’indicateur correspondant.

  4. Sous Demander l’API pour le modèle de langue sur l’appareil, sélectionnez Activé :

    Page Indicateurs du navigateur

  5. Si vous le souhaitez, pour enregistrer localement les informations qui peuvent être utiles pour les problèmes de débogage, activez également l’indicateur Activer sur l’appareil les journaux de débogage du modèle IA .

  6. Redémarrez Edge Canary ou Edge Dev.

  7. Pour case activée si votre appareil répond à la configuration matérielle requise pour l’aperçu développeur de l’API d’invite, ouvrez un nouvel onglet, accédez à edge://on-device-internals, puis case activée la valeur de classe de performances de l’appareil.

    Si la classe de performances de votre appareil est Élevée ou supérieure, l’API d’invite doit être prise en charge sur votre appareil.

    Si la classe de performances de votre appareil est Moyenne ou Faible, l’API d’invite est uniquement prise en charge via la préversion du modèle Aion-1.0-Instruct, disponible à partir de la version Edge 150.0.4070. Pour tester le modèle Aion-1.0-Instruct, consultez Activer Aion-1.0-Instruct pour l’API Invite, ci-dessus.

    Si vous remarquez des problèmes avec ces modèles, créez un problème dans le dépôt MSEdgeExplainers.

Voir un exemple fonctionnel

Pour voir l’API d’invite en action et examiner le code existant qui utilise l’API :

  1. Activez l’API d’invite, comme décrit ci-dessus.

  2. Dans Edge Canary ou Edge Dev, ouvrez un onglet ou une fenêtre et accédez au terrain de jeu API Prompt.

    Dans la navigation des playgrounds IA intégrés à gauche, Demander est sélectionné.

  3. Dans la bannière d’informations en haut, cochez la case status : elle indique initialement Téléchargement du modèle, veuillez patienter :

    Indicateur d’état indiquant la progression du téléchargement du modèle

    Une fois le modèle téléchargé, la bannière d’informations indique API et le modèle prêts, indiquant que l’API et le modèle peuvent être utilisés :

    Indicateur d’état indiquant que l’API et le modèle sont prêts

    Si le téléchargement du modèle ne démarre pas, redémarrez Microsoft Edge et réessayez.

    L’API d’invite est uniquement prise en charge sur les appareils qui répondent à certaines configurations matérielles requises. Pour plus d’informations, consultez la section Configuration matérielle requise ci-dessus.

  4. Vous pouvez également modifier les valeurs des paramètres d’invite, par exemple :

    • Prompt de l’utilisateur
    • Invite système
    • Schéma de contrainte de réponse
    • > Paramètres supplémentairesInstructions d’invite N-shot
  5. Cliquez sur le bouton Inviter , en bas de la page.

    La réponse est générée dans la section de réponse de la page :

    Page de démonstration d’invite avec les paramètres et un bouton d’invite

  6. Pour arrêter de générer la réponse, à tout moment, cliquez sur le bouton Arrêter .

Voir aussi :

  • /built-in-ai/ : code source et fichier Lisez-moi pour les terrains de jeu IA intégrés, y compris le terrain de jeu API Prompt.

Utiliser l’API d’invite

Vérifier si l’API est activée

Avant d’utiliser l’API dans le code de votre site web ou de votre extension, case activée que l’API est activée en testant la présence de l’objet LanguageModel :

if (!LanguageModel) {
  // The Prompt API is not available.
} else {
  // The Prompt API is available.
}

Vérifier si le modèle peut être utilisé

L’API d’invite ne peut être utilisée que si l’appareil prend en charge l’exécution du modèle, et une fois que le modèle de langage et l’environnement d’exécution du modèle ont été téléchargés par Microsoft Edge.

Pour case activée si l’API peut être utilisée, utilisez la méthode :LanguageModel.availability()

const availability = await LanguageModel.availability();

if (availability == "unavailable") {
  // The model is not available.
}

if (availability == "downloadable" || availability == "downloading") {
  // The model can be used, but it needs to be downloaded first.
}

if (availability == "available") {
  // The model is available and can be used.
}

Créer une session

La création d’une session indique au navigateur de charger le modèle de langage en mémoire afin qu’il puisse être utilisé. Avant de pouvoir demander le modèle de langage, créez une session à l’aide de la méthode :create()

// Create a LanguageModel session.
const session = await LanguageModel.create();

Pour personnaliser la session de modèle, vous pouvez transmettre des options à la create() méthode :

// Create a LanguageModel session with options.
const session = await LanguageModel.create(options);

Les options disponibles sont les suivantes :

  • monitor, pour suivre la progression du téléchargement du modèle.

  • initialPrompts, pour donner au modèle un contexte sur les invites qui seront envoyées au modèle et pour établir un modèle d’interactions utilisateur/assistant que le modèle doit suivre pour les invites futures.

Ces options sont documentées ci-dessous.

Surveiller la progression du téléchargement du modèle

Vous pouvez suivre la progression du téléchargement du modèle en utilisant l’option monitor . Ceci est utile lorsque le modèle n’a pas encore été entièrement téléchargé sur l’appareil où il sera utilisé, pour informer les utilisateurs de votre site web qu’ils doivent attendre.

// Create a LanguageModel session with the monitor option to monitor the model
// download.
const session = await LanguageModel.create({
  monitor: m => {
    // Use the monitor object argument to add an listener for the
    // downloadprogress event.
    m.addEventListener("downloadprogress", event => {
      // The event is an object with the loaded and total properties.
      if (event.loaded == event.total) {
        // The model is fully downloaded.
      } else {
        // The model is still downloading.
        const percentageComplete = (event.loaded / event.total) * 100;
      }
    });
  }
});
Fournir au modèle une invite système

Pour définir une invite système, qui est un moyen de donner au modèle des instructions à utiliser lors de la génération de texte en réponse à une invite, utilisez l’option initialPrompts .

L’invite système que vous fournissez lors de la création d’une session est conservée pendant toute l’existence de la session, même si la fenêtre contextuelle déborde en raison d’un trop grand nombre d’invites.

// Create a LanguageModel session with a system prompt.
const session = await LanguageModel.create({
  initialPrompts: [{
    role: "system",
    content: "You are a helpful assistant."
  }]
});

Placer l’invite n’importe { role: "system", content: "You are a helpful assistant." } où ailleurs qu’en position 0 dans initialPrompts rejette avec un TypeError.

Invite N-shot avec initialPrompts

L’option initialPrompts vous permet également de fournir des exemples d’interactions utilisateur/assistant que vous souhaitez que le modèle continue à utiliser lorsque vous y êtes invité.

Cette technique est également connue sous le nom d’invite N-shot et est utile pour rendre les réponses générées par le modèle plus déterministes.

// Create a LanguageModel session with multiple initial prompts, for N-shot
// prompting.
const session = await LanguageModel.create({
  initialPrompts: [
    { role: "system", content: "Classify the following product reviews as either OK or Not OK." },
    { role: "user", content: "Great shoes! I was surprised at how comfortable these boots are for the price. They fit well and are very lightweight." },
    { role: "assistant", content: "OK" },
    { role: "user", content: "Terrible product. The manufacturer must be completely incompetent." },
    { role: "assistant", content: "Not OK" },
    { role: "user", content: "Could be better. Nice quality overall, but for the price I was expecting something more waterproof" },
    { role: "assistant", content: "OK" }
  ]
});

Clonez une session pour recommencer la conversation avec les mêmes options

Clonez une session existante pour inviter le modèle sans la connaissance des interactions précédentes, mais avec les mêmes options de session.

Le clonage d’une session est utile lorsque vous souhaitez utiliser les options d’une session précédente, mais sans influencer le modèle avec les réponses précédentes.

// Create a first LanguageModel session.
const firstSession = await LanguageModel.create({
  initialPrompts: [
    role: "system",
    content: "You are a helpful assistant."
  ]
});

// Later, create a new session by cloning the first session to start a new
// conversation with the model, but preserve the first session's settings.
const secondSession = await firstSession.clone();

Demander le modèle

Pour demander le modèle, après avoir créé une session de modèle, utilisez les session.prompt() méthodes ou session.promptStreaming() .

Attendez la réponse finale

La prompt méthode retourne une promesse qui se résout une fois que le modèle a fini de générer du texte en réponse à votre invite :

// Create a LanguageModel session.
const session = await LanguageModel.create();

// Prompt the model and wait for the response to be generated.
const result = await session.prompt(promptString);

// Use the generated text.
console.log(result);
Afficher les jetons au fur et à mesure qu’ils sont générés

La promptStreaming méthode renvoie immédiatement un objet de flux. Utilisez le flux pour afficher les jetons de réponse au fur et à mesure de leur génération :

// Create a LanguageModel session.
 const session = await LanguageModel.create();

// Prompt the model.
 const stream = session.promptStreaming(myPromptString);

// Use the stream object to display tokens that are generated by the model, as
// they are being generated.
for await (const chunk of stream) {
  console.log(chunk);
}

Vous pouvez appeler les prompt méthodes et promptStreaming plusieurs fois au sein du même objet de session pour continuer à générer du texte basé sur des interactions précédentes avec le modèle au sein de cette session.

Contraindre la sortie du modèle à l’aide d’un schéma JSON ou d’une expression régulière

Pour rendre le format des réponses du modèle plus déterministe et plus facile à utiliser de manière programmatique, utilisez l’option responseConstraint lorsque vous demandez le modèle.

L’option responseConstraint accepte un schéma JSON ou une expression régulière :

  • Pour que le modèle réponde avec un objet JSON à chaînes qui suit un schéma donné, définissez responseConstraint le schéma JSON que vous souhaitez utiliser.

  • Pour que le modèle réponde avec une chaîne qui correspond à une expression régulière, définissez responseConstraint cette expression régulière.

L’exemple suivant montre comment faire en sorte que le modèle réponde à une invite avec un objet JSON qui suit un schéma donné :

// Create a LanguageModel session.
const session = await LanguageModel.create();

// Define a JSON schema for the Prompt API to constrain the generated response.
const schema = {
  "type": "object",
  "required": ["sentiment", "confidence"],
  "additionalProperties": false,
  "properties": {
    "sentiment": {
      "type": "string",
      "enum": ["positive", "negative", "neutral"],
      "description": "The sentiment classification of the input text."
    },
    "confidence": {
      "type": "number",
      "minimum": 0,
      "maximum": 1,
      "description": "A confidence score indicating certainty of the sentiment classification."
    }
  }
}
;

// Prompt the model, by providing a system prompt and the JSON schema in the
// responseConstraints option.
const response = await session.prompt(
  "Ordered a Philly cheesesteak, and it was not edible. Their milkshake is just milk with cheap syrup. Horrible place!",
  {
    initialPrompts: [
      {
        role: "system",
        content: "You are an AI model designed to analyze the sentiment of user-provided text. Your goal is to classify the sentiment into predefined categories and provide a confidence score. Follow these guidelines:\n\n- Identify whether the sentiment is positive, negative, or neutral.\n- Provide a confidence score (0-1) reflecting the certainty of the classification.\n- Ensure the sentiment classification is contextually accurate.\n- If the sentiment is unclear or highly ambiguous, default to neutral.\n\nYour responses should be structured and concise, adhering to the defined output schema."
      },
    ],
    responseConstraint: schema
  }
);

L’exécution du code ci-dessus retourne une réponse qui contient un objet JSON à séquences, tel que :

{"sentiment": "negative", "confidence": 0.95}

Vous pouvez ensuite utiliser la réponse dans votre logique de code en l’analysant à l’aide de la JSON.parse() fonction :

// Parse the JSON string generated by the model and extract the sentiment and
// confidence values.
const { sentiment, confidence } = JSON.parse(response);

// Use the values.
console.log(`Sentiment: ${sentiment}`);
console.log(`Confidence: ${confidence}`);
Envoyer plusieurs messages par invite

En plus des chaînes, les prompt méthodes et promptStreaming acceptent également un tableau d’objets utilisé pour envoyer plusieurs messages avec des rôles personnalisés. Les objets que vous envoyez doivent être de la forme { role, content }, où role est soit user ou assistant, et content est le message.

Par exemple, pour fournir plusieurs messages utilisateur et un message d’assistant dans la même invite :

// Create a LanguageModel session.
const session = await LanguageModel.create();

// Prompt the model by sending multiple messages at once.
const result = await session.prompt([
  { role: "user", content: "First user message" },
  { role: "user", content: "Second user message" },
  { role: "assistant", content: "The assistant message" }
]);

Arrêter la génération de texte

Pour abandonner une invite avant la résolution de la promesse renvoyée par session.prompt() ou avant la fin du flux retourné par session.promptStreaming() , utilisez un AbortController signal :

// Create a LanguageModel session.
const session = await LanguageModel.create();

// Create an AbortController object.
const abortController = new AbortController();

// Prompt the model by passing the AbortController object by using the signal
// option.
const stream = session.promptStreaming(myPromptString , {
  signal: abortController.signal
});

// Later, perhaps when the user presses a "Stop" button, call the abort()
// method on the AbortController object to stop generating text.
abortController.abort();

Détruire une session

Détruisez la session pour faire savoir au navigateur que vous n’avez plus besoin du modèle de langage, afin que le modèle puisse être déchargé de la mémoire.

Vous pouvez détruire une session de deux manières différentes :

  • En utilisant la destroy() méthode.
  • En utilisant un AbortControllerfichier .
Détruire une session en utilisant la méthode destroy()
// Create a LanguageModel session.
const session = await LanguageModel.create();

// Later, destroy the session by using the destroy method.
session.destroy();
Détruire une session à l’aide d’un AbortController
// Create an AbortController object.
const controller = new AbortController();

// Create a LanguageModel session and pass the AbortController object by using
// the signal option.
const session = await LanguageModel.create({ signal: controller.signal });

// Later, perhaps when the user interacts with the UI, destroy the session by
// calling the abort() function of the AbortController object.
controller.abort();

Envoyer des commentaires

L’aperçu du développeur de l’API d’invite est destiné à vous aider à découvrir les cas d’usage des modèles de langage fournis par le navigateur.

Nous souhaitons en savoir plus sur :

  • Plage de scénarios pour lesquels vous envisagez d’utiliser l’API d’invite.
  • Tout problème avec l’API d’invite.
  • Tout problème avec les modèles de langage.
  • Si de nouvelles API spécifiques aux tâches seraient utiles.

Pour envoyer des commentaires sur vos scénarios et les tâches que vous souhaitez accomplir, ajoutez un commentaire au problème de commentaires de l’API d’invite.

Si vous remarquez des problèmes lors de l’utilisation de l’API à la place, signalez-les sur le dépôt.

Vous pouvez également contribuer à la discussion sur la conception de l’API Prompt au dépôt du groupe de travail Web Machine Learning du W3C.

Voir aussi