| 2 | from decouple import Config, RepositoryEnv |
| 3 | |
| 4 | class AppConfig: |
| 5 | DOTENV_FILE = '/code/config/.env' |
| 6 | config = Config(RepositoryEnv(DOTENV_FILE)) |
| 7 | |
| 8 | # Database Configurations |
| 9 | NEO4J_URI = config.get('NEO4J_URI', default='bolt://localhost:7687') |
| 10 | NEO4J_USER = config.get('NEO4J_USER', default='neo4j') |
| 11 | NEO4J_PASSWORD = config('NEO4J_PASSWORD') |
| 12 | NEO4J_INDEX_NAME = config('NEO4J_INDEX_NAME', default='typical_rag') |
| 13 | NEO4J_CHUNK_LABEL = config('NEO4J_CHUNK_LABEL', default='Child') |
| 14 | NEO4J_CHUNK_TEXT_PROPERTY = config('NEO4J_CHUNK_TEXT_PROPERTY', default='text') |
| 15 | NEO4J_CHUNK_EMBEDDING_PROPERTY = config('NEO4J_CHUNK_EMBEDDING_PROPERTY', default='embedding') |
| 16 | |
| 17 | # DEFAULT USER: |
| 18 | DEFAULT_USER_UUID = config('DEFAULT_USER_UUID', default='00000000-0000-0000-0000-000000000000') |
| 19 | DEFAULT_USER_USERNAME = config('DEFAULT_USER_USERNAME', default='admin') |
| 20 | DEFAULT_USER_EMAIL = config('DEFAULT_USER_EMAIL', |
| 21 | default='test@test.com') |
| 22 | DEFAULT_USER_NAME = config('DEFAULT_USER_NAME', default='Admin') |
| 23 | DEFAULT_USER_PASSWORD = config('DEFAULT_USER_PASSWORD', default='test') |
| 24 | |
| 25 | # OpenAI Configuration |
| 26 | OPENAI_API_KEY = config('OPENAI_API_KEY') |
| 27 | EMBEDDING_DIMENSION = config('EMBEDDING_DIMENSION', cast=int, default=1536) |
| 28 | OPENAI_CHAT_MODEL = config('OPENAI_CHAT_MODEL', default='gpt-4-1106-preview') |
| 29 | |
| 30 | RABBITMQ_HOST = config('RABBMITMQ_HOST', default='localhost') |
| 31 | RABBITMQ_PORT = config('RABBMITMQ_PORT', cast=int, default=5672) |
| 32 | RABBITMQ_USER = config('RABBITMQ_USER', default='admin') |
| 33 | RABBITMQ_PASSWORD = config('RABBITMQ_PASSWORD', default='brier23glrefy!') |
| 34 | |
| 35 | # Celery Configuration |
| 36 | CELERY_BROKER_URL = config.get('CELERY_BROKER_URL', default='amqp://guest:guest@rabbit:5672//') |
| 37 | CELERY_RESULT_BACKEND_URL = config.get('CELERY_RESULT_BACKEND_URL', default='rpc://') |
| 38 | |
| 39 | |
| 40 | # State processing messages: |
| 41 | # Task states and celery configuration |
| 42 | PROCESSING_DOCUMENT = 'PROCESSING_DOCUMENT' |
| 43 | PROCESSING_QUESTIONS = 'PROCESSING_QUESTIONS' |
| 44 | PROCESSING_SUMMARY = 'PROCESSING_SUMMARY' |
| 45 | PROCESSING_DONE = 'PROCESSING_DONE' |
| 46 | PROCESSING_FAILED = 'PROCESSING_FAILED' |
| 47 | PROCESSING_PAGES = 'PROCESSING_PAGES' |
| 48 | |
| 49 | # Other Configurations |
| 50 | MAX_QUESTIONS_PER_PAGE = config('MAX_QUESTIONS_PER_PAGE', cast=int, default=2) |
| 51 | SECRET_KEY=config('SECRET_KEY') |
| 52 | ALGORITHM=config('ALGORITHM') |
| 53 | TEST_DOCUMENT_URL = "https://en.wikipedia.org/wiki/As_We_May_Think" |
| 54 | ACCESS_TOKEN_EXPIRE_MINUTES = config('ACCESS_TOKEN_EXPIRE_MINUTES', cast=int, default=30) |
| 55 | |
| 56 | @staticmethod |
| 57 | def initialize_environment_variables(): |
| 58 | os.environ["OPENAI_API_KEY"] = AppConfig.OPENAI_API_KEY |
| 59 | os.environ["NEO4J_URI"] = AppConfig.NEO4J_URI |
| 60 | os.environ["NEO4J_USERNAME"] = AppConfig.NEO4J_USER |
| 61 | os.environ["NEO4J_PASSWORD"] = AppConfig.NEO4J_PASSWORD |
nothing calls this directly
no outgoing calls
no test coverage detected