| | 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) |
| |
|
| | |
| | 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}") |
| |
|
| | |
| |
|
| | 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}" |
| | ) |
| |
|