mirror of
https://github.com/aljazceru/Auto-GPT.git
synced 2025-12-17 22:14:28 +01:00
139 lines
4.5 KiB
Python
139 lines
4.5 KiB
Python
"""This module contains the argument parsing logic for the script."""
|
|
import argparse
|
|
|
|
from colorama import Fore
|
|
|
|
from autogpt import utils
|
|
from autogpt.config import Config
|
|
from autogpt.logs import logger
|
|
from autogpt.memory import get_supported_memory_backends
|
|
|
|
CFG = Config()
|
|
|
|
|
|
def parse_arguments() -> None:
|
|
"""Parses the arguments passed to the script
|
|
|
|
Returns:
|
|
None
|
|
"""
|
|
CFG.set_debug_mode(False)
|
|
CFG.set_continuous_mode(False)
|
|
CFG.set_speak_mode(False)
|
|
|
|
parser = argparse.ArgumentParser(description="Process arguments.")
|
|
parser.add_argument(
|
|
"--continuous", "-c", action="store_true", help="Enable Continuous Mode"
|
|
)
|
|
parser.add_argument(
|
|
"--continuous-limit",
|
|
"-l",
|
|
type=int,
|
|
dest="continuous_limit",
|
|
help="Defines the number of times to run in continuous mode",
|
|
)
|
|
parser.add_argument("--speak", action="store_true", help="Enable Speak Mode")
|
|
parser.add_argument("--debug", action="store_true", help="Enable Debug Mode")
|
|
parser.add_argument(
|
|
"--gpt3only", action="store_true", help="Enable GPT3.5 Only Mode"
|
|
)
|
|
parser.add_argument("--gpt4only", action="store_true", help="Enable GPT4 Only Mode")
|
|
parser.add_argument(
|
|
"--use-memory",
|
|
"-m",
|
|
dest="memory_type",
|
|
help="Defines which Memory backend to use",
|
|
)
|
|
parser.add_argument(
|
|
"--skip-reprompt",
|
|
"-y",
|
|
dest="skip_reprompt",
|
|
action="store_true",
|
|
help="Skips the re-prompting messages at the beginning of the script",
|
|
)
|
|
parser.add_argument(
|
|
"--use-browser",
|
|
"-b",
|
|
dest="browser_name",
|
|
help="Specifies which web-browser to use when using selenium to scrape the web.",
|
|
)
|
|
parser.add_argument(
|
|
"--ai-settings",
|
|
"-C",
|
|
dest="ai_settings_file",
|
|
help="Specifies which ai_settings.yaml file to use, will also automatically"
|
|
" skip the re-prompt.",
|
|
)
|
|
args = parser.parse_args()
|
|
|
|
if args.debug:
|
|
logger.typewriter_log("Debug Mode: ", Fore.GREEN, "ENABLED")
|
|
CFG.set_debug_mode(True)
|
|
|
|
if args.continuous:
|
|
logger.typewriter_log("Continuous Mode: ", Fore.RED, "ENABLED")
|
|
logger.typewriter_log(
|
|
"WARNING: ",
|
|
Fore.RED,
|
|
"Continuous mode is not recommended. It is potentially dangerous and may"
|
|
" cause your AI to run forever or carry out actions you would not usually"
|
|
" authorise. Use at your own risk.",
|
|
)
|
|
CFG.set_continuous_mode(True)
|
|
|
|
if args.continuous_limit:
|
|
logger.typewriter_log(
|
|
"Continuous Limit: ", Fore.GREEN, f"{args.continuous_limit}"
|
|
)
|
|
CFG.set_continuous_limit(args.continuous_limit)
|
|
|
|
# Check if continuous limit is used without continuous mode
|
|
if args.continuous_limit and not args.continuous:
|
|
parser.error("--continuous-limit can only be used with --continuous")
|
|
|
|
if args.speak:
|
|
logger.typewriter_log("Speak Mode: ", Fore.GREEN, "ENABLED")
|
|
CFG.set_speak_mode(True)
|
|
|
|
if args.gpt3only:
|
|
logger.typewriter_log("GPT3.5 Only Mode: ", Fore.GREEN, "ENABLED")
|
|
CFG.set_smart_llm_model(CFG.fast_llm_model)
|
|
|
|
if args.gpt4only:
|
|
logger.typewriter_log("GPT4 Only Mode: ", Fore.GREEN, "ENABLED")
|
|
CFG.set_fast_llm_model(CFG.smart_llm_model)
|
|
|
|
if args.memory_type:
|
|
supported_memory = get_supported_memory_backends()
|
|
chosen = args.memory_type
|
|
if chosen not in supported_memory:
|
|
logger.typewriter_log(
|
|
"ONLY THE FOLLOWING MEMORY BACKENDS ARE SUPPORTED: ",
|
|
Fore.RED,
|
|
f"{supported_memory}",
|
|
)
|
|
logger.typewriter_log("Defaulting to: ", Fore.YELLOW, CFG.memory_backend)
|
|
else:
|
|
CFG.memory_backend = chosen
|
|
|
|
if args.skip_reprompt:
|
|
logger.typewriter_log("Skip Re-prompt: ", Fore.GREEN, "ENABLED")
|
|
CFG.skip_reprompt = True
|
|
|
|
if args.ai_settings_file:
|
|
file = args.ai_settings_file
|
|
|
|
# Validate file
|
|
(validated, message) = utils.validate_yaml_file(file)
|
|
if not validated:
|
|
logger.typewriter_log("FAILED FILE VALIDATION", Fore.RED, message)
|
|
logger.double_check()
|
|
exit(1)
|
|
|
|
logger.typewriter_log("Using AI Settings File:", Fore.GREEN, file)
|
|
CFG.ai_settings_file = file
|
|
CFG.skip_reprompt = True
|
|
|
|
if args.browser_name:
|
|
CFG.selenium_web_browser = args.browser_name
|