Spaces:
Sleeping
Sleeping
"""Configurator module.""" | |
import click | |
from colorama import Back, Fore, Style | |
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 create_config( | |
continuous: bool, | |
continuous_limit: int, | |
ai_settings_file: str, | |
skip_reprompt: bool, | |
speak: bool, | |
debug: bool, | |
gpt3only: bool, | |
gpt4only: bool, | |
memory_type: str, | |
browser_name: str, | |
allow_downloads: bool, | |
skip_news: bool, | |
) -> None: | |
"""Updates the config object with the given arguments. | |
Args: | |
continuous (bool): Whether to run in continuous mode | |
continuous_limit (int): The number of times to run in continuous mode | |
ai_settings_file (str): The path to the ai_settings.yaml file | |
skip_reprompt (bool): Whether to skip the re-prompting messages at the beginning of the script | |
speak (bool): Whether to enable speak mode | |
debug (bool): Whether to enable debug mode | |
gpt3only (bool): Whether to enable GPT3.5 only mode | |
gpt4only (bool): Whether to enable GPT4 only mode | |
memory_type (str): The type of memory backend to use | |
browser_name (str): The name of the browser to use when using selenium to scrape the web | |
allow_downloads (bool): Whether to allow Auto-GPT to download files natively | |
skips_news (bool): Whether to suppress the output of latest news on startup | |
""" | |
CFG.set_debug_mode(False) | |
CFG.set_continuous_mode(False) | |
CFG.set_speak_mode(False) | |
if debug: | |
logger.typewriter_log("Debug Mode: ", Fore.GREEN, "ENABLED") | |
CFG.set_debug_mode(True) | |
if 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 continuous_limit: | |
logger.typewriter_log( | |
"Continuous Limit: ", Fore.GREEN, f"{continuous_limit}" | |
) | |
CFG.set_continuous_limit(continuous_limit) | |
# Check if continuous limit is used without continuous mode | |
if continuous_limit and not continuous: | |
raise click.UsageError("--continuous-limit can only be used with --continuous") | |
if speak: | |
logger.typewriter_log("Speak Mode: ", Fore.GREEN, "ENABLED") | |
CFG.set_speak_mode(True) | |
if gpt3only: | |
logger.typewriter_log("GPT3.5 Only Mode: ", Fore.GREEN, "ENABLED") | |
CFG.set_smart_llm_model(CFG.fast_llm_model) | |
if gpt4only: | |
logger.typewriter_log("GPT4 Only Mode: ", Fore.GREEN, "ENABLED") | |
CFG.set_fast_llm_model(CFG.smart_llm_model) | |
if memory_type: | |
supported_memory = get_supported_memory_backends() | |
chosen = 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 skip_reprompt: | |
logger.typewriter_log("Skip Re-prompt: ", Fore.GREEN, "ENABLED") | |
CFG.skip_reprompt = True | |
if ai_settings_file: | |
file = 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 allow_downloads: | |
logger.typewriter_log("Native Downloading:", Fore.GREEN, "ENABLED") | |
logger.typewriter_log( | |
"WARNING: ", | |
Fore.YELLOW, | |
f"{Back.LIGHTYELLOW_EX}Auto-GPT will now be able to download and save files to your machine.{Back.RESET} " | |
+ "It is recommended that you monitor any files it downloads carefully.", | |
) | |
logger.typewriter_log( | |
"WARNING: ", | |
Fore.YELLOW, | |
f"{Back.RED + Style.BRIGHT}ALWAYS REMEMBER TO NEVER OPEN FILES YOU AREN'T SURE OF!{Style.RESET_ALL}", | |
) | |
CFG.allow_downloads = True | |
if skip_news: | |
CFG.skip_news = True | |
if browser_name: | |
CFG.selenium_web_browser = browser_name | |