(feat) allow specification of config.toml location via args (solves #3947) (#4168)

Co-authored-by: Rehan Ganapathy <rehanganapathy@MACASF.local>
This commit is contained in:
Rehan Ganapathy 2024-10-03 02:00:12 +05:30 committed by GitHub
parent dd228c07e0
commit c8a933590a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 16 additions and 6 deletions

View File

@ -91,7 +91,7 @@ async def main():
return
logger.setLevel(logging.WARNING)
config = load_app_config()
config = load_app_config(config_file=args.config_file)
sid = 'cli'
agent_cls: Type[Agent] = Agent.get_cls(config.default_agent)

View File

@ -281,6 +281,12 @@ def get_llm_config_arg(
def get_parser() -> argparse.ArgumentParser:
"""Get the parser for the command line arguments."""
parser = argparse.ArgumentParser(description='Run an agent with a specific task')
parser.add_argument(
'--config-file',
type=str,
default='config.toml',
help='Path to the config file (default: config.toml in the current directory)',
)
parser.add_argument(
'-d',
'--directory',
@ -375,14 +381,17 @@ def parse_arguments() -> argparse.Namespace:
return parsed_args
def load_app_config(set_logging_levels: bool = True) -> AppConfig:
"""Load the configuration from the config.toml file and environment variables.
def load_app_config(
set_logging_levels: bool = True, config_file: str = 'config.toml'
) -> AppConfig:
"""Load the configuration from the specified config file and environment variables.
Args:
set_logger_levels: Whether to set the global variables for logging levels.
config_file: Path to the config file. Defaults to 'config.toml' in the current directory.
"""
config = AppConfig()
load_from_toml(config)
load_from_toml(config, config_file)
load_from_env(config, os.environ)
finalize_config(config)
if set_logging_levels:

View File

@ -228,7 +228,7 @@ if __name__ == '__main__':
# Load the app config
# this will load config from config.toml in the current directory
# as well as from the environment variables
config = load_app_config()
config = load_app_config(config_file=args.config_file)
# Override default LLM configs ([llm] section in config.toml)
if args.llm_config:

View File

@ -123,10 +123,11 @@ def test_help_message(capsys):
'--eval-ids EVAL_IDS',
'-l LLM_CONFIG, --llm-config LLM_CONFIG',
'-n NAME, --name NAME',
'--config-file CONFIG_FILE',
]
for element in expected_elements:
assert element in help_output, f"Expected '{element}' to be in the help message"
option_count = help_output.count(' -')
assert option_count == 14, f'Expected 14 options, found {option_count}'
assert option_count == 15, f'Expected 15 options, found {option_count}'