|
|
|
|
|
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" |
|
env_file = ".env" |
|
|
|
settings = Settings() |
|
|
|
|