import os import pathlib from functools import lru_cache import faiss import motor.motor_asyncio from dotenv import load_dotenv from openai import AsyncClient load_dotenv() class BaseConfig: BASE_DIR: pathlib.Path = pathlib.Path(__file__).parent.parent.parent STATIC_DIR = "static" SECRET_KEY = os.getenv('SECRET') DB_CLIENT = motor.motor_asyncio.AsyncIOMotorClient(os.getenv("MONGO_DB_URL")).AtlasCluster OPENAI_CLIENT = AsyncClient(api_key=os.getenv('OPENAI_API_KEY')) SEMANTIC_INDEX = faiss.read_index(str(pathlib.Path(__file__).parent.parent.parent / 'indexes' / 'entities.index')) INTRO_MESSAGE = """Hoi! Wat fijn dat je hier bent. Ik ben je assistent en help je graag met het vinden van de juiste zorg of behandeling. Of het nu gaat om EMDR, de slapende honden-methode, of zorg voor een specifieke situatie, ik heb alle kennis in huis om je verder te helpen. Je kunt me alles vragen over behandelingen, doelgroepen en locaties. Hoe kan ik je vandaag helpen?""" class DevelopmentConfig(BaseConfig): Issuer = "http://localhost:8000" Audience = "http://localhost:3000" class ProductionConfig(BaseConfig): Issuer = "" Audience = "" @lru_cache() def get_settings() -> DevelopmentConfig | ProductionConfig: config_cls_dict = { 'development': DevelopmentConfig, 'production': ProductionConfig, } config_name = os.getenv('FASTAPI_CONFIG', default='development') config_cls = config_cls_dict[config_name] return config_cls() settings = get_settings()