Lo que vas a construir
Un clasificador de imagenes que analiza fotos y las categoriza automaticamente usando IA multimodal.
Le pasas una imagen (desde archivo o URL) y te dice que es: "gato, 95% confianza, gato atigrado durmiendo en un sofa". Puedes definir tus propias categorias para clasificar productos, documentos, o lo que necesites.
Al terminar tendras un script en Python que usa Gemini Vision para analizar imagenes. Devuelve la categoria, nivel de confianza, y una descripcion. Util para organizar fotos, moderar contenido, o automatizar inventario.
El prompt para empezar
Crea un clasificador de imagenes en Python que:
- Reciba una imagen (path o URL)
- Use Gemini Vision para analizarla
- Devuelva: categoría, confianza, descripción
- Soporte categorías personalizadas
Lo que la IA creará
import google.generativeai as genai
from PIL import Image
import requests
from io import BytesIO
import os
import json
genai.configure(api_key=os.environ["GEMINI_API_KEY"])
model = genai.GenerativeModel("gemini-1.5-flash")
def load_image(source: str) -> Image.Image:
"""Cargar imagen desde path o URL"""
if source.startswith("http"):
response = requests.get(source)
return Image.open(BytesIO(response.content))
return Image.open(source)
def classify(
image_source: str,
categories: list[str] = None
) -> dict:
"""Clasificar imagen"""
image = load_image(image_source)
if categories:
cat_list = ", ".join(categories)
prompt = f"""Analiza esta imagen y clasifícala en UNA de estas categorías: {cat_list}
Responde en JSON:
{{
"category": "categoría elegida",
"confidence": 0.0 a 1.0,
"description": "descripción breve",
"objects": ["objetos detectados"]
}}"""
else:
prompt = """Analiza esta imagen.
Responde en JSON:
{
"category": "categoría general",
"confidence": 0.0 a 1.0,
"description": "descripción breve",
"objects": ["objetos detectados"]
}"""
response = model.generate_content([prompt, image])
text = response.text.strip().strip("```json").strip("```")
return json.loads(text)
# Ejemplos de uso
result = classify("gato.jpg")
print(f"Categoría: {result['category']}")
print(f"Confianza: {result['confidence']:.0%}")
print(f"Descripción: {result['description']}")
# Con categorías personalizadas
result = classify(
"foto.jpg",
categories=["comida", "paisaje", "persona", "animal", "objeto"]
)
Variante: Clasificación batch
def classify_batch(images: list[str], categories: list[str]) -> list[dict]:
"""Clasificar múltiples imágenes"""
results = []
for img in images:
try:
result = classify(img, categories)
result["source"] = img
results.append(result)
except Exception as e:
results.append({"source": img, "error": str(e)})
return results