1. Introducción al modelo de visión GPT-4
El modelo de visión GPT-4 (GPT-4V) es un modelo de inteligencia artificial multimodal presentado por OpenAI, que integra capacidades de comprensión visual basadas en GPT-4. A diferencia de los modelos tradicionales de procesamiento de texto, GPT-4V puede recibir y analizar contenido de imágenes, proporcionando descripciones, respondiendo preguntas y participando en interacciones relacionadas con las imágenes.
Ejemplos de aplicaciones:
- Reconocimiento y Clasificación de Productos: Las plataformas de comercio electrónico pueden utilizar GPT-4V para identificar y proporcionar descripciones de imágenes de productos, ayudando a mejorar los sistemas de búsqueda y recomendación.
- Ayuda en Decisiones Médicas: Aunque GPT-4V no es adecuado para el diagnóstico profesional directo de imágenes médicas, puede ayudar al personal médico en la comprensión inicial de imágenes y la organización de datos.
- Educación e Investigación: En la enseñanza y la investigación científica, GPT-4V puede utilizarse para analizar gráficos, resultados de experimentos e interpretar automáticamente datos de imágenes científicas.
- Monitoreo y Análisis de Tráfico: Al analizar imágenes de vigilancia de tráfico, GPT-4V puede ayudar a los sistemas de gestión de tráfico en la generación de informes en tiempo real sobre las condiciones y la identificación de accidentes.
2. Ejemplo sencillo
A continuación se muestra un ejemplo sencillo utilizando una solicitud CURL para demostrar cómo usar el modelo de visión GPT-4 para analizar imágenes:
Parámetros de la solicitud de API:
-
model
: Especifica la versión del modelo que se utilizará, en este caso "gpt-4-vision-preview". -
messages
: Contiene la definición de roles y contenido, donde el contenido puede incluir texto y enlaces de imágenes. -
max_tokens
: Especifica el límite máximo de longitud para la generación de texto.
Ejemplo de solicitud CURL:
curl https://api.openai.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-4-vision-preview",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "¿Qué hay en esta imagen?"
},
{
"type": "image_url",
"image_url": {
"url": "Tu enlace de imagen"
}
}
]
}
],
"max_tokens": 300
}'
Con la solicitud anterior, hemos enviado una imagen al modelo de visión GPT-4 y hemos hecho una pregunta sencilla: "¿Qué hay en esta imagen?" El modelo analizará el contenido de la imagen y proporcionará una respuesta basada en dicho contenido.
3. Carga de imágenes utilizando codificación Base64
En ciertos casos, es posible que necesites cargar un archivo de imagen local en el modelo de visión GPT-4. En tales casos, podemos incrustar los datos de la imagen en la solicitud de la API utilizando codificación Base64.
Ejemplo de código en Python:
import base64
import requests
api_key = "TU_CLAVE_API_DE_OPENAI"
def codificar_imagen(ruta_imagen):
with open(ruta_imagen, "rb") as archivo_imagen:
return base64.b64encode(archivo_imagen.read()).decode('utf-8')
ruta_imagen = "ruta_de_tu_imagen.jpg"
imagen_base64 = codificar_imagen(ruta_imagen)
encabezados = {
"Content-Type": "application/json",
"Authorization": f"Bearer {api_key}"
}
carga_util = {
"model": "gpt-4-vision-preview",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "¿Qué hay en esta imagen?"
},
{
"type": "image_url",
"image_url": {
"url": f"data:image/jpeg;base64,{imagen_base64}"
}
}
]
}
],
"max_tokens": 300
}
respuesta = requests.post("https://api.openai.com/v1/chat/completions", headers=encabezados, json=carga_util)
print(respuesta.json())
En el código anterior, primero convertimos un archivo de imagen local en una cadena codificada en Base64, y luego enviamos esta cadena como parte de la solicitud a la API. La respuesta del modelo contiene una descripción del contenido de la imagen.
4. Manejo de múltiples entradas de imágenes
En ocasiones, es necesario analizar múltiples imágenes a la vez. El modelo de visión GPT-4 admite la recepción de múltiples entradas de imágenes simultáneamente y permite a los usuarios hacer preguntas sobre estas imágenes o comparar sus diferencias.
Ejemplo de Entrada Múltiple de Imágenes:
curl https://api.openai.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-4-vision-preview",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "¿Qué es diferente en estas imágenes?"
},
{
"type": "image_url",
"image_url": {
"url": "URL de la primera imagen",
}
},
{
"type": "image_url",
"image_url": {
"url": "URL de la segunda imagen",
}
}
]
}
],
"max_tokens": 300
}'
En esta solicitud, enviamos dos imágenes a la API. El modelo analizará cada imagen por separado y proporcionará descripciones y comparaciones basadas en las preguntas planteadas. Este enfoque es ideal para el análisis general de una colección de imágenes.
5. Configurar Nivel de Detalle del Análisis de Imágenes
Al utilizar el modelo visual GPT-4 para el análisis de imágenes, puedes configurar el nivel de detalle según tus necesidades. Al ajustar el parámetro detail
, puedes elegir entre bajo
, alto
o auto
. Aquí tienes una explicación detallada de cada opción y cómo configurarla:
-
bajo
: Elegir el nivel de detalle bajo desactivará el modelo "de alta resolución". Este modelo recibirá una versión de baja resolución de la imagen de 512 píxeles x 512 píxeles y utilizará un presupuesto de 65 tokens para representar la imagen. Esto es adecuado para escenarios que no requieren muchos detalles, ayudando a lograr un tiempo de respuesta más rápido y a consumir menos tokens de entrada. -
alto
: El nivel de detalle alto permite al modelo primero ver una imagen de baja resolución y luego crear una versión detallada recortada en una cuadrícula de 512 píxeles basada en el tamaño de la imagen de entrada. Cada recorte detallado se representa con un presupuesto doble de 129 tokens (es decir, 65 tokens por recorte predeterminado). -
auto
: El nivel de detalle automático determinará si usar el nivel de detallebajo
oalto
en función del tamaño de la imagen de entrada.
El siguiente ejemplo de código muestra cómo configurar el nivel de detalle:
import base64
import requests
api_key = "tu_API_KEY_de_OPENAI"
ruta_imagen = "ruta_a_tu_imagen.jpg"
imagen_base64 = base64.b64encode(open(ruta_imagen, "rb").read()).decode('utf-8')
encabezados = {
"Content-Type": "application/json",
"Authorization": f"Bearer {api_key}"
}
carga_util = {
"model": "gpt-4-vision-preview",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "¿Qué hay en esta imagen?"
},
{
"type": "image_url",
"image_url": {
"url": f"data:image/jpeg;base64,{imagen_base64}",
"detail": "alto" # Establecer nivel de detalle alto
}
}
]
}
],
"max_tokens": 300
}
respuesta = requests.post("https://api.openai.com/v1/chat/completions", headers=encabezados, json=carga_util)
print(respuesta.json())
6. Comprender las Limitaciones del Modelo y Gestionar Imágenes
6.1. Limitaciones del Modelo
A pesar de la potente funcionalidad del modelo visual GPT-4, no está exento de limitaciones, y comprender estas limitaciones es crucial para utilizarlo en la comprensión de imágenes. Aquí tienes una visión general de algunas limitaciones conocidas:
-
Imágenes Médicas: El modelo no es adecuado para interpretar imágenes médicas profesionales, como tomografías computarizadas, y no debe usarse para asesoramiento médico.
-
Texto No Inglés: El modelo puede no tener un buen rendimiento al procesar imágenes que contienen texto en alfabetos no latinos, como japonés o coreano.
-
Localización Espacial: El rendimiento del modelo es subóptimo en tareas que requieren asociaciones precisas de ubicación espacial, como identificar posiciones de piezas en un tablero de ajedrez.
-
Detalles de la Imagen: El modelo puede tener dificultades para comprender gráficos o texto con variaciones de color y estilo (por ejemplo, líneas sólidas, líneas discontinuas) en una imagen.
-
Rotación de la Imagen: El modelo puede malinterpretar texto e imágenes inclinadas o boca abajo.
6.2 Gestión de imágenes en sesiones
Dado que la API de Completado de Chat es sin estado, necesitas gestionar tú mismo los mensajes (incluidas las imágenes) enviados al modelo. Si deseas usar la misma imagen varias veces, necesitas reenviar los datos de la imagen con cada solicitud a la API.
payload_adicional = {
"modelo": "gpt-4-vision-preview",
"mensajes": [
{
"rol": "usuario",
"contenido": [
{
"tipo": "texto",
"texto": "Basado en esta imagen, ¿qué sugerencias tienes?"
},
{
"tipo": "image_url",
"image_url": {
"url": f"data:image/jpeg;base64,{base64_imagen}"
}
}
]
}
],
"max_tokens": 300
}
nueva_respuesta = requests.post("https://api.openai.com/v1/chat/completions", headers=encabezados, json=payload_adicional)
print(nueva_respuesta.json())
7. Cálculo de costos
Cada imagen que utiliza la opción detalle: bajo
consume fijamente 85 tokens. Para imágenes con la opción detalle: alto
, la imagen se escala primero de manera proporcional para ajustarse al tamaño de 2048px x 2048px. A continuación, se asegura que el lado más corto de la imagen sea de 768px. La imagen se divide luego en varios cuadrados de 512px, con cada cuadrado consumiendo 170 tokens, y se agregan 85 tokens adicionales al recuento total final.
Por ejemplo, si una imagen tiene dimensiones de 1024px x 1024px y se elige la opción detalle: alto
, el costo en tokens sería:
- Primero, dado que 1024 es menor que 2048, no se realiza ningún ajuste de tamaño inicial.
- Luego, al tener el lado más corto con 1024, la imagen se redimensiona a 768 x 768.
- Se necesitan 4 cuadrados de 512px para representar la imagen, por lo que el costo total final será de 170 * 4 + 85 = 765.
Para una comprensión detallada del método de cálculo de costos, por favor consulta la documentación del modelo de visión GPT-4.
8. Preguntas frecuentes
A continuación se presentan algunas preguntas comunes y sus respuestas que los usuarios pueden encontrar al usar el modelo de visión GPT-4:
P: ¿Puedo ajustar finamente las capacidades de imagen de gpt-4
?
R: Actualmente, no admitimos ajustar finamente las capacidades de imagen de gpt-4
.
P: ¿Puedo usar gpt-4
para generar imágenes?
R: No, puedes usar dall-e-3
para generar imágenes y usar gpt-4-vision-preview
para entender imágenes.
P: ¿Qué tipos de archivos se admiten para la carga?
R: Actualmente admitimos archivos PNG (.png), JPEG (.jpeg y .jpg), WEBP (.webp) y GIF no animados (.gif).