| """Main script for the autogpt package.""" |
| import click |
|
|
|
|
| @click.group(invoke_without_command=True) |
| @click.option("-c", "--continuous", is_flag=True, help="Enable Continuous Mode") |
| @click.option( |
| "--skip-reprompt", |
| "-y", |
| is_flag=True, |
| help="Skips the re-prompting messages at the beginning of the script", |
| ) |
| @click.option( |
| "--ai-settings", |
| "-C", |
| help="Specifies which ai_settings.yaml file to use, will also automatically skip the re-prompt.", |
| ) |
| @click.option( |
| "-l", |
| "--continuous-limit", |
| type=int, |
| help="Defines the number of times to run in continuous mode", |
| ) |
| @click.option("--speak", is_flag=True, help="Enable Speak Mode") |
| @click.option("--debug", is_flag=True, help="Enable Debug Mode") |
| @click.option("--gpt3only", is_flag=True, help="Enable GPT3.5 Only Mode") |
| @click.option("--gpt4only", is_flag=True, help="Enable GPT4 Only Mode") |
| @click.option( |
| "--use-memory", |
| "-m", |
| "memory_type", |
| type=str, |
| help="Defines which Memory backend to use", |
| ) |
| @click.option( |
| "-b", |
| "--browser-name", |
| help="Specifies which web-browser to use when using selenium to scrape the web.", |
| ) |
| @click.option( |
| "--allow-downloads", |
| is_flag=True, |
| help="Dangerous: Allows Auto-GPT to download files natively.", |
| ) |
| @click.option( |
| "--skip-news", |
| is_flag=True, |
| help="Specifies whether to suppress the output of latest news on startup.", |
| ) |
| @click.pass_context |
| def main( |
| ctx: click.Context, |
| continuous: bool, |
| continuous_limit: int, |
| ai_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, |
| ) -> None: |
| """ |
| Welcome to AutoGPT an experimental open-source application showcasing the capabilities of the GPT-4 pushing the boundaries of AI. |
| |
| Start an Auto-GPT assistant. |
| """ |
| |
| import logging |
|
|
| from colorama import Fore |
|
|
| from autogpt.agent.agent import Agent |
| from autogpt.config import Config, check_openai_api_key |
| from autogpt.configurator import create_config |
| from autogpt.logs import logger |
| from autogpt.memory import get_memory |
| from autogpt.prompt import construct_prompt |
| from autogpt.utils import get_current_git_branch, get_latest_bulletin |
|
|
| if ctx.invoked_subcommand is None: |
| cfg = Config() |
| |
| check_openai_api_key() |
| create_config( |
| continuous, |
| continuous_limit, |
| ai_settings, |
| skip_reprompt, |
| speak, |
| debug, |
| gpt3only, |
| gpt4only, |
| memory_type, |
| browser_name, |
| allow_downloads, |
| skip_news, |
| ) |
| logger.set_level(logging.DEBUG if cfg.debug_mode else logging.INFO) |
| ai_name = "" |
| if not cfg.skip_news: |
| motd = get_latest_bulletin() |
| if motd: |
| logger.typewriter_log("NEWS: ", Fore.GREEN, motd) |
| 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.", |
| ) |
| system_prompt = construct_prompt() |
| |
| |
| full_message_history = [] |
| next_action_count = 0 |
| |
| triggering_prompt = ( |
| "Determine which next command to use, and respond using the" |
| " format specified above:" |
| ) |
| |
| |
| memory = get_memory(cfg, init=True) |
| logger.typewriter_log( |
| "Using memory of type:", Fore.GREEN, f"{memory.__class__.__name__}" |
| ) |
| logger.typewriter_log("Using Browser:", Fore.GREEN, cfg.selenium_web_browser) |
| agent = Agent( |
| ai_name=ai_name, |
| memory=memory, |
| full_message_history=full_message_history, |
| next_action_count=next_action_count, |
| system_prompt=system_prompt, |
| triggering_prompt=triggering_prompt, |
| ) |
| agent.start_interaction_loop() |
|
|
|
|
| if __name__ == "__main__": |
| main() |
|
|