| |
|
|
| 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() |
|
|
|
|