Files
Hunyuan3D_2.1_Low_VRAM/api_models.py
SyncTwin GmbH 76c3997d5e better glb
2025-06-22 16:59:26 +00:00

82 lines
2.3 KiB
Python

"""
Pydantic models for Hunyuan3D API server.
"""
from typing import Optional, Literal
from pydantic import BaseModel, Field
class GenerationRequest(BaseModel):
"""Request model for 3D generation API"""
image: str = Field(
...,
description="Base64 encoded input image for 3D generation",
example="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg=="
)
remove_background: bool = Field(
True,
description="Whether to automatically remove background from input image"
)
texture: bool = Field(
False,
description="Whether to generate textures for the 3D model"
)
seed: int = Field(
1234,
description="Random seed for reproducible generation",
ge=0,
le=2**32-1
)
octree_resolution: int = Field(
256,
description="Resolution of the octree for mesh generation",
ge=64,
le=512
)
num_inference_steps: int = Field(
5,
description="Number of inference steps for generation",
ge=1,
le=20
)
guidance_scale: float = Field(
5.0,
description="Guidance scale for generation",
ge=0.1,
le=20.0
)
num_chunks: int = Field(
8000,
description="Number of chunks for processing",
ge=1000,
le=20000
)
face_count: int = Field(
40000,
description="Maximum number of faces for texture generation",
ge=1000,
le=100000
)
class GenerationResponse(BaseModel):
"""Response model for generation status"""
uid: str = Field(..., description="Unique identifier for the generation task")
class StatusResponse(BaseModel):
"""Response model for status endpoint"""
status: str = Field(..., description="Status of the generation task")
model_base64: Optional[str] = Field(
None,
description="Base64 encoded generated model file (only when status is 'completed')"
)
message: Optional[str] = Field(
None,
description="Error message (only when status is 'error')"
)
class HealthResponse(BaseModel):
"""Response model for health check"""
status: str = Field(..., description="Health status")
worker_id: str = Field(..., description="Worker identifier")