from typing import Optional
from datetime import datetime
from pydantic import BaseModel


class LLMConfig(BaseModel):
    is_default: bool
    id: int
    model: str
    temperature: float
    top_p: float
    min_p: float
    frequency_penalty: float
    presence_penalty: float
    n_predict: int
    seed: int
    date_created: datetime

    class Config:
        json_schema_extra = {
            'example': {
                'is_default': True,
                'model': 'meta-llama/Llama-3.3-70B-Instruct',
                'temperature': 0.14,
                'top_p': 0.95,
                'min_p': 0.05,
                'frequency_penalty': -0.001,
                'presence_penalty': 1.3, 
                'n_predict': 1000, 
                'seed': 42
            }
        }

class LLMConfigCreateScheme(BaseModel):
    is_default: bool
    model: str
    temperature: float
    top_p: float
    min_p: float
    frequency_penalty: float
    presence_penalty: float
    n_predict: int
    seed: int
    class Config:
        json_schema_extra = {
            'example': {
                'is_default': True,
                'model': 'meta-llama/Llama-3.3-70B-Instruct',
                'temperature': 0.14,
                'top_p': 0.95,
                'min_p': 0.05,
                'frequency_penalty': -0.001,
                'presence_penalty': 1.3,
                'n_predict': 1000, 
                'seed': 42
            }
        }