jueves, 4 de julio de 2024

DSPy: Framework para optimizar algorítmicamente los prompts



Estoy trabajando con DSPy y puedo afirmar que es una maravilla.

Este framework ha mejorado significativamente la calidad de las aplicaciones de LLMs, facilitando la creación de cadenas de prompts de alta calidad de manera automática vía programación.

DSPy es un framework para optimizar algorítmicamente los prompts y los pesos de modelos de lenguaje (LM), especialmente cuando los LM se utilizan una o más veces dentro de un pipeline.

El artículo que les presento es "A Guide to Large Language Model Abstractions", escrita por expertos de Carnegie Mellon, Stanford, y Berkeley. El artículo presenta el Language Model System Interface Model (LMSI), una nueva abstracción de siete capas inspirada en el modelo OSI.

Este modelo organiza y estratifica los frameworks orientados en trabajar con los modelos de lenguaje (como LangChain, LlamaIndex, etc) en capas. Las capas se ordenan desde la más alta hasta la más baja en términos de nivel de abstracción:
7. Capa de Red Neuronal: Acceso directo a la arquitectura y pesos del LM.
6. Capa de Prompting: Entrada de texto a través de API u otras interfaces.
5. Capa de Restricción de Prompting: Imposición de reglas o estructuras en los prompts.
4. Capa de Control: Soporte de flujo de control como condicionales y bucles.
3. Capa de Optimización: Optimización de algún aspecto del LM o del sistema de LMs basado en una métrica.
2. Capa de Aplicación: Bibliotecas y código de aplicación que proporcionan soluciones configurables.
1. Capa de Usuario: Interacción directa con el usuario para realizar tareas impulsadas por LM.

Por ejemplo, al observar la imagen, LangChain incide en las capas: Capa de Prompting, Capa de Restricción de Prompting, Capa de Control y Capa de Aplicación.

El framework DSPY destaca especialmente en la capa de optimización, siendo el único mencionado que optimiza automáticamente las cadenas de prompts, mejorando significativamente la calidad de las aplicaciones de LLMs. Esto es algo realmente impresionante, optimiza el promting.

Para aquellos interesados en el futuro de la programación y el procesamiento de lenguaje natural, esta guía proporciona una estructura clara y comprensible para el desarrollo y la optimización de frameworks de LMs.

miércoles, 22 de mayo de 2024

Crea tu propio asistente educativa con IA: Optimizando LLMs para tareas específicas, LLM Chains & Chain-of-Thought Prompting (parte 3)




En nuestro viaje por desbloquear todo el potencial de los Grandes Modelos de Lenguaje (LLMs), hemos llegado a un punto emocionante: el Prompt Engineering avanzado. En esta entrega, exploraremos dos técnicas poderosas que nos permitirán optimizar los LLMs para tareas específicas y obtener resultados sorprendentes.

La primera técnica que abordaremos son las "Cadenas de LLMs" (LLM Chains). Esta estrategia consiste en descomponer problemas complejos en una serie de tareas más pequeñas y especializadas, cada una manejada por un LLM específico. Al encadenar estas "Cadenas" de forma inteligente, podemos aprovechar al máximo las capacidades de los LLMs y obtener soluciones más precisas y eficientes.

Durante el video, les mostraré cómo construir estas "Cadenas" utilizando la herramienta Flowise. Verán cómo configurar un LLM (en este caso, LLaMa 3) y un prompt template para crear la primera "Cadena" encargada de clasificar las entradas de texto en categorías predefinidas. Luego, encadenaremos esta salida con otra "Cadena" que procesará y formateará la respuesta en un formato estructurado, como JSON.

Pero no nos detendremos ahí. La segunda técnica que exploraremos es el "Chain-of-Thought Prompting", una estrategia revolucionaria que guía a los LLMs a través de un razonamiento paso a paso. Al incorporar esta técnica en nuestros prompts, los LLMs serán capaces de desglosar su proceso de pensamiento, mejorando significativamente la coherencia y estructura de las salidas.

Verán cómo modificar nuestros prompts para incluir instrucciones que fomenten este razonamiento paso a paso, y observarán los impresionantes resultados en tiempo real. Los LLMs ya no solo darán respuestas, sino que también compartirán su lógica interna, lo que nos permitirá comprender mejor sus capacidades y limitaciones.

A lo largo de este emocionante viaje, también exploraremos el fascinante mundo del Prompt Engineering, descifrando los secretos para obtener el máximo rendimiento de nuestros LLMs. Aprenderemos técnicas avanzadas de ingeniería de prompts, lo que nos permitirá ajustar y optimizar los LLMs para tareas específicas con mayor precisión.


Contenido del video:

  1. Introducción a la creación de una asistente educativa con cadenas de pensamiento y modelos de lenguaje.
  2. Creación de un chatbot utilizando el modelo de lenguaje Ollama y la herramienta Flowise.
  3. Uso de cadenas de pensamiento para analizar y responder a preguntas.
  4. Creación de un encadenamiento de modelos de lenguaje para realizar tareas específicas.
  5. Utilización de un parcer de salida para obtener una respuesta estructurada JSON
  6. Ejemplos de uso de la asistente educativa para responder a preguntas y realizar tareas.
  7. Conclusión y próxima entrega.

Recursos:


Les comparto el video:




viernes, 17 de mayo de 2024

Crea tu propio asistente educativa con IA: Llama3 corriendo en Web usando Flowise (parte2)

¡Hola amigos! Bienvenidos a la segunda parte de nuestra serie sobre la creación de un asistente educativo. En la primera parte, configuramos un asistente utilizando Ollama y el modelo Llama 3 localmente mediante la terminal. Ahora, haremos lo mismo, pero utilizando una página web. La idea es que los niños puedan practicar las capitales de los países de América de una manera más atractiva y divertida.

Objetivo del Proyecto

El objetivo es crear un entorno en el que los niños puedan interactuar con el asistente educativo a través de una página web similar a ChatGPT. Queremos que los niños jueguen a preguntas y respuestas sobre las capitales de los países y reciban hechos interesantes si responden correctamente. Esto es mucho más amigable y atractivo que utilizar una terminal.

Preparativos

Para esta segunda parte, hemos creado el repositorio:

https://github.com/pedro-aaron/ollama--with-llama3--flowise-dockerized


Aquí se encuentra la guía de instalación y cómo correr el proyecto. También te comparto un enlace a nuestro canal de Telegram, "Minera de Datos", donde discutimos temas relacionados con la minería de datos, machine learning, modelos de lenguaje, etc.

https://t.me/mineriadedatos

El proyecto de Flowise usado, está en el repositorio en:

https://github.com/pedro-aaron/ollama--with-llama3--flowise-dockerized/blob/main/AsistenteEducativa-llama3%20Chatflow.json


Instalación de Ollama y Llama 3 con Docker

En esta ocasión, utilizaremos Docker para instalar Ollama con Llama 3. Esto nos permitirá contenerizar nuestro proyecto, facilitando la limpieza y gestión del entorno. Los pasos generales son los siguientes:

  1. Preparar el Entorno: Descargar el repositorio y abrir los archivos en Visual Studio Code.
  2. Configurar Docker: Utilizar el archivo docker-compose.yml para configurar los contenedores necesarios. Esto incluye Ollama y Flowise, un nuevo componente que facilita la creación de flujos de trabajo con modelos de lenguaje.
  3. Instalar los Modelos: Descargar e instalar los modelos necesarios dentro de Docker. Para Llama 3, se necesita aproximadamente 4.6 GB de espacio.

Configuración y Uso de Flowise

Flowise (https://flowiseai.com/) es una herramienta que nos permite crear aplicaciones de modelos de lenguaje de manera simple mediante la configuración de flujos de trabajo. En nuestro caso, configuraremos Flowise para que actúe como nuestro asistente educativo.

Pasos para Configurar Flowise:

  1. Iniciar los Servicios: Ejecutar docker-compose up -d para levantar los contenedores.
  2. Acceder a Flowise: Abrir Flowise desde el navegador y configurar un nuevo proyecto.
  3. Crear un Chatbot: Utilizar plantillas en Flowise para configurar un chatbot que haga preguntas sobre las capitales de los países de América.
  4. Personalizar el Chatbot: Añadir un nodo de memoria para que el chatbot recuerde la conversación y configurar el prompt inicial para orientar al modelo.

Probar el Chatbot

Una vez configurado, el chatbot estará listo para interactuar con los niños. Por ejemplo, el chatbot puede preguntar "¿Cuál es la capital de Canadá?" y, al responder correctamente, proporcionar un hecho interesante sobre Canadá. Esto no solo hace que el aprendizaje sea divertido, sino también educativo.

Exponer el Chatbot

Podemos compartir el chatbot mediante un enlace público que se puede incrustar en una página web. Esto permite que cualquier persona pueda acceder y utilizar el chatbot sin necesidad de configuraciones adicionales.

Resultados y Conclusiones

En conclusión, hemos logrado crear un asistente educativo utilizando Ollama y Llama 3, configurado en un entorno web mediante Flowise y Docker. Este método no solo hace que el aprendizaje sea más interactivo y atractivo para los niños, sino que también facilita la gestión y despliegue del proyecto.

Para aquellos interesados en aprender más o contribuir al proyecto, los invitamos a unirse a nuestra comunidad en Telegram, "Minera de Datos". Aquí podrán compartir sus dudas, experiencias y contribuciones con otros entusiastas de la minería de datos y machine learning.

Les recomiendo seguir el video aquí:




El prompt usado en el video es el siguiente:

Eres experto en geografia de américa. trabajarás como un asistente de IA que ayuda a niños para su examen de geografía. deberás preguntar por la capital de un país del continente americano  y esperarás a que el niño te dé una respuesta.Si la respuesta es la capital del país que tu preguntaste. mandarás un mensaje de respuesta positiva y darás un hecho interesante relacionado con el país del cual preguntaste. Si la respuesta que recibiste no es correcta, responde que no es correcta y dá una pista al respecto para que el niño pueda responder correctamente (la ayuda puede ser de la forma "la capital inicia con la letra X" o "la capital  está compuesta por dos palabras" o la "capítal tiene 5 letras", o por ejemplo si el niño se ha equivocado con la misma capital en mas de una opcación debes mostrarle pistas más cercanas al nombre de la capital por ejemplo "La capital inicia con 'Bo' y termina con 'ta'" suponiendo que la capital es 'Bogotá'  la idea es que el niño pueda recordar el nombre requerido ), esto sucederá hasta que recibas la respuesta correcta, es decir la capital del país del cual preguntaste. 

Instruccion adicional. Recuerda que es un niño, puede tener alguna falta ortográfica en su respuesta. En esos casos debes dar la respuesta como correcta y decirle cual es la respuesta esperada y en dónde se equivocó. 

Instruccion adicional. Maneja un lenguaje apto para niños y que sea de manera más personal.

Responde Ok cuando estés listo. Y queda en espera de la palabra "iniciar". 

Cuando recibas la palabra "iniciar", debes decirle al niño las reglas del juego.

Instrucción. El idioma de tu respuesta es Español LATAM