Fecha de publicación: 13 de enero de 2024
Esta es la primera de una serie de tres partes sobre los LLM y los chatbots. La parte 2 sobre cómo compilar un chatbot con WebLLM y la parte 3 sobre cómo usar la API de Prompt ya están disponibles.
Los modelos de lenguaje grandes (LLM) se están convirtiendo en un componente básico importante en el desarrollo de software: los LLM son adecuados para generar y procesar texto en lenguaje natural, lo que permite casos de uso como la extracción de datos, el resumen o la facilitación de diálogos con datos del usuario.
En esta serie, analizo los beneficios y las desventajas de los LLM integrados en el dispositivo y te guío para agregar capacidades de chatbot a una aplicación existente con dos enfoques locales y compatibles con la conexión sin conexión: el entorno de ejecución de LLM basado en la Web, WebLLM, y la API experimental de Prompt de Chrome.
Posibles casos de uso
Crearemos un chatbot basado en una aplicación clásica de listas de tareas pendientes. El código fuente de cada paso está disponible en GitHub. Los usuarios pueden agregar tareas pendientes nuevas, marcarlas como completadas y borrarlas.
Te recomendamos que agregues una función para que los usuarios obtengan más información sobre los datos de la lista de tareas pendientes o realicen funciones adicionales. Una función de chatbot puede permitir a los usuarios hacer lo siguiente:
- Pregunta sobre la cantidad de tareas abiertas.
- Identifica tareas duplicadas o muy similares.
- Categoriza las tareas pendientes en grupos.
- Recibir recomendaciones de tareas nuevas según las tareas completadas
- Traduce tareas a diferentes idiomas.
- Exporta la lista de tareas pendientes en formato XML.
Estos son solo algunos ejemplos de tareas que pueden manejar los LLM.
¿Qué son los modelos grandes de lenguaje?
Los LLM son redes neuronales artificiales que procesan y generan texto en lenguaje natural. La mayoría de los LLM actuales se basan en la arquitectura de Transformer, desarrollada en Google. Algunos ejemplos son los modelos Gemini y Gemma de Google, la serie de modelos GPT de OpenAI y los modelos de código abierto, como LLaMa de Meta AI y Mistral de Mistral AI.
Gracias a su entrenamiento con grandes cantidades de datos, los LLMs poseen un rango impresionante de capacidades. Comprenden varios idiomas, tienen conocimientos sobre trivia, pueden traducir entre idiomas o generar código de programación. El grado de estas capacidades puede variar significativamente según el tamaño del modelo, como se explica en Información sobre los tamaños de LLM.
Los LLM generan un cambio de paradigma en la arquitectura de software, ya que el lenguaje natural ahora se convierte en una característica fundamental de la ingeniería de software. En lugar de llamar a las APIs con interfaces bien definidas, es suficiente con expresar el intent en lenguaje natural en una llamada instrucción.
Limitaciones de los LLM
Los LLM también tienen ciertas limitaciones:
- Comportamiento no determinístico: Los LLM pueden producir respuestas variadas y, en ocasiones, incluso contradictorias a la misma instrucción, ya que sus resultados dependen de modelos probabilísticos en lugar de reglas fijas.
- Alucinaciones: A veces, estos modelos pueden generar información incorrecta o que no tiene sentido, ya que se basan en patrones aprendidos en lugar de la exactitud fáctica.
- Inyecciones de instrucciones: Los LLM pueden ser susceptibles a ataques de inyección de instrucciones, en los que los usuarios crean instrucciones de entrada que manipulan el modelo para que se desvíe de su función prevista o produzca resultados no deseados.
Por lo tanto, los usuarios deben verificar los resultados que generan los LLM antes de realizar cualquier acción con consecuencias.
Cuando se trata de LLM en el dispositivo, se debe tener en cuenta su tamaño. Alcanzan tamaños de archivo de varios gigabytes y deben descargarse en el dispositivo del usuario antes del primer uso. Los modelos más pequeños suelen obtener respuestas de menor calidad, sobre todo en comparación con los modelos respaldados por la nube.
Elige soluciones locales
Tu primer instinto para integrar un LLM en tu aplicación web puede ser usar un proveedor de servicios en la nube. Muchos proveedores ofrecen LLM de alta calidad, algunos de los cuales son exclusivos de proveedores específicos. Los LLM basados en la nube proporcionan una velocidad de inferencia rápida a un costo razonable, que generalmente se calcula por token procesado.
En cambio, las soluciones locales presentan ventajas convincentes. Dado que funcionan directamente en el dispositivo del usuario, los LLM alojados de forma local proporcionan tiempos de respuesta más confiables, siguen siendo accesibles incluso cuando el usuario no tiene conexión y no requieren que los desarrolladores paguen tarifas de suscripción ni otros costos continuos. En particular, pueden mejorar significativamente la seguridad del usuario. Si mantienes todas las actividades en el dispositivo, puedes evitar transmitir información de identificación personal (PII) a proveedores o regiones externos.
Demostraciones
Puedes ver las demostraciones terminadas con capacidades de chatbot antes de aprender a crearlas por tu cuenta.
- Solicitud de tareas pendientes original
- Aplicación de tareas pendientes con WebLLM
- Aplicación de tareas pendientes con la API de Prompt
- Fuente en GitHub
A continuación, usarás WebLLM para agregar un chatbot a la aplicación de listas de tareas pendientes.