Publié le 13 janvier 2024
Il s'agit de la dernière partie 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 WebLLM à une application de liste de tâches.
Certains appareils récents sont livrés avec de 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. De nombreuses 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 en est une. Pour l'utiliser, nous encourageons les développeurs à s'inscrire au programme Preview anticipé. Une fois votre demande acceptée, vous recevrez des instructions pour activer l'API Prompt dans les navigateurs. L'API Prompt est disponible dans une phase d'évaluation pour les extensions Chrome. Vous pouvez donc la tester auprès de vrais utilisateurs d'extensions.
Accès partagé au modèle
L'API Prompt se comporte de manière similaire à WebLLM. Toutefois, il n'y a pas de sélection de modèle cette fois (vous devez utiliser le LLM fourni avec le navigateur). Lorsque vous activez l'IA intégrée, Chrome télécharge Gemini Nano 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 une demande 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 l'invite système. Démarrez la session du modèle de langage à l'aide de la méthode create()
sur la propriété self.ai.languageModel
:
const session = await self.ai.languageModel.create({
systemPrompt: `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'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 les résultats vous-même.
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 Gemini Nano est téléchargé dans votre navigateur. Si le modèle est déjà disponible, l'inférence commence 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 considérablement améliorer l'expérience utilisateur. Alors que les services cloud offrent 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 compatibles avec le mode hors connexion, améliorent la confidentialité et réduisent les coûts par rapport aux alternatives cloud. Essayez ces nouvelles API et améliorez l'intelligence de vos applications Web.