mindchain's picture
Upload models.py with huggingface_hub
d58382a verified
from pydantic import BaseModel, Field
from typing import Optional
from enum import Enum
class OpenRouterModel(str, Enum):
GLM_5 = "z-ai/glm-5"
GPT_4O_MINI = "openai/gpt-4o-mini"
CLAUDE_SONNET = "anthropic/claude-sonnet-4.6"
class ColumnConfig(BaseModel):
name: str = Field(..., description="Column name")
type: str = Field(..., description="Column type: sampler, llm_text")
params: dict = Field(default_factory=dict)
class GenerateRequest(BaseModel):
num_records: int = Field(default=10, ge=1, le=100)
model: OpenRouterModel = Field(default=OpenRouterModel.GLM_5)
columns: list[ColumnConfig] = Field(...)
temperature: float = Field(default=0.7, ge=0.0, le=2.0)
max_tokens: int = Field(default=256, ge=64, le=4096)
class PreviewRequest(BaseModel):
model: OpenRouterModel = Field(default=OpenRouterModel.GLM_5)
columns: list[ColumnConfig] = Field(...)
temperature: float = Field(default=0.7)
max_tokens: int = Field(default=256)
class GenerateResponse(BaseModel):
success: bool
data: Optional[list[dict]] = None
record_count: int = 0
error: Optional[str] = None
class PreviewResponse(BaseModel):
success: bool
sample: Optional[dict] = None
error: Optional[str] = None
class HealthResponse(BaseModel):
status: str
model: str
api_configured: bool