Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

[Sugerencia] Sobre detalles_imagen.py

Los modelos de lenguaje leen tanto las descripciones en texto como las restricciones numéricas del esquema. Al mapear explícitamente min_items=3 y max_items=3, el JSON Schema le dice al LLM de forma matemática que el array debe tener longitud 3, garantizando que Gemini o Cohere sigan la regla a rajatabla sin margen de error.

from pydantic import BaseModel, Field
from typing import List


class DetallesImagen(BaseModel):
    titulo:str = Field(
        description= "Define el titulo adecuado para la imagen analizada."
    )
    
    descripcion: str = Field(
        description= "Coloca aqui una descripcion del analisis de la imagen."
    )  
    # Añadimos restricciones de tamaño mínimo y máximo para obligar al LLM a cumplir las  "3" palabras clave
    etiquetas:List[str] = Field(
        min_items=3,
        max_items=3,
        description= "Define 3 palabras-clave para la imagen analizada."
    )
1 respuesta

Hola, Christian! ¿Cómo vas?
Gracias por compartir tus reflexiones y aprendizajes con la comunidad Alura. Tu observación sobre min_items=3 y max_items=3 está muy bien encaminada: esas restricciones dejan más claro el formato esperado y ayudan a que la salida tenga exactamente tres elementos en etiquetas.

Solo vale reforzar un punto: el esquema orienta y valida la respuesta, pero no siempre garantiza que el modelo cumpla todo a la perfección sin una validación posterior. Una dica útil es combinar esas restricciones con una verificación usando Pydantic o el parser de LangChain, así el código puede detectar cuando la respuesta no sigue el formato esperado y pedir un ajuste si hace falta. ¿Probaste ejecutar el flujo varias veces para ver si el modelo mantiene siempre las tres etiquetas?

Cuenta con el apoyo del foro en tu viaje. Saludos y buenos estudios!