Alief Gilang Permana Putra
feat: Add files for inference
af35098
from pydantic import BaseModel, Field
from typing import Optional
class InferenceRequest(BaseModel):
"""Request body for Big Five personality trait prediction."""
model_type: str = Field(
...,
description="The ID of the vision model to use for inference",
examples=["swinv2", "vit", "pvtv2"],
)
image_base64: str = Field(
...,
description="Base64-encoded image string (JPEG/PNG). Data URI prefix is optional.",
examples=["iVBORw0KGgoAAAANSUhEUg..."],
)
class OCEANTraits(BaseModel):
"""Big Five (OCEAN) personality trait scores, each ranging from 0.0 to 1.0."""
Openness: float = Field(..., ge=0.0, le=1.0, description="Openness to experience", examples=[0.62])
Conscientiousness: float = Field(..., ge=0.0, le=1.0, description="Conscientiousness", examples=[0.63])
Extraversion: float = Field(..., ge=0.0, le=1.0, description="Extraversion", examples=[0.54])
Agreeableness: float = Field(..., ge=0.0, le=1.0, description="Agreeableness", examples=[0.63])
Neuroticism: float = Field(..., ge=0.0, le=1.0, description="Neuroticism", examples=[0.60])
class PredictionResponse(BaseModel):
"""Response containing the model used, predicted OCEAN traits, and the cropped face image."""
model_used: str = Field(..., description="The ID of the model that produced the prediction", examples=["swinv2"])
predictions: OCEANTraits = Field(..., description="Predicted Big Five personality trait scores")
cropped_face_base64: Optional[str] = Field(None, description="Base64 encoded cropped face image, if face extraction was used.", examples=["/9j/4AAQSkZJRgABAQEASABIAAD/4..."])