Compila un chatbot local y sin conexión con la API de Prompt

Fecha de publicación: 13 de enero de 2024

Esta es la última parte de una serie de tres partes sobre los chatbots de LLM. En los artículos anteriores, se analizó la potencia de los LLM del cliente y se explicó cómo agregar un chatbot potenciado por WebLLM a una aplicación de listas de tareas pendientes.

Algunos dispositivos más nuevos se envían con modelos de lenguaje extenso y otros modelos de IA directamente en el dispositivo. Chrome propuso integrar APIs de IA integradas en el navegador, con una cantidad de APIs en diferentes etapas de desarrollo. Muchas de estas APIs están pasando por el proceso de estándares para que los sitios web puedan usar la misma implementación y el mismo modelo para lograr el máximo rendimiento de inferencia.

La API de Prompt es una de esas APIs de IA. Para usarlo, se recomienda a los desarrolladores que se registren en el programa de versión preliminar anticipada. Una vez que se acepte, recibirás instrucciones para habilitar la API de Prompt en los navegadores. La API de Prompt está disponible en una prueba de origen para extensiones de Chrome, por lo que puedes probar esta API para usuarios reales de extensiones.

Acceso compartido al modelo

La API de Prompt se comporta de manera similar a WebLLM. Sin embargo, esta vez no hay selección de modelos (debes usar el LLM que se incluye con el navegador). Cuando se habilita la IA integrada, Chrome descarga Gemini Nano en el navegador. Luego, este modelo se puede compartir en varios orígenes y se ejecuta con el rendimiento máximo. Hay un problema de GitHub en el que un desarrollador solicitó agregar una función de selección de modelos.

Cómo configurar la conversación

Puedes iniciar la conversación de mensajes de la misma manera, pero la API de Prompt también ofrece una sintaxis abreviada para especificar la solicitud del sistema. Inicia la sesión del modelo de lenguaje con el método create() en la propiedad 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)}`,
});

Responde tu primera pregunta

En lugar de tener un objeto de configuración para configurar la transmisión, la API de Prompt ofrece dos métodos independientes:

  • prompt() muestra la cadena completa.
  • promptStreaming() muestra un elemento iterable asíncrono. A diferencia de WebLLM, la API de Prompt responde con la respuesta de cadena completa, por lo que no tienes que combinar los resultados por tu cuenta.

Si ningún otro origen activó la descarga del modelo antes, es posible que tu primera solicitud tome mucho tiempo mientras Gemini Nano se descarga en tu navegador. Si el modelo ya está disponible, la inferencia comienza de inmediato.

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

Demostración

Resumen

La integración de LLM en las aplicaciones puede mejorar significativamente la experiencia del usuario. Si bien los servicios en la nube ofrecen modelos de mayor calidad y un alto rendimiento de inferencia, independientemente del dispositivo del usuario, las soluciones integradas en el dispositivo, como WebLLM y la API de Prompt de Chrome, son compatibles con el modo sin conexión, mejoran la privacidad y ahorran costos en comparación con las alternativas basadas en la nube. Prueba estas nuevas APIs y haz que tus aplicaciones web sean más inteligentes.