VoiceBot / config /config.py
Chris4K's picture
Update config/config.py
26c651c verified
# config/config.py
from dataclasses import dataclass, field
from enum import Enum
from typing import Dict, Any, Optional
class GenerationStrategy(str, Enum):
DEFAULT = "default"
MAJORITY_VOTING = "majority_voting"
BEST_OF_N = "best_of_n"
BEAM_SEARCH = "beam_search"
DVTS = "dvts"
COT = "chain_of_thought"
REACT = "react"
@dataclass
class ModelConfig:
model_kwargs: Dict[str, Any] = field(default_factory=dict)
tokenizer_kwargs: Dict[str, Any] = field(default_factory=dict)
quantization_kwargs: Dict[str, Any] = field(default_factory=dict)
@dataclass
class GenerationConfig:
num_samples: int = 5
depth: int = 3
breadth: int = 2
max_history_turns: int = 1
max_new_tokens: int = 50
temperature: float = 0.7
top_p: float = 0.9
top_k: int = 50
repetition_penalty: float = 1.1
length_penalty: float = 1.0
do_sample: bool = True
strategy: GenerationStrategy = GenerationStrategy.DEFAULT
#####
from pydantic_settings import BaseSettings
from pathlib import Path
import torch
class Settings(BaseSettings):
secret_key: str
api_key: str
MODEL_NAME: str = "meta-llama/Llama-3.2-3B-Instruct"
EMBEDDER_MODEL: str = "distiluse-base-multilingual-cased"
CHUNK_SIZE: int = 1000
CHUNK_OVERLAP: int = 100
CSV_URL: str = 'https://www.bofrost.de/datafeed/DE/products.csv'
PDF_FOLDER: Path = Path("./pdfs")
DEVICE: str = "cuda" if torch.cuda.is_available() else "cpu"
QUANTIZATION_BITS: int = 8
FAQ_ROOT_URL: str = "https://www.bofrost.de/faq/"
CACHE_DURATION: int = 3600
MAX_RETRIES: int = 3
TIMEOUT: int = 30
class Config:
extra = "allow" # This allows additional fields beyond those defined in the class
env_file = ".env"
settings = Settings()