from pydantic import BaseModel, Field from typing import Optional, Literal, Dict, Any BackendType = Literal["hf_inference_api", "local_transformers"] class ModelSpec(BaseModel): model_id: str = Field(..., description="HF model id, e.g. meta-llama/Meta-Llama-3-8B-Instruct") backend: BackendType = "hf_inference_api" temperature: float = 0.2 max_new_tokens: int = 600 top_p: float = 0.95 repetition_penalty: float = 1.05 system_prompt: Optional[str] = None extra: Dict[str, Any] = Field(default_factory=dict) class RunConfig(BaseModel): analyzer: ModelSpec refactor: ModelSpec critic: ModelSpec