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


miércoles, 15 de mayo de 2024

Crea tu propio asistente educativo con IA: Ejecuta LLM Llama3 localmente en 5 minutos (parte 1)


¿Te apasiona la inteligencia artificial y su aplicación en el ámbito educativo? ¿Quieres aprender a crear una herramienta interactiva que revolucione la forma en que se responde a preguntas educativas? ¡Tenemos el video perfecto para ti!

En nuestro nuevo video titulado "Crea tu propio asistente educativo con IA: Ejecuta LLM Llama3 localmente en 5 minutos", te guiaremos paso a paso para que puedas ejecutar el poderoso modelo de lenguaje grande (LLM) Llama3 directamente en tu máquina. Este tutorial no solo es accesible y sencillo de seguir, sino que también está diseñado para que puedas empezar a construir tu propia aplicación de preguntas y respuestas orientada a la educación en cuestión de minutos.

 ¿Qué Aprenderás en Este Video?


1. Configuración Rápida y Sencilla: Aprende a instalar y ejecutar Llama3 en tu equipo local utilizando herramientas como ollama, Llama3 y groq. En solo 5 minutos, estarás listo para comenzar.

2. Construcción de Aplicaciones Interactivas: Descubre cómo desarrollar una aplicación que no solo responde preguntas, sino que también lo hace de manera interactiva, brindando una experiencia educativa enriquecedora.

3. Exploración de Modelos LLM: Conoce los diferentes modelos de lenguaje grande (LLM) que puedes utilizar localmente. Te mostramos cómo elegir el modelo adecuado para tus necesidades específicas.

4.  Técnicas Avanzadas de Prompting: Desvelamos técnicas avanzadas para mejorar la precisión y relevancia de las respuestas de tu asistente educativo. Aprende a formular prompts efectivos que lleven a mejores resultados.

5. Estrategias para Evitar Alucinaciones: Abordamos uno de los desafíos más comunes en los modelos LLM: las alucinaciones. Descubre estrategias clave para asegurar que tu asistente educativo proporcione respuestas precisas y confiables.

Este video es una excelente oportunidad para adentrarte en el fascinante mundo de los modelos de lenguaje grande y su aplicación en la educación. Ya seas un desarrollador experimentado o un principiante curioso, encontrarás valiosa información y herramientas prácticas que te permitirán crear un asistente educativo potente y eficaz.

 ¡No Te Lo Pierdas!


Haz clic en el enlace a continuación y comienza tu viaje hacia la creación de un asistente educativo impulsado por IA. Transforma la manera en que abordas las preguntas educativas y lleva tu aprendizaje al siguiente nivel.




No olvides suscribirte a nuestro canal para más tutoriales sobre inteligencia artificial, modelos de lenguaje grande y aplicaciones educativas innovadoras. ¡Esperamos verte allí!

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


jueves, 9 de mayo de 2024

La manera más fácil de reducir el tamaño un video grande en Mac OS



Paso 1: Instalar brew

Ir a 
    https://brew.sh

          Copiar el código que aparece en la página y ejecutarlo en la terminal:

$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Seguir las instrucciones, en ocasiones te pide instalar Xcode Tools, sigue las instrucciones que aparecen en la terminal.

Verificar que brew está instalado así

$ brew help

 

Paso 2: Instalar ffmpeg

            $ brew install ffmpeg
Verificar que se haya instalado

$ ffmpeg --help

Paso 3: Comprimir el archivo

Ir al directorio en dónde está el archivo de video  que se desea reducir de tamaño
$ cd /ruta_a_mi_archivo

 Cambiaremos el archio de .MOV a .MP4 con los settings por default. Suponiendo que el video se llama video.mov, lo convertirremos a video.mp4

$ ffmpeg -i video.mov video.mp4

 

martes, 7 de mayo de 2024

Process Mining: La intersección de la Ciencia de Datos y la Ciencia de Procesos

La Figura muestra que la minería de procesos puede verse como la intersección de la ciencia de datos y la ciencia de procesos. 


En este video, platicaremos sobre el Process Mining, que combina la Ciencia de Datos y la Ciencia de Procesos para analizar y mejorar los procesos empresariales.

Aprenderemos qué es el Process Mining y cómo se aplica en dos áreas clave: Process Discovery y Conformance Checking. Descubre cómo estas técnicas pueden ayudar a las organizaciones a identificar oportunidades de mejora y optimizar sus procesos.

En este video, también te presentamos una introducción al modelado de procesos utilizando diversas notaciones, como grafos DFG, BPMN, redes de Petri, árboles de procesos y grafos DCR. Veremos ejemplos prácticos de cómo aplicar estas notaciones para analizar y mejorar los procesos. También explicaremos la noción de recorrido de token en la notación BPMN para mostrar la ejecución de una traza.

Además, exploraremos un método de Process Discovery y daremos una introducción al Conformance Checking. 





A continuación les comparto una breve introducción al Process mining, que fue extraía del libro "Process Mining HandBook" [1]:

Process  Mining

La minería de procesos se puede definir de la siguiente manera: 
La minería de procesos tiene como objetivo mejorar los procesos operativos mediante el uso sistemático de datos de eventos. 
Mediante el uso de una combinación de datos de eventos y modelos de procesos, las técnicas de minería de procesos proporcionan información, identifican cuellos de botella y desviaciones, anticipan y diagnostican problemas de rendimiento y cumplimiento, y respaldan la automatización o eliminación del trabajo repetitivo. 
Las técnicas de minería de procesos pueden ser: 
  • Retrospectivas (por ejemplo, encontrar las causas fundamentales de un cuello de botella en un proceso de producción) 
  • Prospectivas (por ejemplo, predecir el tiempo de procesamiento restante de un caso en ejecución o proporcionar recomendaciones para reducir la tasa de fallas). 
Tanto los análisis retrospectivos como los prospectivos pueden desencadenar acciones (por ejemplo, contramedidas para abordar un problema de rendimiento o cumplimiento). 

El enfoque de la minería de procesos se centra en los procesos operativos, es decir, los procesos que requieren la ejecución repetida de actividades para entregar productos o servicios. Estos se pueden encontrar en todas las organizaciones e industrias, incluidas la producción, la logística, las finanzas, las ventas, las compras, la educación, la consultoría, la atención médica, el mantenimiento y el gobierno. 

La idea de utilizar datos detallados sobre los procesos operativos no es nueva. Por ejemplo, Frederick Winslow Taylor (1856-1915) recopiló datos sobre tareas específicas para mejorar la productividad laboral. 

Con la creciente disponibilidad de computadoras, se utilizaron hojas de cálculo y otras herramientas de inteligencia de negocios (BI) para monitorear y analizar los procesos operativos. Sin embargo, en la mayoría de los casos, la atención se centró en una sola tarea del proceso o el comportamiento se redujo a indicadores clave de rendimiento (KPI) agregados, como el tiempo de flujo, la utilización y los costos. 

La minería de procesos tiene como objetivo analizar los procesos de extremo a extremo a nivel de eventos, es decir, se considera el comportamiento detallado con el fin de explicar y mejorar los problemas de rendimiento y cumplimiento. 

La investigación sobre minería de procesos comenzó a finales de la década de 1990. Hoy en día, hay más de 40 herramientas comerciales de minería de procesos y la minería de procesos es utilizada por miles de organizaciones en todo el mundo. Sin embargo, sólo se ha realizado una pequeña fracción de su potencial. La minería de procesos es genérica y se puede aplicar en cualquier organización.

La minería de procesos puede verse como el vínculo entre la ciencia de datos y la ciencia de procesos. La minería de procesos busca la confrontación entre los datos de eventos (es decir, el comportamiento observado) y los modelos de procesos (modelos hechos a mano o modelos descubiertos automáticamente), y tiene como objetivo explotar los datos de eventos de una manera significativa, por ejemplo, para proporcionar información, identificar cuellos de botella, anticipar problemas, registrar violaciones de políticas, recomendar contramedidas y optimizar procesos.

...

Seguir la lectura en el libro: