
Creación de un chatbot basado en RAG con Prompt Flow de Azure
Es innegable que uno de los campos de la inteligencia artificial de más rápido crecimiento en los últimos años es la IA generativa, particularmente en el campo del procesamiento del lenguaje natural. La cantidad de sistemas y procesos que pueden beneficiarse del uso de modelos lingüísticos extensos (LLM) es enorme, y van desde aplicaciones como los chatbots y la generación de contenido hasta herramientas de resumen, entre otras.
En este blog, le mostraremos cómo usar Prompt Flow para diseñar una aplicación sencilla para chatear con sus documentos.
¿Qué es Prompt Flow?
Prompt Flow de Microsoft Azure simplifica el proceso de desarrollo integral de una aplicación LLM, ya que abarca todo, desde la creación de prototipos y el desarrollo hasta la evaluación, la implementación y la supervisión.
Dentro de Prompt Flow podremos:
- Diseñe una canalización que conecte diferentes herramientas, incluidas las LLM, las solicitudes, los scripts de Python y otras herramientas. Esto se conoce como flujo dentro de Prompt Flow.
- Depure e itere el flujo, rastreando la interacción entre las herramientas.
- Evalúe sus flujos en grandes conjuntos de datos, defina diferentes solicitudes o variantes de LLM para seleccionar la que mejor funcione para su caso de uso.
- Implemente el flujo en un punto final que funcione dentro de Azure. También están disponibles otras opciones, como Docker y Kubernetes.
Los LLM y la necesidad de un contexto documental
Para empezar, sentemos las bases para el resto de la discusión para que podamos entender lo que estamos haciendo y lo que queremos lograr. Los modelos de lenguaje extensos, como los modelos GPT de OpenAI, se entrenan con una inmensa cantidad de datos de texto, incluidos libros, artículos de noticias, páginas web y más. Sin embargo, estos modelos no tienen los conocimientos necesarios para responder a las preguntas sobre tus documentos específicos, ya que no han sido entrenados con ellos.
No obstante, puede abordar este problema incluyendo el texto sobre el que desea solicitar información en el mensaje. Pero no olvidemos que las solicitudes tienen una capacidad simbólica limitada, así que, ¿cómo podemos consultar una base de datos de documentos moderadamente grande?
Por suerte para nosotros, este problema se puede resolver con una arquitectura conocida como RAG (generación aumentada de recuperación). Básicamente, implica dividir el texto de la base de datos en fragmentos, calcular un vector que represente estos fragmentos mediante modelos de incrustación y almacenar ese vector, junto con el texto, en una base de datos vectorial. Antes de formular una pregunta al LLM, el sistema realiza una búsqueda vectorial en la base de datos y recupera los fragmentos de texto más parecidos a los introducidos por el usuario. A continuación, estos fragmentos de texto se añaden a la línea de comandos. Ahora, el LLM tiene el contexto necesario para responder a la pregunta en cuestión.
Creación de un chatbot basado en Rag con Prompt Flow
Por lo tanto, utilizando Prompt Flow, desarrollaremos un chatbot basado en RAG para responder preguntas sobre un conjunto de datos de texto con el que los modelos de OpenAI no han sido entrenados. Con esta intención, utilizaremos las presentaciones anuales de Microsoft ante la SEC de 2024 como nuestro conjunto de datos de documentos.
Requisitos previos:
- Suscripción activa a Azure con acceso a los modelos de OpenAI a través del servicio OpenAI (es necesario solicitar el acceso a ellos).
- Algunos documentos con los que trabajar, utilizaremos el Presentaciones anuales de Microsoft ante la SEC desde 2024.
Guía paso a paso para configurar Microsoft Azure AI Studio
En primer lugar, necesitamos crear un recurso de Azure AI Studio:
- Inicie sesión en Azure Portal:
- Ir a la Portal de Azure e inicie sesión con su cuenta de Azure.
- Crear un nuevo recurso:
- Haga clic en el + Crear un recurso botón ubicado en la esquina superior izquierda del portal.
- Busque Azure AI Studio:
- En la barra de búsqueda, escribe Estudio de IA de Azure y selecciónala en los resultados de la búsqueda.
- Haga clic en «Crear»:
- En la página de Azure AI Studio, haga clic en Crear botón y siga el proceso de creación de recursos.
- Inicie Azure AI Studio.
- Espere a que se cree el recurso y ejecútelo.
Implementación de modelos de OpenAI para su chatbot RAG
Dentro de Azure AI Studio, necesitamos crear los componentes necesarios. En este caso, necesitamos:
- Un modelo de generación de texto de OpenAI, que puede ser GPT 3.5. Este será el modelo de generación de texto que generará las respuestas para la pregunta del usuario y el contexto recuperado.
- Un modelo de incrustaciones de OpenAI, como ADA. Este modelo se encarga de generar las incrustaciones que representarán cada fragmento de texto.
- Un índice, donde se almacenarán los fragmentos de texto junto con el vector que los representa.
Para implementar los modelos de OpenAI, necesitamos ir a Despliegues en el panel izquierdo de la pantalla, debajo Componentes. Dentro de las implementaciones, haga clic en Despliegue y luego Implemente modelos básicos. Necesitamos implementar los siguientes:
- gpt-35 turbo
- incrustación de texto-ADA-002
Creación de un índice para la recuperación de documentos
A continuación, vamos a crear el índice. Para hacer esto, necesitamos ir a Índices en el panel izquierdo de la página y sigue estos pasos:
- Haga clic en Nuevo índice.
- Seleccione Cargar archivos en Fuente de datosy sube tus archivos de documentos. Utilizaremos el Presentaciones anuales de Microsoft ante la SEC.
- En Configuración del índice, seleccione el servicio Azure AI Search donde se almacenará el índice. Si no tiene uno, haga clic en Crear un nuevo recurso de Azure AI Search y sigue el proceso de creación. Por ahora, asegúrate de elegir el nivel de precios gratuito.
- En la configuración de búsqueda, selecciona Agregar búsqueda vectorial a este recurso de búsqueday seleccione el modelo de incrustación desplegado anteriormente. Si aún no ha implementado uno, se implementará automáticamente en este paso.
- Revisa la configuración seleccionada y haz clic en Crear.
- Espere a que se cree el índice.
Diseño del flujo de chat en Prompt Flow
Ahora que todo está listo, ¡es hora de divertirse! Naveguemos hasta Flujo rápido en el panel izquierdo de la pantalla, ubicado debajo Herramientas. A continuación, crea una nueva Flujo de chat. Al principio, deberías ver una configuración sencilla con solo tres nodos: un nodo de entrada, un nodo de salida y un nodo de chat (el componente que se conecta a los modelos GPT de OpenAI). Por ahora, borra el nodo de chat para que podamos crear el flujo desde cero.

Un flujo se compone de varios nodos que interactúan entre sí. En el momento de escribir este artículo, existen las siguientes herramientas:
- Herramienta LLM: utilice OpenAI LLM para completar textos o chatear.
- Herramienta de mensajes: crea mensajes usando jinja como lenguaje de plantillas.
- Herramienta Python: ejecuta código Python.
- Seguridad del contenido: utilice Azure Content Safety para detectar contenido dañino.
- Incrustación: utilice los modelos de Open AI para crear un vector de incrustación que represente el texto de entrada.
- LLM de modelo abierto: utilice un modelo abierto del catálogo de modelos de Azure, implementado en un punto final en línea, para las llamadas a la API de finalización o chat de LLM.
- API Serp: utilice la API Serp para obtener resultados de búsqueda de motores de búsqueda específicos.
- Búsqueda de índices: busque en un índice resultados de texto relevantes mediante una o más consultas de texto.
Para esta sencilla aplicación, solo utilizaremos las siguientes herramientas:
- Herramienta LLM
- Herramienta rápida
- Herramienta Python
- Búsqueda de índices
Primero, crea un Herramienta de búsqueda de índices para recuperar los fragmentos de texto de la base de datos vectorial, que servirán de contexto para responder a la pregunta del usuario.

Tendrá que configurar la conexión al índice y seleccionar el tipo de consulta y la cantidad de fragmentos que se van a recuperar (top_k).
A continuación, vamos a crear un Herramienta Python que recibe el resultado de la herramienta de recuperación y lo preprocesa para retener solo el texto. No vamos a entrar en detalles sobre cómo hacerlo, pero puedes usar el siguiente script dentro de la herramienta.

Como siguiente nodo, vamos a crear un Herramienta rápida. Aquí escribiremos el mensaje que será la entrada al LLM. En él, además del indicador del sistema con las pautas de comportamiento, incluiremos el historial de chat, las entradas del usuario y el contexto recuperado de la base de datos vectorial. Inicialmente, podemos usar un mensaje sencillo como el siguiente:

Como puede ver, el mensaje toma la pregunta, el contexto recuperado de la base de datos vectorial y el historial de chat como parámetros. Por lo tanto, es necesario proporcionar estas variables como entradas al nodo Prompt. Como resultado, la salida de este nodo será la línea de comandos formateada con la pregunta y el contexto.
Algo que vale la pena destacar sobre los nodos Prompt es su opción de crear diferentes variantes del prompt. Esto resulta muy útil a la hora de probar la solución, ya que permite enviar una ejecución por lotes a la canalización, comparar los resultados de cada solicitud y, en última instancia, elegir la que ofrezca los mejores resultados.
Por último, necesitamos crear un Nodo LLMs, que se conectará al servicio OpenAI, específicamente al modelo de generación de texto gpt-35-turbo que se implementó anteriormente. Una vez más, en los nodos del LLM, se podrían crear múltiples variantes, modificando los parámetros de los modelos y utilizando diferentes modelos lingüísticos para comparar los resultados.

El flujo resultante debería tener este aspecto:

Probar tu chatbot en Prompt Flow
Es hora de probar nuestra aplicación LLM. Para hacer esto, haga clic en el azul Charla botón en el lado derecho de la pantalla. Se abrirá una ventana de chat donde podremos probar la solución.

Gracias al contexto proporcionado en el aviso, GPT-3.5 pudo responder a las preguntas sobre los ingresos de Microsoft en 2024, a pesar de que los datos con los que se capacitó solo se refieren a septiembre de 2021. Al hacer clic en Ver traza debajo de la última respuesta, podemos ver las entradas y salidas de cada nodo, así como los tiempos de respuesta y otras ideas interesantes sobre cada uno de ellos.
Evaluación del rendimiento de su aplicación de LLM
Para evaluar la calidad de las respuestas de la aplicación, Prompt Flow ofrece flujos de evaluación integrados para diversas métricas, como la fundamentación, la coherencia y la relevancia, entre otras. Para iniciar la evaluación, haga clic en Evalúe en la parte superior de la pantalla y sube un .json o .csv archivo que contiene el conjunto de datos de evaluación. Para lograrlo, el conjunto de datos debe incluir un conjunto de preguntas y las respuestas generadas por la aplicación. En el caso de algunas métricas, también puede requerir el contexto recuperado por el nodo de búsqueda y las respuestas reales básicas. Puede generar este conjunto de datos de evaluación con una ejecución por lotes.
Implementación y monitoreo de su chatbot de documentos
La implementación de esta aplicación en un entorno de producción es realmente sencilla. Simplemente haga clic en el Despliegue en la parte superior de la pantalla, seleccione el tamaño de la máquina virtual, configure ajustes como el tipo de autenticación y espere a que el punto final esté listo.
Una vez que se complete la implementación, la aplicación aparecerá en Despliegues en el panel de la izquierda. Al hacer clic en él, puede acceder a los detalles clave, como el URI y la clave del punto final. Además, encontrarás un fragmento de código para utilizar el punto final en varios lenguajes de programación, una interfaz de chat para realizar pruebas y acceso a los registros y a la información de supervisión.
Conclusión: aprovechar Prompt Flow para desarrollar aplicaciones LLM
Microsoft Azure Prompt Flow permite el desarrollo rápido de aplicaciones de LLM con una codificación mínima, y ofrece una interfaz intuitiva para conectar herramientas como LLM, instrucciones y scripts de Python. Esto permite a los desarrolladores crear, probar y refinar rápidamente sus aplicaciones sin necesidad de un extenso código personalizado.
Con sus instrucciones de evaluación integradas y sus sencillas opciones de implementación, Prompt Flow facilita la prueba y la optimización de los modelos de LLM y, al mismo tiempo, los pasa rápidamente a la producción. Sin embargo, tiene algunas limitaciones, como una menor flexibilidad en las técnicas de fragmentación del texto y menos opciones para las implementaciones sin servidor. A pesar de estas limitaciones, Prompt Flow sigue siendo una herramienta poderosa para acelerar el desarrollo de aplicaciones basadas en LLM.
