← capítulo

Visión y entrada multimodal

Capítulo 12 · el modelo ahora puede ver

La hora

La única idea

El contenido del mensaje es una lista:

[ text part, image part ]

Razonada en una sola pasada. Todo lo que sabes sobre prompting sigue aplicando — ahora sobre pixeles.

OpenAI — pasa la URL

client.responses.create(model="gpt-5.4-nano", input=[{
  "role": "user",
  "content": [
    {"type": "input_text",  "text": question},
    {"type": "input_image", "image_url": url},
  ],
}])

OpenAI descarga la URL por ti.

Gemini — pasa los bytes

img = urllib.request.urlopen(url).read()
client.models.generate_content(
  model="gemini-3.1-flash-lite",
  contents=[
    types.Part.from_bytes(data=img, mime_type="image/jpeg"),
    question,
  ])

Ponlo a trabajar — tres apps

El mismo mensaje multimodal; la instrucción + el manejo de la salida cambian.

Dos notas prácticas

Lo que te llevas

Entrada multimodal = los mismos modelos con un mensaje más rico. Prompting, salida estructurada, grounding, todo sigue aplicando, sobre pixeles. Sigue: el modelo deja de leer imágenes y empieza a hacerlas.