Desarrollo de una aplicación de chat basada en la visión

Completado

Para desarrollar una aplicación cliente que participe en chats basados en la visión con un modelo bidireccional, puede usar las mismas técnicas básicas que se usan para chats basados en texto. Necesita una conexión al punto de conexión donde se implementa el modelo y usa ese punto de conexión para enviar mensajes que constan de mensajes al modelo y procesar las respuestas.

La principal diferencia es que los mensajes de un chat basado en la visión incluyen mensajes de usuario compuestos por varias partes que contienen un elemento de contenido de texto y un elemento de contenido de imagen.

Diagrama de un mensaje de varias partes que se envía a un modelo.

Envío de un mensaje basado en imágenes mediante la API de respuestas

Para incluir una imagen en un mensaje mediante la API de respuestas , especifique una dirección URL para un archivo de imagen basado en web o cargue una imagen local y codifique sus datos en formato Base64 y envíe una dirección URL en el formato data:image/jpeg;base64,{image_data} (reemplazando "jpeg" por "png" pr otros formatos según corresponda).

En el ejemplo de Python siguiente se muestra cómo enviar una imagen en un mensaje mediante la API de respuestas :

# Read the image data from a local file
image_path = Path("dragon-fruit.jpeg")
image_format = "jpeg"
with open(image_path, "rb") as image_file:
    image_data = base64.b64encode(image_file.read()).decode("utf-8")

data_url = f"data:image/{image_format};base64,{image_data}" # You can also use a web URL

# Send the image data in a prompt to the model
response = client.responses.create(
    model="gpt-4.1",
    input=[
        {"role": "developer", "content": "You are an AI assistant for chefs planning recipes."},
        {"role": "user", "content": [  
            { "type": "input_text", "text": "What desserts could I make with this?"},
            { "type": "input_image", "image_url": data_url}
        ] } 
    ]
)
print(response.output_text)

Envío de un mensaje basado en imágenes mediante la API ChatCompletions

Al usar el punto de conexión de Azure OpenAI para enviar indicaciones a los modelos que no admiten la API de respuestas, puede usar la API CatCompletions; así:

# Read the image data from a local file
image_path = Path("orange.jpeg")
image_format = "jpeg"
with open(image_path, "rb") as image_file:
    image_data = base64.b64encode(image_file.read()).decode("utf-8")

data_url = f"data:image/{image_format};base64,{image_data}" # You can also use a web URL

# Send the image data in a prompt to the model
response = client.chat.completions.create(
    model="Phi-4-multimodal-instruct",
    messages=[
        {"role": "system", "content": "You are an AI assistant for chefs planning recipes."},
        { "role": "user", "content": [  
            { "type": "text", "text": "What can I make with this fruit?"},
            { "type": "image_url", "image_url": {"url": data_url}}
        ] }
    ]
)
print(response.choices[0].message.content)