Desarrollo del flujo de avisos
El flujo de avisos es una herramienta de desarrollo que simplifica el ciclo de desarrollo de aplicaciones de inteligencia artificial que tienen tecnología de modelos de lenguaje grandes (LLM). En este artículo, aprenderá a crear y desarrollar un flujo de aviso y un flujo de chat en el Estudio de Azure Machine Learning.
A medida que crece el impulso de las aplicaciones de inteligencia artificial basadas en LLM, el flujo de avisos proporciona una solución completa que simplifica el proceso de creación de prototipos, experimentos, iteración e implementación de aplicaciones de inteligencia artificial. Mediante el flujo de avisos, puede hacer lo siguiente:
- Orquestar flujos ejecutables con LLM, avisos y herramientas de Python mediante un grafo visualizado.
- Pruebe, depure e itera fácilmente los flujos.
- Cree variantes de aviso y compare su rendimiento.
Creación y desarrollo del flujo de avisos
Para crear un flujo de avisos, seleccione Flujo de avisos en el panel de navegación izquierdo del Estudio de Azure Machine Learning y, a continuación, seleccione Crear en la página Flujo de avisos.
En la pantalla Crear un nuevo flujo, puede crear un flujo mediante:
- Crear un flujo estándar, chato evaluación a partir de una plantilla.
- Clonación de un ejemplo disponible en Explorar galería.
- Importar un flujo existente desde archivos locales o un recurso compartido de archivos.
Para crear un flujo, seleccione Crear o Clonar en la tarjeta de flujo que desee. En el panel de pantalla siguiente, puede cambiar el nuevo nombre del flujo si lo desea y, a continuación, seleccionar Crear o Clonar. El nuevo flujo se abre en la interfaz de usuario de creación.
Sesión de proceso
Antes de comenzar la creación, inicie la sesión de proceso seleccionando Iniciar sesión de proceso en la parte superior de la página de creación de flujos. Se necesita una sesión de proceso para la ejecución del flujo. La sesión de proceso administra los recursos informáticos necesarios para que se ejecute la aplicación, incluida una imagen de Docker que contiene todos los paquetes de dependencia necesarios.
Página de creación
La sesión de proceso puede tardar unos minutos en iniciarse. Mientras se inicia la sesión de proceso, inspeccione las partes de la página de creación del flujo.
La Flujo o Plana en el lado izquierdo de la página es el área de trabajo principal donde crea el flujo. En la vista plana, puede editar nodos, herramientas, avisos y entradas; ejecutar nodos o todo el flujo; y definen y ven las salidas.
Los archivos de la parte superior derecha muestran la carpeta y la estructura de archivos del flujo. Cada flujo tiene una carpeta que contiene un archivo flow.dag.yaml, archivos de código fuente y carpetas del sistema. Puede agregar, editar, eliminar, cargar o descargar archivos para pruebas, implementación o colaboración.
La vista de Graph en la esquina inferior derecha visualiza la estructura de flujo. Puede acercar o alejar o usar el diseño automático. No puede editar esta vista directamente, pero puede seleccionar un nodo para buscarla y editarla en la vista plana.
Entrada y salida del flujo
En las secciones Entradas y Salidas, puede ver, agregar o quitar y editar entradas y salidas.
La entrada del flujo son los datos que se pasan al flujo en su conjunto. Para definir el esquema de entrada, especifique el nombre y el tipo, y establezca el valor de cada entrada para probar el flujo. Puede hacer referencia a la entrada de flujo en los nodos de flujo mediante
${input.<input name>}
.La salida del flujo es los datos generados por el flujo en su conjunto, que resume los resultados de la ejecución del flujo. Puede definir el valor de salida del flujo haciendo referencia a una salida de nodo único mediante la sintaxis
${<node name>.output}
o${<node name>.output.<field name>}
. Puede ver y exportar la tabla de resultados de salida después de que se complete una ejecución de flujo o una ejecución por lotes.
Herramientas de flujo
En un flujo, puede consumir diferentes tipos de herramientas, como LLM, Python, Indicación, API de Serp y la Seguridad de contenido. Al seleccionar una herramienta se agrega un nuevo nodo para esa herramienta al final del flujo. Debe especificar el nombre del nodo y establecer las configuraciones necesarias. Puede usar los controles de nodo para cambiar la posición del nodo en el flujo.
Entradas y salidas de nodos
Las herramientas LLM e Indicación usan Jinja como lenguaje de plantillas para generar dinámicamente el mensaje. Por ejemplo, puede usar {{}}
para incluir el nombre de entrada en lugar de usar texto fijo, por lo que se puede reemplazar sobre la marcha.
Puede configurar las entradas y salidas de los nodos de las siguientes maneras:
- Establezca la entrada Valor directamente.
- Haga referencia a la entrada de flujo mediante
${input.<input name>}
. - Haga referencia a la salida del nodo mediante
${<node name>.output}
o${<node name>.output.<field name>}
.
Después de terminar de redactar un mensaje o un script de Python, seleccione Validar y analizar la entrada para que el sistema analice automáticamente la entrada del nodo en función de la plantilla de solicitud y la entrada de la función de Python.
Puede vincular nodos haciendo referencia a la salida del nodo. Por ejemplo, puede hacer referencia a la salida del nodo LLM en la entrada del nodo de Python para que el nodo de Python consuma la salida del nodo LLM. En la vista de Graph, puede ver los dos nodos vinculados juntos.
Nodos LLM
Para un nodo LLM de Azure OpenAI, debe seleccionar Connection, API, deployment_name y establecer la Indicación. La conexión se usa para almacenar y administrar de forma segura las claves secretas u otras credenciales confidenciales necesarias para interactuar con Azure OpenAI.
Si aún no tiene una conexión, créela antes de agregar el nodo LLM y asegúrese de que el recurso de Azure OpenAI tiene una implementación de chat o finalización. Para más información, consulte Configuración de una conexión y Crear un recurso e implementación de un modelo mediante Azure OpenAI.
Nodos de Python
Para usar la herramienta de Python, debe establecer el script de Python, el valor de entrada y otras configuraciones. Un nuevo nodo de Python proporciona la siguiente función reutilizable de Python que define entradas y salidas.
from promptflow import tool
# The inputs section will change based on the arguments of the tool function, after you save the code
# Adding type to arguments and return value will help the system show the types properly
# Please update the function name/signature per need
@tool
def my_python_tool(input1: str) -> str:
return 'hello ' + input1
Control condicional
El flujo de avisos ofrece control condicional, lo que le permite establecer condiciones para la ejecución de cualquier nodo de un flujo.
En su núcleo, el control condicional proporciona la capacidad de asociar cada nodo de un flujo a una configuración de activación. Esta configuración es una instrucción when
que determina cuándo se debe ejecutar un nodo. La eficacia de esta característica se realiza en flujos complejos donde la ejecución de determinadas tareas depende del resultado de las tareas anteriores. Mediante el control condicional, puede configurar los nodos específicos para que se ejecuten solo cuando se cumplan las condiciones especificadas.
Establezca la configuración de activación de un nodo seleccionando el botón Activar configuración en la tarjeta de nodo. Agregue una instrucción When y establezca la condición. Puede establecer las condiciones haciendo referencia a la entrada de flujo o a una salida de nodo. Por ejemplo, puede establecer la condición ${input.<input name>}
o ${<node name>.output}
como valores específicos. Si no se cumple la condición, se omite el nodo y el estado del nodo aparece como Omitido.
Prueba de un flujo
Puede probar un flujo ejecutando un único nodo o ejecutando todo el flujo.
- Para ejecutar un solo nodo, seleccione el icono Ejecutar en la tarjeta de nodo. Cuando se completa la ejecución del nodo, puedes verificar rápidamente los resultados en la sección Salidas del nodo.
- Para ejecutar todo el flujo, seleccione Ejecutar en la parte superior de la página.
Salidas de flujo
Después de seleccionar Ejecutar para ejecutar el flujo, puede ver el estado de ejecución en el banner en la parte superior de la página. Seleccione Ver salidas en el banner superior o en la barra de menús superior para ver información detallada de entrada, salida, ejecución de flujo e información de orquestación.
Una vez completada la ejecución del flujo, puede seleccionar Ver salidas para comprobar todas las salidas históricas en la pantalla de Salidas.
Seleccione la pestaña Seguimiento en la pantalla Salidas para ver un gráfico que proporciona información sobre la duración y el costo del token asociado al flujo. Seleccione Flujo en Nombre del nodo para ver información detallada sobre el flujo en el panel derecho.
Expanda el flujo y seleccione cualquier paso para ver información detallada de ese paso. Puede ver la duración de cada ejecución de nodo en el árbol de intervalos. Para obtener más información, vea Especificación de intervalo de seguimiento.
Desarrollo de un flujo de chat
Un flujo de chat es un tipo específico de flujo de avisos diseñado para el desarrollo de aplicaciones conversacionales. El flujo de chat se basa en las funcionalidades de flujo estándar para proporcionar compatibilidad mejorada con entradas y salidas de chat e historial de chat. Mediante el flujo de chat, puede crear fácilmente un bot de chat que controle la entrada y salida del chat.
Para crear un flujo de chat, en la pantalla Crear un nuevo flujo, seleccione Crear en la tarjeta Flujo de chat o seleccione Chat en Explorar galería y clone uno de los flujos disponibles.
En una página de creación de flujos de chat, el flujo de chat se etiqueta con una etiqueta de chat para distinguirlo de los flujos de evaluación y estándar. Para probar un flujo de chat, seleccione Chat en la parte superior de la página para abrir un cuadro de chat para la conversación.
Entrada de chat, salida de chat e historial de chat
Los elementos más importantes que diferencian un flujo de chat de un flujo estándar son: entrada de chat, historial de chat y salida de chat. El historial de chat y la entrada de chat son necesarios en los flujos de chat.
La entrada de chat hace referencia a los mensajes o consultas enviados por los usuarios al bot de chat. Controlar eficazmente las entradas del chat es crucial para el éxito de una conversación, ya que implica comprender las intenciones del usuario, extraer la información relevante y desencadenar las respuestas adecuadas.
El historial de chat es el registro de todas las interacciones entre el usuario y el bot de chat, incluidas las entradas de usuario y las salidas generadas por IA. Mantener el historial de chat es esencial para hacer un seguimiento del contexto de la conversación y garantizar que la IA pueda generar respuestas contextualmente relevantes.
La salida de chat hace referencia a los mensajes generados mediante IA que se envían a los usuarios en respuesta a sus entradas. La generación de salidas de chat contextualmente apropiadas y que fomenten la interacción es vital para que la experiencia del usuario sea positiva.
Un flujo de chat puede tener varias entradas. En la sección Entradas del flujo de chat, marca una de las entradas como Entrada de chat y completa el valor de entrada de chat ingresando una pregunta en el cuadro Chat.
Administrar el historial de chats
Para ayudarle a administrar el historial de chats, chat_history
en la sección Entradas está reservado para representar el historial de chats. No se puede editar chat_history
manualmente.
El historial de chat se estructura como una lista de entradas y salidas. Todas las interacciones en el cuadro de chat, incluidas las entradas de chat del usuario, las salidas de chat generadas y las entradas y salidas de otros flujos, se almacenan de forma automática en el historial de chat. En el código siguiente se muestra la estructura del historial de chats.
[
{
"inputs": {
"<flow input 1>": "xxxxxxxxxxxxxxx",
"<flow input 2>": "xxxxxxxxxxxxxxx",
"<flow input N>""xxxxxxxxxxxxxxx"
},
"outputs": {
"<flow output 1>": "xxxxxxxxxxxx",
"<flow output 2>": "xxxxxxxxxxxxx",
"<flow output M>": "xxxxxxxxxxxxx"
}
},
{
"inputs": {
"<flow input 1>": "xxxxxxxxxxxxxxx",
"<flow input 2>": "xxxxxxxxxxxxxxx",
"<flow input N>""xxxxxxxxxxxxxxx"
},
"outputs": {
"<flow output 1>": "xxxxxxxxxxxx",
"<flow output 2>": "xxxxxxxxxxxxx",
"<flow output M>": "xxxxxxxxxxxxx"
}
}
]
Nota:
Al realizar pruebas en el cuadro de chat, guardará automáticamente el historial de chat. En el caso de las ejecuciones por lotes, debe incluir el historial de chat en el conjunto de datos de ejecución por lotes. Si no hay ningún historial de chat disponible, establezca el chat_history
en una lista vacía []
dentro del conjunto de datos de ejecución por lotes.
Para recuperar las interacciones anteriores, haga referencia a chat_history
en los mensajes. A continuación, puede hacer referencia a las entradas y salidas anteriores para crear respuestas contextualmente relevantes. La incorporación del historial de chat a las solicitudes es esencial para crear respuestas de bot de chat atractivas y con reconocimiento del contexto.
Puede utilizar la gramática de for-loop del lenguaje Jinja para mostrar una lista de entradas y salidas de chat_history
.
{% for item in chat_history %}
user:
{{item.inputs.question}}
assistant:
{{item.outputs.answer}}
{% endfor %}
Prueba con el cuadro de chat
El cuadro Chat proporciona una manera interactiva de probar el flujo de chat simulando una conversación con el bot de chat. Para probar el flujo de chat mediante el cuadro del chat:
- Seleccione Chat para abrir la barra lateral del chat.
- Escriba preguntas de prueba en el cuadro de chat de la parte inferior de la pantalla para enviarlos al bot de chat.
- Revise las respuestas del bot de chat para asegurarse de que son contextualmente adecuadas y precisas.
- Seleccione Ver salidas en la parte superior de la página de creación para ver y depurar rápidamente entradas de chat, salidas e historial.
- En la pantalla Salidas, seleccione la pestaña Seguimiento y, a continuación, seleccione flujo para ver información detallada sobre el flujo en el panel derecho. Expanda el flujo y seleccione cualquier paso para ver información detallada de ese paso.