Entrada

¿Qué es Prompt Flow?

Aunque hace unos meses que se presentó Prompt Flow, tengo la sensación de que no se ha hablado mucho de él. Y es una pena porque es una herramienta que puede ayudar mucho a la hora de probar tus desarrollos sobre LLMs.

¿Qué es Prompt Flow?

Prompt Flow es una herramienta que te permite crear un flujo para probar tus desarrollos sobre LLMs. Y digo “un flujo” y no “una convesación” como he visto en algún artículo porque va más allá de las conversaciones. Tendemos a pensar que es para probar comportamientos esperados en las conversaciones, pero es una herramienta para probar el comportamiento de tu prompt, en general, en cualquier LLM.

¿Por qué usar Prompt Flow?

Si has trabajado con LLMs sabrás que es muy fácil que se desvíen de lo que esperas. Y es que no es fácil saber que va a hacer un LLM con un prompt. Por eso es importante probarlo antes de ponerlo en producción. Y para eso es para lo que sirve Prompt Flow.

Es verdad, podemos hacernos una batería de pruebas propia para probar ese prompt en el que has trabajado. Podrías usar algo como Playwright para automatizar el proceso, pero es un trabajo que ya está hecho y que te ahorras.

Prompt Flow te proporciona una interfaz sencilla donde conectar algunos componentes pre-construidos y otros que puedes crear tu mismo (en Python por ahora, esos si). Además, tiene lo necesario para cargar baterias de pruebas, control de versiones de las mismas e incluso algoritmos de evaluación de los resultados.

Date cuenta que no he mencionado a ningún LLM en concreto por ahora. Y es que Prompt Flow es una herramienta que te permite probar cualquier LLM, no solo GPT-3. De hecho, puedes usarlo para probar tu propio prompt en GPT-3.5, GPT-4 u otros LLM alojados en Azure o no.

¿Cómo funciona?

Vamos a hacer un ejemplo muy sencillo para ver como funciona y algunos de sus componentes básicos. Vamos a intentar que entienda el lenguaje natural y sume elementos. Cuidado, porque las operaciones matemáticas es de lo que peor se les da a los LLMs.

Lo primero de todo es crear un recurso de Machine Learning en Azure, no me voy a parar en esta parte, te dejo un artículo donde puedes encontrar toda la información.

Una vez dentro, en el menú encontramos la sección de Prompt Flow. Aquí podemos crear un nuevo flujo. Un punto importante a la hora de crear un flujo es el nombre, no se pueden repetir y no existe el concepto de eliminar como tal, se archivan. Es lioso, pero es lo que hay. Lo que hace de manera casi automática es añadirle la fecha y hora de creación del flujo al nombre, me parece bastante marrano, pero si dejas el nombre sencillo, algo como “QA Proyecto A” y por algún motivo lo archivas, no te dejará crear otro con el mismo nombre. Si hay una forma de hacerlo, eso realmente ha creado una carpeta en los ficheros de Machine Learning (ML), si la eliminas te dejará crearlo.

A la hora de crear un flujo te da varias opciones: por tipo, de galería. Realmente todo son ejemplos o plantillas base que podrías utilizar. En este caso vamos a seleccionar el flujo de chat.

Opciones por tipo

Elegimos el nombre, cuidado, recuerda que son únicos.

Una vez dentro nos aparece el grafo con un flujo que recibe dos entradas: historial y pregunta. Lo pasa por un componente “Chat” y devuelve un resultado.

Nos sirve todo, vamos a modificar muy poco

No vamos a usar la entrada del historial. Y en el chat modificamos el prompt, vamos a pasar de este:

Prompt por defecto

A algo como esto: (modifícalo a tu gusto)

Prompt de ejemplo

Siento no ponerlo en texto, pero como se definen las variables en Prompt Flow choca con el markdown de Jekyll (el motor que uso para el blog).

Este componente de chat usará una conexión a un LLM, vamos a crearla. Para esto tendremos que crear una conexión, nos volvemos a la sección de los flujos y encontraremos las conexiones.

Connections>Create>Azure OpenAI

No tiene ciencia. Debes rellenar los campos con los datos del LLM, en este caso los de Azure OpenAI, te dejo un artículo de como se crean aquí.

Ya la tenemos creada, volvemos al flujo y en el componente de chat la marcamos, puedes elegir el modelo que prefieras, en este momento estoy usando “gpt-35-turbo” con los valores por defecto, aunque para este ejemplo concreto pondremos la “temperatura” a cero.

Sólo nos queda una cosa más, crear una instancia de ejecución, es sencillo, seguir pasos para crear una máquina virtual. Sólo un consejo, dale a búscar más modelos y marca uno pequeño, no necesitas más para este ejemplo. Además, que se apague pasados 15 minutos, si no te podrías consumir todo el crédito de Azure.

Ahora pulsamos el botón de “Chat” y jugamos con nuestro flujo y vemos como funciona.

Resultado

Como puedes ver, a la frase “Tengo 99 ovejas, otras 5 más y un perro ¿Cuántas ovejas tengo?” responde correctamente con “104”, un único número e ignora el perro.

Fin

Ha quedado un artículo largo, no quiero extenderme más, pero te queda una caracteristica muy chula por ver, las evaluaciones. Te propongo una cosa, si has llegado hasta aquí, házmelo saber en twitter e incluyo las evaluaciones, la verdadera forma de evaluar comportamientos de tu prompt.

Prueba

Esta entrada está licenciada bajo CC BY 4.0 por el autor.