12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- import json
- from pathlib import Path
- import sys
- # The configuration is expected to be in a 'config' subdirectory relative to this script's location.
- CONFIG_DIR = Path(__file__).parent.parent / 'config'
- CONFIG_FILE = CONFIG_DIR / 'llm_config.json'
- DEFAULT_CONFIG = {
- "_comment": "Controls the output of the data extractors. 'shrink_json' (true/false) tokenizes all JSON keys to reduce file size. 'indentation_level' (e.g., 2, 4) controls pretty-printing; use 0 or null for compact, single-line output. `shrink_json` takes precedence on formatting.",
- "shrink_json": False,
- "indentation_level": 4,
- "ignored_folders": []
- }
- def get_config_path():
- """Returns the absolute path to the configuration file."""
- return CONFIG_FILE
- def load_config():
- """
- Loads the configuration from llm_config.json.
- If the file doesn't exist, it creates a default one.
- Returns the configuration dictionary.
- """
- if not CONFIG_FILE.is_file():
- print(f"Configuration file not found at {CONFIG_FILE}. Creating a default one.")
- try:
- CONFIG_DIR.mkdir(parents=True, exist_ok=True)
- with open(CONFIG_FILE, 'w', encoding='utf-8') as f:
- json.dump(DEFAULT_CONFIG, f, indent=4)
- return DEFAULT_CONFIG
- except IOError as e:
- print(f"Error: Could not create default configuration file at {CONFIG_FILE}. {e}", file=sys.stderr)
- # Return default config to allow the script to proceed if possible
- return DEFAULT_CONFIG
- try:
- with open(CONFIG_FILE, 'r', encoding='utf-8') as f:
- # Use a more robust way to load to handle comments if any
- config_text = ''.join(line for line in f if not line.strip().startswith('//'))
- config = json.loads(config_text)
-
- # Ensure all default keys are present
- for key, value in DEFAULT_CONFIG.items():
- config.setdefault(key, value)
- return config
- except (json.JSONDecodeError, IOError) as e:
- print(f"Warning: Could not read or parse {CONFIG_FILE}. Using default settings. Error: {e}", file=sys.stderr)
- return DEFAULT_CONFIG
- if __name__ == '__main__':
- # For testing purposes, you can run this script directly
- print(f"Config file path: {get_config_path()}")
- config = load_config()
- print("Loaded configuration:")
- print(json.dumps(config, indent=4))
|