config.py
1 import os 2 from dotenv import find_dotenv, load_dotenv 3 from pydantic_settings import BaseSettings, SettingsConfigDict 4 5 6 env_file_present: bool = load_dotenv(find_dotenv()) 7 env_vars = SettingsConfigDict(env_file=".env", env_file_encoding="utf-8") 8 9 10 class ChunkingSettings: 11 12 # Chunking hyperparameters 13 ratio_of_tokens_in_overlap: float = 0.2 14 number_of_characters_per_chunk: int = 800 15 overlapping_characters_per_chunk: int = 30 16 17 # Parameters of the recursive text splitter 18 add_start_index: bool = True 19 length_function: object = len 20 21 22 class EmbedddingSettings: 23 embedding_model_name: str = "thenlper/gte-large" 24 25 26 class GroqConfig(BaseSettings): 27 28 assert env_file_present 29 preferred_model: str = "llama-3.3-70b-versatile" 30 api_key: str = os.environ["GROQ_API_KEY"] 31 32 33 class FrontendConfig: 34 bot_name: str = "Historian" 35 36 37 chunk_config = ChunkingSettings() 38 embed_config = EmbedddingSettings() 39 frontend_config = FrontendConfig() 40 groq_config = GroqConfig() 41