nemo-seed-generator / models.py
mindchain's picture
Upload models.py with huggingface_hub
b8e9d5b verified
Raw
History Blame Contribute Delete
2.46 kB
"""Pydantic models for Nemo Seed Generator API."""
from enum import Enum
from typing import List, Optional, Any
from pydantic import BaseModel, Field
class HFInferenceModel(str, Enum):
"""Available HuggingFace Inference models."""
QWEN_2_5_7B = "Qwen/Qwen2.5-7B-Instruct"
class HFInferenceProvider(str, Enum):
"""Available HuggingFace Inference providers."""
TOGETHER = "together"
INFERENCE_SERVER = "inference-server"
class SeedGenerateRequest(BaseModel):
"""Request model for generating seed Q&A pairs."""
num_records: int = Field(
default=1,
ge=1,
le=50,
description="Number of Q&A pairs to generate (max 50)"
)
topic: str = Field(
...,
min_length=1,
max_length=200,
description="Topic for the Q&A pairs (e.g., 'machine learning')"
)
difficulty: str = Field(
...,
pattern=r"^(beginner|intermediate|advanced)$",
description="Difficulty level: beginner, intermediate, or advanced"
)
model: HFInferenceModel = Field(
default=HFInferenceModel.QWEN_2_5_7B,
description="HuggingFace model to use"
)
provider: HFInferenceProvider = Field(
default=HFInferenceProvider.TOGETHER,
description="HF Inference API provider"
)
class SeedRecord(BaseModel):
"""A single Q&A seed record."""
topic: str = Field(..., description="The topic of the Q&A")
difficulty: str = Field(..., description="Difficulty level")
question: str = Field(..., description="The question")
answer: str = Field(..., description="The answer")
model: str = Field(..., description="Model used to generate")
provider: str = Field(..., description="Provider used")
class SeedGenerateResponse(BaseModel):
"""Response model for seed generation."""
success: bool = Field(..., description="Whether generation succeeded")
data: Optional[List[SeedRecord]] = Field(
default=None,
description="Generated Q&A pairs if successful"
)
record_count: int = Field(default=0, description="Number of records generated")
error: Optional[str] = Field(default=None, description="Error message if failed")
class HealthResponse(BaseModel):
"""Health check response."""
status: str = Field(..., description="Health status")
model: str = Field(..., description="Current model")
provider: str = Field(..., description="Current provider")