LLM Apps -101

para JS Devs

Introducción a los Modelos de Lenguaje Grandes (LLMs)

¿Qué son los LLMs?

Los Modelos de Lenguaje Grandes (LLMs por Large Language Models) son modelos de inteligencia artificial diseñados para procesar y generar lenguaje natural. Utilizan arquitecturas avanzadas que se entrenan con grandes cantidades de datos textuales.

LLM Populares:

  • GPT-4: Creado por OpenAI
  • Gemini: Creado por Google
  • Claude: Creado por Anthropic
  • LLama: Creado por Meta (de código abierto)

Proveedores:

Capacidades

Los LLMs tienen capacidades como:

  • Generación de texto: Crear respuestas, historias, y artículos.
  • Resumen de texto: Proporcionar resúmenes concisos.
  • Traducción de idiomas: Traducir entre diferentes lenguas.
  • Respuesta a preguntas: Responder preguntas de forma relevante y precisa.

Cómo Funcionan los LLMs

Redes Neuronales

Los LLMs utilizan redes neuronales profundas para procesar grandes cantidades de datos y aprender patrones complejos del lenguaje. Se basan en una arquitectura conocida como transformers, que revolucionó el campo del procesamiento del lenguaje natural (NLP) al permitir analizar palabras dentro de una secuencia en paralelo, no de manera secuencial que permite al modelo comprender relaciones complejas entre palabras.

Redes Neuronales

Transformers

El transformer utiliza un componente clave llamado mecanismo de atención para centrarse en las partes más relevantes de la entrada al procesar el texto. Como cuando en una oración larga; para comprender el significado, tiendes a recordar las palabras más importantes y cómo se relacionan entre sí, el mecanismo de atención ayuda al modelo a determinar cuáles palabras en el texto tienen más importancia en el contexto específico.

Transformers

Transformers para "aprender"

Los transformers también permiten que los LLMs aprendan dependencias a largo plazo. Esto significa que el modelo puede relacionar información presente al principio de un texto con información que aparece mucho después. Esta capacidad de manejar información contextual es lo que hace que los LLMs sean tan efectivos para tareas complejas de lenguaje, como la traducción, la generación de texto y la respuesta a preguntas.

Mecanismo de Atención

Este permite a los LLMs enfocarse en partes específicas del texto. Por ejemplo, en la frase "El gato que está en el jardín está durmiendo", el mecanismo permite al modelo entender que "gato" y "jardín" son palabras clave que definen quién está haciendo qué y dónde. Esto hace que el modelo genere respuestas coherentes, comprendiendo mejor el contexto en lugar de tratar cada palabra como si fuera independiente de las demás.

Mecanismo de Atención

Datos de Entrenamiento

Los LLMs se entrenan con grandes volúmenes de datos textuales de diversas fuentes, como noticias, literatura y redes sociales, lo que influye en la precisión de sus respuestas y su "conocimiento".

Datos de Entrenamiento

Terminología

Prompt

En el contexto de los Modelos de Lenguaje Grande (LLMs), un "prompt" es la entrada o instrucción que le damos al modelo para obtener una respuesta. Puede ser una pregunta, una frase o un conjunto de indicaciones que el modelo utiliza para generar texto. El diseño del prompt es clave para guiar al modelo a producir la respuesta deseada.

Inferencia

se refiere al proceso en el cual el modelo genera una respuesta a partir de un prompt. Es la etapa en la que el modelo, usando sus conocimientos previos, predice el siguiente fragmento de texto o completa una tarea basada en las indicaciones que se le dan. Básicamente, es cuando el modelo "piensa" y produce resultados en tiempo real a partir de la entrada del usuario.

Tokens

es una unidad de texto que el modelo usa para procesar y entender el lenguaje. Un token puede ser una palabra, parte de una palabra, o incluso un signo de puntuación. Los LLMs dividen el texto en tokens para analizar y generar respuestas. Por ejemplo, la palabra "rápidamente" podría dividirse en dos tokens: "rápida" y "mente". El número de tokens influye en el costo y la velocidad del procesamiento del modelo.

Context Window

la "ventana de contexto" se refiere a la cantidad máxima de tokens que el modelo puede procesar a la vez. Incluye tanto los tokens del prompt como los de la respuesta generada. Esta ventana limita cuánta información previa el modelo puede tener en cuenta para generar una respuesta coherente. Si el texto supera la capacidad de la ventana de contexto, el modelo no podrá "recordar" todos los detalles, lo cual puede afectar la calidad de la respuesta.

Embedding

Es una representación matemática de palabras, frases o incluso conceptos en forma de vectores (listas de números). Estos vectores permiten que el modelo entienda la relación y el significado de las palabras en un espacio numérico. Palabras con significados similares tendrán embeddings que están más cercanos entre sí en este espacio.

Temperature

Es un parámetro que controla el nivel de aleatoriedad en las respuestas generadas por el modelo. Cuando la temperatura es baja (por ejemplo, cercana a 0), el modelo tiende a generar respuestas más predecibles y conservadoras, eligiendo las palabras más probables. Con una temperatura alta (por ejemplo, cercana a 1 o más), el modelo se vuelve más creativo y diverso

Hallucination

Ocurre cuando el modelo genera información incorrecta, inexacta o completamente inventada, aunque suene plausible. Estas respuestas pueden parecer confiables, pero carecen de fundamento en la realidad o en los datos que el modelo ha sido entrenado. Las alucinaciones son uno de los desafíos más grandes en el uso de LLMs, ya que el modelo no tiene la capacidad de distinguir entre información real y fabricada por sí mismo.

RAG

RAG (Retrieval-Augmented Generation): se refiere a una técnica que combina la capacidad de generación de los modelos con un mecanismo de recuperación de información. En lugar de depender solo de la memoria del modelo para generar respuestas, el RAG busca información relevante en bases de datos o documentos para complementar las respuestas generadas.

Fine-tuning

Es el proceso de ajustar un modelo pre-entrenado con datos específicos adicionales para adaptarlo a una tarea particular o a un dominio concreto. Este proceso permite que el modelo mejore su rendimiento en un contexto específico, aprendiendo patrones y detalles relevantes que no estaban en el entrenamiento original.

Casos de Uso para LLMs

Chatbots

Los LLMs se utilizan en chatbots para interactuar con usuarios, responder preguntas frecuentes y proporcionar soporte técnico de manera sofisticada.

Generación de Contenido

Los LLMs pueden crear contenido como artículos, publicaciones para redes sociales y contenido creativo, acelerando la producción y mejorando la comunicación.

Asistencia en Código

Modelos como CodeLLama o Codestral ayudan a los desarrolladores a escribir y depurar código, mejorando la productividad y reduciendo el tiempo de desarrollo.

Herramientas Educativas

Los LLMs actúan como tutores virtuales, proporcionando respuestas detalladas y explicaciones en una amplia gama de temas, útiles para estudiantes y profesionales.

Ingeniería de Prompts

¿Qué es la Ingeniería de Prompts?

La ingeniería de prompts consiste en diseñar entradas específicas para mejorar la calidad de las respuestas del LLM.

Técnicas

  • Few-shot learning: Proporcionar ejemplos en el prompt.
  • Role prompting: Asignar un rol específico al modelo.
  • Uso del contexto: Incluir detalles relevantes en el prompt.

Consideraciones Éticas y de Sesgo

Los LLMs pueden tener sesgos debido a los datos de entrenamiento. Es importante mitigar estos sesgos y utilizar el modelo de manera ética.

Creando Tu Primera Aplicación con LLMs

Usando OpenAI

Instalación

Instalar la biblioteca openai usando npm:

npm install openai

Esto permite interactuar con la API de OpenAI.

Consulta Básica

Ejemplo de una consulta básica con la API de OpenAI en JavaScript:

async function helloOpenAI () {
  try {
    const openai = new OpenAI()
    const result = await openai.chat.completions.create({
      model: 'gpt-4o-mini',
      messages: [
        { 
          role: 'user', 
          content: 'Háblame sobre la comunidad MedellinJS' 
        }
      ]
    })

    console.log(result.choices[0].message.content)
  } catch (error) {
    console.error(`Error: ${error.message}`)
  }
}

Usando Gemini

Instalación

Instalar la biblioteca @google/generative-ai usando npm:

npm install @google/generative-ai

Esto permite interactuar con la API de Gemini.

Consulta Básica

Ejemplo de una consulta básica con la API de Gemini en JavaScript:

async function helloGemini () {
  try {
    const genAI = new GoogleGenerativeAI(process.env.GOOGLE_API_KEY)
    const model = genAI.getGenerativeModel({ 
      model: 'gemini-1.5-flash' 
    })

    const prompt = 'Háblame sobre la comunidad MedellinJS'
    const result = await model.generateContent(prompt)
    console.log(result.response.text())
  } catch (error) {
    console.error(`Error: ${error.message}`)
  }
}

Frameworks disponibles para aplicaciones con LLMs

LangChain

LangChain es un framework para desarrollar aplicaciones que implementan modelos de lenguaje grande (LLMs) para Python y JavaScript enfocado en múltiples casos de uso.

 

https://js.langchain.com/

LLamaIndex

LLamaIndex es un framework para desarrollar aplicaciones que implementan modelos de lenguaje grande (LLMs) para Python y JavaScript principalmente en RAG.

 

https://ts.llamaindex.ai/

Ax

Ax es un framework diseñado para construir aplicaciones de IA con agentes y flujos de trabajo inteligentes, inspirado por el enfoque de "Agentic workflows" y el artículo DSPy de Stanford.

 

https://axllm.dev/

Thanks

LLM apps 101 para JS Devs

By Adrián Estrada

LLM apps 101 para JS Devs

¿Quieres crear aplicaciones con inteligencia artificial? En este workshop de 2 horas, aprenderás los fundamentos para desarrollar tus primeras apps con Large Language Models (LLMs) usando JavaScript. ¡Manos a la obra!

  • 43