Spaces:
Sleeping
Sleeping
# models/schemas.py | |
"""Pydantic models for request/response validation""" | |
from pydantic import BaseModel, Field, validator | |
from typing import List, Optional, Literal | |
class EmbeddingRequest(BaseModel): | |
"""Request model for embedding generation""" | |
texts: List[str] = Field( | |
..., | |
description="List of texts to embed", | |
example=["Hola mundo", "¿Cómo estás?"] | |
) | |
normalize: bool = Field( | |
default=True, | |
description="Whether to normalize embeddings to unit length" | |
) | |
max_length: Optional[int] = Field( | |
default=None, | |
description="Maximum sequence length (uses model default if not specified)" | |
) | |
def validate_texts(cls, v): | |
if not v: | |
raise ValueError("At least one text must be provided") | |
if len(v) > 50: | |
raise ValueError("Maximum 50 texts per request") | |
# Check for empty strings | |
if any(not text.strip() for text in v): | |
raise ValueError("Empty texts are not allowed") | |
return v | |
def validate_max_length(cls, v): | |
if v is not None: | |
if v < 1: | |
raise ValueError("Max length must be positive") | |
if v > 8192: | |
raise ValueError("Max length cannot exceed 8192") | |
return v | |
class EmbeddingResponse(BaseModel): | |
"""Response model for embedding generation""" | |
embeddings: List[List[float]] = Field( | |
..., | |
description="List of embedding vectors" | |
) | |
model_used: str = Field( | |
..., | |
description="Model that was used" | |
) | |
dimensions: int = Field( | |
..., | |
description="Dimension of embedding vectors" | |
) | |
num_texts: int = Field( | |
..., | |
description="Number of texts processed" | |
) | |
class ModelInfo(BaseModel): | |
"""Information about available models""" | |
model_id: str = Field( | |
..., | |
description="Model identifier for API calls" | |
) | |
name: str = Field( | |
..., | |
description="Full Hugging Face model name" | |
) | |
dimensions: int = Field( | |
..., | |
description="Output embedding dimensions" | |
) | |
max_sequence_length: int = Field( | |
..., | |
description="Maximum input sequence length" | |
) | |
languages: List[str] = Field( | |
..., | |
description="Supported languages" | |
) | |
model_type: str = Field( | |
..., | |
description="Type/domain of model" | |
) | |
description: str = Field( | |
..., | |
description="Model description" | |
) | |
class ErrorResponse(BaseModel): | |
"""Error response model""" | |
detail: str = Field( | |
..., | |
description="Error message" | |
) | |
error_type: Optional[str] = Field( | |
default=None, | |
description="Type of error" | |
) |