/ src / setup / config.py
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