from app.config import get_settings from app.schemas.requests import ExtractionRequest, FollowSchemaRequest from app.schemas.schema_tools import validate_json_schema from app.utils.logger import setup_logger logger = setup_logger(__name__) settings = get_settings() def validate_extract_request(request: ExtractionRequest): """Validate the request to extract attributes.""" request.max_attempts = max(request.max_attempts, 1) request.max_attempts = min(request.max_attempts, 5) # Limit the number of images to 10 if len(request.img_urls) > 10: logger.warning( f"Number of images exceeds 10: {len(request.img_urls)}. Limiting to 10." ) request.img_urls = request.img_urls[:10] for url in request.img_urls: if not url.startswith("http"): raise ValueError(f"Invalid URL: {url}") # validate_json_schema(request.data_schema) if request.ai_model.lower() not in settings.SUPPORTED_MODELS: raise ValueError( f"Invalid ai_model: {request.ai_model}, only support {settings.SUPPORTED_MODELS}" ) def validate_follow_request(request: FollowSchemaRequest): """Validate the request to follow a schema.""" request.max_attempts = max(request.max_attempts, 1) request.max_attempts = min(request.max_attempts, 5) validate_json_schema(request.data_schema) if request.ai_model.lower() not in settings.SUPPORTED_MODELS: raise ValueError( f"Invalid ai_model: {request.ai_model}, only support {settings.SUPPORTED_MODELS}" )