diff options
Diffstat (limited to 'autogpt/main.py')
-rw-r--r-- | autogpt/main.py | 205 |
1 files changed, 0 insertions, 205 deletions
diff --git a/autogpt/main.py b/autogpt/main.py deleted file mode 100644 index 08ac4b400..000000000 --- a/autogpt/main.py +++ /dev/null @@ -1,205 +0,0 @@ -"""The application entry point. Can be invoked by a CLI or any other front end application.""" -import logging -import sys -from pathlib import Path -from typing import Optional - -from colorama import Fore, Style - -from autogpt.agent import Agent -from autogpt.config.config import ConfigBuilder, check_openai_api_key -from autogpt.configurator import create_config -from autogpt.logs import logger -from autogpt.memory.vector import get_memory -from autogpt.models.command_registry import CommandRegistry -from autogpt.plugins import scan_plugins -from autogpt.prompts.prompt import DEFAULT_TRIGGERING_PROMPT, construct_main_ai_config -from autogpt.utils import ( - get_current_git_branch, - get_latest_bulletin, - get_legal_warning, - markdown_to_ansi_style, -) -from autogpt.workspace import Workspace -from scripts.install_plugin_deps import install_plugin_dependencies - -COMMAND_CATEGORIES = [ - "autogpt.commands.execute_code", - "autogpt.commands.file_operations", - "autogpt.commands.web_search", - "autogpt.commands.web_selenium", - "autogpt.app", - "autogpt.commands.task_statuses", -] - - -def run_auto_gpt( - continuous: bool, - continuous_limit: int, - ai_settings: str, - prompt_settings: str, - skip_reprompt: bool, - speak: bool, - debug: bool, - gpt3only: bool, - gpt4only: bool, - memory_type: str, - browser_name: str, - allow_downloads: bool, - skip_news: bool, - workspace_directory: str | Path, - install_plugin_deps: bool, - ai_name: Optional[str] = None, - ai_role: Optional[str] = None, - ai_goals: tuple[str] = tuple(), -): - # Configure logging before we do anything else. - logger.set_level(logging.DEBUG if debug else logging.INFO) - - config = ConfigBuilder.build_config_from_env() - # HACK: This is a hack to allow the config into the logger without having to pass it around everywhere - # or import it directly. - logger.config = config - - # TODO: fill in llm values here - check_openai_api_key(config) - - create_config( - config, - continuous, - continuous_limit, - ai_settings, - prompt_settings, - skip_reprompt, - speak, - debug, - gpt3only, - gpt4only, - memory_type, - browser_name, - allow_downloads, - skip_news, - ) - - if config.continuous_mode: - for line in get_legal_warning().split("\n"): - logger.warn(markdown_to_ansi_style(line), "LEGAL:", Fore.RED) - - if not config.skip_news: - motd, is_new_motd = get_latest_bulletin() - if motd: - motd = markdown_to_ansi_style(motd) - for motd_line in motd.split("\n"): - logger.info(motd_line, "NEWS:", Fore.GREEN) - if is_new_motd and not config.chat_messages_enabled: - input( - Fore.MAGENTA - + Style.BRIGHT - + "NEWS: Bulletin was updated! Press Enter to continue..." - + Style.RESET_ALL - ) - - git_branch = get_current_git_branch() - if git_branch and git_branch != "stable": - logger.typewriter_log( - "WARNING: ", - Fore.RED, - f"You are running on `{git_branch}` branch " - "- this is not a supported branch.", - ) - if sys.version_info < (3, 10): - logger.typewriter_log( - "WARNING: ", - Fore.RED, - "You are running on an older version of Python. " - "Some people have observed problems with certain " - "parts of Auto-GPT with this version. " - "Please consider upgrading to Python 3.10 or higher.", - ) - - if install_plugin_deps: - install_plugin_dependencies() - - # TODO: have this directory live outside the repository (e.g. in a user's - # home directory) and have it come in as a command line argument or part of - # the env file. - workspace_directory = Workspace.get_workspace_directory(config, workspace_directory) - - # HACK: doing this here to collect some globals that depend on the workspace. - Workspace.build_file_logger_path(config, workspace_directory) - - config.plugins = scan_plugins(config, config.debug_mode) - # Create a CommandRegistry instance and scan default folder - command_registry = CommandRegistry() - - logger.debug( - f"The following command categories are disabled: {config.disabled_command_categories}" - ) - enabled_command_categories = [ - x for x in COMMAND_CATEGORIES if x not in config.disabled_command_categories - ] - - logger.debug( - f"The following command categories are enabled: {enabled_command_categories}" - ) - - for command_category in enabled_command_categories: - command_registry.import_commands(command_category) - - # Unregister commands that are incompatible with the current config - incompatible_commands = [] - for command in command_registry.commands.values(): - if callable(command.enabled) and not command.enabled(config): - command.enabled = False - incompatible_commands.append(command) - - for command in incompatible_commands: - command_registry.unregister(command) - logger.debug( - f"Unregistering incompatible command: {command.name}, " - f"reason - {command.disabled_reason or 'Disabled by current config.'}" - ) - - ai_config = construct_main_ai_config( - config, - name=ai_name, - role=ai_role, - goals=ai_goals, - ) - ai_config.command_registry = command_registry - ai_name = ai_config.ai_name - # print(prompt) - # Initialize variables - next_action_count = 0 - - # add chat plugins capable of report to logger - if config.chat_messages_enabled: - for plugin in config.plugins: - if hasattr(plugin, "can_handle_report") and plugin.can_handle_report(): - logger.info(f"Loaded plugin into logger: {plugin.__class__.__name__}") - logger.chat_plugins.append(plugin) - - # Initialize memory and make sure it is empty. - # this is particularly important for indexing and referencing pinecone memory - memory = get_memory(config) - memory.clear() - logger.typewriter_log( - "Using memory of type:", Fore.GREEN, f"{memory.__class__.__name__}" - ) - logger.typewriter_log("Using Browser:", Fore.GREEN, config.selenium_web_browser) - system_prompt = ai_config.construct_full_prompt(config) - if config.debug_mode: - logger.typewriter_log("Prompt:", Fore.GREEN, system_prompt) - - agent = Agent( - ai_name=ai_name, - memory=memory, - next_action_count=next_action_count, - command_registry=command_registry, - system_prompt=system_prompt, - triggering_prompt=DEFAULT_TRIGGERING_PROMPT, - workspace_directory=workspace_directory, - ai_config=ai_config, - config=config, - ) - agent.start_interaction_loop() |