app/config/settings.py (49 lines of code) (raw):

"""(c) 2025, Elastic Co. Author: Adhish Thite <adhish.thite@elastic.co> """ import os from typing import Optional from dotenv import load_dotenv from config.logging_config import setup_logger # Set up logger logger = setup_logger(__name__) # Load environment variables load_dotenv() logger.info("Environment variables loaded from .env file") # BigQuery Settings GBQ_PROJECT_ID: Optional[str] = os.getenv("GBQ_PROJECT_ID") GBQ_LOCATION: Optional[str] = os.getenv("GBQ_LOCATION") GBQ_DATASET: Optional[str] = os.getenv("GBQ_DATASET") GBQ_TABLE: Optional[str] = os.getenv("GBQ_TABLE") GBQ_NEWS_TABLE: Optional[str] = os.getenv("GBQ_NEWS_TABLE") GBQ_MAX_RESULTS: int = int(os.getenv("GBQ_MAX_RESULTS", "10")) # File System Settings OUTPUT_DIR: str = os.getenv("OUTPUT_DIR", "data") # Elasticsearch Settings ES_URL: Optional[str] = os.getenv("ELASTICSEARCH_URL") ES_API_KEY: Optional[str] = os.getenv("ELASTICSEARCH_API_KEY") ES_INDEX_NAME: str = os.getenv("ES_INDEX_NAME", "test-bq-snow-ingest") ES_VECTOR_INDEX_NAME: str = os.getenv( "ES_VECTOR_INDEX_NAME", "test-bq-embeddings-openai" ) # Azure OpenAI Settings AZURE_EMBEDDING_DEPLOYMENT_NAME: Optional[str] = os.getenv( "AZURE_EMBEDDING_DEPLOYMENT_NAME" ) AZURE_EMBEDDING_API_VERSION: Optional[str] = os.getenv("AZURE_EMBEDDING_API_VERSION") AZURE_OPENAI_API_KEY: Optional[str] = os.getenv("AZURE_OPENAI_API_KEY") AZURE_OPENAI_ENDPOINT: Optional[str] = os.getenv("AZURE_OPENAI_ENDPOINT") # ServiceNow Settings SNOW_BASE_URL: Optional[str] = os.getenv("SNOW_BASE_URL") KB_KNOWLEDGE_BASE_VALUES: str = os.getenv("KB_KNOWLEDGE_BASE_VALUES", "") # Processing Settings BATCH_SIZE: int = 20 QUERY_SIZE: int = 10000 # Validate critical environment variables missing_vars = [] for var_name, var_value in [ ("GBQ_PROJECT_ID", GBQ_PROJECT_ID), ("GBQ_DATASET", GBQ_DATASET), ("GBQ_TABLE", GBQ_TABLE), ("ES_URL", ES_URL), ("ES_API_KEY", ES_API_KEY), ("AZURE_EMBEDDING_DEPLOYMENT_NAME", AZURE_EMBEDDING_DEPLOYMENT_NAME), ("AZURE_OPENAI_API_KEY", AZURE_OPENAI_API_KEY), ("AZURE_OPENAI_ENDPOINT", AZURE_OPENAI_ENDPOINT), ]: if not var_value: missing_vars.append(var_name) if missing_vars: logger.warning(f"Missing required environment variables: {', '.join(missing_vars)}") logger.warning("Please check your .env file and ensure all required variables are set.") else: logger.info("All required environment variables are set.") logger.info("Configuration retrieved from environment variables")