Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Importante
Los elementos marcados (versión preliminar) en este artículo se encuentran actualmente en versión preliminar pública. Esta versión preliminar se ofrece sin acuerdo de nivel de servicio y no se recomienda para las cargas de trabajo de producción. Es posible que algunas características no sean compatibles o que tengan sus funcionalidades limitadas. Para más información, consulte Términos de uso complementarios para las versiones preliminares de Microsoft Azure.
Los modelos de lenguaje grande (LLM) bidireccionales, que pueden procesar e interpretar diversas formas de entradas de datos, son una herramienta eficaz que puede elevar las funcionalidades de los sistemas de solo lenguaje a nuevas alturas. Las imágenes son un tipo de datos importante para muchas aplicaciones del mundo real. La incorporación de datos de imagen en sistemas de inteligencia artificial proporciona una capa esencial de comprensión visual.
En este artículo, aprenderá lo siguiente:
- Uso de datos de imagen en el flujo del símbolo del sistema
- Cómo usar la herramienta GPT-4V integrada para analizar entradas de imagen.
- Cómo crear un bot de chat que pueda procesar entradas de imagen y texto.
- Cómo crear una ejecución por lotes mediante datos de imagen.
- Consumo de puntos de conexión en línea con datos de imagen.
Tipo de imagen en el flujo del símbolo del sistema
La entrada y la salida del flujo de solicitud admiten la imagen como un nuevo tipo de datos.
Para usar datos de imagen en la página de creación del flujo de mensajes:
Agregue una entrada de flujo y seleccione Imagen como tipo de datos. Puede cargar, arrastrar y colocar un archivo de imagen, pegar una imagen del Portapapeles o especificar una dirección URL de imagen o la ruta de acceso relativa de la imagen en la carpeta de flujo.
Obtenga una vista previa de la imagen. Si la imagen no se muestra correctamente, elimine la imagen y vuelva a agregarla.
Es posible que desee procesar de nuevo la imagen mediante la Herramienta Python antes de alimentarla al LLM. Por ejemplo, puede cambiar el tamaño o recortar la imagen a un tamaño menor.
from promptflow import tool from promptflow.contracts.multimedia import Image as PFImage from PIL import Image as Image import io @tool def process_image(input_image: PFImage) -> PFImage: # convert the input image data to a BytesIO object data_byteIO = io.BytesIO(input_image) # Open the image data as a PIL Image object image = Image.open(data_byteIO) # crop image cropped_image = image.crop((100, 100, 900, 900)) # Convert the cropped image back to BytesIO byte_arr = io.BytesIO() cropped_image.save(byte_arr, format = 'JPEG') # Create a new prompt flow Image object with the cropped image data # This image is now ready to be returned cropped_PF_image = PFImage(byte_arr.getvalue(), mime_type = "image/jpeg") return cropped_PF_image ``` > [!IMPORTANT] > To process images using a Python function, you need to use the `Image` class that you import from the `promptflow.contracts.multimedia` package. The `Image` class is used to represent an `Image` type within prompt flow. It is designed to work with image data in byte format, which is convenient when you need to handle or manipulate the image data directly. > > To return the processed image data, you need to use the `Image` class to wrap the image data. Create an `Image` object by providing the image data in bytes and the [MIME type](https://developer.mozilla.org/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types) `mime_type`. The MIME type lets the system understand the format of the image data, or it can be `*` for unknown type.
Ejecute el nodo de Python y compruebe la salida. En este ejemplo, la función de Python devuelve el objeto Imagen procesado. Seleccione la salida de la imagen para obtener una vista previa de la imagen.
Si el objeto Imagen del nodo de Python está establecido como salida del flujo, también puede obtener una vista previa de la imagen en la página de salida del flujo.
Uso de la herramienta GPT-4V
La herramienta Azure OpenAI GPT-4 Turbo con Vision y OpenAI GPT-4V son herramientas integradas en el flujo de avisos que pueden usar el modelo OpenAI GPT-4V para responder preguntas basadas en imágenes de entrada. Puede encontrar la herramienta seleccionando + Más herramientas en la página de creación de flujos.
Agregue la herramienta Azure OpenAI GPT-4 Turbo con Vision al flujo. Asegúrese de tener una conexión de Azure OpenAI, con disponibilidad de modelos de versión preliminar de visión de GPT-4.
La plantilla Jinja para redactar mensajes en la herramienta GPT-4V sigue una estructura similar a la API de chat en la herramienta LLM. Para representar una entrada de imagen en el símbolo del sistema, puede usar la sintaxis 
. La entrada de imagen se puede pasar en los mensajes user
, system
y assistant
.
Una vez que haya compuesto el mensaje, seleccione el botón Validar y analizar la entrada para analizar los marcadores de posición de entrada. La entrada de imagen representada por 
se analizará como tipo de imagen con el nombre de entrada como "INPUT NAME" (NOMBRE DE ENTRADA).
Puede asignar un valor a la entrada de imagen de las maneras siguientes:
- Referencia de la entrada de flujo de Tipo de imagen.
- Referencia de la salida de otro nodo del tipo de imagen.
- Cargar, arrastrar o pegar una imagen, o especificar una dirección URL de la imagen o su ruta de acceso relativa.
Creación de un bot de chat para procesar imágenes
En esta sección, aprenderá a compilar un bot de chat que pueda procesar entradas de imagen y texto.
Supongamos que desea crear un bot de chat que pueda responder a cualquier pregunta sobre la imagen y el texto juntos. Para ello, siga los pasos descritos en esta sección.
Cree un flujo de chat.
En Entradas, seleccione "lista" como el tipo de datos. En el cuadro de chat, el usuario puede introducir una secuencia mixta de textos e imágenes, y el servicio de flujo de mensajes la transformará en una lista.
Agregue la herramienta GPT-4V al flujo. Puede copiar la indicación desde el chat de la herramienta LLM predeterminada y pegarla en la herramienta GPT 4V. A continuación, elimine el chat de la herramienta LLM predeterminada del flujo.
En este ejemplo,
{{question}}
hace referencia a la entrada de chat, que es una lista de textos e imágenes.En Salidas, cambie el valor de "answer" por el nombre de la salida de la herramienta de visión, por ejemplo,
${gpt_vision.output}
.(Opcional) Puede agregar cualquier lógica personalizada al flujo para procesar la salida GPT-4V. Por ejemplo, puede agregar la herramienta Guardrails & controls para detectar si la respuesta contiene contenido inapropiado y devolver una respuesta final al usuario.
Ahora puede probar el bot de chat. Abra la ventana de chat y escriba cualquier pregunta con imágenes. El bot de chat responderá a las preguntas en función de las entradas de imagen y texto. El valor de entrada del chat se rellena automáticamente a partir de la entrada en la ventana de chat. Puede encontrar los textos con imágenes en el cuadro de chat, que se convierte en una lista de textos e imágenes.
Nota:
Para permitir que el bot de chat responda con texto enriquecido e imágenes, haga que la salida del chat sea del tipo list
. La lista debe estar formada por cadenas (para texto) y solicitar objetos de imagen de flujo (para imágenes) en un orden personalizado.
Creación de una ejecución por lotes mediante datos de imagen
Una ejecución por lotes permite probar el flujo con un conjunto de datos extenso. Hay tres métodos para representar datos de imagen: un archivo de imagen, una dirección URL de imagen pública o una cadena Base64.
- Archivo de imagen: para probar con archivos de imagen en ejecución por lotes, debe preparar una carpeta de datos. Esta carpeta debe contener un archivo de entrada de ejecución por lotes en formato
jsonl
ubicado en el directorio raíz, junto con todos los archivos de imagen almacenados en la misma carpeta o subcarpetas.En el archivo de entrada, debe usar el formato
{"data:<mime type>;path": "<image relative path>"}
para hacer referencia a cada archivo de imagen. Por ejemplo:{"data:image/png;path": "./images/1.png"}
. - Dirección URL de imagen pública: también puede hacer referencia a la dirección URL de la imagen en el archivo de entrada con este formato:
{"data:<mime type>;url": "<image URL>"}
. Por ejemplo:{"data:image/png;url": "https://www.example.com/images/1.png"}
. - Cadena Base64: se puede hacer referencia a la cadena Base64 en el archivo de entrada con este formato:
{"data:<mime type>;base64": "<base64 string>"}
. Por ejemplo:{"data:image/png;base64": "iVBORw0KGgoAAAANSUhEUgAAAGQAAABLAQMAAAC81rD0AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABlBMVEUAAP7////DYP5JAAAAAWJLR0QB/wIt3gAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1FB+QIGBcKN7/nP/UAAAASSURBVDjLY2AYBaNgFIwCdAAABBoAAaNglfsAAAAZdEVYdGNvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVDnr0DLAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIwLTA4LTI0VDIzOjEwOjU1KzAzOjAwkHdeuQAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMC0wOC0yNFQyMzoxMDo1NSswMzowMOEq5gUAAAAASUVORK5CYII="}
.
En resumen, el flujo de solicitud usa un formato de diccionario único para representar una imagen, que es {"data:<mime type>;<representation>": "<value>"}
. Aquí, <mime type>
hace referencia a los tipos de imagen de MIME estándar HTML y <representation>
hace referencia a las representaciones de imagen admitidas: path
, url
y base64
.
Crear una cuenta de lote
En la página de creación de flujos, seleccione el botón Evaluar->Evaluación personalizada para iniciar una ejecución por lotes. En la configuración de ejecución de lotes, seleccione un conjunto de datos, que puede ser una carpeta (que contenga el archivo de entrada y los archivos de imagen) o un archivo (que contenga solo el archivo de entrada). Puede obtener una vista previa del archivo de entrada y realizar la asignación de entrada, con el fin de alinear las columnas del archivo de entrada con las entradas de flujo.
Ver los resultados de la ejecución por lotes
Puede comprobar las salidas de ejecución por lotes en la página de detalles de ejecución. Seleccione el objeto de imagen de la tabla de salida para obtener una vista previa sencilla de la imagen.
Si las salidas de ejecución por lotes contienen imágenes, puede comprobar el conjunto de datos de flow_outputs con el archivo jsonl de salida y las imágenes de salida.
Consumo de un punto de conexión en línea con datos de imagen
Puede implementar un flujo en un punto de conexión en línea para la inferencia en tiempo real.
Actualmente, la pestaña Prueba de la página de detalles de implementación no admite entradas o salidas de imagen.
Por ahora, puede probar el punto de conexión mediante el envío de una solicitud, incluidas las entradas de imagen.
Para consumir el punto de conexión en línea con la entrada de imagen, debe representar la imagen mediante el formato {"data:<mime type>;<representation>": "<value>"}
. En este caso, <representation>
puede ser url
o base64
.
Si el flujo genera la salida de la imagen, se devuelve con formato base64
, por ejemplo, {"data:<mime type>;base64": "<base64 string>"}
.