Créer un chatbot local et compatible avec le mode hors connexion avec l'API Prompt

Publié le 13 janvier 2025

Il s'agit du dernier volet d'une série en trois parties sur les chatbots LLM. Les articles précédents ont abordé la puissance des LLM côté client et vous ont expliqué comment ajouter un chatbot basé sur WebLLM à une application de liste de tâches.

Certains appareils récents sont livrés avec des grands modèles de langage et d'autres modèles d'IA directement sur l'appareil. Chrome a proposé d'intégrer des API d'IA intégrées au navigateur, avec un certain nombre d'API à différents stades de développement. Beaucoup de ces API sont en cours de normalisation, afin que les sites Web puissent utiliser la même implémentation et le même modèle pour obtenir des performances d'inférence maximales.

L'API Prompt est l'une de ces API d'IA. Pour l'utiliser, les développeurs sont invités à s'inscrire au programme Early Preview. Une fois acceptés, vous recevrez des instructions sur l'activation de l'API Prompt dans les navigateurs. L'API Prompt est disponible dans un essai Origin Trial pour les extensions Chrome, vous pouvez donc tester cette API pour les utilisateurs d'extensions réels.

Accès partagé aux modèles

L'API Prompt se comporte de la même manière que WebLLM. Toutefois, il n'y a pas de sélection de modèle cette fois-ci (vous devez utiliser le LLM fourni avec le navigateur). Lorsque vous activez l'IA intégrée, Chrome télécharge un modèle de fondation dans le navigateur. Ce modèle peut ensuite être partagé entre plusieurs origines et s'exécuter avec des performances maximales. Un développeur a demandé à ajouter une fonctionnalité de sélection de modèle dans un problème GitHub.

Configurer la conversation

Vous pouvez démarrer la conversation par message exactement de la même manière, mais l'API Prompt propose également une syntaxe abrégée pour spécifier le prompt système. Démarrez la session de modèle de langage à l'aide de la méthode create() sur l'interface LanguageModel :

const session = await LanguageModel.create({
  initialPrompt: [
    {
      type: 'system',
      content: `You are a helpful assistant. You will answer questions related
        to the user's to-do list. Decline all other requests not related to the
         user's todos. This is the to-do list in JSON: ${JSON.stringify(todos)}`,
    },
  ],
});

Répondre à votre première question

Au lieu d'avoir un objet de configuration pour configurer le streaming, l'API Prompt propose deux méthodes distinctes :

  • prompt() renvoie la chaîne complète
  • promptStreaming() renvoie un itérable asynchrone. Contrairement à WebLLM, l'API Prompt répond avec la réponse de chaîne complète. Vous n'avez donc pas besoin de combiner vous-même les résultats.

Si aucune autre origine n'a déclenché le téléchargement du modèle auparavant, votre première requête peut prendre beaucoup de temps pendant que le modèle est téléchargé dans votre navigateur. Si le modèle est déjà disponible, l'inférence démarre immédiatement.

const stream = session.promptStreaming("How many open todos do I have?");
for await (const reply of stream) {
  console.log(reply);
}

Démo

Résumé

L'intégration de LLM dans les applications peut améliorer considérablement l'expérience utilisateur. Bien que les services cloud proposent des modèles de meilleure qualité et des performances d'inférence élevées, quel que soit l'appareil de l'utilisateur, les solutions sur l'appareil, telles que WebLLM et l'API Prompt de Chrome, sont utilisables hors connexion, améliorent la confidentialité et permettent de réduire les coûts par rapport aux alternatives basées sur le cloud. Essayez ces nouvelles API et rendez vos applications Web plus intelligentes.