import os import yaml import logging from typing import List, Any from dotenv import load_dotenv load_dotenv() def set_env_variables(env_vars: List): env_vars_dict = {} for env_var in env_vars: if env_var not in os.environ or not os.environ[env_var]: raise ValueError(f"ERROR: Please set {env_var}.") env_vars_dict[env_var] = os.environ[env_var] return env_vars_dict def initialize_logger(): logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') logger = logging.getLogger(__name__) return logger def read_config(config_path: str) -> dict: with open(config_path, 'r') as config_file: config = yaml.safe_load(config_file) return config def create_vector_database(db: Any, config: Any) -> Any: vector_db = db(config) return vector_db def create_text_chunker(text_chunker: Any, text_chunker_config: Any) -> Any: return text_chunker(text_chunker_config) def create_pdf_extractor(pdf_extractor: Any, pdf_extractor_config: Any) -> Any: return pdf_extractor(pdf_extractor_config) def get_embedding_model(model: Any, config: Any) -> Any: embedding_model = model(config) return embedding_model def get_generative_model(model: Any, config: Any) -> Any: generative_model = model(config) return generative_model