diff --git a/.github/ISSUE_TEMPLATE/1.bug.yml b/.github/ISSUE_TEMPLATE/1.bug.yml index 7f1d2771..6645142e 100644 --- a/.github/ISSUE_TEMPLATE/1.bug.yml +++ b/.github/ISSUE_TEMPLATE/1.bug.yml @@ -2,6 +2,20 @@ name: Bug report 🐛 description: Create a bug report for Auto-GPT. labels: ['status: needs triage'] body: + - type: markdown + attributes: + value: | + ### ⚠️ Before you continue + * Check out our [backlog], [roadmap] and join our [discord] to discuss what's going on + * If you need help, you can ask in the [discussions] section or in [#tech-support] + * **Throughly search the [existing issues] before creating a new one** + + [backlog]: https://github.com/orgs/Significant-Gravitas/projects/1 + [roadmap]: https://github.com/orgs/Significant-Gravitas/projects/2 + [discord]: https://discord.gg/autogpt + [discussions]: https://github.com/Significant-Gravitas/Auto-GPT/discussions + [#tech-support]: https://discord.com/channels/1092243196446249134/1092275629602394184 + [existing issues]: https://github.com/Significant-Gravitas/Auto-GPT/issues?q=is%3Aissue - type: checkboxes attributes: label: ⚠️ Search for existing issues first ⚠️ @@ -28,14 +42,32 @@ body: - Provide commit-hash (`git rev-parse HEAD` gets it) - If it's a pip/packages issue, provide pip version, python version - If it's a crash, provide traceback. - - type: checkboxes + - type: dropdown attributes: - label: GPT-3 or GPT-4 + label: Which Operating System are you using? + description: > + Please select the operating system you were using to run Auto-GPT when this problem occurred. + options: + - Windows + - Linux + - MacOS + - Docker + - Devcontainer / Codespace + - Windows Subsystem for Linux (WSL) + - Other (Please specify in your problem) + validations: + required: true + - type: dropdown + attributes: + label: GPT-3 or GPT-4? description: > If you are using Auto-GPT with `--gpt3only`, your problems may be caused by - the limitations of GPT-3.5 + the [limitations](https://github.com/Significant-Gravitas/Auto-GPT/issues?q=is%3Aissue+label%3A%22AI+model+limitation%22) of GPT-3.5. options: - - label: I am using Auto-GPT with GPT-3 (GPT-3.5) + - GPT-3.5 + - GPT-4 + validations: + required: true - type: textarea attributes: label: Steps to reproduce 🕹 @@ -52,9 +84,34 @@ body: - type: textarea attributes: label: Your prompt 📝 - description: | - If applicable please provide the prompt you are using. You can find your last-used prompt in last_run_ai_settings.yaml. + description: > + If applicable please provide the prompt you are using. Your prompt is stored in your `ai_settings.yaml` file. value: | ```yaml # Paste your prompt here ``` + - type: textarea + attributes: + label: Your Logs 📒 + description: | + Please include the log showing your error and the command that caused it, if applicable. + You can copy it from your terminal or from `logs/activity.log`. + This will help us understand your issue better! + +
+ Example + ```log + INFO NEXT ACTION: COMMAND = execute_shell ARGUMENTS = {'command_line': 'some_command'} + INFO -=-=-=-=-=-=-= COMMAND AUTHORISED BY USER -=-=-=-=-=-=-= + Traceback (most recent call last): + File "/home/anaconda3/lib/python3.9/site-packages/openai/api_requestor.py", line 619, in _interpret_response + self._interpret_response_line( + File "/home/anaconda3/lib/python3.9/site-packages/openai/api_requestor.py", line 682, in _interpret_response_line + raise self.handle_error_response( + openai.error.InvalidRequestError: This model's maximum context length is 8191 tokens, however you requested 10982 tokens (10982 in your prompt; 0 for the completion). Please reduce your prompt; or completion length. + ``` +
+ value: | + ```log + + ``` diff --git a/.gitignore b/.gitignore index 26d7e5a3..85111ce9 100644 --- a/.gitignore +++ b/.gitignore @@ -157,3 +157,6 @@ vicuna-* # mac .DS_Store + +# news +CURRENT_BULLETIN.md \ No newline at end of file diff --git a/BULLETIN.md b/BULLETIN.md new file mode 100644 index 00000000..735048dd --- /dev/null +++ b/BULLETIN.md @@ -0,0 +1,2 @@ +Welcome to Auto-GPT! We'll keep you informed of the latest news and features by printing messages here. +If you don't wish to see this message, you can run Auto-GPT with the --skip-news flag \ No newline at end of file diff --git a/autogpt/cli.py b/autogpt/cli.py index 8ed9abb0..a69a53ac 100644 --- a/autogpt/cli.py +++ b/autogpt/cli.py @@ -42,6 +42,11 @@ import click 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, @@ -56,6 +61,7 @@ def main( 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. @@ -73,6 +79,7 @@ def main( from autogpt.logs import logger from autogpt.memory import get_memory from autogpt.prompt import construct_prompt + from autogpt.utils import get_latest_bulletin if ctx.invoked_subcommand is None: cfg = Config() @@ -90,9 +97,14 @@ def main( 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) system_prompt = construct_prompt() # print(prompt) # Initialize variables diff --git a/autogpt/commands/execute_code.py b/autogpt/commands/execute_code.py index a524081e..95ba6122 100644 --- a/autogpt/commands/execute_code.py +++ b/autogpt/commands/execute_code.py @@ -125,10 +125,9 @@ def execute_shell_popen(command_line) -> str: str: Description of the fact that the process started and its id """ current_dir = os.getcwd() - - if WORKING_DIRECTORY not in current_dir: # Change dir into workspace if necessary - work_dir = os.path.join(os.getcwd(), WORKING_DIRECTORY) - os.chdir(work_dir) + # Change dir into workspace if necessary + if str(WORKSPACE_PATH) not in current_dir: + os.chdir(WORKSPACE_PATH) print(f"Executing command '{command_line}' in working directory '{os.getcwd()}'") diff --git a/autogpt/config/config.py b/autogpt/config/config.py index bc75b031..763882ec 100644 --- a/autogpt/config/config.py +++ b/autogpt/config/config.py @@ -24,6 +24,7 @@ class Config(metaclass=Singleton): self.speak_mode = False self.skip_reprompt = False self.allow_downloads = False + self.skip_news = False self.selenium_web_browser = os.getenv("USE_WEB_BROWSER", "chrome") self.ai_settings_file = os.getenv("AI_SETTINGS_FILE", "ai_settings.yaml") diff --git a/autogpt/configurator.py b/autogpt/configurator.py index 3bfaa62c..84000e57 100644 --- a/autogpt/configurator.py +++ b/autogpt/configurator.py @@ -22,6 +22,7 @@ def create_config( memory_type: str, browser_name: str, allow_downloads: bool, + skip_news: bool, ) -> None: """Updates the config object with the given arguments. @@ -37,7 +38,7 @@ def create_config( 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) @@ -128,3 +129,6 @@ def create_config( 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 diff --git a/autogpt/utils.py b/autogpt/utils.py index db7d3321..0f52c060 100644 --- a/autogpt/utils.py +++ b/autogpt/utils.py @@ -1,3 +1,6 @@ +import os + +import requests import yaml from colorama import Fore @@ -37,3 +40,28 @@ def readable_file_size(size, decimal_places=2): break size /= 1024.0 return f"{size:.{decimal_places}f} {unit}" + + +def get_bulletin_from_web() -> str: + try: + response = requests.get( + "https://raw.githubusercontent.com/Significant-Gravitas/Auto-GPT/master/BULLETIN.md" + ) + if response.status_code == 200: + return response.text + except: + return "" + + +def get_latest_bulletin() -> str: + exists = os.path.exists("CURRENT_BULLETIN.md") + current_bulletin = "" + if exists: + current_bulletin = open("CURRENT_BULLETIN.md", "r", encoding="utf-8").read() + new_bulletin = get_bulletin_from_web() + is_new_news = new_bulletin != current_bulletin + + if new_bulletin and is_new_news: + open("CURRENT_BULLETIN.md", "w", encoding="utf-8").write(new_bulletin) + return f" {Fore.RED}::UPDATED:: {Fore.CYAN}{new_bulletin}{Fore.RESET}" + return current_bulletin