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