utilities/__init__.py (62 lines of code) (raw):

import configparser import os import sys import yaml config = configparser.ConfigParser() def is_root_dir(): """ Checks if the current working directory is the root directory of a project by looking for either the "/notebooks" or "/agents" folders. Returns: bool: True if either directory exists in the current directory, False otherwise. """ current_dir = os.getcwd() print("current dir: ", current_dir) notebooks_path = os.path.join(current_dir, "notebooks") agents_path = os.path.join(current_dir, "agents") return os.path.exists(notebooks_path) or os.path.exists(agents_path) def load_yaml(file_path: str) -> dict: with open(file_path, "r", encoding="utf-8") as f: return yaml.safe_load(f) if is_root_dir(): current_dir = os.getcwd() config.read(current_dir + '/config.ini') root_dir = current_dir else: root_dir = os.path.abspath(os.path.join(os.getcwd(), '..')) config.read(root_dir+'/config.ini') if not 'root_dir' in locals(): # If not found in any parent dir raise FileNotFoundError("config.ini not found in current or parent directories.") print(f'root_dir set to: {root_dir}') def format_prompt(context_prompt, **kwargs): """ Formats a context prompt by replacing placeholders with values from keyword arguments. Args: context_prompt (str): The prompt string containing placeholders (e.g., {var1}). **kwargs: Keyword arguments representing placeholder names and their values. Returns: str: The formatted prompt with placeholders replaced. """ return context_prompt.format(**kwargs) # [CONFIG] EMBEDDING_MODEL = config['CONFIG']['EMBEDDING_MODEL'] DESCRIPTION_MODEL = config['CONFIG']['DESCRIPTION_MODEL'] # DATA_SOURCE = config['CONFIG']['DATA_SOURCE'] VECTOR_STORE = config['CONFIG']['VECTOR_STORE'] #CACHING = config.getboolean('CONFIG','CACHING') #DEBUGGING = config.getboolean('CONFIG','DEBUGGING') LOGGING = config.getboolean('CONFIG','LOGGING') EXAMPLES = config.getboolean('CONFIG', 'KGQ_EXAMPLES') USE_SESSION_HISTORY = config.getboolean('CONFIG', 'USE_SESSION_HISTORY') USE_COLUMN_SAMPLES = config.getboolean('CONFIG','USE_COLUMN_SAMPLES') #[GCP] PROJECT_ID = config['GCP']['PROJECT_ID'] #[PGCLOUDSQL] PG_REGION = config['PGCLOUDSQL']['PG_REGION'] # PG_SCHEMA = config['PGCLOUDSQL']['PG_SCHEMA'] PG_INSTANCE = config['PGCLOUDSQL']['PG_INSTANCE'] PG_DATABASE = config['PGCLOUDSQL']['PG_DATABASE'] PG_USER = config['PGCLOUDSQL']['PG_USER'] PG_PASSWORD = config['PGCLOUDSQL']['PG_PASSWORD'] #[BIGQUERY] BQ_REGION = config['BIGQUERY']['BQ_DATASET_REGION'] # BQ_DATASET_NAME = config['BIGQUERY']['BQ_DATASET_NAME'] BQ_OPENDATAQNA_DATASET_NAME = config['BIGQUERY']['BQ_OPENDATAQNA_DATASET_NAME'] BQ_LOG_TABLE_NAME = config['BIGQUERY']['BQ_LOG_TABLE_NAME'] # BQ_TABLE_LIST = config['BIGQUERY']['BQ_TABLE_LIST'] #[FIRESTORE] FIRESTORE_REGION = config['CONFIG']['FIRESTORE_REGION'] #[PROMPTS] PROMPTS = load_yaml(root_dir + '/prompts.yaml') __all__ = ["EMBEDDING_MODEL", "DESCRIPTION_MODEL", #"DATA_SOURCE", "VECTOR_STORE", #"CACHING", #"DEBUGGING", "LOGGING", "EXAMPLES", "PROJECT_ID", "PG_REGION", # "PG_SCHEMA", "PG_INSTANCE", "PG_DATABASE", "PG_USER", "PG_PASSWORD", "BQ_REGION", # "BQ_DATASET_NAME", "BQ_OPENDATAQNA_DATASET_NAME", "BQ_LOG_TABLE_NAME", # "BQ_TABLE_LIST", "FIRESTORE_REGION", "PROMPTS" "root_dir", "save_config"]