Compartir vía


Uso de modelos de chat habilitados para visión

Los modelos de chat habilitados para visión son modelos multimodales de gran tamaño (LMM) desarrollados por OpenAI que pueden analizar imágenes y proporcionar respuestas textuales a preguntas sobre ellas. Incorporan tanto el procesamiento del lenguaje natural como la comprensión visual. Los modelos actuales habilitados para visión son GPT-4 Turbo con Visión, GPT-4o y GPT-4o-mini.

Los modelos habilitados para visión responden a preguntas generales sobre lo que está presente en las imágenes que se cargan.

Sugerencia

Para usar modelos habilitados para visión, llame a la API de finalización de chat en un modelo compatible que haya implementado. Si no está familiarizado con la API de finalización de chat, consulte la guía de procedimientos de chat habilitado para visión.

Actualización del modelo GPT-4 Turbo

La versión más reciente de disponibilidad general de GPT-4 Turbo es:

  • gpt-4 Versión: turbo-2024-04-09

Este es el reemplazo de los siguientes modelos en versión preliminar:

  • gpt-4 Versión: 1106-Preview
  • gpt-4 Versión: 0125-Preview
  • gpt-4 Versión: vision-preview

Diferencias entre los modelos de disponibilidad general OpenAI y Azure OpenAI GPT-4 Turbo

  • La versión de OpenAI del último modelo turbo 0409 admite el modo JSON y la llamada a funciones para todas las solicitudes de inferencia.
  • La versión de Azure OpenAI de la turbo-2024-04-09 más reciente actualmente no admite el uso del modo JSON y la llamada a funciones al realizar solicitudes de inferencia con entrada de imagen (visión). Las solicitudes de entrada basadas en texto (solicitudes sin image_url e imágenes insertadas) admiten el modo JSON y las llamadas a funciones.

Diferencias de gpt-4 vision-preview

  • Las mejoras específicas de Visión de Azure AI con GPT-4 Turbo con Visión no se admiten para la gpt-4 Versión: turbo-2024-04-09. Esto incluye el reconocimiento óptico de caracteres (OCR), la conexión a tierra de objetos, las indicaciones de vídeo y un mejor tratamiento de sus datos con imágenes.

Importante

Las funciones de vista previa de las mejoras de visión, como el reconocimiento óptico de caracteres (OCR), la conexión a tierra de objetos y las indicaciones de vídeo, se retirarán y dejarán de estar disponibles una vez gpt-4 versión: vision-preview se actualice a turbo-2024-04-09. Si actualmente confía en alguna de estas características en versión preliminar, esta actualización automática del modelo será un cambio importante.

Disponibilidad administrada aprovisionada por GPT-4 Turbo

  • gpt-4 Versión: turbo-2024-04-09 está disponible para implementaciones estándar y aprovisionadas. Actualmente, la versión aprovisionada de este modelo no admite solicitudes de inferencia de imagen/visión. Las implementaciones aprovisionadas de este modelo solo aceptan entradas de texto. Las implementaciones de modelos estándar aceptan solicitudes de inferencia de texto e imagen/visión.

Implementación de GPT-4 Turbo con disponibilidad general de Vision

Para implementar el modelo de disponibilidad general en el portal de Azure AI Foundry, seleccione GPT-4 y elija la versión de turbo-2024-04-09 en el menú desplegable. La cuota predeterminada para el modelo gpt-4-turbo-2024-04-09 será la misma que la cuota actual para GPT-4-Turbo. Consulte los límites de cuota regionales.

Llame a las API de finalización de chat

El siguiente comando muestra la forma más básica de utilizar el modelo GPT-4 Turbo con Visión con código. Si es la primera vez que utiliza estos modelos mediante programación, le recomendamos comenzar con nuestro inicio rápido de GPT-4 Turbo con Visión.

Enviar una solicitud POST a https://{RESOURCE_NAME}.openai.azure.com/openai/deployments/{DEPLOYMENT_NAME}/chat/completions?api-version=2024-02-15-preview donde

  • RESOURCE_NAME es el nombre del recurso de Azure OpenAI
  • DEPLOYMENT_NAME es el nombre de la implementación de modelo GPT-4 Turbo con Visión

Encabezados obligatorios:

  • Content-Type: application/json
  • api-key: {API_KEY}

Cuerpo: a continuación se muestra un cuerpo de solicitud de ejemplo. El formato es el mismo que el de la API de finalización de chat para GPT-4, excepto que el contenido del mensaje puede ser una matriz que contenga texto e imágenes (ya sea una URL HTTP o HTTPS a una imagen, o bien una imagen codificada en base 64).

Importante

Recuerde establecer un valor "max_tokens" o se cortará la salida de retorno.

Importante

Al cargar imágenes, hay un límite de 10 imágenes por solicitud de chat.

{
    "messages": [ 
        {
            "role": "system", 
            "content": "You are a helpful assistant." 
        },
        {
            "role": "user", 
            "content": [
	            {
	                "type": "text",
	                "text": "Describe this picture:"
	            },
	            {
	                "type": "image_url",
	                "image_url": {
                        "url": "<image URL>"
                    }
                } 
           ] 
        }
    ],
    "max_tokens": 100, 
    "stream": false 
} 

Sugerencia

Uso de una imagen local

Si desea utilizar una imagen local, use el siguiente código de Python para convertirla a base 64 y poder pasarla a la API. Las herramientas de conversión de archivos alternativas están disponibles en línea.

import base64
from mimetypes import guess_type

# Function to encode a local image into data URL 
def local_image_to_data_url(image_path):
    # Guess the MIME type of the image based on the file extension
    mime_type, _ = guess_type(image_path)
    if mime_type is None:
        mime_type = 'application/octet-stream'  # Default MIME type if none is found

    # Read and encode the image file
    with open(image_path, "rb") as image_file:
        base64_encoded_data = base64.b64encode(image_file.read()).decode('utf-8')

    # Construct the data URL
    return f"data:{mime_type};base64,{base64_encoded_data}"

# Example usage
image_path = '<path_to_image>'
data_url = local_image_to_data_url(image_path)
print("Data URL:", data_url)

Cuando los datos de la imagen en base 64 estén listos, páselos a la API en el cuerpo de la solicitud de la siguiente manera:

...
"type": "image_url",
"image_url": {
   "url": "data:image/jpeg;base64,<your_image_data>"
}
...

Output

La respuesta de la API debe ser similar a la siguiente.

{
    "id": "chatcmpl-8VAVx58veW9RCm5K1ttmxU6Cm4XDX",
    "object": "chat.completion",
    "created": 1702439277,
    "model": "gpt-4",
    "prompt_filter_results": [
        {
            "prompt_index": 0,
            "content_filter_results": {
                "hate": {
                    "filtered": false,
                    "severity": "safe"
                },
                "self_harm": {
                    "filtered": false,
                    "severity": "safe"
                },
                "sexual": {
                    "filtered": false,
                    "severity": "safe"
                },
                "violence": {
                    "filtered": false,
                    "severity": "safe"
                }
            }
        }
    ],
    "choices": [
        {
            "finish_reason":"stop",
            "index": 0,
            "message": {
                "role": "assistant",
                "content": "The picture shows an individual dressed in formal attire, which includes a black tuxedo with a black bow tie. There is an American flag on the left lapel of the individual's jacket. The background is predominantly blue with white text that reads \"THE KENNEDY PROFILE IN COURAGE AWARD\" and there are also visible elements of the flag of the United States placed behind the individual."
            },
            "content_filter_results": {
                "hate": {
                    "filtered": false,
                    "severity": "safe"
                },
                "self_harm": {
                    "filtered": false,
                    "severity": "safe"
                },
                "sexual": {
                    "filtered": false,
                    "severity": "safe"
                },
                "violence": {
                    "filtered": false,
                    "severity": "safe"
                }
            }
        }
    ],
    "usage": {
        "prompt_tokens": 1156,
        "completion_tokens": 80,
        "total_tokens": 1236
    }
}

Cada respuesta incluye un campo "finish_reason". Tiene los siguientes valores posibles:

  • stop: la API devolvió la salida completa del modelo.
  • length: salida incompleta del modelo debido al parámetro de entrada max_tokens o al límite de tokens del modelo.
  • content_filter: contenido omitido debido a una marca de nuestros filtros de contenido.

Configuración de parámetros de detalle en el procesamiento de imágenes: baja, alta y automática

El parámetro detalle del modelo ofrece tres opciones: low, high o auto, para ajustar la forma en que el modelo interpreta y procesa imágenes. La configuración predeterminada es automática, en la que el modelo decide entre baja o alta en función del tamaño de la entrada de la imagen.

  • Configuración low: el modelo no activa el modo "alta resolución", sino que procesa una versión de resolución 512x512 más baja, lo que da lugar a respuestas más rápidas y a un menor consumo de tokens para escenarios en los que los detalles finos no son cruciales.
  • Configuración high: el modelo activa el modo "alta resolución". Aquí, el modelo ve inicialmente la imagen de baja resolución y, a continuación, genera segmentos detallados de 512x512 a partir de la imagen de entrada. Cada segmento usa el doble del presupuesto del token, lo que permite una interpretación más detallada de la imagen.

Para más información sobre cómo afectan los parámetros de imagen a los tokens usados y los precios, consulte : ¿Qué es Azure OpenAI? Tokens de imagen

Output

Las respuestas de chat que reciba del modelo ahora deberían incluir información mejorada sobre la imagen, como etiquetas de objetos y cuadros delimitadores, y resultados de OCR. La respuesta de la API debe ser similar a la siguiente.

{
    "id": "chatcmpl-8UyuhLfzwTj34zpevT3tWlVIgCpPg",
    "object": "chat.completion",
    "created": 1702394683,
    "model": "gpt-4",
    "choices":
    [
        {
            "finish_reason": {
                "type": "stop",
                "stop": "<|fim_suffix|>"
            },
            "index": 0,
            "message":
            {
                "role": "assistant",
                "content": "The image shows a close-up of an individual with dark hair and what appears to be a short haircut. The person has visible ears and a bit of their neckline. The background is a neutral light color, providing a contrast to the dark hair."
            }
        }
    ],
    "usage":
    {
        "prompt_tokens": 816,
        "completion_tokens": 49,
        "total_tokens": 865
    }
}

Cada respuesta incluye un campo "finish_reason". Tiene los siguientes valores posibles:

  • stop: la API devolvió la salida completa del modelo.
  • length: salida incompleta del modelo debido al parámetro de entrada max_tokens o al límite de tokens del modelo.
  • content_filter: contenido omitido debido a una marca de nuestros filtros de contenido.

Pasos siguientes