PMFlow/backend/app/schemas/training_pipeline.py

34 lines
946 B
Python

from __future__ import annotations
from typing import Any, Literal, Optional
from pydantic import BaseModel, ConfigDict, Field
class TrainingDatasetCreateRequest(BaseModel):
model_config = ConfigDict(extra="ignore")
dataset_type: Literal["sft", "preference", "eval"]
version: str
asset_ids: list[int] = Field(default_factory=list)
pair_ids: list[int] = Field(default_factory=list)
selection_rules: dict[str, Any] = Field(default_factory=dict)
notes: Optional[str] = None
class TrainingJobCreateRequest(BaseModel):
model_config = ConfigDict(extra="ignore")
dataset_id: int
job_type: Literal["sft", "preference"]
base_model_family: str
target_slot: Literal["low", "high"]
provider_backend: str
class TrainingDeploymentDecisionRequest(BaseModel):
model_config = ConfigDict(extra="ignore")
decision: Literal["accepted", "rejected", "rolled_back"]
notes: Optional[str] = None