File size: 1,320 Bytes
82972f8
 
 
3729aab
ca8a143
82972f8
 
 
 
 
 
 
 
 
 
 
 
 
57e9738
82972f8
 
 
 
 
 
815ee87
 
 
 
ca8a143
815ee87
 
 
 
 
 
 
82972f8
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import logging
from functools import lru_cache
from typing import Union, Optional
from pydantic_settings import BaseSettings
from pydantic import SecretStr, PostgresDsn, DirectoryPath, Field, validator

logger = logging.getLogger(__name__)

class Settings(BaseSettings):
    
    MAX_THREAD_NAME_LENGTH: int = Field(default=100)

    OPENAI_API_KEY: SecretStr
    KALEMAT_API_KEY: SecretStr
    VECTARA_AUTH_TOKEN: SecretStr
    VECTARA_CUSTOMER_ID: str
    VECTARA_CORPUS_ID: str

    template_dir: DirectoryPath = Field(default="/home/user/app/resources/prompts")

    MODEL: str = Field(default="gpt-4o-2024-05-13")
    MAX_FUNCTION_TRIES: int = Field(default=3)
    MAX_FAILURES: int = Field(default=1)
    SYSTEM_PROMPT_FILE_NAME: str = Field(default="system_msg_fn")

    # A/B Testing database connection configuration
    AB_TESTING_DB_NAME: str
    AB_TESTING_DB_USER: str
    AB_TESTING_DB_PASSWORD: SecretStr
    AB_TESTING_DB_HOST: str
    AB_TESTING_DB_PORT: int
    
    # A/B Testing environment variables
    AB_TESTING_EXPERIMENT_ID: int
    AB_TESTING_MODEL_1_ID: int
    AB_TESTING_MODEL_2_ID: int

@lru_cache()
def get_settings() -> Settings:
    try:
        settings = Settings()
        return settings
    except Exception as e:
        logger.error(f"Error loading settings: {e}")
        raise