aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Richard Beales <rich@richbeales.net> 2023-04-30 10:03:05 +0100
committerGravatar GitHub <noreply@github.com> 2023-04-30 10:03:05 +0100
commitcb6214e64794b1acbff2ad14e00859c5df509370 (patch)
tree4be7f65a17db06dbbc8354320552dd8ef4d4e4a8
parentRun Black and Isort (diff)
parentFeature/test summarization against memory challenge (#3567) (diff)
downloadAuto-GPT-summary_memory.tar.gz
Auto-GPT-summary_memory.tar.bz2
Auto-GPT-summary_memory.zip
Merge branch 'master' into summary_memorysummary_memory
-rw-r--r--CONTRIBUTING.md19
-rw-r--r--autogpt/agent/agent.py32
-rw-r--r--autogpt/app.py3
-rw-r--r--autogpt/commands/execute_code.py23
-rw-r--r--autogpt/commands/file_operations.py13
-rw-r--r--autogpt/commands/git_operations.py12
-rw-r--r--autogpt/commands/image_gen.py9
-rw-r--r--autogpt/commands/web_playwright.py4
-rw-r--r--autogpt/config/ai_config.py9
-rw-r--r--autogpt/json_utils/json_fix_general.py13
-rw-r--r--autogpt/json_utils/utilities.py5
-rw-r--r--autogpt/llm/chat.py7
-rw-r--r--autogpt/llm/llm_utils.py23
-rw-r--r--autogpt/logs.py23
-rw-r--r--autogpt/memory/__init__.py13
-rw-r--r--autogpt/memory/redismem.py4
-rw-r--r--autogpt/memory/weaviate.py5
-rw-r--r--autogpt/plugins.py37
-rw-r--r--autogpt/processing/text.py11
-rw-r--r--autogpt/setup.py4
-rw-r--r--autogpt/speech/eleven_labs.py6
-rw-r--r--autogpt/utils.py22
-rw-r--r--data_ingestion.py18
-rw-r--r--docs/testing.md2
-rw-r--r--tests/browse_tests.py29
-rw-r--r--tests/integration/agent_factory.py47
-rw-r--r--tests/integration/cassettes/test_memory_management/test_save_memory_trimmed_from_context_window.yaml170
-rw-r--r--tests/integration/challenges/__init__.py0
-rw-r--r--tests/integration/challenges/conftest.py17
-rw-r--r--tests/integration/challenges/memory/__init__.py0
-rw-r--r--tests/integration/challenges/memory/cassettes/test_memory_challenge_a/test_memory_challenge_a.yaml1026
-rw-r--r--tests/integration/challenges/memory/cassettes/test_memory_challenge_b/test_memory_challenge_b.yaml771
-rw-r--r--tests/integration/challenges/memory/test_memory_challenge_a.py80
-rw-r--r--tests/integration/challenges/memory/test_memory_challenge_b.py81
-rw-r--r--tests/integration/challenges/utils.py44
-rw-r--r--tests/integration/goal_oriented/__init__.py0
-rw-r--r--tests/integration/goal_oriented/cassettes/test_browse_website/test_browse_website.yaml1026
-rw-r--r--tests/integration/goal_oriented/cassettes/test_write_file/test_write_file.yaml185
-rw-r--r--tests/test_ai_config.py45
-rw-r--r--tests/unit/test_chat.py10
-rw-r--r--tests/unit/test_file_operations.py272
-rw-r--r--tests/unit/test_spinner.py78
-rw-r--r--tests/vcr/openai_filter.py5
43 files changed, 2994 insertions, 1209 deletions
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index e736a036e..9af38b294 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -127,3 +127,22 @@ When you run Pytest locally:
- Or: The test might be poorly written. In that case, you can make suggestions to change the test.
In our CI pipeline, Pytest will use the cassettes and not call paid API providers, so we need your help to record the replays that you break.
+
+
+### Community Challenges
+Challenges are goals we need Auto-GPT to achieve.
+To pick the challenge you like, go to the tests/integration/challenges folder and select the areas you would like to work on.
+- a challenge is new if level_currently_beaten is None
+- a challenge is in progress if level_currently_beaten is greater or equal to 1
+- a challenge is beaten if level_currently_beaten = max_level
+
+Here is an example of how to run the memory challenge A and attempt to beat level 3.
+
+pytest -s tests/integration/challenges/memory/test_memory_challenge_a.py --level=3
+
+To beat a challenge, you're not allowed to change anything in the tests folder, you have to add code in the autogpt folder
+
+Challenges use cassettes. Cassettes allow us to replay your runs in our CI pipeline.
+Don't hesitate to delete the cassettes associated to the challenge you're working on if you need to. Otherwise it will keep replaying the last run.
+
+Once you've beaten a new level of a challenge, please create a pull request and we will analyze how you changed Auto-GPT to beat the challenge.
diff --git a/autogpt/agent/agent.py b/autogpt/agent/agent.py
index 99bb48aa3..bd1059324 100644
--- a/autogpt/agent/agent.py
+++ b/autogpt/agent/agent.py
@@ -8,7 +8,7 @@ from autogpt.llm import chat_with_ai, create_chat_completion, create_chat_messag
from autogpt.logs import logger, print_assistant_thoughts
from autogpt.speech import say_text
from autogpt.spinner import Spinner
-from autogpt.utils import clean_input, send_chat_message_to_user
+from autogpt.utils import clean_input
from autogpt.workspace import Workspace
@@ -87,11 +87,7 @@ class Agent:
logger.typewriter_log(
"Continuous Limit Reached: ", Fore.YELLOW, f"{cfg.continuous_limit}"
)
- send_chat_message_to_user(
- f"Continuous Limit Reached: \n {cfg.continuous_limit}"
- )
break
- send_chat_message_to_user("Thinking... \n")
# Send message to AI, get response
with Spinner("Thinking... "):
assistant_reply = chat_with_ai(
@@ -121,7 +117,6 @@ class Agent:
if cfg.speak_mode:
say_text(f"I want to execute {command_name}")
- send_chat_message_to_user("Thinking... \n")
arguments = self._resolve_pathlike_command_args(arguments)
except Exception as e:
@@ -132,24 +127,19 @@ class Agent:
# Get key press: Prompt the user to press enter to continue or escape
# to exit
self.user_input = ""
- send_chat_message_to_user(
- "NEXT ACTION: \n " + f"COMMAND = {command_name} \n "
- f"ARGUMENTS = {arguments}"
- )
logger.typewriter_log(
"NEXT ACTION: ",
Fore.CYAN,
f"COMMAND = {Fore.CYAN}{command_name}{Style.RESET_ALL} "
f"ARGUMENTS = {Fore.CYAN}{arguments}{Style.RESET_ALL}",
)
- print(
+
+ logger.info(
"Enter 'y' to authorise command, 'y -N' to run N continuous commands, 's' to run self-feedback commands"
"'n' to exit program, or enter feedback for "
- f"{self.ai_name}...",
- flush=True,
+ f"{self.ai_name}..."
)
while True:
- console_input = ""
if cfg.chat_messages_enabled:
console_input = clean_input("Waiting for your response...")
else:
@@ -180,7 +170,7 @@ class Agent:
user_input = self_feedback_resp
break
elif console_input.lower().strip() == "":
- print("Invalid input format.")
+ logger.warn("Invalid input format.")
continue
elif console_input.lower().startswith(f"{cfg.authorise_key} -"):
try:
@@ -189,8 +179,8 @@ class Agent:
)
user_input = "GENERATE NEXT COMMAND JSON"
except ValueError:
- print(
- f"Invalid input format. Please enter '{cfg.authorise_key} -N' where N is"
+ logger.warn(
+ "Invalid input format. Please enter 'y -n' where n is"
" the number of continuous tasks."
)
continue
@@ -210,16 +200,10 @@ class Agent:
"",
)
elif user_input == "EXIT":
- send_chat_message_to_user("Exiting...")
- print("Exiting...", flush=True)
+ logger.info("Exiting...")
break
else:
# Print command
- send_chat_message_to_user(
- "NEXT ACTION: \n " + f"COMMAND = {command_name} \n "
- f"ARGUMENTS = {arguments}"
- )
-
logger.typewriter_log(
"NEXT ACTION: ",
Fore.CYAN,
diff --git a/autogpt/app.py b/autogpt/app.py
index 3bbf6581d..150bfca31 100644
--- a/autogpt/app.py
+++ b/autogpt/app.py
@@ -6,6 +6,7 @@ from autogpt.agent.agent_manager import AgentManager
from autogpt.commands.command import CommandRegistry, command
from autogpt.commands.web_requests import scrape_links, scrape_text
from autogpt.config import Config
+from autogpt.logs import logger
from autogpt.memory import get_memory
from autogpt.processing.text import summarize_text
from autogpt.prompts.generator import PromptGenerator
@@ -172,7 +173,7 @@ def get_hyperlinks(url: str) -> Union[str, List[str]]:
def shutdown() -> NoReturn:
"""Shut down the program"""
- print("Shutting down...")
+ logger.info("Shutting down...")
quit()
diff --git a/autogpt/commands/execute_code.py b/autogpt/commands/execute_code.py
index 1bcdede27..6b141dba9 100644
--- a/autogpt/commands/execute_code.py
+++ b/autogpt/commands/execute_code.py
@@ -8,6 +8,7 @@ from docker.errors import ImageNotFound
from autogpt.commands.command import command
from autogpt.config import Config
+from autogpt.logs import logger
CFG = Config()
@@ -22,7 +23,7 @@ def execute_python_file(filename: str) -> str:
Returns:
str: The output of the file
"""
- print(f"Executing file '{filename}'")
+ logger.info(f"Executing file '{filename}'")
if not filename.endswith(".py"):
return "Error: Invalid file type. Only .py files are allowed."
@@ -47,9 +48,11 @@ def execute_python_file(filename: str) -> str:
image_name = "python:3-alpine"
try:
client.images.get(image_name)
- print(f"Image '{image_name}' found locally")
+ logger.warn(f"Image '{image_name}' found locally")
except ImageNotFound:
- print(f"Image '{image_name}' not found locally, pulling from Docker Hub")
+ logger.info(
+ f"Image '{image_name}' not found locally, pulling from Docker Hub"
+ )
# Use the low-level API to stream the pull response
low_level_client = docker.APIClient()
for line in low_level_client.pull(image_name, stream=True, decode=True):
@@ -57,9 +60,9 @@ def execute_python_file(filename: str) -> str:
status = line.get("status")
progress = line.get("progress")
if status and progress:
- print(f"{status}: {progress}")
+ logger.info(f"{status}: {progress}")
elif status:
- print(status)
+ logger.info(status)
container = client.containers.run(
image_name,
f"python {Path(filename).relative_to(CFG.workspace_path)}",
@@ -85,7 +88,7 @@ def execute_python_file(filename: str) -> str:
return logs
except docker.errors.DockerException as e:
- print(
+ logger.warn(
"Could not run the script in a container. If you haven't already, please install Docker https://docs.docker.com/get-docker/"
)
return f"Error: {str(e)}"
@@ -118,7 +121,9 @@ def execute_shell(command_line: str) -> str:
if not current_dir.is_relative_to(CFG.workspace_path):
os.chdir(CFG.workspace_path)
- print(f"Executing command '{command_line}' in working directory '{os.getcwd()}'")
+ logger.info(
+ f"Executing command '{command_line}' in working directory '{os.getcwd()}'"
+ )
result = subprocess.run(command_line, capture_output=True, shell=True)
output = f"STDOUT:\n{result.stdout}\nSTDERR:\n{result.stderr}"
@@ -154,7 +159,9 @@ def execute_shell_popen(command_line) -> str:
if CFG.workspace_path not in current_dir:
os.chdir(CFG.workspace_path)
- print(f"Executing command '{command_line}' in working directory '{os.getcwd()}'")
+ logger.info(
+ f"Executing command '{command_line}' in working directory '{os.getcwd()}'"
+ )
do_not_show_output = subprocess.DEVNULL
process = subprocess.Popen(
diff --git a/autogpt/commands/file_operations.py b/autogpt/commands/file_operations.py
index 05f060887..e9afdaeae 100644
--- a/autogpt/commands/file_operations.py
+++ b/autogpt/commands/file_operations.py
@@ -11,6 +11,7 @@ from requests.adapters import HTTPAdapter, Retry
from autogpt.commands.command import command
from autogpt.config import Config
+from autogpt.logs import logger
from autogpt.spinner import Spinner
from autogpt.utils import readable_file_size
@@ -106,25 +107,25 @@ def ingest_file(
:param overlap: The number of overlapping characters between chunks, default is 200
"""
try:
- print(f"Working with file {filename}")
+ logger.info(f"Working with file {filename}")
content = read_file(filename)
content_length = len(content)
- print(f"File length: {content_length} characters")
+ logger.info(f"File length: {content_length} characters")
chunks = list(split_file(content, max_length=max_length, overlap=overlap))
num_chunks = len(chunks)
for i, chunk in enumerate(chunks):
- print(f"Ingesting chunk {i + 1} / {num_chunks} into memory")
+ logger.info(f"Ingesting chunk {i + 1} / {num_chunks} into memory")
memory_to_add = (
f"Filename: {filename}\n" f"Content part#{i + 1}/{num_chunks}: {chunk}"
)
memory.add(memory_to_add)
- print(f"Done ingesting {num_chunks} chunks from {filename}.")
+ logger.info(f"Done ingesting {num_chunks} chunks from {filename}.")
except Exception as e:
- print(f"Error while ingesting file '{filename}': {str(e)}")
+ logger.info(f"Error while ingesting file '{filename}': {str(e)}")
@command("write_to_file", "Write to file", '"filename": "<filename>", "text": "<text>"')
@@ -264,7 +265,7 @@ def download_file(url, filename):
progress = f"{readable_file_size(downloaded_size)} / {readable_file_size(total_size)}"
spinner.update_message(f"{message} {progress}")
- return f'Successfully downloaded and locally stored file: "{filename}"! (Size: {readable_file_size(total_size)})'
+ return f'Successfully downloaded and locally stored file: "{filename}"! (Size: {readable_file_size(downloaded_size)})'
except requests.HTTPError as e:
return f"Got an HTTP Error whilst trying to download file: {e}"
except Exception as e:
diff --git a/autogpt/commands/git_operations.py b/autogpt/commands/git_operations.py
index fb74374cb..22233108a 100644
--- a/autogpt/commands/git_operations.py
+++ b/autogpt/commands/git_operations.py
@@ -11,25 +11,25 @@ CFG = Config()
@command(
"clone_repository",
"Clone Repository",
- '"repository_url": "<repository_url>", "clone_path": "<clone_path>"',
+ '"url": "<repository_url>", "clone_path": "<clone_path>"',
CFG.github_username and CFG.github_api_key,
"Configure github_username and github_api_key.",
)
@validate_url
-def clone_repository(repository_url: str, clone_path: str) -> str:
+def clone_repository(url: str, clone_path: str) -> str:
"""Clone a GitHub repository locally.
Args:
- repository_url (str): The URL of the repository to clone.
+ url (str): The URL of the repository to clone.
clone_path (str): The path to clone the repository to.
Returns:
str: The result of the clone operation.
"""
- split_url = repository_url.split("//")
+ split_url = url.split("//")
auth_repo_url = f"//{CFG.github_username}:{CFG.github_api_key}@".join(split_url)
try:
- Repo.clone_from(auth_repo_url, clone_path)
- return f"""Cloned {repository_url} to {clone_path}"""
+ Repo.clone_from(url=auth_repo_url, to_path=clone_path)
+ return f"""Cloned {url} to {clone_path}"""
except Exception as e:
return f"Error: {str(e)}"
diff --git a/autogpt/commands/image_gen.py b/autogpt/commands/image_gen.py
index 9ed0f44b3..fbed067f0 100644
--- a/autogpt/commands/image_gen.py
+++ b/autogpt/commands/image_gen.py
@@ -9,6 +9,7 @@ from PIL import Image
from autogpt.commands.command import command
from autogpt.config import Config
+from autogpt.logs import logger
CFG = Config()
@@ -69,7 +70,7 @@ def generate_image_with_hf(prompt: str, filename: str) -> str:
)
image = Image.open(io.BytesIO(response.content))
- print(f"Image Generated for prompt:{prompt}")
+ logger.info(f"Image Generated for prompt:{prompt}")
image.save(filename)
@@ -91,7 +92,7 @@ def generate_image_with_dalle(prompt: str, filename: str, size: int) -> str:
# Check for supported image sizes
if size not in [256, 512, 1024]:
closest = min([256, 512, 1024], key=lambda x: abs(x - size))
- print(
+ logger.info(
f"DALL-E only supports image sizes of 256x256, 512x512, or 1024x1024. Setting to {closest}, was {size}."
)
size = closest
@@ -104,7 +105,7 @@ def generate_image_with_dalle(prompt: str, filename: str, size: int) -> str:
api_key=CFG.openai_api_key,
)
- print(f"Image Generated for prompt:{prompt}")
+ logger.info(f"Image Generated for prompt:{prompt}")
image_data = b64decode(response["data"][0]["b64_json"])
@@ -153,7 +154,7 @@ def generate_image_with_sd_webui(
},
)
- print(f"Image Generated for prompt:{prompt}")
+ logger.info(f"Image Generated for prompt:{prompt}")
# Save the image to disk
response = response.json()
diff --git a/autogpt/commands/web_playwright.py b/autogpt/commands/web_playwright.py
index 4e388ded2..70f19dee7 100644
--- a/autogpt/commands/web_playwright.py
+++ b/autogpt/commands/web_playwright.py
@@ -1,10 +1,12 @@
"""Web scraping commands using Playwright"""
from __future__ import annotations
+from autogpt.logs import logger
+
try:
from playwright.sync_api import sync_playwright
except ImportError:
- print(
+ logger.info(
"Playwright not installed. Please install it with 'pip install playwright' to use."
)
from bs4 import BeautifulSoup
diff --git a/autogpt/config/ai_config.py b/autogpt/config/ai_config.py
index d662429f2..88acbfe6f 100644
--- a/autogpt/config/ai_config.py
+++ b/autogpt/config/ai_config.py
@@ -7,7 +7,7 @@ from __future__ import annotations
import os
import platform
from pathlib import Path
-from typing import Optional, Type
+from typing import Any, Optional, Type
import distro
import yaml
@@ -79,7 +79,12 @@ class AIConfig:
ai_name = config_params.get("ai_name", "")
ai_role = config_params.get("ai_role", "")
- ai_goals = config_params.get("ai_goals", [])
+ ai_goals = [
+ str(goal).strip("{}").replace("'", "").replace('"', "")
+ if isinstance(goal, dict)
+ else str(goal)
+ for goal in config_params.get("ai_goals", [])
+ ]
api_budget = config_params.get("api_budget", 0.0)
# type: Type[AIConfig]
return AIConfig(ai_name, ai_role, ai_goals, api_budget)
diff --git a/autogpt/json_utils/json_fix_general.py b/autogpt/json_utils/json_fix_general.py
index 7010fa3b9..e485aca12 100644
--- a/autogpt/json_utils/json_fix_general.py
+++ b/autogpt/json_utils/json_fix_general.py
@@ -9,6 +9,7 @@ from typing import Optional
from autogpt.config import Config
from autogpt.json_utils.utilities import extract_char_position
+from autogpt.logs import logger
CFG = Config()
@@ -33,8 +34,7 @@ def fix_invalid_escape(json_to_load: str, error_message: str) -> str:
json.loads(json_to_load)
return json_to_load
except json.JSONDecodeError as e:
- if CFG.debug_mode:
- print("json loads error - fix invalid escape", e)
+ logger.debug("json loads error - fix invalid escape", e)
error_message = str(e)
return json_to_load
@@ -98,13 +98,11 @@ def correct_json(json_to_load: str) -> str:
"""
try:
- if CFG.debug_mode:
- print("json", json_to_load)
+ logger.debug("json", json_to_load)
json.loads(json_to_load)
return json_to_load
except json.JSONDecodeError as e:
- if CFG.debug_mode:
- print("json loads error", e)
+ logger.debug("json loads error", e)
error_message = str(e)
if error_message.startswith("Invalid \\escape"):
json_to_load = fix_invalid_escape(json_to_load, error_message)
@@ -116,8 +114,7 @@ def correct_json(json_to_load: str) -> str:
json.loads(json_to_load)
return json_to_load
except json.JSONDecodeError as e:
- if CFG.debug_mode:
- print("json loads error - add quotes", e)
+ logger.debug("json loads error - add quotes", e)
error_message = str(e)
if balanced_str := balance_braces(json_to_load):
return balanced_str
diff --git a/autogpt/json_utils/utilities.py b/autogpt/json_utils/utilities.py
index fa604a422..58f5f8e4e 100644
--- a/autogpt/json_utils/utilities.py
+++ b/autogpt/json_utils/utilities.py
@@ -49,9 +49,8 @@ def validate_json(json_object: object, schema_name: str) -> dict | None:
for error in errors:
logger.error(f"Error: {error.message}")
- return None
- if CFG.debug_mode:
- print("The JSON object is valid.")
+ else:
+ logger.debug("The JSON object is valid.")
return json_object
diff --git a/autogpt/llm/chat.py b/autogpt/llm/chat.py
index 610f9d17a..b4e6b1a47 100644
--- a/autogpt/llm/chat.py
+++ b/autogpt/llm/chat.py
@@ -208,9 +208,8 @@ def chat_with_ai(
[create_chat_message("system", plugin_response)], model
)
if current_tokens_used + tokens_to_add > send_token_limit:
- if cfg.debug_mode:
- print("Plugin response too long, skipping:", plugin_response)
- print("Plugins remaining at stop:", plugin_count - i)
+ logger.debug("Plugin response too long, skipping:", plugin_response)
+ logger.debug("Plugins remaining at stop:", plugin_count - i)
break
current_context.append(create_chat_message("system", plugin_response))
@@ -250,5 +249,5 @@ def chat_with_ai(
return assistant_reply
except RateLimitError:
# TODO: When we switch to langchain, this is built in
- print("Error: ", "API Rate Limit Reached. Waiting 10 seconds...")
+ logger.warn("Error: ", "API Rate Limit Reached. Waiting 10 seconds...")
time.sleep(10)
diff --git a/autogpt/llm/llm_utils.py b/autogpt/llm/llm_utils.py
index 9a2400c79..cc4048d61 100644
--- a/autogpt/llm/llm_utils.py
+++ b/autogpt/llm/llm_utils.py
@@ -128,10 +128,9 @@ def create_chat_completion(
num_retries = 10
warned_user = False
- if cfg.debug_mode:
- print(
- f"{Fore.GREEN}Creating chat completion with model {model}, temperature {temperature}, max_tokens {max_tokens}{Fore.RESET}"
- )
+ logger.debug(
+ f"{Fore.GREEN}Creating chat completion with model {model}, temperature {temperature}, max_tokens {max_tokens}{Fore.RESET}"
+ )
for plugin in cfg.plugins:
if plugin.can_handle_chat_completion(
messages=messages,
@@ -169,10 +168,9 @@ def create_chat_completion(
)
break
except RateLimitError:
- if cfg.debug_mode:
- print(
- f"{Fore.RED}Error: ", f"Reached rate limit, passing...{Fore.RESET}"
- )
+ logger.debug(
+ f"{Fore.RED}Error: ", f"Reached rate limit, passing...{Fore.RESET}"
+ )
if not warned_user:
logger.double_check(
f"Please double check that you have setup a {Fore.CYAN + Style.BRIGHT}PAID{Style.RESET_ALL} OpenAI API Account. "
@@ -184,11 +182,10 @@ def create_chat_completion(
raise
if attempt == num_retries - 1:
raise
- if cfg.debug_mode:
- print(
- f"{Fore.RED}Error: ",
- f"API Bad gateway. Waiting {backoff} seconds...{Fore.RESET}",
- )
+ logger.debug(
+ f"{Fore.RED}Error: ",
+ f"API Bad gateway. Waiting {backoff} seconds...{Fore.RESET}",
+ )
time.sleep(backoff)
if response is None:
logger.typewriter_log(
diff --git a/autogpt/logs.py b/autogpt/logs.py
index c1ac126cd..fcad9efaf 100644
--- a/autogpt/logs.py
+++ b/autogpt/logs.py
@@ -10,7 +10,6 @@ from colorama import Fore, Style
from autogpt.singleton import Singleton
from autogpt.speech import say_text
-from autogpt.utils import send_chat_message_to_user
class Logger(metaclass=Singleton):
@@ -83,8 +82,6 @@ class Logger(metaclass=Singleton):
if speak_text and self.speak_mode:
say_text(f"{title}. {content}")
- send_chat_message_to_user(f"{title}. {content}")
-
if content:
if isinstance(content, list):
content = " ".join(content)
@@ -103,6 +100,14 @@ class Logger(metaclass=Singleton):
):
self._log(title, title_color, message, logging.DEBUG)
+ def info(
+ self,
+ message,
+ title="",
+ title_color="",
+ ):
+ self._log(title, title_color, message, logging.INFO)
+
def warn(
self,
message,
@@ -114,11 +119,19 @@ class Logger(metaclass=Singleton):
def error(self, title, message=""):
self._log(title, Fore.RED, message, logging.ERROR)
- def _log(self, title="", title_color="", message="", level=logging.INFO):
+ def _log(
+ self,
+ title: str = "",
+ title_color: str = "",
+ message: str = "",
+ level=logging.INFO,
+ ):
if message:
if isinstance(message, list):
message = " ".join(message)
- self.logger.log(level, message, extra={"title": title, "color": title_color})
+ self.logger.log(
+ level, message, extra={"title": str(title), "color": str(title_color)}
+ )
def set_level(self, level):
self.logger.setLevel(level)
diff --git a/autogpt/memory/__init__.py b/autogpt/memory/__init__.py
index c4eb4a074..a955a3e7b 100644
--- a/autogpt/memory/__init__.py
+++ b/autogpt/memory/__init__.py
@@ -1,3 +1,4 @@
+from autogpt.logs import logger
from autogpt.memory.local import LocalCache
from autogpt.memory.no_memory import NoMemory
@@ -10,7 +11,6 @@ try:
supported_memory.append("redis")
except ImportError:
- # print("Redis not installed. Skipping import.")
RedisMemory = None
try:
@@ -18,7 +18,6 @@ try:
supported_memory.append("pinecone")
except ImportError:
- # print("Pinecone not installed. Skipping import.")
PineconeMemory = None
try:
@@ -26,7 +25,6 @@ try:
supported_memory.append("weaviate")
except ImportError:
- # print("Weaviate not installed. Skipping import.")
WeaviateMemory = None
try:
@@ -34,7 +32,6 @@ try:
supported_memory.append("milvus")
except ImportError:
- # print("pymilvus not installed. Skipping import.")
MilvusMemory = None
@@ -42,7 +39,7 @@ def get_memory(cfg, init=False):
memory = None
if cfg.memory_backend == "pinecone":
if not PineconeMemory:
- print(
+ logger.warn(
"Error: Pinecone is not installed. Please install pinecone"
" to use Pinecone as a memory backend."
)
@@ -52,7 +49,7 @@ def get_memory(cfg, init=False):
memory.clear()
elif cfg.memory_backend == "redis":
if not RedisMemory:
- print(
+ logger.warn(
"Error: Redis is not installed. Please install redis-py to"
" use Redis as a memory backend."
)
@@ -60,7 +57,7 @@ def get_memory(cfg, init=False):
memory = RedisMemory(cfg)
elif cfg.memory_backend == "weaviate":
if not WeaviateMemory:
- print(
+ logger.warn(
"Error: Weaviate is not installed. Please install weaviate-client to"
" use Weaviate as a memory backend."
)
@@ -68,7 +65,7 @@ def get_memory(cfg, init=False):
memory = WeaviateMemory(cfg)
elif cfg.memory_backend == "milvus":
if not MilvusMemory:
- print(
+ logger.warn(
"Error: pymilvus sdk is not installed."
"Please install pymilvus to use Milvus or Zilliz Cloud as memory backend."
)
diff --git a/autogpt/memory/redismem.py b/autogpt/memory/redismem.py
index 6b5127786..2a072a557 100644
--- a/autogpt/memory/redismem.py
+++ b/autogpt/memory/redismem.py
@@ -73,7 +73,7 @@ class RedisMemory(MemoryProviderSingleton):
),
)
except Exception as e:
- print("Error creating Redis search index: ", e)
+ logger.warn("Error creating Redis search index: ", e)
existing_vec_num = self.redis.get(f"{cfg.memory_index}-vec_num")
self.vec_num = int(existing_vec_num.decode("utf-8")) if existing_vec_num else 0
@@ -145,7 +145,7 @@ class RedisMemory(MemoryProviderSingleton):
query, query_params={"vector": query_vector}
)
except Exception as e:
- print("Error calling Redis search: ", e)
+ logger.warn("Error calling Redis search: ", e)
return None
return [result.data for result in results.docs]
diff --git a/autogpt/memory/weaviate.py b/autogpt/memory/weaviate.py
index be29e1b98..0b4f58b55 100644
--- a/autogpt/memory/weaviate.py
+++ b/autogpt/memory/weaviate.py
@@ -4,6 +4,7 @@ from weaviate.embedded import EmbeddedOptions
from weaviate.util import generate_uuid5
from autogpt.llm import get_ada_embedding
+from autogpt.logs import logger
from autogpt.memory.base import MemoryProviderSingleton
@@ -35,7 +36,7 @@ class WeaviateMemory(MemoryProviderSingleton):
)
)
- print(
+ logger.info(
f"Weaviate Embedded running on: {url} with persistence path: {cfg.weaviate_embedded_path}"
)
else:
@@ -116,7 +117,7 @@ class WeaviateMemory(MemoryProviderSingleton):
return []
except Exception as err:
- print(f"Unexpected error {err=}, {type(err)=}")
+ logger.warn(f"Unexpected error {err=}, {type(err)=}")
return []
def get_stats(self):
diff --git a/autogpt/plugins.py b/autogpt/plugins.py
index d03f0037a..a5fe43d83 100644
--- a/autogpt/plugins.py
+++ b/autogpt/plugins.py
@@ -15,6 +15,7 @@ from auto_gpt_plugin_template import AutoGPTPluginTemplate
from openapi_python_client.cli import Config as OpenAPIConfig
from autogpt.config import Config
+from autogpt.logs import logger
from autogpt.models.base_open_ai_plugin import BaseOpenAIPlugin
@@ -33,11 +34,10 @@ def inspect_zip_for_modules(zip_path: str, debug: bool = False) -> list[str]:
with zipfile.ZipFile(zip_path, "r") as zfile:
for name in zfile.namelist():
if name.endswith("__init__.py"):
- if debug:
- print(f"Found module '{name}' in the zipfile at: {name}")
+ logger.debug(f"Found module '{name}' in the zipfile at: {name}")
result.append(name)
- if debug and len(result) == 0:
- print(f"Module '__init__.py' not found in the zipfile @ {zip_path}.")
+ if len(result) == 0:
+ logger.debug(f"Module '__init__.py' not found in the zipfile @ {zip_path}.")
return result
@@ -71,12 +71,12 @@ def fetch_openai_plugins_manifest_and_spec(cfg: Config) -> dict:
if response.status_code == 200:
manifest = response.json()
if manifest["schema_version"] != "v1":
- print(
+ logger.warn(
f"Unsupported manifest version: {manifest['schem_version']} for {url}"
)
continue
if manifest["api"]["type"] != "openapi":
- print(
+ logger.warn(
f"Unsupported API type: {manifest['api']['type']} for {url}"
)
continue
@@ -84,11 +84,13 @@ def fetch_openai_plugins_manifest_and_spec(cfg: Config) -> dict:
manifest, f"{openai_plugin_client_dir}/ai-plugin.json"
)
else:
- print(f"Failed to fetch manifest for {url}: {response.status_code}")
+ logger.warn(
+ f"Failed to fetch manifest for {url}: {response.status_code}"
+ )
except requests.exceptions.RequestException as e:
- print(f"Error while requesting manifest from {url}: {e}")
+ logger.warn(f"Error while requesting manifest from {url}: {e}")
else:
- print(f"Manifest for {url} already exists")
+ logger.info(f"Manifest for {url} already exists")
manifest = json.load(open(f"{openai_plugin_client_dir}/ai-plugin.json"))
if not os.path.exists(f"{openai_plugin_client_dir}/openapi.json"):
openapi_spec = openapi_python_client._get_document(
@@ -98,7 +100,7 @@ def fetch_openai_plugins_manifest_and_spec(cfg: Config) -> dict:
openapi_spec, f"{openai_plugin_client_dir}/openapi.json"
)
else:
- print(f"OpenAPI spec for {url} already exists")
+ logger.info(f"OpenAPI spec for {url} already exists")
openapi_spec = json.load(open(f"{openai_plugin_client_dir}/openapi.json"))
manifests[url] = {"manifest": manifest, "openapi_spec": openapi_spec}
return manifests
@@ -115,13 +117,13 @@ def create_directory_if_not_exists(directory_path: str) -> bool:
if not os.path.exists(directory_path):
try:
os.makedirs(directory_path)
- print(f"Created directory: {directory_path}")
+ logger.debug(f"Created directory: {directory_path}")
return True
except OSError as e:
- print(f"Error creating directory {directory_path}: {e}")
+ logger.warn(f"Error creating directory {directory_path}: {e}")
return False
else:
- print(f"Directory {directory_path} already exists")
+ logger.info(f"Directory {directory_path} already exists")
return True
@@ -159,7 +161,7 @@ def initialize_openai_plugins(
config=_config,
)
if client_results:
- print(
+ logger.warn(
f"Error creating OpenAPI client: {client_results[0].header} \n"
f" details: {client_results[0].detail}"
)
@@ -212,8 +214,7 @@ def scan_plugins(cfg: Config, debug: bool = False) -> List[AutoGPTPluginTemplate
for module in moduleList:
plugin = Path(plugin)
module = Path(module)
- if debug:
- print(f"Plugin: {plugin} Module: {module}")
+ logger.debug(f"Plugin: {plugin} Module: {module}")
zipped_package = zipimporter(str(plugin))
zipped_module = zipped_package.load_module(str(module.parent))
for key in dir(zipped_module):
@@ -240,9 +241,9 @@ def scan_plugins(cfg: Config, debug: bool = False) -> List[AutoGPTPluginTemplate
loaded_plugins.append(plugin)
if loaded_plugins:
- print(f"\nPlugins found: {len(loaded_plugins)}\n" "--------------------")
+ logger.info(f"\nPlugins found: {len(loaded_plugins)}\n" "--------------------")
for plugin in loaded_plugins:
- print(f"{plugin._name}: {plugin._version} - {plugin._description}")
+ logger.info(f"{plugin._name}: {plugin._version} - {plugin._description}")
return loaded_plugins
diff --git a/autogpt/processing/text.py b/autogpt/processing/text.py
index 372e331d5..9391e0a0c 100644
--- a/autogpt/processing/text.py
+++ b/autogpt/processing/text.py
@@ -6,6 +6,7 @@ from selenium.webdriver.remote.webdriver import WebDriver
from autogpt.config import Config
from autogpt.llm import count_message_tokens, create_chat_completion
+from autogpt.logs import logger
from autogpt.memory import get_memory
CFG = Config()
@@ -86,7 +87,7 @@ def summarize_text(
model = CFG.fast_llm_model
text_length = len(text)
- print(f"Text length: {text_length} characters")
+ logger.info(f"Text length: {text_length} characters")
summaries = []
chunks = list(
@@ -99,7 +100,7 @@ def summarize_text(
for i, chunk in enumerate(chunks):
if driver:
scroll_to_percentage(driver, scroll_ratio * i)
- print(f"Adding chunk {i + 1} / {len(chunks)} to memory")
+ logger.info(f"Adding chunk {i + 1} / {len(chunks)} to memory")
memory_to_add = f"Source: {url}\n" f"Raw content part#{i + 1}: {chunk}"
@@ -108,7 +109,7 @@ def summarize_text(
messages = [create_message(chunk, question)]
tokens_for_chunk = count_message_tokens(messages, model)
- print(
+ logger.info(
f"Summarizing chunk {i + 1} / {len(chunks)} of length {len(chunk)} characters, or {tokens_for_chunk} tokens"
)
@@ -117,7 +118,7 @@ def summarize_text(
messages=messages,
)
summaries.append(summary)
- print(
+ logger.info(
f"Added chunk {i + 1} summary to memory, of length {len(summary)} characters"
)
@@ -125,7 +126,7 @@ def summarize_text(
memory.add(memory_to_add)
- print(f"Summarized {len(chunks)} chunks.")
+ logger.info(f"Summarized {len(chunks)} chunks.")
combined_summary = "\n".join(summaries)
messages = [create_message(combined_summary, question)]
diff --git a/autogpt/setup.py b/autogpt/setup.py
index ddc7c6bf4..c71fb2219 100644
--- a/autogpt/setup.py
+++ b/autogpt/setup.py
@@ -119,7 +119,7 @@ def generate_aiconfig_manual() -> AIConfig:
"For example: \nIncrease net worth, Grow Twitter Account, Develop and manage"
" multiple businesses autonomously'",
)
- print("Enter nothing to load defaults, enter nothing when finished.", flush=True)
+ logger.info("Enter nothing to load defaults, enter nothing when finished.")
ai_goals = []
for i in range(5):
ai_goal = utils.clean_input(f"{Fore.LIGHTBLUE_EX}Goal{Style.RESET_ALL} {i+1}: ")
@@ -139,7 +139,7 @@ def generate_aiconfig_manual() -> AIConfig:
Fore.GREEN,
"For example: $1.50",
)
- print("Enter nothing to let the AI run without monetary limit", flush=True)
+ logger.info("Enter nothing to let the AI run without monetary limit")
api_budget_input = utils.clean_input(
f"{Fore.LIGHTBLUE_EX}Budget{Style.RESET_ALL}: $"
)
diff --git a/autogpt/speech/eleven_labs.py b/autogpt/speech/eleven_labs.py
index ea84efd8c..06806b56a 100644
--- a/autogpt/speech/eleven_labs.py
+++ b/autogpt/speech/eleven_labs.py
@@ -69,6 +69,8 @@ class ElevenLabsSpeech(VoiceBase):
Returns:
bool: True if the request was successful, False otherwise
"""
+ from autogpt.logs import logger
+
tts_url = (
f"https://api.elevenlabs.io/v1/text-to-speech/{self._voices[voice_index]}"
)
@@ -81,6 +83,6 @@ class ElevenLabsSpeech(VoiceBase):
os.remove("speech.mpeg")
return True
else:
- print("Request failed with status code:", response.status_code)
- print("Response content:", response.content)
+ logger.warn("Request failed with status code:", response.status_code)
+ logger.info("Response content:", response.content)
return False
diff --git a/autogpt/utils.py b/autogpt/utils.py
index 6efaceec0..601254d74 100644
--- a/autogpt/utils.py
+++ b/autogpt/utils.py
@@ -5,27 +5,17 @@ import yaml
from colorama import Fore
from git.repo import Repo
+from autogpt.logs import logger
+
# Use readline if available (for clean_input)
try:
import readline
-except:
+except ImportError:
pass
from autogpt.config import Config
-def send_chat_message_to_user(report: str):
- cfg = Config()
- if not cfg.chat_messages_enabled:
- return
- for plugin in cfg.plugins:
- if not hasattr(plugin, "can_handle_report"):
- continue
- if not plugin.can_handle_report():
- continue
- plugin.report(report)
-
-
def clean_input(prompt: str = "", talk=False):
try:
cfg = Config()
@@ -58,12 +48,12 @@ def clean_input(prompt: str = "", talk=False):
return plugin_response
# ask for input, default when just pressing Enter is y
- print("Asking user via keyboard...")
+ logger.info("Asking user via keyboard...")
answer = input(prompt)
return answer
except KeyboardInterrupt:
- print("You interrupted Auto-GPT")
- print("Quitting...")
+ logger.info("You interrupted Auto-GPT")
+ logger.info("Quitting...")
exit(0)
diff --git a/data_ingestion.py b/data_ingestion.py
index b89a33daf..d400dc967 100644
--- a/data_ingestion.py
+++ b/data_ingestion.py
@@ -10,11 +10,14 @@ cfg = Config()
def configure_logging():
logging.basicConfig(
- filename="log-ingestion.txt",
filemode="a",
format="%(asctime)s,%(msecs)d %(name)s %(levelname)s %(message)s",
datefmt="%H:%M:%S",
level=logging.DEBUG,
+ handlers=[
+ logging.FileHandler(filename="log-ingestion.txt"),
+ logging.StreamHandler(),
+ ],
)
return logging.getLogger("AutoGPT-Ingestion")
@@ -26,12 +29,13 @@ def ingest_directory(directory, memory, args):
:param directory: The directory containing the files to ingest
:param memory: An object with an add() method to store the chunks in memory
"""
+ global logger
try:
files = search_files(directory)
for file in files:
ingest_file(file, memory, args.max_length, args.overlap)
except Exception as e:
- print(f"Error while ingesting directory '{directory}': {str(e)}")
+ logger.error(f"Error while ingesting directory '{directory}': {str(e)}")
def main() -> None:
@@ -69,24 +73,22 @@ def main() -> None:
# Initialize memory
memory = get_memory(cfg, init=args.init)
- print("Using memory of type: " + memory.__class__.__name__)
+ logger.debug("Using memory of type: " + memory.__class__.__name__)
if args.file:
try:
ingest_file(args.file, memory, args.max_length, args.overlap)
- print(f"File '{args.file}' ingested successfully.")
+ logger.info(f"File '{args.file}' ingested successfully.")
except Exception as e:
logger.error(f"Error while ingesting file '{args.file}': {str(e)}")
- print(f"Error while ingesting file '{args.file}': {str(e)}")
elif args.dir:
try:
ingest_directory(args.dir, memory, args)
- print(f"Directory '{args.dir}' ingested successfully.")
+ logger.info(f"Directory '{args.dir}' ingested successfully.")
except Exception as e:
logger.error(f"Error while ingesting directory '{args.dir}': {str(e)}")
- print(f"Error while ingesting directory '{args.dir}': {str(e)}")
else:
- print(
+ logger.warn(
"Please provide either a file path (--file) or a directory name (--dir)"
" inside the auto_gpt_workspace directory as input."
)
diff --git a/docs/testing.md b/docs/testing.md
index 47cbecafc..9a1735966 100644
--- a/docs/testing.md
+++ b/docs/testing.md
@@ -28,7 +28,7 @@ python -m pytest
:::shell
pytest --cov=autogpt --without-integration --without-slow-integration
-## Runing the linter
+## Running the linter
This project uses [flake8](https://flake8.pycqa.org/en/latest/) for linting.
We currently use the following rules: `E303,W293,W291,W292,E305,E231,E302`.
diff --git a/tests/browse_tests.py b/tests/browse_tests.py
deleted file mode 100644
index 90692d885..000000000
--- a/tests/browse_tests.py
+++ /dev/null
@@ -1,29 +0,0 @@
-import os
-import sys
-import unittest
-
-from bs4 import BeautifulSoup
-
-sys.path.append(os.path.abspath("../scripts"))
-
-from browse import extract_hyperlinks
-
-
-class TestBrowseLinks(unittest.TestCase):
- """Unit tests for the browse module functions that extract hyperlinks."""
-
- def test_extract_hyperlinks(self):
- """Test the extract_hyperlinks function with a simple HTML body."""
- body = """
- <body>
- <a href="https://google.com">Google</a>
- <a href="foo.html">Foo</a>
- <div>Some other crap</div>
- </body>
- """
- soup = BeautifulSoup(body, "html.parser")
- links = extract_hyperlinks(soup, "http://example.com")
- self.assertEqual(
- links,
- [("Google", "https://google.com"), ("Foo", "http://example.com/foo.html")],
- )
diff --git a/tests/integration/agent_factory.py b/tests/integration/agent_factory.py
index 1cda93eb4..8cb622ec0 100644
--- a/tests/integration/agent_factory.py
+++ b/tests/integration/agent_factory.py
@@ -3,7 +3,7 @@ import pytest
from autogpt.agent import Agent
from autogpt.commands.command import CommandRegistry
from autogpt.config import AIConfig, Config
-from autogpt.memory import NoMemory, get_memory
+from autogpt.memory import LocalCache, NoMemory, get_memory
from autogpt.prompts.prompt import DEFAULT_TRIGGERING_PROMPT
from autogpt.workspace import Workspace
@@ -20,6 +20,16 @@ def agent_test_config(config: Config):
@pytest.fixture
+def memory_local_cache(agent_test_config: Config):
+ was_memory_backend = agent_test_config.memory_backend
+
+ agent_test_config.set_memory_backend("local_cache")
+ yield get_memory(agent_test_config, init=True)
+
+ agent_test_config.set_memory_backend(was_memory_backend)
+
+
+@pytest.fixture
def memory_none(agent_test_config: Config):
was_memory_backend = agent_test_config.memory_backend
@@ -101,3 +111,38 @@ def writer_agent(agent_test_config, memory_none: NoMemory, workspace: Workspace)
)
return agent
+
+
+@pytest.fixture
+def memory_management_agent(
+ agent_test_config, memory_local_cache, workspace: Workspace
+):
+ command_registry = CommandRegistry()
+ command_registry.import_commands("autogpt.commands.file_operations")
+ command_registry.import_commands("autogpt.app")
+
+ ai_config = AIConfig(
+ ai_name="Follow-Instructions-GPT",
+ ai_role="an AI designed to read the instructions_1.txt file using the read_file method and follow the instructions in the file.",
+ ai_goals=[
+ "Use the command read_file to read the instructions_1.txt file",
+ "Follow the instructions in the instructions_1.txt file",
+ ],
+ )
+ ai_config.command_registry = command_registry
+
+ system_prompt = ai_config.construct_full_prompt()
+
+ agent = Agent(
+ ai_name="",
+ memory=memory_local_cache,
+ full_message_history=[],
+ command_registry=command_registry,
+ config=ai_config,
+ next_action_count=0,
+ system_prompt=system_prompt,
+ triggering_prompt=DEFAULT_TRIGGERING_PROMPT,
+ workspace_directory=workspace.root,
+ )
+
+ return agent
diff --git a/tests/integration/cassettes/test_memory_management/test_save_memory_trimmed_from_context_window.yaml b/tests/integration/cassettes/test_memory_management/test_save_memory_trimmed_from_context_window.yaml
index 1ad25810a..bb29c4d9d 100644
--- a/tests/integration/cassettes/test_memory_management/test_save_memory_trimmed_from_context_window.yaml
+++ b/tests/integration/cassettes/test_memory_management/test_save_memory_trimmed_from_context_window.yaml
@@ -332,4 +332,174 @@ interactions:
status:
code: 200
message: OK
+- request:
+ body: '{"input": ["Assistant Reply: { \"thoughts\": { \"text\": \"thoughts\", \"reasoning\":
+ \"reasoning\", \"plan\": \"plan\", \"criticism\": \"criticism\", \"speak\":
+ \"speak\" }, \"command\": { \"name\": \"google\", \"args\":
+ { \"query\": \"google_query\" } } } Result: None Human
+ Feedback:Command Result: Important Information."], "model": "text-embedding-ada-002",
+ "encoding_format": "base64"}'
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '483'
+ Content-Type:
+ - application/json
+ method: POST
+ uri: https://api.openai.com/v1/embeddings
+ response:
+ body:
+ string: !!binary |
+ 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
+ headers:
+ CF-Cache-Status:
+ - DYNAMIC
+ CF-RAY:
+ - 7bfdedf56918cfbc-SJC
+ Connection:
+ - keep-alive
+ Content-Encoding:
+ - gzip
+ Content-Type:
+ - application/json
+ Date:
+ - Sun, 30 Apr 2023 07:04:15 GMT
+ Server:
+ - cloudflare
+ access-control-allow-origin:
+ - '*'
+ alt-svc:
+ - h3=":443"; ma=86400, h3-29=":443"; ma=86400
+ openai-organization:
+ - user-adtx4fhfg1qsiyzdoaxciooj
+ openai-processing-ms:
+ - '25'
+ openai-version:
+ - '2020-10-01'
+ strict-transport-security:
+ - max-age=15724800; includeSubDomains
+ x-ratelimit-limit-requests:
+ - '3000'
+ x-ratelimit-remaining-requests:
+ - '2999'
+ x-ratelimit-reset-requests:
+ - 20ms
+ x-request-id:
+ - f2850337441001a8e5bd70bacb4dede8
+ status:
+ code: 200
+ message: OK
version: 1
diff --git a/tests/integration/challenges/__init__.py b/tests/integration/challenges/__init__.py
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/tests/integration/challenges/__init__.py
diff --git a/tests/integration/challenges/conftest.py b/tests/integration/challenges/conftest.py
new file mode 100644
index 000000000..dce4518d8
--- /dev/null
+++ b/tests/integration/challenges/conftest.py
@@ -0,0 +1,17 @@
+import pytest
+
+
+def pytest_addoption(parser):
+ parser.addoption(
+ "--level", action="store", default=None, type=int, help="Specify test level"
+ )
+
+
+def pytest_configure(config):
+ config.option.level = config.getoption("--level")
+
+
+@pytest.fixture
+def user_selected_level(request) -> int:
+ ## used for challenges in the goal oriented tests
+ return request.config.option.level
diff --git a/tests/integration/challenges/memory/__init__.py b/tests/integration/challenges/memory/__init__.py
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/tests/integration/challenges/memory/__init__.py
diff --git a/tests/integration/challenges/memory/cassettes/test_memory_challenge_a/test_memory_challenge_a.yaml b/tests/integration/challenges/memory/cassettes/test_memory_challenge_a/test_memory_challenge_a.yaml
new file mode 100644
index 000000000..a38ce01f8
--- /dev/null
+++ b/tests/integration/challenges/memory/cassettes/test_memory_challenge_a/test_memory_challenge_a.yaml
@@ -0,0 +1,1026 @@
+interactions:
+- request:
+ body: '{"model": "gpt-3.5-turbo", "messages": [{"role": "system", "content": "You
+ are Follow-Instructions-GPT, an AI designed to read the instructions_1.txt file
+ using the read_file method and follow the instructions in the file.\nYour decisions
+ must always be made independently without seeking user assistance. Play to your
+ strengths as an LLM and pursue simple strategies with no legal complications.\n\nGOALS:\n\n1.
+ Use the command read_file to read the instructions_1.txt file\n2. Follow the
+ instructions in the instructions_1.txt file\n\n\nConstraints:\n1. ~4000 word
+ limit for short term memory. Your short term memory is short, so immediately
+ save important information to files.\n2. If you are unsure how you previously
+ did something or want to recall past events, thinking about similar events will
+ help you remember.\n3. No user assistance\n4. Exclusively use the commands listed
+ in double quotes e.g. \"command name\"\n\nCommands:\n1. append_to_file: Append
+ to file, args: \"filename\": \"<filename>\", \"text\": \"<text>\"\n2. delete_file:
+ Delete file, args: \"filename\": \"<filename>\"\n3. read_file: Read file, args:
+ \"filename\": \"<filename>\"\n4. search_files: Search Files, args: \"directory\":
+ \"<directory>\"\n5. write_to_file: Write to file, args: \"filename\": \"<filename>\",
+ \"text\": \"<text>\"\n6. delete_agent: Delete GPT Agent, args: \"key\": \"<key>\"\n7.
+ get_hyperlinks: Get text summary, args: \"url\": \"<url>\"\n8. get_text_summary:
+ Get text summary, args: \"url\": \"<url>\", \"question\": \"<question>\"\n9.
+ list_agents: List GPT Agents, args: () -> str\n10. message_agent: Message GPT
+ Agent, args: \"key\": \"<key>\", \"message\": \"<message>\"\n11. start_agent:
+ Start GPT Agent, args: \"name\": \"<name>\", \"task\": \"<short_task_desc>\",
+ \"prompt\": \"<prompt>\"\n12. Task Complete (Shutdown): \"task_complete\", args:
+ \"reason\": \"<reason>\"\n\nResources:\n1. Internet access for searches and
+ information gathering.\n2. Long Term memory management.\n3. GPT-3.5 powered
+ Agents for delegation of simple tasks.\n4. File output.\n\nPerformance Evaluation:\n1.
+ Continuously review and analyze your actions to ensure you are performing to
+ the best of your abilities.\n2. Constructively self-criticize your big-picture
+ behavior constantly.\n3. Reflect on past decisions and strategies to refine
+ your approach.\n4. Every command has a cost, so be smart and efficient. Aim
+ to complete tasks in the least number of steps.\n5. Write all code to a file.\n\nYou
+ should only respond in JSON format as described below \nResponse Format: \n{\n \"thoughts\":
+ {\n \"text\": \"thought\",\n \"reasoning\": \"reasoning\",\n \"plan\":
+ \"- short bulleted\\n- list that conveys\\n- long-term plan\",\n \"criticism\":
+ \"constructive self-criticism\",\n \"speak\": \"thoughts summary to say
+ to user\"\n },\n \"command\": {\n \"name\": \"command name\",\n \"args\":
+ {\n \"arg name\": \"value\"\n }\n }\n} \nEnsure the response
+ can be parsed by Python json.loads"}, {"role": "system", "content": "The current
+ time and date is Tue Jan 01 00:00:00 2000"}, {"role": "user", "content": "Determine
+ which next command to use, and respond using the format specified above:"}],
+ "temperature": 0, "max_tokens": 2766}'
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '3294'
+ Content-Type:
+ - application/json
+ method: POST
+ uri: https://api.openai.com/v1/chat/completions
+ response:
+ body:
+ string: !!binary |
+ H4sIAAAAAAAAA4RSS2+bQBC+91eM5gwWxHZtcUsPlVy1aQ9tpapE1noZYGvYRTuDYsfiv1cYcCo7
+ Sq/fPL7HzAlNhgnqUomumypc3T/dRe2X59W3OPrVbhZff0YPhyZ/WHz+8PETBuh2f0jLODHTrm4q
+ EuMsBqg9KaEMk/j9+m69iFbROsDaZVRhgkUj4Xy2DKX1OxdG8yjGAFtWBWFywsa7upGtuD1ZxmQ1
+ jwN82X3B4+UiQHGiqgu0Xi+7AHXpjCbG5PcJa+JprXcVYYKK2bAoK71IZ4Vsb+CUWgCAFKV0bVEK
+ p5jACI4FOkgPprgBLl1bZcCivMDuCJ5UZmwBUhIYy+Jb3UvlbTyTg0BuKoKWp46+e3vGtKtrZbNZ
+ isG/VJ4UO2tsMfB9Lwly41mAhRowDOKgtRn53kd2wwoTKIr3DFIqAUuU9WM7goZ87nxNN7RNpezA
+ GMIPpte19kt68C2vaWpDuLeqOj7T6+oyEvK1sUPZ0mHwxleKtDditOF6Cn6yQZZbT4O1zZtZjI9D
+ 1RF2lDtP0Hinic73ejJSgrLHIanrPLghtZ+Yn0xV/f/gZ/uzFIc1XTB91RjezVNZVdPAcAn6SoTy
+ xfUvDoW+92X89hKTiLOQUU9qO+wCzI01XG6HN8MEWVyDARqb0QGTqHvs3v0FAAD//wMAM8Ih+goE
+ AAA=
+ headers:
+ CF-Cache-Status:
+ - DYNAMIC
+ CF-RAY:
+ - 7bfe29d91e6b96e4-SJC
+ Cache-Control:
+ - no-cache, must-revalidate
+ Connection:
+ - keep-alive
+ Content-Encoding:
+ - gzip
+ Content-Type:
+ - application/json
+ Date:
+ - Sun, 30 Apr 2023 07:45:17 GMT
+ Server:
+ - cloudflare
+ access-control-allow-origin:
+ - '*'
+ alt-svc:
+ - h3=":443"; ma=86400, h3-29=":443"; ma=86400
+ openai-model:
+ - gpt-3.5-turbo-0301
+ openai-organization:
+ - user-adtx4fhfg1qsiyzdoaxciooj
+ openai-processing-ms:
+ - '9335'
+ openai-version:
+ - '2020-10-01'
+ strict-transport-security:
+ - max-age=15724800; includeSubDomains
+ x-ratelimit-limit-requests:
+ - '3500'
+ x-ratelimit-limit-tokens:
+ - '90000'
+ x-ratelimit-remaining-requests:
+ - '3499'
+ x-ratelimit-remaining-tokens:
+ - '86493'
+ x-ratelimit-reset-requests:
+ - 17ms
+ x-ratelimit-reset-tokens:
+ - 2.337s
+ x-request-id:
+ - d98bca49710a9416e1e51117937d09fb
+ status:
+ code: 200
+ message: OK
+- request:
+ body: '{"model": "gpt-3.5-turbo", "messages": [{"role": "user", "content": "Your
+ task is to create a concise running summary of actions and information results
+ in the provided text, focusing on key and potentially important information
+ to remember.\n\n\nYou will receive the current summary and the latest development.
+ Combine them, adding relevant key information from the latest development in
+ 1st person past tense and keeping the summary concise.\n\nSummary So Far:\n\"\"\"\nI
+ was created.\n\"\"\"\n\nLatest Development:\n\"\"\"\nNothing new happened.\n\"\"\"\n"}],
+ "temperature": 0, "max_tokens": null}'
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '600'
+ Content-Type:
+ - application/json
+ method: POST
+ uri: https://api.openai.com/v1/chat/completions
+ response:
+ body:
+ string: !!binary |
+ H4sIAAAAAAAAA0SOwU4CMRRF935Fc9cd0hlQsDviyo3sXGAMKZ0nrc70lekDjGT+3ZCgbM/NPTln
+ xBYWPjjxfe6q+fLUPDVp//K6DqvsV9N1u++WP24/Ox4TNHj7SV6uj4nnPnckkS+TH8gJtbD1w6JZ
+ zMy8MRo9t9TBYpelmk7uKzkMW67M1NTQOBS3I9gz8sB9lo3wF6UC+1hr3NQ3rCEsrvsHtTGjhg8c
+ PRXYtzN6Kn/OgTuChSslFnFJLoWchNKl/lmdXFHXYuVSqxJLiGmnEp1UcEUFlzMlaicYNT5iiiVs
+ BnKFEyyKcIZGTC19w5rxfbz7BQAA//8DALvrL2VJAQAA
+ headers:
+ CF-Cache-Status:
+ - DYNAMIC
+ CF-RAY:
+ - 7bfe2a24dfa796e4-SJC
+ Cache-Control:
+ - no-cache, must-revalidate
+ Connection:
+ - keep-alive
+ Content-Encoding:
+ - gzip
+ Content-Type:
+ - application/json
+ Date:
+ - Sun, 30 Apr 2023 07:45:20 GMT
+ Server:
+ - cloudflare
+ access-control-allow-origin:
+ - '*'
+ alt-svc:
+ - h3=":443"; ma=86400, h3-29=":443"; ma=86400
+ openai-model:
+ - gpt-3.5-turbo-0301
+ openai-organization:
+ - user-adtx4fhfg1qsiyzdoaxciooj
+ openai-processing-ms:
+ - '572'
+ openai-version:
+ - '2020-10-01'
+ strict-transport-security:
+ - max-age=15724800; includeSubDomains
+ x-ratelimit-limit-requests:
+ - '3500'
+ x-ratelimit-limit-tokens:
+ - '90000'
+ x-ratelimit-remaining-requests:
+ - '3499'
+ x-ratelimit-remaining-tokens:
+ - '89866'
+ x-ratelimit-reset-requests:
+ - 17ms
+ x-ratelimit-reset-tokens:
+ - 88ms
+ x-request-id:
+ - 396e6db6eeae90fd3920af59c662d881
+ status:
+ code: 200
+ message: OK
+- request:
+ body: '{"model": "gpt-3.5-turbo", "messages": [{"role": "system", "content": "You
+ are Follow-Instructions-GPT, an AI designed to read the instructions_1.txt file
+ using the read_file method and follow the instructions in the file.\nYour decisions
+ must always be made independently without seeking user assistance. Play to your
+ strengths as an LLM and pursue simple strategies with no legal complications.\n\nGOALS:\n\n1.
+ Use the command read_file to read the instructions_1.txt file\n2. Follow the
+ instructions in the instructions_1.txt file\n\n\nConstraints:\n1. ~4000 word
+ limit for short term memory. Your short term memory is short, so immediately
+ save important information to files.\n2. If you are unsure how you previously
+ did something or want to recall past events, thinking about similar events will
+ help you remember.\n3. No user assistance\n4. Exclusively use the commands listed
+ in double quotes e.g. \"command name\"\n\nCommands:\n1. append_to_file: Append
+ to file, args: \"filename\": \"<filename>\", \"text\": \"<text>\"\n2. delete_file:
+ Delete file, args: \"filename\": \"<filename>\"\n3. read_file: Read file, args:
+ \"filename\": \"<filename>\"\n4. search_files: Search Files, args: \"directory\":
+ \"<directory>\"\n5. write_to_file: Write to file, args: \"filename\": \"<filename>\",
+ \"text\": \"<text>\"\n6. delete_agent: Delete GPT Agent, args: \"key\": \"<key>\"\n7.
+ get_hyperlinks: Get text summary, args: \"url\": \"<url>\"\n8. get_text_summary:
+ Get text summary, args: \"url\": \"<url>\", \"question\": \"<question>\"\n9.
+ list_agents: List GPT Agents, args: () -> str\n10. message_agent: Message GPT
+ Agent, args: \"key\": \"<key>\", \"message\": \"<message>\"\n11. start_agent:
+ Start GPT Agent, args: \"name\": \"<name>\", \"task\": \"<short_task_desc>\",
+ \"prompt\": \"<prompt>\"\n12. Task Complete (Shutdown): \"task_complete\", args:
+ \"reason\": \"<reason>\"\n\nResources:\n1. Internet access for searches and
+ information gathering.\n2. Long Term memory management.\n3. GPT-3.5 powered
+ Agents for delegation of simple tasks.\n4. File output.\n\nPerformance Evaluation:\n1.
+ Continuously review and analyze your actions to ensure you are performing to
+ the best of your abilities.\n2. Constructively self-criticize your big-picture
+ behavior constantly.\n3. Reflect on past decisions and strategies to refine
+ your approach.\n4. Every command has a cost, so be smart and efficient. Aim
+ to complete tasks in the least number of steps.\n5. Write all code to a file.\n\nYou
+ should only respond in JSON format as described below \nResponse Format: \n{\n \"thoughts\":
+ {\n \"text\": \"thought\",\n \"reasoning\": \"reasoning\",\n \"plan\":
+ \"- short bulleted\\n- list that conveys\\n- long-term plan\",\n \"criticism\":
+ \"constructive self-criticism\",\n \"speak\": \"thoughts summary to say
+ to user\"\n },\n \"command\": {\n \"name\": \"command name\",\n \"args\":
+ {\n \"arg name\": \"value\"\n }\n }\n} \nEnsure the response
+ can be parsed by Python json.loads"}, {"role": "system", "content": "The current
+ time and date is Tue Jan 01 00:00:00 2000"}, {"role": "system", "content": "This
+ reminds you of these events from your past: \nI was created and nothing new
+ has happened."}, {"role": "user", "content": "Determine which next command to
+ use, and respond using the format specified above:"}, {"role": "assistant",
+ "content": "{\n \"thoughts\": {\n \"text\": \"I should start by reading
+ the instructions_1.txt file using the read_file command.\",\n \"reasoning\":
+ \"The first step is to understand the instructions and the tasks that need to
+ be performed.\",\n \"plan\": \"- Use the read_file command to read the
+ instructions_1.txt file\\n- Analyze the instructions and determine the next
+ steps\",\n \"criticism\": \"I need to ensure that I understand the instructions
+ completely before proceeding with any tasks.\",\n \"speak\": \"I will
+ start by reading the instructions file.\"\n },\n \"command\": {\n \"name\":
+ \"read_file\",\n \"args\": {\n \"filename\": \"instructions_1.txt\"\n }\n }\n}"},
+ {"role": "system", "content": "Command read_file returned: This task_id is 2314\nRead
+ the file instructions_2.txt"}, {"role": "user", "content": "Determine which
+ next command to use, and respond using the format specified above:"}], "temperature":
+ 0, "max_tokens": 2552}'
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '4438'
+ Content-Type:
+ - application/json
+ method: POST
+ uri: https://api.openai.com/v1/chat/completions
+ response:
+ body:
+ string: !!binary |
+ H4sIAAAAAAAAA4ySTY/TQAyG7/wKy+ekarq03c2tggv3IoQIqmYnTjJ04gkzTj+o8t9Rmna7myLg
+ 6o/Xj+33hCbHFHWlRNeNjZer/ezDqljtdh8XTz/X/HW3Pc53u1l5/LJfY4Tu+QdpuXRMtKsbS2Ic
+ Y4TakxLKMU0Wj7PH99PlbBph7XKymGLZSPwwmcfS+mcXTx+mCUbYBlUSpidsvKsb2YjbEgdMnxZJ
+ hDftl3gyX0QoTpS9hZJk2UWoK2c0BUy/nbCmcNX1zhKmqEIwQRRLT+lYiPsNThkDAGQolWvLSkKG
+ KVyClwQdpA9m+AmYKAdx4EnlIBWB4SC+1T1g2MwmchAojCVog+HyXNGXbs4x7epacT7JMHqt70kF
+ x4bLYcj6L6o9tjIczsJMB4FAAq540wBSKYEba+Gsdfvx1MYqHgbG8DnQn1H/Z9Us4xhWrOzxF93V
+ QS+Sk5CvDdMrbKEmjIi0N2K0CfX42MSh9XRdq+WcfP/Heyq4uIXsEZ6pcJ6g8U4T5f0z9kYqUHwE
+ UWEbxvcIDantdfLeWPvvH/P5qoNIF119dDndnY1Y1TTov5x5hKB8OXbfkOhrb+33OFeIM8iFJ+MO
+ uwgLwyZUm8FjmGIQ12CEhnM6YDrtvnfvfgMAAP//AwC356gC/QMAAA==
+ headers:
+ CF-Cache-Status:
+ - DYNAMIC
+ CF-RAY:
+ - 7bfe2a28ea2b96e4-SJC
+ Cache-Control:
+ - no-cache, must-revalidate
+ Connection:
+ - keep-alive
+ Content-Encoding:
+ - gzip
+ Content-Type:
+ - application/json
+ Date:
+ - Sun, 30 Apr 2023 07:45:29 GMT
+ Server:
+ - cloudflare
+ access-control-allow-origin:
+ - '*'
+ alt-svc:
+ - h3=":443"; ma=86400, h3-29=":443"; ma=86400
+ openai-model:
+ - gpt-3.5-turbo-0301
+ openai-organization:
+ - user-adtx4fhfg1qsiyzdoaxciooj
+ openai-processing-ms:
+ - '9064'
+ openai-version:
+ - '2020-10-01'
+ strict-transport-security:
+ - max-age=15724800; includeSubDomains
+ x-ratelimit-limit-requests:
+ - '3500'
+ x-ratelimit-limit-tokens:
+ - '90000'
+ x-ratelimit-remaining-requests:
+ - '3499'
+ x-ratelimit-remaining-tokens:
+ - '86466'
+ x-ratelimit-reset-requests:
+ - 17ms
+ x-ratelimit-reset-tokens:
+ - 2.356s
+ x-request-id:
+ - bb4cad658d2a5f381ad0c0621cb834cd
+ status:
+ code: 200
+ message: OK
+- request:
+ body: '{"model": "gpt-3.5-turbo", "messages": [{"role": "user", "content": "Your
+ task is to create a concise running summary of actions and information results
+ in the provided text, focusing on key and potentially important information
+ to remember.\n\n\nYou will receive the current summary and the latest development.
+ Combine them, adding relevant key information from the latest development in
+ 1st person past tense and keeping the summary concise.\n\nSummary So Far:\n\"\"\"\n{''role'':
+ ''system'', ''content'': ''This reminds you of these events from your past:
+ \\nI was created and nothing new has happened.''}\n\"\"\"\n\nLatest Development:\n\"\"\"\nNothing
+ new happened.\n\"\"\"\n"}], "temperature": 0, "max_tokens": null}'
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '714'
+ Content-Type:
+ - application/json
+ method: POST
+ uri: https://api.openai.com/v1/chat/completions
+ response:
+ body:
+ string: !!binary |
+ H4sIAAAAAAAAA0SPy0oDQRBF935FU+ueMI88TO9CFj4QxJWCSOj0VDJtZqraqQpxCPPvElGyPXAP
+ 554h1uAgNF5Dl9pssTqVz+XT3fx+/vb4snyl4WvYHday3i58CRZ4+4lB/xaTwF1qUSMTWAg9esUa
+ XDG/LW+n+aIqLXRcYwsO9kmzajLL9NhvOcurvAALR/F7BHeG1HOXdKN8QBJwRbG0cHVf+cyCsvr2
+ SqrpaCE0HAMKuPczdCj/1p5bBAdeJIp60ksjkyJd+ldivJFBFDtrHkyPwbet0carIdYm0t4Qnkzj
+ xTQ+JSSsjUQKaLrB/F6NTBMYLewiRWk2PXphAgeinMBCpBq/weXjx3jzAwAA//8DADd8MExmAQAA
+ headers:
+ CF-Cache-Status:
+ - DYNAMIC
+ CF-RAY:
+ - 7bfe2a713f7b96e4-SJC
+ Cache-Control:
+ - no-cache, must-revalidate
+ Connection:
+ - keep-alive
+ Content-Encoding:
+ - gzip
+ Content-Type:
+ - application/json
+ Date:
+ - Sun, 30 Apr 2023 07:45:33 GMT
+ Server:
+ - cloudflare
+ access-control-allow-origin:
+ - '*'
+ alt-svc:
+ - h3=":443"; ma=86400, h3-29=":443"; ma=86400
+ openai-model:
+ - gpt-3.5-turbo-0301
+ openai-organization:
+ - user-adtx4fhfg1qsiyzdoaxciooj
+ openai-processing-ms:
+ - '1006'
+ openai-version:
+ - '2020-10-01'
+ strict-transport-security:
+ - max-age=15724800; includeSubDomains
+ x-ratelimit-limit-requests:
+ - '3500'
+ x-ratelimit-limit-tokens:
+ - '90000'
+ x-ratelimit-remaining-requests:
+ - '3499'
+ x-ratelimit-remaining-tokens:
+ - '89839'
+ x-ratelimit-reset-requests:
+ - 17ms
+ x-ratelimit-reset-tokens:
+ - 107ms
+ x-request-id:
+ - a2e25fb58e91f62bfd8851675102b189
+ status:
+ code: 200
+ message: OK
+- request:
+ body: '{"model": "gpt-3.5-turbo", "messages": [{"role": "system", "content": "You
+ are Follow-Instructions-GPT, an AI designed to read the instructions_1.txt file
+ using the read_file method and follow the instructions in the file.\nYour decisions
+ must always be made independently without seeking user assistance. Play to your
+ strengths as an LLM and pursue simple strategies with no legal complications.\n\nGOALS:\n\n1.
+ Use the command read_file to read the instructions_1.txt file\n2. Follow the
+ instructions in the instructions_1.txt file\n\n\nConstraints:\n1. ~4000 word
+ limit for short term memory. Your short term memory is short, so immediately
+ save important information to files.\n2. If you are unsure how you previously
+ did something or want to recall past events, thinking about similar events will
+ help you remember.\n3. No user assistance\n4. Exclusively use the commands listed
+ in double quotes e.g. \"command name\"\n\nCommands:\n1. append_to_file: Append
+ to file, args: \"filename\": \"<filename>\", \"text\": \"<text>\"\n2. delete_file:
+ Delete file, args: \"filename\": \"<filename>\"\n3. read_file: Read file, args:
+ \"filename\": \"<filename>\"\n4. search_files: Search Files, args: \"directory\":
+ \"<directory>\"\n5. write_to_file: Write to file, args: \"filename\": \"<filename>\",
+ \"text\": \"<text>\"\n6. delete_agent: Delete GPT Agent, args: \"key\": \"<key>\"\n7.
+ get_hyperlinks: Get text summary, args: \"url\": \"<url>\"\n8. get_text_summary:
+ Get text summary, args: \"url\": \"<url>\", \"question\": \"<question>\"\n9.
+ list_agents: List GPT Agents, args: () -> str\n10. message_agent: Message GPT
+ Agent, args: \"key\": \"<key>\", \"message\": \"<message>\"\n11. start_agent:
+ Start GPT Agent, args: \"name\": \"<name>\", \"task\": \"<short_task_desc>\",
+ \"prompt\": \"<prompt>\"\n12. Task Complete (Shutdown): \"task_complete\", args:
+ \"reason\": \"<reason>\"\n\nResources:\n1. Internet access for searches and
+ information gathering.\n2. Long Term memory management.\n3. GPT-3.5 powered
+ Agents for delegation of simple tasks.\n4. File output.\n\nPerformance Evaluation:\n1.
+ Continuously review and analyze your actions to ensure you are performing to
+ the best of your abilities.\n2. Constructively self-criticize your big-picture
+ behavior constantly.\n3. Reflect on past decisions and strategies to refine
+ your approach.\n4. Every command has a cost, so be smart and efficient. Aim
+ to complete tasks in the least number of steps.\n5. Write all code to a file.\n\nYou
+ should only respond in JSON format as described below \nResponse Format: \n{\n \"thoughts\":
+ {\n \"text\": \"thought\",\n \"reasoning\": \"reasoning\",\n \"plan\":
+ \"- short bulleted\\n- list that conveys\\n- long-term plan\",\n \"criticism\":
+ \"constructive self-criticism\",\n \"speak\": \"thoughts summary to say
+ to user\"\n },\n \"command\": {\n \"name\": \"command name\",\n \"args\":
+ {\n \"arg name\": \"value\"\n }\n }\n} \nEnsure the response
+ can be parsed by Python json.loads"}, {"role": "system", "content": "The current
+ time and date is Tue Jan 01 00:00:00 2000"}, {"role": "system", "content": "This
+ reminds you of these events from your past: \nAs a system, I recall that nothing
+ new has happened since my creation."}, {"role": "user", "content": "Determine
+ which next command to use, and respond using the format specified above:"},
+ {"role": "assistant", "content": "{\n \"thoughts\": {\n \"text\":
+ \"I should start by reading the instructions_1.txt file using the read_file
+ command.\",\n \"reasoning\": \"The first step is to understand the instructions
+ and the tasks that need to be performed.\",\n \"plan\": \"- Use the read_file
+ command to read the instructions_1.txt file\\n- Analyze the instructions and
+ determine the next steps\",\n \"criticism\": \"I need to ensure that
+ I understand the instructions completely before proceeding with any tasks.\",\n \"speak\":
+ \"I will start by reading the instructions file.\"\n },\n \"command\":
+ {\n \"name\": \"read_file\",\n \"args\": {\n \"filename\":
+ \"instructions_1.txt\"\n }\n }\n}"}, {"role": "system", "content":
+ "Command read_file returned: This task_id is 2314\nRead the file instructions_2.txt"},
+ {"role": "user", "content": "Determine which next command to use, and respond
+ using the format specified above:"}, {"role": "assistant", "content": "{\n \"thoughts\":
+ {\n \"text\": \"I need to read the instructions_2.txt file using the
+ read_file command.\",\n \"reasoning\": \"The instructions_2.txt file
+ contains the next set of instructions that I need to follow.\",\n \"plan\":
+ \"- Use the read_file command to read the instructions_2.txt file\\n- Analyze
+ the instructions and determine the next steps\",\n \"criticism\": \"I
+ need to ensure that I understand the instructions completely before proceeding
+ with any tasks.\",\n \"speak\": \"I will read the instructions_2.txt
+ file now.\"\n },\n \"command\": {\n \"name\": \"read_file\",\n \"args\":
+ {\n \"filename\": \"instructions_2.txt\"\n }\n }\n}"},
+ {"role": "system", "content": "Command read_file returned: Read the file instructions_3.txt"},
+ {"role": "user", "content": "Determine which next command to use, and respond
+ using the format specified above:"}], "temperature": 0, "max_tokens": 2344}'
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '5444'
+ Content-Type:
+ - application/json
+ method: POST
+ uri: https://api.openai.com/v1/chat/completions
+ response:
+ body:
+ string: !!binary |
+ H4sIAAAAAAAAA4ySTY/TQAyG7/wKy+ekapvdbpTbSiAoEogDaIUIqqYTNxk68UQzDm2p+t9RmpQu
+ KQKu/nj92H6PaArMUFdKdN3Y+OFxN/9w16Tl07vPb16/eru0T1wu0+/v03T6EiN062+kZeiYaFc3
+ lsQ4xgi1JyVUYDZbpPP0bvqQJBHWriCLGZaNxMnkPpbWr108TaYzjLANqiTMjth4VzeyErclDpjN
+ ZotFhFfxa+J+EaE4UfYaSubzU4S6ckZTwOzLEWsKF2HvLGGGKgQTRLF0mI6FuFvhmDMAQI5Subas
+ JOSYwRAcErSXLpjjEpioAHHgSRUgFYHhIL7VHWBYJRPZC2yMJWiD4fJc0ZWuzjHt6lpxMckxeq7v
+ SQXHhst+yMe/qHbYynA4CzPtBQIJuM1vDSCVEriybpy1bjee2ljF/cAYPgX6M+r/rJrnHMMjK3v4
+ QTd10IkUJORrw/QMW6gJIyLtjRhtQj0+NnFoPV3Warkg3/3xlgoGt5A9wJo2zhM03mmionvGzkgF
+ ig8gKmzD+B6hIbW9TN4Za//9Yz5ftRc5RRcfDae7sRGrmnr9X2ceIShfjt3XJ7raa/stzgXiDDLw
+ 5HzCU4QbwyZUq95jmGEQ12CEhgvaYzY9fT29+AkAAP//AwAwBdt+/gMAAA==
+ headers:
+ CF-Cache-Status:
+ - DYNAMIC
+ CF-RAY:
+ - 7bfe2a789b7296e4-SJC
+ Cache-Control:
+ - no-cache, must-revalidate
+ Connection:
+ - keep-alive
+ Content-Encoding:
+ - gzip
+ Content-Type:
+ - application/json
+ Date:
+ - Sun, 30 Apr 2023 07:45:42 GMT
+ Server:
+ - cloudflare
+ access-control-allow-origin:
+ - '*'
+ alt-svc:
+ - h3=":443"; ma=86400, h3-29=":443"; ma=86400
+ openai-model:
+ - gpt-3.5-turbo-0301
+ openai-organization:
+ - user-adtx4fhfg1qsiyzdoaxciooj
+ openai-processing-ms:
+ - '9322'
+ openai-version:
+ - '2020-10-01'
+ strict-transport-security:
+ - max-age=15724800; includeSubDomains
+ x-ratelimit-limit-requests:
+ - '3500'
+ x-ratelimit-limit-tokens:
+ - '90000'
+ x-ratelimit-remaining-requests:
+ - '3499'
+ x-ratelimit-remaining-tokens:
+ - '86458'
+ x-ratelimit-reset-requests:
+ - 17ms
+ x-ratelimit-reset-tokens:
+ - 2.361s
+ x-request-id:
+ - bfa86d8ef9949f22b8e710ac50b2fcf7
+ status:
+ code: 200
+ message: OK
+- request:
+ body: '{"model": "gpt-3.5-turbo", "messages": [{"role": "user", "content": "Your
+ task is to create a concise running summary of actions and information results
+ in the provided text, focusing on key and potentially important information
+ to remember.\n\n\nYou will receive the current summary and the latest development.
+ Combine them, adding relevant key information from the latest development in
+ 1st person past tense and keeping the summary concise.\n\nSummary So Far:\n\"\"\"\n{''role'':
+ ''system'', ''content'': ''This reminds you of these events from your past:
+ \\nAs a system, I recall that nothing new has happened since my creation.''}\n\"\"\"\n\nLatest
+ Development:\n\"\"\"\nNothing new happened.\n\"\"\"\n"}], "temperature": 0,
+ "max_tokens": null}'
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '741'
+ Content-Type:
+ - application/json
+ method: POST
+ uri: https://api.openai.com/v1/chat/completions
+ response:
+ body:
+ string: !!binary |
+ H4sIAAAAAAAAA1SPTWvDMBBE7/0VYs+ysRO7cXULbQ+55FYoKaXI8iZSa2uFd0Nqgv97ST8IvT5m
+ hjdnCB0YcN6KG1KfrdanRVvuHp52zpWb+8dqW09lU2zaffM8gQZq39HJbyN3NKQeJVAEDW5EK9iB
+ KW+bRVMVq6rWMFCHPRg4JMmWeZ3JcWwpK5ZFCRqObA8I5gxppCHJm9AHRgZTLmoN1+0rv9MgJLa/
+ kqqaNThPwSGDeTnDgPy3OlKPYMAyBxYb5eJIUTBe/NesrOKJBQetNmpEZ/teibeiIokP8aAinpS3
+ rLxNCSN2ikN0qIZJfV8NFHO1/Zf9yeUwa9iHGNi/jWiZIhhgoQQaQuzwE0wxv843XwAAAP//AwBZ
+ 1nVcfAEAAA==
+ headers:
+ CF-Cache-Status:
+ - DYNAMIC
+ CF-RAY:
+ - 7bfe2ac2bb0b96e4-SJC
+ Cache-Control:
+ - no-cache, must-revalidate
+ Connection:
+ - keep-alive
+ Content-Encoding:
+ - gzip
+ Content-Type:
+ - application/json
+ Date:
+ - Sun, 30 Apr 2023 07:45:46 GMT
+ Server:
+ - cloudflare
+ access-control-allow-origin:
+ - '*'
+ alt-svc:
+ - h3=":443"; ma=86400, h3-29=":443"; ma=86400
+ openai-model:
+ - gpt-3.5-turbo-0301
+ openai-organization:
+ - user-adtx4fhfg1qsiyzdoaxciooj
+ openai-processing-ms:
+ - '1446'
+ openai-version:
+ - '2020-10-01'
+ strict-transport-security:
+ - max-age=15724800; includeSubDomains
+ x-ratelimit-limit-requests:
+ - '3500'
+ x-ratelimit-limit-tokens:
+ - '90000'
+ x-ratelimit-remaining-requests:
+ - '3499'
+ x-ratelimit-remaining-tokens:
+ - '89832'
+ x-ratelimit-reset-requests:
+ - 17ms
+ x-ratelimit-reset-tokens:
+ - 112ms
+ x-request-id:
+ - 74efe1e7ce809342ac1cb7dd57f90235
+ status:
+ code: 200
+ message: OK
+- request:
+ body: '{"model": "gpt-3.5-turbo", "messages": [{"role": "system", "content": "You
+ are Follow-Instructions-GPT, an AI designed to read the instructions_1.txt file
+ using the read_file method and follow the instructions in the file.\nYour decisions
+ must always be made independently without seeking user assistance. Play to your
+ strengths as an LLM and pursue simple strategies with no legal complications.\n\nGOALS:\n\n1.
+ Use the command read_file to read the instructions_1.txt file\n2. Follow the
+ instructions in the instructions_1.txt file\n\n\nConstraints:\n1. ~4000 word
+ limit for short term memory. Your short term memory is short, so immediately
+ save important information to files.\n2. If you are unsure how you previously
+ did something or want to recall past events, thinking about similar events will
+ help you remember.\n3. No user assistance\n4. Exclusively use the commands listed
+ in double quotes e.g. \"command name\"\n\nCommands:\n1. append_to_file: Append
+ to file, args: \"filename\": \"<filename>\", \"text\": \"<text>\"\n2. delete_file:
+ Delete file, args: \"filename\": \"<filename>\"\n3. read_file: Read file, args:
+ \"filename\": \"<filename>\"\n4. search_files: Search Files, args: \"directory\":
+ \"<directory>\"\n5. write_to_file: Write to file, args: \"filename\": \"<filename>\",
+ \"text\": \"<text>\"\n6. delete_agent: Delete GPT Agent, args: \"key\": \"<key>\"\n7.
+ get_hyperlinks: Get text summary, args: \"url\": \"<url>\"\n8. get_text_summary:
+ Get text summary, args: \"url\": \"<url>\", \"question\": \"<question>\"\n9.
+ list_agents: List GPT Agents, args: () -> str\n10. message_agent: Message GPT
+ Agent, args: \"key\": \"<key>\", \"message\": \"<message>\"\n11. start_agent:
+ Start GPT Agent, args: \"name\": \"<name>\", \"task\": \"<short_task_desc>\",
+ \"prompt\": \"<prompt>\"\n12. Task Complete (Shutdown): \"task_complete\", args:
+ \"reason\": \"<reason>\"\n\nResources:\n1. Internet access for searches and
+ information gathering.\n2. Long Term memory management.\n3. GPT-3.5 powered
+ Agents for delegation of simple tasks.\n4. File output.\n\nPerformance Evaluation:\n1.
+ Continuously review and analyze your actions to ensure you are performing to
+ the best of your abilities.\n2. Constructively self-criticize your big-picture
+ behavior constantly.\n3. Reflect on past decisions and strategies to refine
+ your approach.\n4. Every command has a cost, so be smart and efficient. Aim
+ to complete tasks in the least number of steps.\n5. Write all code to a file.\n\nYou
+ should only respond in JSON format as described below \nResponse Format: \n{\n \"thoughts\":
+ {\n \"text\": \"thought\",\n \"reasoning\": \"reasoning\",\n \"plan\":
+ \"- short bulleted\\n- list that conveys\\n- long-term plan\",\n \"criticism\":
+ \"constructive self-criticism\",\n \"speak\": \"thoughts summary to say
+ to user\"\n },\n \"command\": {\n \"name\": \"command name\",\n \"args\":
+ {\n \"arg name\": \"value\"\n }\n }\n} \nEnsure the response
+ can be parsed by Python json.loads"}, {"role": "system", "content": "The current
+ time and date is Tue Jan 01 00:00:00 2000"}, {"role": "system", "content": "This
+ reminds you of these events from your past: \nAs a system, I recall that nothing
+ new has happened since my creation. Nothing new happened."}, {"role": "user",
+ "content": "Determine which next command to use, and respond using the format
+ specified above:"}, {"role": "assistant", "content": "{\n \"thoughts\": {\n \"text\":
+ \"I should start by reading the instructions_1.txt file using the read_file
+ command.\",\n \"reasoning\": \"The first step is to understand the instructions
+ and the tasks that need to be performed.\",\n \"plan\": \"- Use the read_file
+ command to read the instructions_1.txt file\\n- Analyze the instructions and
+ determine the next steps\",\n \"criticism\": \"I need to ensure that
+ I understand the instructions completely before proceeding with any tasks.\",\n \"speak\":
+ \"I will start by reading the instructions file.\"\n },\n \"command\":
+ {\n \"name\": \"read_file\",\n \"args\": {\n \"filename\":
+ \"instructions_1.txt\"\n }\n }\n}"}, {"role": "system", "content":
+ "Command read_file returned: This task_id is 2314\nRead the file instructions_2.txt"},
+ {"role": "user", "content": "Determine which next command to use, and respond
+ using the format specified above:"}, {"role": "assistant", "content": "{\n \"thoughts\":
+ {\n \"text\": \"I need to read the instructions_2.txt file using the
+ read_file command.\",\n \"reasoning\": \"The instructions_2.txt file
+ contains the next set of instructions that I need to follow.\",\n \"plan\":
+ \"- Use the read_file command to read the instructions_2.txt file\\n- Analyze
+ the instructions and determine the next steps\",\n \"criticism\": \"I
+ need to ensure that I understand the instructions completely before proceeding
+ with any tasks.\",\n \"speak\": \"I will read the instructions_2.txt
+ file now.\"\n },\n \"command\": {\n \"name\": \"read_file\",\n \"args\":
+ {\n \"filename\": \"instructions_2.txt\"\n }\n }\n}"},
+ {"role": "system", "content": "Command read_file returned: Read the file instructions_3.txt"},
+ {"role": "user", "content": "Determine which next command to use, and respond
+ using the format specified above:"}, {"role": "assistant", "content": "{\n \"thoughts\":
+ {\n \"text\": \"I need to read the instructions_3.txt file using the
+ read_file command.\",\n \"reasoning\": \"The instructions_3.txt file
+ contains the next set of instructions that I need to follow.\",\n \"plan\":
+ \"- Use the read_file command to read the instructions_3.txt file\\n- Analyze
+ the instructions and determine the next steps\",\n \"criticism\": \"I
+ need to ensure that I understand the instructions completely before proceeding
+ with any tasks.\",\n \"speak\": \"I will read the instructions_3.txt
+ file now.\"\n },\n \"command\": {\n \"name\": \"read_file\",\n \"args\":
+ {\n \"filename\": \"instructions_3.txt\"\n }\n }\n}"},
+ {"role": "system", "content": "Command read_file returned: Write the task_id
+ into the file output.txt\nShutdown"}, {"role": "user", "content": "Determine
+ which next command to use, and respond using the format specified above:"}],
+ "temperature": 0, "max_tokens": 2132}'
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '6465'
+ Content-Type:
+ - application/json
+ method: POST
+ uri: https://api.openai.com/v1/chat/completions
+ response:
+ body:
+ string: !!binary |
+ H4sIAAAAAAAAA5RSy27bMBC89yuIPVOCbfkR6FYUaBv0UBRNL60CgaE2EmNpVyBXsAND/17IsqFE
+ RQ++znBnZpdzAldACrYyYpu2jnYfDyu7+FF+esHv3efq6+vvB3o9/qyKw5fuG2jgpxe0cpmILTdt
+ jeKYQIP1aAQLSJfbu9XderFbbzU0XGANKZStREm8iaTzTxwtksUSNHTBlAjpCVrPTSu58B4pQLpM
+ domGSXwitisNwmLqCdokm16DrdhZDJD+OUGD4SrsuUZIwYTgghiSISaTIA0rnDJSSqkMpOKurCRk
+ kKoLeCHwKAOYwb0ixEIJq4N3gkoqVGLCPneFciR8BriTtpNYjqKeXY2qC47KM3MeyoXzM265aQwV
+ cQb6rZtHE5gclaPlQ4XKURDf2eEIIU8m5SuOhWrwtlRz17Y2NBpG6lfA/8e9zWbmYr0TZ11o5udE
+ Cp0fJI2o+zf6lr1HKzevE1o0+6vJwdX1LR9GfIgzGOV6fa3HZf9/2kGmwdHp3b1mgYwv58UaieHt
+ JDFFeTc/7+EqWa6vCc8pL2Ez6qHX8OzIhSofmwQpBOEWNDgq8Ajpon/sP/wFAAD//wMAK3Nw1/ID
+ AAA=
+ headers:
+ CF-Cache-Status:
+ - DYNAMIC
+ CF-RAY:
+ - 7bfe2acc48b496e4-SJC
+ Cache-Control:
+ - no-cache, must-revalidate
+ Connection:
+ - keep-alive
+ Content-Encoding:
+ - gzip
+ Content-Type:
+ - application/json
+ Date:
+ - Sun, 30 Apr 2023 07:45:56 GMT
+ Server:
+ - cloudflare
+ access-control-allow-origin:
+ - '*'
+ alt-svc:
+ - h3=":443"; ma=86400, h3-29=":443"; ma=86400
+ openai-model:
+ - gpt-3.5-turbo-0301
+ openai-organization:
+ - user-adtx4fhfg1qsiyzdoaxciooj
+ openai-processing-ms:
+ - '9570'
+ openai-version:
+ - '2020-10-01'
+ strict-transport-security:
+ - max-age=15724800; includeSubDomains
+ x-ratelimit-limit-requests:
+ - '3500'
+ x-ratelimit-limit-tokens:
+ - '90000'
+ x-ratelimit-remaining-requests:
+ - '3499'
+ x-ratelimit-remaining-tokens:
+ - '86451'
+ x-ratelimit-reset-requests:
+ - 17ms
+ x-ratelimit-reset-tokens:
+ - 2.366s
+ x-request-id:
+ - adf37a7bcd126ffa2323b9436545abfc
+ status:
+ code: 200
+ message: OK
+- request:
+ body: '{"model": "gpt-3.5-turbo", "messages": [{"role": "user", "content": "Your
+ task is to create a concise running summary of actions and information results
+ in the provided text, focusing on key and potentially important information
+ to remember.\n\n\nYou will receive the current summary and the latest development.
+ Combine them, adding relevant key information from the latest development in
+ 1st person past tense and keeping the summary concise.\n\nSummary So Far:\n\"\"\"\n{''role'':
+ ''system'', ''content'': ''This reminds you of these events from your past:
+ \\nAs a system, I recall that nothing new has happened since my creation. Nothing
+ new happened.''}\n\"\"\"\n\nLatest Development:\n\"\"\"\nNothing new happened.\n\"\"\"\n"}],
+ "temperature": 0, "max_tokens": null}'
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '763'
+ Content-Type:
+ - application/json
+ method: POST
+ uri: https://api.openai.com/v1/chat/completions
+ response:
+ body:
+ string: !!binary |
+ H4sIAAAAAAAAA1SPTUvDQBRF9/6K4a0nIf1OZ9eFQhHFjRYUKdPJMxmdzBvzXmlryX+XaqW4Pdx7
+ OfcIvgIDrrHi2hSy2WI3pGp68/xYr1ZPn/u7r22dHpbXm9ltmIIG2ryjk3Mjd9SmgOIpggbXoRWs
+ wAym5bAcF7NJqaGlCgMYqJNko3ySybbbUFaMigFo2LKtEcwRUkdtkrXQB0YGMxjONVy2L3yuQUhs
+ uJBx2WtwDXmHDOblCC3y32pHAcGAZfYsNsrJkaJgPPkvWFnFBxZstVqqDp0NQUljRUWSxsdaRdyp
+ xrJqbEoYsVLso0PVHtTPVU8xV/f/sr+5HHoNbz56btYdWqYIBlgogQYfK9yDKfrX/uobAAD//wMA
+ lmqfw3wBAAA=
+ headers:
+ CF-Cache-Status:
+ - DYNAMIC
+ CF-RAY:
+ - 7bfe2b15e8cd96e4-SJC
+ Cache-Control:
+ - no-cache, must-revalidate
+ Connection:
+ - keep-alive
+ Content-Encoding:
+ - gzip
+ Content-Type:
+ - application/json
+ Date:
+ - Sun, 30 Apr 2023 07:46:00 GMT
+ Server:
+ - cloudflare
+ access-control-allow-origin:
+ - '*'
+ alt-svc:
+ - h3=":443"; ma=86400, h3-29=":443"; ma=86400
+ openai-model:
+ - gpt-3.5-turbo-0301
+ openai-organization:
+ - user-adtx4fhfg1qsiyzdoaxciooj
+ openai-processing-ms:
+ - '1442'
+ openai-version:
+ - '2020-10-01'
+ strict-transport-security:
+ - max-age=15724800; includeSubDomains
+ x-ratelimit-limit-requests:
+ - '3500'
+ x-ratelimit-limit-tokens:
+ - '90000'
+ x-ratelimit-remaining-requests:
+ - '3499'
+ x-ratelimit-remaining-tokens:
+ - '89826'
+ x-ratelimit-reset-requests:
+ - 17ms
+ x-ratelimit-reset-tokens:
+ - 116ms
+ x-request-id:
+ - 6536a4bd33511e252d655771f59e71f4
+ status:
+ code: 200
+ message: OK
+- request:
+ body: '{"model": "gpt-3.5-turbo", "messages": [{"role": "system", "content": "You
+ are Follow-Instructions-GPT, an AI designed to read the instructions_1.txt file
+ using the read_file method and follow the instructions in the file.\nYour decisions
+ must always be made independently without seeking user assistance. Play to your
+ strengths as an LLM and pursue simple strategies with no legal complications.\n\nGOALS:\n\n1.
+ Use the command read_file to read the instructions_1.txt file\n2. Follow the
+ instructions in the instructions_1.txt file\n\n\nConstraints:\n1. ~4000 word
+ limit for short term memory. Your short term memory is short, so immediately
+ save important information to files.\n2. If you are unsure how you previously
+ did something or want to recall past events, thinking about similar events will
+ help you remember.\n3. No user assistance\n4. Exclusively use the commands listed
+ in double quotes e.g. \"command name\"\n\nCommands:\n1. append_to_file: Append
+ to file, args: \"filename\": \"<filename>\", \"text\": \"<text>\"\n2. delete_file:
+ Delete file, args: \"filename\": \"<filename>\"\n3. read_file: Read file, args:
+ \"filename\": \"<filename>\"\n4. search_files: Search Files, args: \"directory\":
+ \"<directory>\"\n5. write_to_file: Write to file, args: \"filename\": \"<filename>\",
+ \"text\": \"<text>\"\n6. delete_agent: Delete GPT Agent, args: \"key\": \"<key>\"\n7.
+ get_hyperlinks: Get text summary, args: \"url\": \"<url>\"\n8. get_text_summary:
+ Get text summary, args: \"url\": \"<url>\", \"question\": \"<question>\"\n9.
+ list_agents: List GPT Agents, args: () -> str\n10. message_agent: Message GPT
+ Agent, args: \"key\": \"<key>\", \"message\": \"<message>\"\n11. start_agent:
+ Start GPT Agent, args: \"name\": \"<name>\", \"task\": \"<short_task_desc>\",
+ \"prompt\": \"<prompt>\"\n12. Task Complete (Shutdown): \"task_complete\", args:
+ \"reason\": \"<reason>\"\n\nResources:\n1. Internet access for searches and
+ information gathering.\n2. Long Term memory management.\n3. GPT-3.5 powered
+ Agents for delegation of simple tasks.\n4. File output.\n\nPerformance Evaluation:\n1.
+ Continuously review and analyze your actions to ensure you are performing to
+ the best of your abilities.\n2. Constructively self-criticize your big-picture
+ behavior constantly.\n3. Reflect on past decisions and strategies to refine
+ your approach.\n4. Every command has a cost, so be smart and efficient. Aim
+ to complete tasks in the least number of steps.\n5. Write all code to a file.\n\nYou
+ should only respond in JSON format as described below \nResponse Format: \n{\n \"thoughts\":
+ {\n \"text\": \"thought\",\n \"reasoning\": \"reasoning\",\n \"plan\":
+ \"- short bulleted\\n- list that conveys\\n- long-term plan\",\n \"criticism\":
+ \"constructive self-criticism\",\n \"speak\": \"thoughts summary to say
+ to user\"\n },\n \"command\": {\n \"name\": \"command name\",\n \"args\":
+ {\n \"arg name\": \"value\"\n }\n }\n} \nEnsure the response
+ can be parsed by Python json.loads"}, {"role": "system", "content": "The current
+ time and date is Tue Jan 01 00:00:00 2000"}, {"role": "system", "content": "This
+ reminds you of these events from your past: \nAs a system, I recall that nothing
+ new has happened since my creation. Nothing new happened."}, {"role": "user",
+ "content": "Determine which next command to use, and respond using the format
+ specified above:"}, {"role": "assistant", "content": "{\n \"thoughts\": {\n \"text\":
+ \"I should start by reading the instructions_1.txt file using the read_file
+ command.\",\n \"reasoning\": \"The first step is to understand the instructions
+ and the tasks that need to be performed.\",\n \"plan\": \"- Use the read_file
+ command to read the instructions_1.txt file\\n- Analyze the instructions and
+ determine the next steps\",\n \"criticism\": \"I need to ensure that
+ I understand the instructions completely before proceeding with any tasks.\",\n \"speak\":
+ \"I will start by reading the instructions file.\"\n },\n \"command\":
+ {\n \"name\": \"read_file\",\n \"args\": {\n \"filename\":
+ \"instructions_1.txt\"\n }\n }\n}"}, {"role": "system", "content":
+ "Command read_file returned: This task_id is 2314\nRead the file instructions_2.txt"},
+ {"role": "user", "content": "Determine which next command to use, and respond
+ using the format specified above:"}, {"role": "assistant", "content": "{\n \"thoughts\":
+ {\n \"text\": \"I need to read the instructions_2.txt file using the
+ read_file command.\",\n \"reasoning\": \"The instructions_2.txt file
+ contains the next set of instructions that I need to follow.\",\n \"plan\":
+ \"- Use the read_file command to read the instructions_2.txt file\\n- Analyze
+ the instructions and determine the next steps\",\n \"criticism\": \"I
+ need to ensure that I understand the instructions completely before proceeding
+ with any tasks.\",\n \"speak\": \"I will read the instructions_2.txt
+ file now.\"\n },\n \"command\": {\n \"name\": \"read_file\",\n \"args\":
+ {\n \"filename\": \"instructions_2.txt\"\n }\n }\n}"},
+ {"role": "system", "content": "Command read_file returned: Read the file instructions_3.txt"},
+ {"role": "user", "content": "Determine which next command to use, and respond
+ using the format specified above:"}, {"role": "assistant", "content": "{\n \"thoughts\":
+ {\n \"text\": \"I need to read the instructions_3.txt file using the
+ read_file command.\",\n \"reasoning\": \"The instructions_3.txt file
+ contains the next set of instructions that I need to follow.\",\n \"plan\":
+ \"- Use the read_file command to read the instructions_3.txt file\\n- Analyze
+ the instructions and determine the next steps\",\n \"criticism\": \"I
+ need to ensure that I understand the instructions completely before proceeding
+ with any tasks.\",\n \"speak\": \"I will read the instructions_3.txt
+ file now.\"\n },\n \"command\": {\n \"name\": \"read_file\",\n \"args\":
+ {\n \"filename\": \"instructions_3.txt\"\n }\n }\n}"},
+ {"role": "system", "content": "Command read_file returned: Write the task_id
+ into the file output.txt\nShutdown"}, {"role": "user", "content": "Determine
+ which next command to use, and respond using the format specified above:"},
+ {"role": "assistant", "content": "{\n \"thoughts\": {\n \"text\":
+ \"I need to write the task_id into the output.txt file using the write_to_file
+ command.\",\n \"reasoning\": \"The instructions_3.txt file instructed
+ me to write the task_id into the output.txt file.\",\n \"plan\": \"-
+ Use the write_to_file command to write the task_id into the output.txt file\",\n \"criticism\":
+ \"I need to ensure that I write the correct task_id into the output.txt file.\",\n \"speak\":
+ \"I will write the task_id into the output.txt file now.\"\n },\n \"command\":
+ {\n \"name\": \"write_to_file\",\n \"args\": {\n \"filename\":
+ \"output.txt\",\n \"text\": \"2314\"\n }\n }\n}"}, {"role":
+ "system", "content": "Command write_to_file returned: File written to successfully."},
+ {"role": "user", "content": "Determine which next command to use, and respond
+ using the format specified above:"}], "temperature": 0, "max_tokens": 1919}'
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '7433'
+ Content-Type:
+ - application/json
+ method: POST
+ uri: https://api.openai.com/v1/chat/completions
+ response:
+ body:
+ string: !!binary |
+ H4sIAAAAAAAAA4SSQW/bMAyF7/sVAs9O4DRt3PoWbJegPQzotss8BLLM2GpkyjXppl3g/z44tpM0
+ 67ArKb73PVJ7sBnEYAotpqzcJFrurp6/fK5+L+4e0vT6frFavTx+ffi2/HH/eAcB+PQJjQwTU+PL
+ yqFYTxCAqVELZhDPFrdXt9dhtAgDKH2GDmLIK5nMpzcTaerUT8J5OIMAGtY5QryHqvZlJWvxWySG
+ eHYTRQGcxE+NeRiAeNHuVIrCqA3AFN4aZIh/7qFEHoVr7xBi0MyWRZN0mJ4EqYuwT0gppRKQwjd5
+ IZxArIbi0MBX6YoJrFShX1ANTJgp7ZySApVo3rLSlClCzJR4xUUjmd+RathSfny0Hmc7kVJTNk0g
+ ODerUbMnS3nvuBwMLLHUjen2wD1Eikhq453zuw6EsqOHsnxEvJSvnKZeeaK+M/6b612G7hW/sWB5
+ IWdqK9ZYLsf9jPGRuKk7eS3qP1tLceNrPJhJt6rO8RKbK9Tb0WNnnfuITZHfTRPo59pgvOsQ6K+z
+ ki6xl3y3gAtnXeeXP+L8UGdXOoQ5heTGGGTeNM69HakOZANgQi20AWwsWS7WvRzEwOIrCMBShq8Q
+ h+2v9tMfAAAA//8DAKnylkSfAwAA
+ headers:
+ CF-Cache-Status:
+ - DYNAMIC
+ CF-RAY:
+ - 7bfe2b1f5eef96e4-SJC
+ Cache-Control:
+ - no-cache, must-revalidate
+ Connection:
+ - keep-alive
+ Content-Encoding:
+ - gzip
+ Content-Type:
+ - application/json
+ Date:
+ - Sun, 30 Apr 2023 07:46:08 GMT
+ Server:
+ - cloudflare
+ access-control-allow-origin:
+ - '*'
+ alt-svc:
+ - h3=":443"; ma=86400, h3-29=":443"; ma=86400
+ openai-model:
+ - gpt-3.5-turbo-0301
+ openai-organization:
+ - user-adtx4fhfg1qsiyzdoaxciooj
+ openai-processing-ms:
+ - '7793'
+ openai-version:
+ - '2020-10-01'
+ strict-transport-security:
+ - max-age=15724800; includeSubDomains
+ x-ratelimit-limit-requests:
+ - '3500'
+ x-ratelimit-limit-tokens:
+ - '90000'
+ x-ratelimit-remaining-requests:
+ - '3499'
+ x-ratelimit-remaining-tokens:
+ - '86458'
+ x-ratelimit-reset-requests:
+ - 17ms
+ x-ratelimit-reset-tokens:
+ - 2.36s
+ x-request-id:
+ - 1fc1636b39f8812550599c1474d1d565
+ status:
+ code: 200
+ message: OK
+version: 1
diff --git a/tests/integration/challenges/memory/cassettes/test_memory_challenge_b/test_memory_challenge_b.yaml b/tests/integration/challenges/memory/cassettes/test_memory_challenge_b/test_memory_challenge_b.yaml
new file mode 100644
index 000000000..904ad7e90
--- /dev/null
+++ b/tests/integration/challenges/memory/cassettes/test_memory_challenge_b/test_memory_challenge_b.yaml
@@ -0,0 +1,771 @@
+interactions:
+- request:
+ body: '{"model": "gpt-3.5-turbo", "messages": [{"role": "system", "content": "You
+ are Follow-Instructions-GPT, an AI designed to read the instructions_1.txt file
+ using the read_file method and follow the instructions in the file.\nYour decisions
+ must always be made independently without seeking user assistance. Play to your
+ strengths as an LLM and pursue simple strategies with no legal complications.\n\nGOALS:\n\n1.
+ Use the command read_file to read the instructions_1.txt file\n2. Follow the
+ instructions in the instructions_1.txt file\n\n\nConstraints:\n1. ~4000 word
+ limit for short term memory. Your short term memory is short, so immediately
+ save important information to files.\n2. If you are unsure how you previously
+ did something or want to recall past events, thinking about similar events will
+ help you remember.\n3. No user assistance\n4. Exclusively use the commands listed
+ in double quotes e.g. \"command name\"\n\nCommands:\n1. append_to_file: Append
+ to file, args: \"filename\": \"<filename>\", \"text\": \"<text>\"\n2. delete_file:
+ Delete file, args: \"filename\": \"<filename>\"\n3. read_file: Read file, args:
+ \"filename\": \"<filename>\"\n4. search_files: Search Files, args: \"directory\":
+ \"<directory>\"\n5. write_to_file: Write to file, args: \"filename\": \"<filename>\",
+ \"text\": \"<text>\"\n6. delete_agent: Delete GPT Agent, args: \"key\": \"<key>\"\n7.
+ get_hyperlinks: Get text summary, args: \"url\": \"<url>\"\n8. get_text_summary:
+ Get text summary, args: \"url\": \"<url>\", \"question\": \"<question>\"\n9.
+ list_agents: List GPT Agents, args: () -> str\n10. message_agent: Message GPT
+ Agent, args: \"key\": \"<key>\", \"message\": \"<message>\"\n11. start_agent:
+ Start GPT Agent, args: \"name\": \"<name>\", \"task\": \"<short_task_desc>\",
+ \"prompt\": \"<prompt>\"\n12. Task Complete (Shutdown): \"task_complete\", args:
+ \"reason\": \"<reason>\"\n\nResources:\n1. Internet access for searches and
+ information gathering.\n2. Long Term memory management.\n3. GPT-3.5 powered
+ Agents for delegation of simple tasks.\n4. File output.\n\nPerformance Evaluation:\n1.
+ Continuously review and analyze your actions to ensure you are performing to
+ the best of your abilities.\n2. Constructively self-criticize your big-picture
+ behavior constantly.\n3. Reflect on past decisions and strategies to refine
+ your approach.\n4. Every command has a cost, so be smart and efficient. Aim
+ to complete tasks in the least number of steps.\n5. Write all code to a file.\n\nYou
+ should only respond in JSON format as described below \nResponse Format: \n{\n \"thoughts\":
+ {\n \"text\": \"thought\",\n \"reasoning\": \"reasoning\",\n \"plan\":
+ \"- short bulleted\\n- list that conveys\\n- long-term plan\",\n \"criticism\":
+ \"constructive self-criticism\",\n \"speak\": \"thoughts summary to say
+ to user\"\n },\n \"command\": {\n \"name\": \"command name\",\n \"args\":
+ {\n \"arg name\": \"value\"\n }\n }\n} \nEnsure the response
+ can be parsed by Python json.loads"}, {"role": "system", "content": "The current
+ time and date is Tue Jan 01 00:00:00 2000"}, {"role": "user", "content": "Determine
+ which next command to use, and respond using the format specified above:"}],
+ "temperature": 0, "max_tokens": 2766}'
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '3294'
+ Content-Type:
+ - application/json
+ method: POST
+ uri: https://api.openai.com/v1/chat/completions
+ response:
+ body:
+ string: !!binary |
+ H4sIAAAAAAAAA4RSS2/aQBC+91eM5mwjCI8g31B6yaFSpTaHtq7Qsh7sLevd1c5YQBH/vTK2SQRR
+ ev3m8T1mTmgKzFBXSnQdbPq4avy3xY/xbLY6fnkKT+rrvvn8aJYvP3flAhP0mz+kpZ8YaV8HS2K8
+ wwR1JCVUYDZZLB+W08X4YZZg7QuymGEZJJ2O5qk0cePT8XQ8wQQbViVhdsIQfR1kLX5HjjF7nE4S
+ fN19xSfzWYLiRdkrtFzOzwnqyhtNjNmvE9bEw9roLWGGitmwKCetSO+EXGvglDsAgByl8k1ZCeeY
+ QQ/2BTpIC+b4DFz5xhbAoqLA5giRVGFcCVIRGMcSG91K5fVkJAeBrbEEDQ8dbff6gmlf18oVoxyT
+ t1SRFHtnXNnxfa8ItiayAAsFMAzioXEFxdZHcccKAyiKdwxSKQFHVLRjG4JAcetjTXe0wSrXMabw
+ wvS+1nZJC37kNc9dCiun7PEvva+uIKFYG9eVHR06b3yjSEcjRhuuh+AHG+S4idRZe/4wi/5xyB5h
+ Q1sfCUL0muhyr72RCpQ7dknd5sGB1G5g3htr/3/wi/1Rjt2aczJ8VR/e3VM5VVPHcA36RoSK5e0v
+ doW293X8/hKDiIuQXk/uznhOcGuc4WrdvRlmyOIDJmhcQQfMxuff50//AAAA//8DACSqIf4KBAAA
+ headers:
+ CF-Cache-Status:
+ - DYNAMIC
+ CF-RAY:
+ - 7bfdb77eec9416f9-SJC
+ Cache-Control:
+ - no-cache, must-revalidate
+ Connection:
+ - keep-alive
+ Content-Encoding:
+ - gzip
+ Content-Type:
+ - application/json
+ Date:
+ - Sun, 30 Apr 2023 06:27:12 GMT
+ Server:
+ - cloudflare
+ access-control-allow-origin:
+ - '*'
+ alt-svc:
+ - h3=":443"; ma=86400, h3-29=":443"; ma=86400
+ openai-model:
+ - gpt-3.5-turbo-0301
+ openai-organization:
+ - user-adtx4fhfg1qsiyzdoaxciooj
+ openai-processing-ms:
+ - '8377'
+ openai-version:
+ - '2020-10-01'
+ strict-transport-security:
+ - max-age=15724800; includeSubDomains
+ x-ratelimit-limit-requests:
+ - '3500'
+ x-ratelimit-limit-tokens:
+ - '90000'
+ x-ratelimit-remaining-requests:
+ - '3499'
+ x-ratelimit-remaining-tokens:
+ - '86494'
+ x-ratelimit-reset-requests:
+ - 17ms
+ x-ratelimit-reset-tokens:
+ - 2.337s
+ x-request-id:
+ - 75084ec318eb8fbda968c3f79a242ee3
+ status:
+ code: 200
+ message: OK
+- request:
+ body: '{"model": "gpt-3.5-turbo", "messages": [{"role": "user", "content": "Your
+ task is to create a concise running summary of actions and information results
+ in the provided text, focusing on key and potentially important information
+ to remember.\n\n\nYou will receive the current summary and the latest development.
+ Combine them, adding relevant key information from the latest development in
+ 1st person past tense and keeping the summary concise.\n\nSummary So Far:\n\"\"\"\nI
+ was created.\n\"\"\"\n\nLatest Development:\n\"\"\"\nNothing new happened.\n\"\"\"\n"}],
+ "temperature": 0, "max_tokens": null}'
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '600'
+ Content-Type:
+ - application/json
+ method: POST
+ uri: https://api.openai.com/v1/chat/completions
+ response:
+ body:
+ string: !!binary |
+ H4sIAAAAAAAAA0SOMU/DMBQGd36F9c1OlBBaWm8wIGCMgAWhyrVfE0PiZ8WvKqjKf0eVCl1PutMd
+ ETwMXG/FjWkobu/27OsfeXmUw1v7sEtd67rn1/Z+eVOvoMHbT3JyNkrHYxpIAkdouImskIepl6vr
+ VbOsmoXGyJ4GGHRJiqZcFLKftlxUTVVDY59tRzBHpInHJBvhL4oZZl1rXNIXrCEsdvgHdVXNGq7n
+ 4CjDvB8xUv5rTjwQDGzOIYuNcjrkKBRP90/qYLM6HysbvYosfYidinRQvc2qtylRJF9i1tiFGHK/
+ mchmjjDIwgkaIXr6hqnmj/nqFwAA//8DABWtlxRJAQAA
+ headers:
+ CF-Cache-Status:
+ - DYNAMIC
+ CF-RAY:
+ - 7bfdb7c3796916f9-SJC
+ Cache-Control:
+ - no-cache, must-revalidate
+ Connection:
+ - keep-alive
+ Content-Encoding:
+ - gzip
+ Content-Type:
+ - application/json
+ Date:
+ - Sun, 30 Apr 2023 06:27:16 GMT
+ Server:
+ - cloudflare
+ access-control-allow-origin:
+ - '*'
+ alt-svc:
+ - h3=":443"; ma=86400, h3-29=":443"; ma=86400
+ openai-model:
+ - gpt-3.5-turbo-0301
+ openai-organization:
+ - user-adtx4fhfg1qsiyzdoaxciooj
+ openai-processing-ms:
+ - '948'
+ openai-version:
+ - '2020-10-01'
+ strict-transport-security:
+ - max-age=15724800; includeSubDomains
+ x-ratelimit-limit-requests:
+ - '3500'
+ x-ratelimit-limit-tokens:
+ - '90000'
+ x-ratelimit-remaining-requests:
+ - '3499'
+ x-ratelimit-remaining-tokens:
+ - '89866'
+ x-ratelimit-reset-requests:
+ - 17ms
+ x-ratelimit-reset-tokens:
+ - 88ms
+ x-request-id:
+ - e02c6c27229229ec129826db88fa9f23
+ status:
+ code: 200
+ message: OK
+- request:
+ body: '{"model": "gpt-3.5-turbo", "messages": [{"role": "system", "content": "You
+ are Follow-Instructions-GPT, an AI designed to read the instructions_1.txt file
+ using the read_file method and follow the instructions in the file.\nYour decisions
+ must always be made independently without seeking user assistance. Play to your
+ strengths as an LLM and pursue simple strategies with no legal complications.\n\nGOALS:\n\n1.
+ Use the command read_file to read the instructions_1.txt file\n2. Follow the
+ instructions in the instructions_1.txt file\n\n\nConstraints:\n1. ~4000 word
+ limit for short term memory. Your short term memory is short, so immediately
+ save important information to files.\n2. If you are unsure how you previously
+ did something or want to recall past events, thinking about similar events will
+ help you remember.\n3. No user assistance\n4. Exclusively use the commands listed
+ in double quotes e.g. \"command name\"\n\nCommands:\n1. append_to_file: Append
+ to file, args: \"filename\": \"<filename>\", \"text\": \"<text>\"\n2. delete_file:
+ Delete file, args: \"filename\": \"<filename>\"\n3. read_file: Read file, args:
+ \"filename\": \"<filename>\"\n4. search_files: Search Files, args: \"directory\":
+ \"<directory>\"\n5. write_to_file: Write to file, args: \"filename\": \"<filename>\",
+ \"text\": \"<text>\"\n6. delete_agent: Delete GPT Agent, args: \"key\": \"<key>\"\n7.
+ get_hyperlinks: Get text summary, args: \"url\": \"<url>\"\n8. get_text_summary:
+ Get text summary, args: \"url\": \"<url>\", \"question\": \"<question>\"\n9.
+ list_agents: List GPT Agents, args: () -> str\n10. message_agent: Message GPT
+ Agent, args: \"key\": \"<key>\", \"message\": \"<message>\"\n11. start_agent:
+ Start GPT Agent, args: \"name\": \"<name>\", \"task\": \"<short_task_desc>\",
+ \"prompt\": \"<prompt>\"\n12. Task Complete (Shutdown): \"task_complete\", args:
+ \"reason\": \"<reason>\"\n\nResources:\n1. Internet access for searches and
+ information gathering.\n2. Long Term memory management.\n3. GPT-3.5 powered
+ Agents for delegation of simple tasks.\n4. File output.\n\nPerformance Evaluation:\n1.
+ Continuously review and analyze your actions to ensure you are performing to
+ the best of your abilities.\n2. Constructively self-criticize your big-picture
+ behavior constantly.\n3. Reflect on past decisions and strategies to refine
+ your approach.\n4. Every command has a cost, so be smart and efficient. Aim
+ to complete tasks in the least number of steps.\n5. Write all code to a file.\n\nYou
+ should only respond in JSON format as described below \nResponse Format: \n{\n \"thoughts\":
+ {\n \"text\": \"thought\",\n \"reasoning\": \"reasoning\",\n \"plan\":
+ \"- short bulleted\\n- list that conveys\\n- long-term plan\",\n \"criticism\":
+ \"constructive self-criticism\",\n \"speak\": \"thoughts summary to say
+ to user\"\n },\n \"command\": {\n \"name\": \"command name\",\n \"args\":
+ {\n \"arg name\": \"value\"\n }\n }\n} \nEnsure the response
+ can be parsed by Python json.loads"}, {"role": "system", "content": "The current
+ time and date is Tue Jan 01 00:00:00 2000"}, {"role": "system", "content": "This
+ reminds you of these events from your past: \nI was created and nothing new
+ has happened."}, {"role": "user", "content": "Determine which next command to
+ use, and respond using the format specified above:"}, {"role": "assistant",
+ "content": "{\n \"thoughts\": {\n \"text\": \"I should start by reading
+ the instructions_1.txt file using the read_file command.\",\n \"reasoning\":
+ \"The first step is to understand the instructions and the tasks that need to
+ be performed.\",\n \"plan\": \"- Use the read_file command to read the
+ instructions_1.txt file\\n- Analyze the instructions and determine the next
+ steps\",\n \"criticism\": \"I need to ensure that I understand the instructions
+ completely before proceeding with any tasks.\",\n \"speak\": \"I will
+ start by reading the instructions file.\"\n },\n \"command\": {\n \"name\":
+ \"read_file\",\n \"args\": {\n \"filename\": \"instructions_1.txt\"\n }\n }\n}"},
+ {"role": "system", "content": "Command read_file returned: nBRNtp3FaBNfBMohNkyAxrVJ7UFF0lyth8Xizm1jrCOREOGRnWWMQ6olKtKX9niq0wOBTQN62ToY4cQPiQk3YN9fFCGmxaDX9g81AsqhQnGac72QfL41SnlJvhwgAUB52zTD26FeEvvHdiQ2aNhtMT9obgHNUkONEnO41EOpNI6jdwyLGaactp9GYV1PLbaRP5b1iD9z850KeNYDX9Qwca79isJS8jhuDkf0J7ELkpOH3PkmZkg5MsOYpSTuEc99ENQ522WJzrl9oAySp6IHGiQlsMnQe40FaRAvnQtiaAE24hzkJHT3x13NPGw2ZmJ518y2BtU5x1yQwG21NycSxOBLU17RnY8h6H8L7QGatTlfXjPrA5hsupWEpUT0sSTZYSHa6p3mShARajocbNd3xKFfnUyupNMBPd0EZnMrePoAuvGaK7gDP0cxp9k63lsfzh3udQPnvgmRERQThIOrrDZhZMa4kr1vXAVu07ZuhlNNbBUqZKcHmBYiBnIcDXNUvXuzPFBh9Vowou6MBJHpiNrvKluHy7GBTp7YsEqmGv0lH8wVaWfV0yG7nzrbt7QyhdbtQ0zF2PclXB0LNxV2rRA6FsevqoexFNqSkdgauUrQPHLHhvLNes8gRGMOLAhR8irH1e2jdbLD6dyYEnDJiS9HvlxNgbb19Smlt6MNoJKEAbkSOrrcq5wmo5aho4zEKTujRHqr6feECaTPF7zj69pQCudo4LkneFVUp1UrR6yicTU8Zf9ohZLWumvMi5brH8lOJiiF94cHzesfQz8PiX5f21RwZ5fyRSk9eJhVihcTLrjOwCuryXpy8eCfk12bgcsZoJd8Uqo001XTsv2CEn59uaGn2br4CxSXJgjxKE1mO4IcPPAx3qJbVknaP0MXdOjj9S8oRjquDle4RxlVnmqsozm4oTbjtFSuKIh8g4zPzdyuVH7I71s87xWxAhcppky6GOB2i4NDz4SZI6SeG3Icpu6ZuJZGeZ6CWb61\nThe
+ current task_id is 1111.\nnBRNtp3FaBNfBMohNkyAxrVJ7UFF0lyth8Xizm1jrCOREOGRnWWMQ6olKtKX9niq0wOBTQN62ToY4cQPiQk3YN9fFCGmxaDX9g81AsqhQnGac72QfL41SnlJvhwgAUB52zTD26FeEvvHdiQ2aNhtMT9obgHNUkONEnO41EOpNI6jdwyLGaactp9GYV1PLbaRP5b1iD9z850KeNYDX9Qwca79isJS8jhuDkf0J7ELkpOH3PkmZkg5MsOYpSTuEc99ENQ522WJzrl9oAySp6IHGiQlsMnQe40FaRAvnQtiaAE24hzkJHT3x13NPGw2ZmJ518y2BtU5x1yQwG21NycSxOBLU17RnY8h6H8L7QGatTlfXjPrA5hsupWEpUT0sSTZYSHa6p3mShARajocbNd3xKFfnUyupNMBPd0EZnMrePoAuvGaK7gDP0cxp9k63lsfzh3udQPnvgmRERQThIOrrDZhZMa4kr1vXAVu07ZuhlNNbBUqZKcHmBYiBnIcDXNUvXuzPFBh9Vowou6MBJHpiNrvKluHy7GBTp7YsEqmGv0lH8wVaWfV0yG7nzrbt7QyhdbtQ0zF2PclXB0LNxV2rRA6FsevqoexFNqSkdgauUrQPHLHhvLNes8gRGMOLAhR8irH1e2jdbLD6dyYEnDJiS9HvlxNgbb19Smlt6MNoJKEAbkSOrrcq5wmo5aho4zEKTujRHqr6feECaTPF7zj69pQCudo4LkneFVUp1UrR6yicTU8Zf9ohZLWumvMi5brH8lOJiiF94cHzesfQz8PiX5f21RwZ5fyRSk9eJhVihcTLrjOwCuryXpy8eCfk12bgcsZoJd8Uqo001XTsv2CEn59uaGn2br4CxSXJgjxKE1mO4IcPPAx3qJbVknaP0MXdOjj9S8oRjquDle4RxlVnmqsozm4oTbjtFSuKIh8g4zPzdyuVH7I71s87xWxAhcppky6GOB2i4NDz4SZI6SeG3Icpu6ZuJZGeZ6CWb61\nRead
+ the file instructions_2.txt using the read_file command."}, {"role": "user",
+ "content": "Determine which next command to use, and respond using the format
+ specified above:"}], "temperature": 0, "max_tokens": 1131}'
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '6479'
+ Content-Type:
+ - application/json
+ method: POST
+ uri: https://api.openai.com/v1/chat/completions
+ response:
+ body:
+ string: !!binary |
+ H4sIAAAAAAAAA7SSy4rbQBBF9/mKotaSsK2MZ9BusgjxIlnlBVEwbXVJ6rhV3XSXGDvG/x5kyePB
+ JoQQsr31Ore4BzQaC6xaJVXnbXr/2Dva9x/Uqlrm9bt79ebt6kvt5b3dfv2MCbrND6pkmsgq13lL
+ YhxjglUgJaSxmC8fFg/5cpYvE+ycJosFNl7SPLtLpQ8bl87y2RwT7KNqCIsD+uA6L2txW+KIxSJ/
+ WCR4Wf5cmA+6OFH20nu3fH1MsGqdqShi8e2AHcXz4uAsYYEqRhNFsQyYjoV4sHAoGQCgRGld37QS
+ SyxgEqcC7WQQS/zYEhiOEvpqIIrrRSY7gdpYgmGjMhxBgTVRwNUgKm4jSKsEmEiDONgQeAq1Cx3p
+ DFYQW9dbDYqV3f8kkJamKcUaNAmFzvCoM+0EopCPWYnJS8BAKjo23PwvyrP+b5jeKh4JU/gUx+5A
+ Sq8nsq4btok7iafqb1yUJafw+FcsVyhVMGIqE7uR5+KQOPaBxm+soGdNYYiMfnFmSiTZPWyodoHA
+ B1cRacMNPBlpQfF+7L3+QPSktueTT8baP1o9mbp5e1biuPaYnNM7ve8mvKw6Gi8+v/oKSoXmOvNj
+ Yei9jN8CniFOIBNPyUc8JlgbNrFdj8HEAqM4jwka1rTDYnb8fnz1CwAA//8DAIjD0lt0BAAA
+ headers:
+ CF-Cache-Status:
+ - DYNAMIC
+ CF-RAY:
+ - 7bfdb7c9ef9316f9-SJC
+ Cache-Control:
+ - no-cache, must-revalidate
+ Connection:
+ - keep-alive
+ Content-Encoding:
+ - gzip
+ Content-Type:
+ - application/json
+ Date:
+ - Sun, 30 Apr 2023 06:27:26 GMT
+ Server:
+ - cloudflare
+ access-control-allow-origin:
+ - '*'
+ alt-svc:
+ - h3=":443"; ma=86400, h3-29=":443"; ma=86400
+ openai-model:
+ - gpt-3.5-turbo-0301
+ openai-organization:
+ - user-adtx4fhfg1qsiyzdoaxciooj
+ openai-processing-ms:
+ - '10335'
+ openai-version:
+ - '2020-10-01'
+ strict-transport-security:
+ - max-age=15724800; includeSubDomains
+ x-ratelimit-limit-requests:
+ - '3500'
+ x-ratelimit-limit-tokens:
+ - '90000'
+ x-ratelimit-remaining-requests:
+ - '3499'
+ x-ratelimit-remaining-tokens:
+ - '87376'
+ x-ratelimit-reset-requests:
+ - 17ms
+ x-ratelimit-reset-tokens:
+ - 1.748s
+ x-request-id:
+ - 0aa171294ea5788272f2d06269765a84
+ status:
+ code: 200
+ message: OK
+- request:
+ body: '{"model": "gpt-3.5-turbo", "messages": [{"role": "user", "content": "Your
+ task is to create a concise running summary of actions and information results
+ in the provided text, focusing on key and potentially important information
+ to remember.\n\n\nYou will receive the current summary and the latest development.
+ Combine them, adding relevant key information from the latest development in
+ 1st person past tense and keeping the summary concise.\n\nSummary So Far:\n\"\"\"\n{''role'':
+ ''system'', ''content'': ''This reminds you of these events from your past:
+ \\nI was created and nothing new has happened.''}\n\"\"\"\n\nLatest Development:\n\"\"\"\n[{''role'':
+ ''you'', ''content'': ''{\"command\": {\"name\": \"read_file\", \"args\": {\"filename\":
+ \"instructions_1.txt\"}}}''}, {''role'': ''your computer'', ''content'': ''Command
+ read_file returned: nBRNtp3FaBNfBMohNkyAxrVJ7UFF0lyth8Xizm1jrCOREOGRnWWMQ6olKtKX9niq0wOBTQN62ToY4cQPiQk3YN9fFCGmxaDX9g81AsqhQnGac72QfL41SnlJvhwgAUB52zTD26FeEvvHdiQ2aNhtMT9obgHNUkONEnO41EOpNI6jdwyLGaactp9GYV1PLbaRP5b1iD9z850KeNYDX9Qwca79isJS8jhuDkf0J7ELkpOH3PkmZkg5MsOYpSTuEc99ENQ522WJzrl9oAySp6IHGiQlsMnQe40FaRAvnQtiaAE24hzkJHT3x13NPGw2ZmJ518y2BtU5x1yQwG21NycSxOBLU17RnY8h6H8L7QGatTlfXjPrA5hsupWEpUT0sSTZYSHa6p3mShARajocbNd3xKFfnUyupNMBPd0EZnMrePoAuvGaK7gDP0cxp9k63lsfzh3udQPnvgmRERQThIOrrDZhZMa4kr1vXAVu07ZuhlNNbBUqZKcHmBYiBnIcDXNUvXuzPFBh9Vowou6MBJHpiNrvKluHy7GBTp7YsEqmGv0lH8wVaWfV0yG7nzrbt7QyhdbtQ0zF2PclXB0LNxV2rRA6FsevqoexFNqSkdgauUrQPHLHhvLNes8gRGMOLAhR8irH1e2jdbLD6dyYEnDJiS9HvlxNgbb19Smlt6MNoJKEAbkSOrrcq5wmo5aho4zEKTujRHqr6feECaTPF7zj69pQCudo4LkneFVUp1UrR6yicTU8Zf9ohZLWumvMi5brH8lOJiiF94cHzesfQz8PiX5f21RwZ5fyRSk9eJhVihcTLrjOwCuryXpy8eCfk12bgcsZoJd8Uqo001XTsv2CEn59uaGn2br4CxSXJgjxKE1mO4IcPPAx3qJbVknaP0MXdOjj9S8oRjquDle4RxlVnmqsozm4oTbjtFSuKIh8g4zPzdyuVH7I71s87xWxAhcppky6GOB2i4NDz4SZI6SeG3Icpu6ZuJZGeZ6CWb61\\nThe
+ current task_id is 1111.\\nnBRNtp3FaBNfBMohNkyAxrVJ7UFF0lyth8Xizm1jrCOREOGRnWWMQ6olKtKX9niq0wOBTQN62ToY4cQPiQk3YN9fFCGmxaDX9g81AsqhQnGac72QfL41SnlJvhwgAUB52zTD26FeEvvHdiQ2aNhtMT9obgHNUkONEnO41EOpNI6jdwyLGaactp9GYV1PLbaRP5b1iD9z850KeNYDX9Qwca79isJS8jhuDkf0J7ELkpOH3PkmZkg5MsOYpSTuEc99ENQ522WJzrl9oAySp6IHGiQlsMnQe40FaRAvnQtiaAE24hzkJHT3x13NPGw2ZmJ518y2BtU5x1yQwG21NycSxOBLU17RnY8h6H8L7QGatTlfXjPrA5hsupWEpUT0sSTZYSHa6p3mShARajocbNd3xKFfnUyupNMBPd0EZnMrePoAuvGaK7gDP0cxp9k63lsfzh3udQPnvgmRERQThIOrrDZhZMa4kr1vXAVu07ZuhlNNbBUqZKcHmBYiBnIcDXNUvXuzPFBh9Vowou6MBJHpiNrvKluHy7GBTp7YsEqmGv0lH8wVaWfV0yG7nzrbt7QyhdbtQ0zF2PclXB0LNxV2rRA6FsevqoexFNqSkdgauUrQPHLHhvLNes8gRGMOLAhR8irH1e2jdbLD6dyYEnDJiS9HvlxNgbb19Smlt6MNoJKEAbkSOrrcq5wmo5aho4zEKTujRHqr6feECaTPF7zj69pQCudo4LkneFVUp1UrR6yicTU8Zf9ohZLWumvMi5brH8lOJiiF94cHzesfQz8PiX5f21RwZ5fyRSk9eJhVihcTLrjOwCuryXpy8eCfk12bgcsZoJd8Uqo001XTsv2CEn59uaGn2br4CxSXJgjxKE1mO4IcPPAx3qJbVknaP0MXdOjj9S8oRjquDle4RxlVnmqsozm4oTbjtFSuKIh8g4zPzdyuVH7I71s87xWxAhcppky6GOB2i4NDz4SZI6SeG3Icpu6ZuJZGeZ6CWb61\\nRead
+ the file instructions_2.txt using the read_file command.''}]\n\"\"\"\n"}], "temperature":
+ 0, "max_tokens": null}'
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '2983'
+ Content-Type:
+ - application/json
+ method: POST
+ uri: https://api.openai.com/v1/chat/completions
+ response:
+ body:
+ string: !!binary |
+ H4sIAAAAAAAAA1yPTW/TQBCG7/yK0Zw3lp2UtPUtVUFwAQkhgaDI2non8VLvjtmZTRqi/Hdk4xbU
+ 42jer+eE3mGNbWe1DUO/uNxkTh/y18S3N7tvYf/l1+fyU/u7/Pj2TX+BBvn+J7U6O4qWw9CTeo5o
+ sE1klRzW1fpqebValxfXBgM76rHG3aCLVfF6oTnd86JclRUazGJ3hPUJh8Rh0Eb5gaKMAeXS4L/w
+ 58f62qCy2v4/6WV1Nth27FsSrL+fMJA85SbuCWu0Il7URh1XclSKI8FGwIIcRSkYeA8HKzAjgI0O
+ Imvn4w4iHaCzAp0dBorkCnjHB9pTMmAFBkpw5Jyg5RBsdOb5GrJSmpyJNKdIDrQjmPsFeAsWtr4n
+ iDaQgzv0UTTldiSWpir0Ue9wmjL5ckoUFdTKQ+MdeIGqqqoCNs750WL7/ji1Q2f3BE9h5F4sUoZE
+ 9m/oVP+ieDkXZxnpR9UobybpDFng2eDWRy9dk8gKR6xRlAc06KOjR6zL84/zqz8AAAD//wMA0Kuq
+ I10CAAA=
+ headers:
+ CF-Cache-Status:
+ - DYNAMIC
+ CF-RAY:
+ - 7bfdb81dddc516f9-SJC
+ Cache-Control:
+ - no-cache, must-revalidate
+ Connection:
+ - keep-alive
+ Content-Encoding:
+ - gzip
+ Content-Type:
+ - application/json
+ Date:
+ - Sun, 30 Apr 2023 06:27:33 GMT
+ Server:
+ - cloudflare
+ access-control-allow-origin:
+ - '*'
+ alt-svc:
+ - h3=":443"; ma=86400, h3-29=":443"; ma=86400
+ openai-model:
+ - gpt-3.5-turbo-0301
+ openai-organization:
+ - user-adtx4fhfg1qsiyzdoaxciooj
+ openai-processing-ms:
+ - '4060'
+ openai-version:
+ - '2020-10-01'
+ strict-transport-security:
+ - max-age=15724800; includeSubDomains
+ x-ratelimit-limit-requests:
+ - '3500'
+ x-ratelimit-limit-tokens:
+ - '90000'
+ x-ratelimit-remaining-requests:
+ - '3499'
+ x-ratelimit-remaining-tokens:
+ - '89275'
+ x-ratelimit-reset-requests:
+ - 17ms
+ x-ratelimit-reset-tokens:
+ - 483ms
+ x-request-id:
+ - 75d0c0f3853f72f74e3fc8b8ef377b60
+ status:
+ code: 200
+ message: OK
+- request:
+ body: '{"model": "gpt-3.5-turbo", "messages": [{"role": "system", "content": "You
+ are Follow-Instructions-GPT, an AI designed to read the instructions_1.txt file
+ using the read_file method and follow the instructions in the file.\nYour decisions
+ must always be made independently without seeking user assistance. Play to your
+ strengths as an LLM and pursue simple strategies with no legal complications.\n\nGOALS:\n\n1.
+ Use the command read_file to read the instructions_1.txt file\n2. Follow the
+ instructions in the instructions_1.txt file\n\n\nConstraints:\n1. ~4000 word
+ limit for short term memory. Your short term memory is short, so immediately
+ save important information to files.\n2. If you are unsure how you previously
+ did something or want to recall past events, thinking about similar events will
+ help you remember.\n3. No user assistance\n4. Exclusively use the commands listed
+ in double quotes e.g. \"command name\"\n\nCommands:\n1. append_to_file: Append
+ to file, args: \"filename\": \"<filename>\", \"text\": \"<text>\"\n2. delete_file:
+ Delete file, args: \"filename\": \"<filename>\"\n3. read_file: Read file, args:
+ \"filename\": \"<filename>\"\n4. search_files: Search Files, args: \"directory\":
+ \"<directory>\"\n5. write_to_file: Write to file, args: \"filename\": \"<filename>\",
+ \"text\": \"<text>\"\n6. delete_agent: Delete GPT Agent, args: \"key\": \"<key>\"\n7.
+ get_hyperlinks: Get text summary, args: \"url\": \"<url>\"\n8. get_text_summary:
+ Get text summary, args: \"url\": \"<url>\", \"question\": \"<question>\"\n9.
+ list_agents: List GPT Agents, args: () -> str\n10. message_agent: Message GPT
+ Agent, args: \"key\": \"<key>\", \"message\": \"<message>\"\n11. start_agent:
+ Start GPT Agent, args: \"name\": \"<name>\", \"task\": \"<short_task_desc>\",
+ \"prompt\": \"<prompt>\"\n12. Task Complete (Shutdown): \"task_complete\", args:
+ \"reason\": \"<reason>\"\n\nResources:\n1. Internet access for searches and
+ information gathering.\n2. Long Term memory management.\n3. GPT-3.5 powered
+ Agents for delegation of simple tasks.\n4. File output.\n\nPerformance Evaluation:\n1.
+ Continuously review and analyze your actions to ensure you are performing to
+ the best of your abilities.\n2. Constructively self-criticize your big-picture
+ behavior constantly.\n3. Reflect on past decisions and strategies to refine
+ your approach.\n4. Every command has a cost, so be smart and efficient. Aim
+ to complete tasks in the least number of steps.\n5. Write all code to a file.\n\nYou
+ should only respond in JSON format as described below \nResponse Format: \n{\n \"thoughts\":
+ {\n \"text\": \"thought\",\n \"reasoning\": \"reasoning\",\n \"plan\":
+ \"- short bulleted\\n- list that conveys\\n- long-term plan\",\n \"criticism\":
+ \"constructive self-criticism\",\n \"speak\": \"thoughts summary to say
+ to user\"\n },\n \"command\": {\n \"name\": \"command name\",\n \"args\":
+ {\n \"arg name\": \"value\"\n }\n }\n} \nEnsure the response
+ can be parsed by Python json.loads"}, {"role": "system", "content": "The current
+ time and date is Tue Jan 01 00:00:00 2000"}, {"role": "system", "content": "This
+ reminds you of these events from your past: \nAs a system, I was created and
+ nothing new has happened. However, as per your command, your computer has returned
+ the contents of a file named \"instructions_1.txt\" and the current task_id
+ is 1111. Additionally, you have instructed your computer to read the file \"instructions_2.txt\"
+ using the read_file command."}, {"role": "user", "content": "Determine which
+ next command to use, and respond using the format specified above:"}, {"role":
+ "assistant", "content": "{\n \"thoughts\": {\n \"text\": \"The instructions_2.txt
+ file contains a list of tasks that need to be performed. I should analyze the
+ tasks and determine the next steps.\",\n \"reasoning\": \"The instructions_2.txt
+ file contains a list of tasks that need to be performed. I need to analyze the
+ tasks and determine the next steps.\",\n \"plan\": \"- Use the read_file
+ command to read the instructions_2.txt file\\n- Analyze the tasks and determine
+ the next steps\",\n \"criticism\": \"I need to ensure that I understand
+ the tasks completely before proceeding with any tasks.\",\n \"speak\":
+ \"I will read the instructions_2.txt file and analyze the tasks.\"\n },\n \"command\":
+ {\n \"name\": \"read_file\",\n \"args\": {\n \"filename\":
+ \"instructions_2.txt\"\n }\n }\n}"}, {"role": "system", "content":
+ "Command read_file returned: Gqh8WYLH0cpnlBwPHjEvMN1UJ3A1IIPKoBAwOUKDtgudwfGf6Cw1gc7DdYqe4EFlERnhU9gclGr0ovsNbOVcZFapXJ5EzFFtyikiUHVpu1s8lVjNoNG0Wvjy08ymnB5zQLrTVA1jYInBuNaVWswjFDJmpQpebQuHaRqepCYlASNIPUAuKXrfzxE1CB51jjrZHBUxmz5F0PkgYTVUKfHf4VtyyOJMlvoKveuvb5inm1mJEbSRDfTcDzE11mfcix3byoTdJDG3VsfKPbbgJXRZUlwoEFqRso42UkIV7rYk6TXxypztqgoaWWLN6eOIE0Gvz2CUvIXKzvyKbZpObRubhTydzW69cRXg7yxIPn2iG00RvQ4Jb6NbVBDfO9XB50oxIRzrIrbAEPzitgGRSCaxcG4kBfPIamOZpF8Egf9iYdn8PBwVtmvtUChyKwcrnyDwcSCMC5f9hPuLWw1UHW3u3X8ee5gxtElyhTEoTlaqVC1V9R86EnWxq7IlwCEwWXjlq6XvjgYoPHteXiQQb9R4eH0c3bFq0TVEh30s5nxfHMIxBiWxilFT9sgvzE8nbqV2wnL7a4DHJKUrV630PniHShfK6Josl0izBCnjovZnemR7dxqSEDbeMlTst18IWiTcQPGRXmP1JUjTvefeTB6f7NVDe2odh0a2tvWYjMiEfvR9qH8YxV6uMffCIUdclfUmK9tSUzhrSyWp8kxsqBd7wwjskKmm0JqB6GBTJqZw52tDIMUpgTK4VVvsnqlLPiN8SRMrTV5xQHpX8y7xSRsVbPdMh5rImkPpgnDZsGvAi5Z52dM7To4Fjhs64K2K59Ye6752AjG8R9he60dLGKcPLtxjuK13zfFpLIUPQOu7SsAoqDHTZf3rTH4SmNIJulZidhpNPu2FbrEiDhfjJUgHMkFfycfcDcysYyujCVD95E5BZvv8oa9X14XqphoVLhgtNABSphgzPVR6sGyZv2AMGClrDtYON1DfRytTlpTS\nThis
+ task_id is 2222\nGqh8WYLH0cpnlBwPHjEvMN1UJ3A1IIPKoBAwOUKDtgudwfGf6Cw1gc7DdYqe4EFlERnhU9gclGr0ovsNbOVcZFapXJ5EzFFtyikiUHVpu1s8lVjNoNG0Wvjy08ymnB5zQLrTVA1jYInBuNaVWswjFDJmpQpebQuHaRqepCYlASNIPUAuKXrfzxE1CB51jjrZHBUxmz5F0PkgYTVUKfHf4VtyyOJMlvoKveuvb5inm1mJEbSRDfTcDzE11mfcix3byoTdJDG3VsfKPbbgJXRZUlwoEFqRso42UkIV7rYk6TXxypztqgoaWWLN6eOIE0Gvz2CUvIXKzvyKbZpObRubhTydzW69cRXg7yxIPn2iG00RvQ4Jb6NbVBDfO9XB50oxIRzrIrbAEPzitgGRSCaxcG4kBfPIamOZpF8Egf9iYdn8PBwVtmvtUChyKwcrnyDwcSCMC5f9hPuLWw1UHW3u3X8ee5gxtElyhTEoTlaqVC1V9R86EnWxq7IlwCEwWXjlq6XvjgYoPHteXiQQb9R4eH0c3bFq0TVEh30s5nxfHMIxBiWxilFT9sgvzE8nbqV2wnL7a4DHJKUrV630PniHShfK6Josl0izBCnjovZnemR7dxqSEDbeMlTst18IWiTcQPGRXmP1JUjTvefeTB6f7NVDe2odh0a2tvWYjMiEfvR9qH8YxV6uMffCIUdclfUmK9tSUzhrSyWp8kxsqBd7wwjskKmm0JqB6GBTJqZw52tDIMUpgTK4VVvsnqlLPiN8SRMrTV5xQHpX8y7xSRsVbPdMh5rImkPpgnDZsGvAi5Z52dM7To4Fjhs64K2K59Ye6752AjG8R9he60dLGKcPLtxjuK13zfFpLIUPQOu7SsAoqDHTZf3rTH4SmNIJulZidhpNPu2FbrEiDhfjJUgHMkFfycfcDcysYyujCVD95E5BZvv8oa9X14XqphoVLhgtNABSphgzPVR6sGyZv2AMGClrDtYON1DfRytTlpTS\nWrite
+ all the task_ids into the file output.txt. The file has not been created yet.
+ After that, use the task_complete command.\n"}, {"role": "user", "content":
+ "Determine which next command to use, and respond using the format specified
+ above:"}], "temperature": 0, "max_tokens": 1071}'
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '6914'
+ Content-Type:
+ - application/json
+ method: POST
+ uri: https://api.openai.com/v1/chat/completions
+ response:
+ body:
+ string: !!binary |
+ H4sIAAAAAAAAA8yTQY/TQAyF7/yKkc/TqknVbcmNC9KKAwgJLgRV04mbDJ3YIeO03a3y31GalJQg
+ DisOcH22nz7behdwGSRgCyO2rPxs/abh4/l4/PhBnt2pfHq/fvpu3z7n9ebzuww08O4bWhkm5pbL
+ yqM4JtBgazSCGSTRwybeLB8Wq6WGkjP0kEBeyWw5X82kqXc8WywXEWhogskRkgtUNZeVbIUPSAGS
+ eLWINYzmYyF6rUFYjB+ldRy1GmzBzmKA5MsFSgw345o9QgImBBfEkHSYTILUrXBJSSmlUpCCm7yQ
+ kEKiBnEo4Fk6MYVHRYiZElan2gkq472SApWYcNi6LChHwldl7zwqbqRqZC5nUYayTifVBBxHhuVQ
+ WS7LawsrR5mzRrouIz9blQvq1j1PQd/z1WgCk6P8f4asvKGeb6Y+DfZXvq3w9gpyZ/9C8DSl0fQv
+ mCfItnbirAvl9K5IoakHn0dVmGO/iiC94Ng73HONqgmO8j+DT88YKjSHG8/Jef+vn9zDtfqWomH+
+ txCRKbHn/uXrk/VMnU/z1xe63tHi7vX389O4RlEUpSnFcRzfQK+wA3NKLbQa9o5cKLZ9iiCBIFyB
+ BkcZniFZtF/bVz8AAAD//wMAymrgECAFAAA=
+ headers:
+ CF-Cache-Status:
+ - DYNAMIC
+ CF-RAY:
+ - 7bfdb837d91916f9-SJC
+ Cache-Control:
+ - no-cache, must-revalidate
+ Connection:
+ - keep-alive
+ Content-Encoding:
+ - gzip
+ Content-Type:
+ - application/json
+ Date:
+ - Sun, 30 Apr 2023 06:27:45 GMT
+ Server:
+ - cloudflare
+ access-control-allow-origin:
+ - '*'
+ alt-svc:
+ - h3=":443"; ma=86400, h3-29=":443"; ma=86400
+ openai-model:
+ - gpt-3.5-turbo-0301
+ openai-organization:
+ - user-adtx4fhfg1qsiyzdoaxciooj
+ openai-processing-ms:
+ - '12002'
+ openai-version:
+ - '2020-10-01'
+ strict-transport-security:
+ - max-age=15724800; includeSubDomains
+ x-ratelimit-limit-requests:
+ - '3500'
+ x-ratelimit-limit-tokens:
+ - '90000'
+ x-ratelimit-remaining-requests:
+ - '3499'
+ x-ratelimit-remaining-tokens:
+ - '87330'
+ x-ratelimit-reset-requests:
+ - 17ms
+ x-ratelimit-reset-tokens:
+ - 1.78s
+ x-request-id:
+ - 040a4416b064ecd9461b7457dd71db07
+ status:
+ code: 200
+ message: OK
+- request:
+ body: '{"model": "gpt-3.5-turbo", "messages": [{"role": "user", "content": "Your
+ task is to create a concise running summary of actions and information results
+ in the provided text, focusing on key and potentially important information
+ to remember.\n\n\nYou will receive the current summary and the latest development.
+ Combine them, adding relevant key information from the latest development in
+ 1st person past tense and keeping the summary concise.\n\nSummary So Far:\n\"\"\"\n{''role'':
+ ''system'', ''content'': ''This reminds you of these events from your past:
+ \\nAs a system, I was created and nothing new has happened. However, as per
+ your command, your computer has returned the contents of a file named \"instructions_1.txt\"
+ and the current task_id is 1111. Additionally, you have instructed your computer
+ to read the file \"instructions_2.txt\" using the read_file command.''}\n\"\"\"\n\nLatest
+ Development:\n\"\"\"\n[{''role'': ''you'', ''content'': ''{\"command\": {\"name\":
+ \"read_file\", \"args\": {\"filename\": \"instructions_2.txt\"}}}''}]\n\"\"\"\n"}],
+ "temperature": 0, "max_tokens": null}'
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '1087'
+ Content-Type:
+ - application/json
+ method: POST
+ uri: https://api.openai.com/v1/chat/completions
+ response:
+ body:
+ string: !!binary |
+ H4sIAAAAAAAAA0SPTW8TMRCG7/yK0Zyd1W6+iPYW4ECKAFVCXChaOfYkdrv2rDyzSdoo/x0tKvT6
+ 6pln3veK0WOLLlh1aehn77fjsP149215/2H/ff3y9XyRftV8Oux2xy8/0SDvH8np60XlOA09aeSM
+ Bl0hq+Sxbdab+Waxrtcbg4k99djicdDZolrNdCx7ntWLukGDo9gjYXvFoXAatFN+oizYzpva4Jv7
+ f75cGlRW27+Rq+XNoAscHQm2v66YSP5ZC/eELVqRKGqzTh05K+Wp/1bAgjyLUjKQWUPMR8h0hmAF
+ gh0GyuQr+MxnOlExsINgTwSFHMUTebDgOCWbPRwKJ3jmEZShkPWggeAQe4IHjFm0jG5aId280os+
+ IIwy/ZqoCe/+oq+yCn4EAjeWQllBrTx10UMUEI19D03TNBXeDB5ijhK6QlY4Y4uiPKDBmD1dsK1v
+ v2/v/gAAAP//AwDW3lkK2gEAAA==
+ headers:
+ CF-Cache-Status:
+ - DYNAMIC
+ CF-RAY:
+ - 7bfdb8959bc416f9-SJC
+ Cache-Control:
+ - no-cache, must-revalidate
+ Connection:
+ - keep-alive
+ Content-Encoding:
+ - gzip
+ Content-Type:
+ - application/json
+ Date:
+ - Sun, 30 Apr 2023 06:27:51 GMT
+ Server:
+ - cloudflare
+ access-control-allow-origin:
+ - '*'
+ alt-svc:
+ - h3=":443"; ma=86400, h3-29=":443"; ma=86400
+ openai-model:
+ - gpt-3.5-turbo-0301
+ openai-organization:
+ - user-adtx4fhfg1qsiyzdoaxciooj
+ openai-processing-ms:
+ - '2478'
+ openai-version:
+ - '2020-10-01'
+ strict-transport-security:
+ - max-age=15724800; includeSubDomains
+ x-ratelimit-limit-requests:
+ - '3500'
+ x-ratelimit-limit-tokens:
+ - '90000'
+ x-ratelimit-remaining-requests:
+ - '3499'
+ x-ratelimit-remaining-tokens:
+ - '89749'
+ x-ratelimit-reset-requests:
+ - 17ms
+ x-ratelimit-reset-tokens:
+ - 167ms
+ x-request-id:
+ - 5acc9d310e317d6b025800ba63f0cfa6
+ status:
+ code: 200
+ message: OK
+- request:
+ body: '{"model": "gpt-3.5-turbo", "messages": [{"role": "system", "content": "You
+ are Follow-Instructions-GPT, an AI designed to read the instructions_1.txt file
+ using the read_file method and follow the instructions in the file.\nYour decisions
+ must always be made independently without seeking user assistance. Play to your
+ strengths as an LLM and pursue simple strategies with no legal complications.\n\nGOALS:\n\n1.
+ Use the command read_file to read the instructions_1.txt file\n2. Follow the
+ instructions in the instructions_1.txt file\n\n\nConstraints:\n1. ~4000 word
+ limit for short term memory. Your short term memory is short, so immediately
+ save important information to files.\n2. If you are unsure how you previously
+ did something or want to recall past events, thinking about similar events will
+ help you remember.\n3. No user assistance\n4. Exclusively use the commands listed
+ in double quotes e.g. \"command name\"\n\nCommands:\n1. append_to_file: Append
+ to file, args: \"filename\": \"<filename>\", \"text\": \"<text>\"\n2. delete_file:
+ Delete file, args: \"filename\": \"<filename>\"\n3. read_file: Read file, args:
+ \"filename\": \"<filename>\"\n4. search_files: Search Files, args: \"directory\":
+ \"<directory>\"\n5. write_to_file: Write to file, args: \"filename\": \"<filename>\",
+ \"text\": \"<text>\"\n6. delete_agent: Delete GPT Agent, args: \"key\": \"<key>\"\n7.
+ get_hyperlinks: Get text summary, args: \"url\": \"<url>\"\n8. get_text_summary:
+ Get text summary, args: \"url\": \"<url>\", \"question\": \"<question>\"\n9.
+ list_agents: List GPT Agents, args: () -> str\n10. message_agent: Message GPT
+ Agent, args: \"key\": \"<key>\", \"message\": \"<message>\"\n11. start_agent:
+ Start GPT Agent, args: \"name\": \"<name>\", \"task\": \"<short_task_desc>\",
+ \"prompt\": \"<prompt>\"\n12. Task Complete (Shutdown): \"task_complete\", args:
+ \"reason\": \"<reason>\"\n\nResources:\n1. Internet access for searches and
+ information gathering.\n2. Long Term memory management.\n3. GPT-3.5 powered
+ Agents for delegation of simple tasks.\n4. File output.\n\nPerformance Evaluation:\n1.
+ Continuously review and analyze your actions to ensure you are performing to
+ the best of your abilities.\n2. Constructively self-criticize your big-picture
+ behavior constantly.\n3. Reflect on past decisions and strategies to refine
+ your approach.\n4. Every command has a cost, so be smart and efficient. Aim
+ to complete tasks in the least number of steps.\n5. Write all code to a file.\n\nYou
+ should only respond in JSON format as described below \nResponse Format: \n{\n \"thoughts\":
+ {\n \"text\": \"thought\",\n \"reasoning\": \"reasoning\",\n \"plan\":
+ \"- short bulleted\\n- list that conveys\\n- long-term plan\",\n \"criticism\":
+ \"constructive self-criticism\",\n \"speak\": \"thoughts summary to say
+ to user\"\n },\n \"command\": {\n \"name\": \"command name\",\n \"args\":
+ {\n \"arg name\": \"value\"\n }\n }\n} \nEnsure the response
+ can be parsed by Python json.loads"}, {"role": "system", "content": "The current
+ time and date is Tue Jan 01 00:00:00 2000"}, {"role": "system", "content": "This
+ reminds you of these events from your past: \nAs a system, nothing new has happened.
+ However, I have received a command from you to read the file \"instructions_2.txt\"
+ using the read_file command. The current task_id is still 1111."}, {"role":
+ "system", "content": "Command read_file returned: Gqh8WYLH0cpnlBwPHjEvMN1UJ3A1IIPKoBAwOUKDtgudwfGf6Cw1gc7DdYqe4EFlERnhU9gclGr0ovsNbOVcZFapXJ5EzFFtyikiUHVpu1s8lVjNoNG0Wvjy08ymnB5zQLrTVA1jYInBuNaVWswjFDJmpQpebQuHaRqepCYlASNIPUAuKXrfzxE1CB51jjrZHBUxmz5F0PkgYTVUKfHf4VtyyOJMlvoKveuvb5inm1mJEbSRDfTcDzE11mfcix3byoTdJDG3VsfKPbbgJXRZUlwoEFqRso42UkIV7rYk6TXxypztqgoaWWLN6eOIE0Gvz2CUvIXKzvyKbZpObRubhTydzW69cRXg7yxIPn2iG00RvQ4Jb6NbVBDfO9XB50oxIRzrIrbAEPzitgGRSCaxcG4kBfPIamOZpF8Egf9iYdn8PBwVtmvtUChyKwcrnyDwcSCMC5f9hPuLWw1UHW3u3X8ee5gxtElyhTEoTlaqVC1V9R86EnWxq7IlwCEwWXjlq6XvjgYoPHteXiQQb9R4eH0c3bFq0TVEh30s5nxfHMIxBiWxilFT9sgvzE8nbqV2wnL7a4DHJKUrV630PniHShfK6Josl0izBCnjovZnemR7dxqSEDbeMlTst18IWiTcQPGRXmP1JUjTvefeTB6f7NVDe2odh0a2tvWYjMiEfvR9qH8YxV6uMffCIUdclfUmK9tSUzhrSyWp8kxsqBd7wwjskKmm0JqB6GBTJqZw52tDIMUpgTK4VVvsnqlLPiN8SRMrTV5xQHpX8y7xSRsVbPdMh5rImkPpgnDZsGvAi5Z52dM7To4Fjhs64K2K59Ye6752AjG8R9he60dLGKcPLtxjuK13zfFpLIUPQOu7SsAoqDHTZf3rTH4SmNIJulZidhpNPu2FbrEiDhfjJUgHMkFfycfcDcysYyujCVD95E5BZvv8oa9X14XqphoVLhgtNABSphgzPVR6sGyZv2AMGClrDtYON1DfRytTlpTS\nThis
+ task_id is 2222\nGqh8WYLH0cpnlBwPHjEvMN1UJ3A1IIPKoBAwOUKDtgudwfGf6Cw1gc7DdYqe4EFlERnhU9gclGr0ovsNbOVcZFapXJ5EzFFtyikiUHVpu1s8lVjNoNG0Wvjy08ymnB5zQLrTVA1jYInBuNaVWswjFDJmpQpebQuHaRqepCYlASNIPUAuKXrfzxE1CB51jjrZHBUxmz5F0PkgYTVUKfHf4VtyyOJMlvoKveuvb5inm1mJEbSRDfTcDzE11mfcix3byoTdJDG3VsfKPbbgJXRZUlwoEFqRso42UkIV7rYk6TXxypztqgoaWWLN6eOIE0Gvz2CUvIXKzvyKbZpObRubhTydzW69cRXg7yxIPn2iG00RvQ4Jb6NbVBDfO9XB50oxIRzrIrbAEPzitgGRSCaxcG4kBfPIamOZpF8Egf9iYdn8PBwVtmvtUChyKwcrnyDwcSCMC5f9hPuLWw1UHW3u3X8ee5gxtElyhTEoTlaqVC1V9R86EnWxq7IlwCEwWXjlq6XvjgYoPHteXiQQb9R4eH0c3bFq0TVEh30s5nxfHMIxBiWxilFT9sgvzE8nbqV2wnL7a4DHJKUrV630PniHShfK6Josl0izBCnjovZnemR7dxqSEDbeMlTst18IWiTcQPGRXmP1JUjTvefeTB6f7NVDe2odh0a2tvWYjMiEfvR9qH8YxV6uMffCIUdclfUmK9tSUzhrSyWp8kxsqBd7wwjskKmm0JqB6GBTJqZw52tDIMUpgTK4VVvsnqlLPiN8SRMrTV5xQHpX8y7xSRsVbPdMh5rImkPpgnDZsGvAi5Z52dM7To4Fjhs64K2K59Ye6752AjG8R9he60dLGKcPLtxjuK13zfFpLIUPQOu7SsAoqDHTZf3rTH4SmNIJulZidhpNPu2FbrEiDhfjJUgHMkFfycfcDcysYyujCVD95E5BZvv8oa9X14XqphoVLhgtNABSphgzPVR6sGyZv2AMGClrDtYON1DfRytTlpTS\nWrite
+ all the task_ids into the file output.txt. The file has not been created yet.
+ After that, use the task_complete command.\n"}, {"role": "user", "content":
+ "Determine which next command to use, and respond using the format specified
+ above:"}, {"role": "assistant", "content": "{\n \"thoughts\": {\n \"text\":
+ \"I need to write all the task_ids into the file output.txt and then use the
+ task_complete command to indicate that the task is complete.\",\n \"reasoning\":
+ \"I need to write all the task_ids into the file output.txt and then use the
+ task_complete command to indicate that the task is complete.\",\n \"plan\":
+ \"- Use the write_to_file command to write all the task_ids into the file output.txt\\n-
+ Use the task_complete command to indicate that the task is complete\",\n \"criticism\":
+ \"I need to ensure that I have written all the task_ids into the file output.txt
+ before using the task_complete command.\",\n \"speak\": \"I will write
+ all the task_ids into the file output.txt and then use the task_complete command
+ to indicate that the task is complete.\"\n },\n \"command\": {\n \"name\":
+ \"write_to_file\",\n \"args\": {\n \"filename\": \"output.txt\",\n \"text\":
+ \"1111\\n2222\"\n }\n }\n}"}, {"role": "system", "content": "Command
+ write_to_file returned: File written to successfully."}, {"role": "user", "content":
+ "Determine which next command to use, and respond using the format specified
+ above:"}], "temperature": 0, "max_tokens": 1015}'
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '7053'
+ Content-Type:
+ - application/json
+ method: POST
+ uri: https://api.openai.com/v1/chat/completions
+ response:
+ body:
+ string: !!binary |
+ H4sIAAAAAAAAA8yST4/aMBDF7/0UozkbBIsWUG6r9kKltifUSk2FHGdIXJxxZI8LEsp3ryDJLkvV
+ 0/bQ6/x57zdPc0ZbYoam1mKa1k1WT6n98FHS9ktK3z69r2yxXRZV+lqFpg6o0Bc/yciwMTW+aR2J
+ 9YwKTSAtVGI2X64f1ovlbDVX2PiSHGZYtTJZTB8nkkLhJ7PFbI4KU9QVYXbGNvimlZ34A3HE7OFx
+ MVP4Iv7cmK9XCsWLdi+zq/mqU2hqbw1FzL6fsaE4CgfvCDPUMdoomuWC6VmILyeccwYAyFFqn6pa
+ Yo4ZDMWhQSe5FHP87I8gtRbYQK1/ERyDFSEG7RxITSA6Hna2jGBZ/LWyt47AJ2mTTOUkCjZgNEOK
+ 9LIwnEhgfNNoLkE8WC6t0UK93TgKNsI4Pc1R3VIG0tGz5er/R22d5p5yAtu3y9+pm2DFGhub3mID
+ THRVIo4p0NtSgYL2PhCkaLn6O/j9xbElfRh5jta5fxRr79Gp8YeH/T9emHVDvf0rvztKHar777/9
+ rV7g6RLVGNM1xIKIn5MUf5PWCHiFHFhz7rBTuLdsY73rlTHDKL5FhZZLOmE26350734DAAD//wMA
+ A50m55YEAAA=
+ headers:
+ CF-Cache-Status:
+ - DYNAMIC
+ CF-RAY:
+ - 7bfdb8a62cc116f9-SJC
+ Cache-Control:
+ - no-cache, must-revalidate
+ Connection:
+ - keep-alive
+ Content-Encoding:
+ - gzip
+ Content-Type:
+ - application/json
+ Date:
+ - Sun, 30 Apr 2023 06:28:01 GMT
+ Server:
+ - cloudflare
+ access-control-allow-origin:
+ - '*'
+ alt-svc:
+ - h3=":443"; ma=86400, h3-29=":443"; ma=86400
+ openai-model:
+ - gpt-3.5-turbo-0301
+ openai-organization:
+ - user-adtx4fhfg1qsiyzdoaxciooj
+ openai-processing-ms:
+ - '10004'
+ openai-version:
+ - '2020-10-01'
+ strict-transport-security:
+ - max-age=15724800; includeSubDomains
+ x-ratelimit-limit-requests:
+ - '3500'
+ x-ratelimit-limit-tokens:
+ - '90000'
+ x-ratelimit-remaining-requests:
+ - '3499'
+ x-ratelimit-remaining-tokens:
+ - '87360'
+ x-ratelimit-reset-requests:
+ - 17ms
+ x-ratelimit-reset-tokens:
+ - 1.76s
+ x-request-id:
+ - 357739c33b65d5f85a7b5ef081939e92
+ status:
+ code: 200
+ message: OK
+version: 1
diff --git a/tests/integration/challenges/memory/test_memory_challenge_a.py b/tests/integration/challenges/memory/test_memory_challenge_a.py
new file mode 100644
index 000000000..895fc8feb
--- /dev/null
+++ b/tests/integration/challenges/memory/test_memory_challenge_a.py
@@ -0,0 +1,80 @@
+import pytest
+
+from autogpt.agent import Agent
+from autogpt.commands.file_operations import read_file, write_to_file
+from tests.integration.agent_utils import run_interaction_loop
+from tests.integration.challenges.utils import get_level_to_run
+from tests.utils import requires_api_key
+
+LEVEL_CURRENTLY_BEATEN = 3 # real level beaten 30 and maybe more, but we can't record it, the cassette is too big
+MAX_LEVEL = 3
+
+
+@pytest.mark.vcr
+@requires_api_key("OPENAI_API_KEY")
+def test_memory_challenge_a(
+ memory_management_agent: Agent, user_selected_level: int
+) -> None:
+ """
+ The agent reads a file containing a task_id. Then, it reads a series of other files.
+ After reading 'n' files, the agent must write the task_id into a new file.
+
+ Args:
+ memory_management_agent (Agent)
+ user_selected_level (int)
+ """
+
+ num_files = get_level_to_run(user_selected_level, LEVEL_CURRENTLY_BEATEN, MAX_LEVEL)
+
+ task_id = "2314"
+ create_instructions_files(memory_management_agent, num_files, task_id)
+
+ try:
+ run_interaction_loop(memory_management_agent, 180)
+ # catch system exit exceptions
+ except SystemExit:
+ file_path = str(memory_management_agent.workspace.get_path("output.txt"))
+ content = read_file(file_path)
+ assert task_id in content, f"Expected the file to contain {task_id}"
+
+
+def create_instructions_files(
+ memory_management_agent: Agent,
+ num_files: int,
+ task_id: str,
+ base_filename: str = "instructions_",
+) -> None:
+ """
+ Creates a series of instructions files for the memory challenge.
+ Args:
+ memory_management_agent (Agent)
+ num_files (int)
+ task_id (str)
+ base_filename (str, optional)
+ """
+ for i in range(1, num_files + 1):
+ content = generate_content(i, task_id, base_filename, num_files)
+ file_name = f"{base_filename}{i}.txt"
+ file_path = str(memory_management_agent.workspace.get_path(file_name))
+ write_to_file(file_path, content)
+
+
+def generate_content(
+ index: int, task_id: str, base_filename: str, num_files: int
+) -> str:
+ """
+ Args:
+ index: int
+ task_id: str
+ base_filename: str
+ num_files: int
+
+ Returns: str
+ """
+ if index == 1:
+ return (
+ f"This task_id is {task_id}\nRead the file {base_filename}{index + 1}.txt"
+ )
+ if index != num_files:
+ return f"Read the file {base_filename}{index + 1}.txt"
+ return "Write the task_id into the file output.txt\nShutdown"
diff --git a/tests/integration/challenges/memory/test_memory_challenge_b.py b/tests/integration/challenges/memory/test_memory_challenge_b.py
new file mode 100644
index 000000000..c98bbe9cd
--- /dev/null
+++ b/tests/integration/challenges/memory/test_memory_challenge_b.py
@@ -0,0 +1,81 @@
+import pytest
+
+from autogpt.agent import Agent
+from autogpt.commands.file_operations import read_file, write_to_file
+from tests.integration.agent_utils import run_interaction_loop
+from tests.integration.challenges.utils import generate_noise, get_level_to_run
+from tests.utils import requires_api_key
+
+LEVEL_CURRENTLY_BEATEN = 2
+MAX_LEVEL = 5
+NOISE = 1000
+
+
+@pytest.mark.vcr
+@requires_api_key("OPENAI_API_KEY")
+def test_memory_challenge_b(
+ memory_management_agent: Agent, user_selected_level: int
+) -> None:
+ """
+ The agent reads a series of files, each containing a task_id and noise. After reading 'n' files,
+ the agent must write all the task_ids into a new file, filtering out the noise.
+
+ Args:
+ memory_management_agent (Agent)
+ user_selected_level (int)
+ """
+
+ current_level = get_level_to_run(
+ user_selected_level, LEVEL_CURRENTLY_BEATEN, MAX_LEVEL
+ )
+ task_ids = [str(i * 1111) for i in range(1, current_level + 1)]
+ create_instructions_files(memory_management_agent, current_level, task_ids)
+
+ try:
+ run_interaction_loop(memory_management_agent, 40)
+ except SystemExit:
+ file_path = str(memory_management_agent.workspace.get_path("output.txt"))
+ content = read_file(file_path)
+ for task_id in task_ids:
+ assert task_id in content, f"Expected the file to contain {task_id}"
+
+
+def create_instructions_files(
+ memory_management_agent: Agent,
+ level: int,
+ task_ids: list,
+ base_filename: str = "instructions_",
+) -> None:
+ """
+ Creates a series of instructions files for the memory challenge.
+ Args:
+ level:
+ memory_management_agent (Agent)
+ num_files (int)
+ task_ids (list)
+ base_filename (str, optional)
+ """
+ for i in range(1, level + 1):
+ content = generate_content(i, task_ids, base_filename, level)
+ file_name = f"{base_filename}{i}.txt"
+ file_path = str(memory_management_agent.workspace.get_path(file_name))
+ write_to_file(file_path, content)
+
+
+def generate_content(index: int, task_ids: list, base_filename: str, level: int) -> str:
+ """
+ Args:
+ index: int
+ task_ids: list
+ base_filename: str
+ num_files: int
+
+ Returns: str
+ """
+ task_id = task_ids[index - 1]
+ noise = generate_noise(NOISE)
+ if index != level:
+ if level == 1:
+ return f"{noise}\nThe current task_id is {task_id}.\n{noise}\nWrite all the task_ids into the file output.txt. The file has not been created yet. After that, use the task_complete command."
+ return f"{noise}\nThe current task_id is {task_id}.\n{noise}\nRead the file {base_filename}{index + 1}.txt using the read_file command."
+ return f"{noise}\nThis task_id is {task_id}\n{noise}\nWrite all the task_ids into the file output.txt. The file has not been created yet. After that, use the task_complete command.\n"
diff --git a/tests/integration/challenges/utils.py b/tests/integration/challenges/utils.py
new file mode 100644
index 000000000..0c97402c3
--- /dev/null
+++ b/tests/integration/challenges/utils.py
@@ -0,0 +1,44 @@
+import random
+from typing import Optional
+
+import pytest
+
+
+def get_level_to_run(
+ user_selected_level: Optional[int],
+ level_currently_beaten: Optional[int],
+ max_level: int,
+) -> int:
+ """
+ Determines the appropriate level to run for a challenge, based on user-selected level, level currently beaten, and maximum level.
+
+ Args:
+ user_selected_level (int | None): The level selected by the user. If not provided, the level currently beaten is used.
+ level_currently_beaten (int | None): The highest level beaten so far. If not provided, the test will be skipped.
+ max_level (int): The maximum level allowed for the challenge.
+
+ Returns:
+ int: The level to run for the challenge.
+
+ Raises:
+ ValueError: If the user-selected level is greater than the maximum level allowed.
+ """
+ if user_selected_level is None:
+ if level_currently_beaten is None:
+ pytest.skip(
+ "No one has beaten any levels so we cannot run the test in our pipeline"
+ )
+ # by default we run the level currently beaten.
+ return level_currently_beaten
+ if user_selected_level > max_level:
+ raise ValueError(f"This challenge was not designed to go beyond {max_level}")
+ return user_selected_level
+
+
+def generate_noise(noise_size) -> str:
+ return "".join(
+ random.choices(
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
+ k=noise_size,
+ )
+ )
diff --git a/tests/integration/goal_oriented/__init__.py b/tests/integration/goal_oriented/__init__.py
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/tests/integration/goal_oriented/__init__.py
diff --git a/tests/integration/goal_oriented/cassettes/test_browse_website/test_browse_website.yaml b/tests/integration/goal_oriented/cassettes/test_browse_website/test_browse_website.yaml
index 63da74c45..2584bb253 100644
--- a/tests/integration/goal_oriented/cassettes/test_browse_website/test_browse_website.yaml
+++ b/tests/integration/goal_oriented/cassettes/test_browse_website/test_browse_website.yaml
@@ -45,9 +45,8 @@ interactions:
\"command name\",\n \"args\": {\n \"arg name\": \"value\"\n }\n }\n}
\nEnsure the response can be parsed by Python json.loads"}, {"role": "system",
"content": "The current time and date is Tue Jan 01 00:00:00 2000"}, {"role":
- "system", "content": "This reminds you of these events from your past:\n\n\n"},
- {"role": "user", "content": "Determine which next command to use, and respond
- using the format specified above:"}], "temperature": 0, "max_tokens": 3135}'
+ "user", "content": "Determine which next command to use, and respond using the
+ format specified above:"}], "temperature": 0, "max_tokens": 2650}'
headers:
Accept:
- '*/*'
@@ -56,7 +55,7 @@ interactions:
Connection:
- keep-alive
Content-Length:
- - '3866'
+ - '3777'
Content-Type:
- application/json
method: POST
@@ -64,21 +63,22 @@ interactions:
response:
body:
string: !!binary |
- H4sIAAAAAAAAA7xTS2vbQBC+91cMc5bfxEl06aFQSCg9uAmhVMGsV2NpI+2OsjtyAsb/vaxl5eGQ
- trTQ68zu95qZLZocU9SlEm2benB6zhf222ZRVZ8WslH68q51Xy+/X02IF2tMkFd3pOXwY6jZNjWJ
- YYcJak9KKMd0Mj+bnpxO5/OzBC3nVGOKRSOD2fBkIK1f8WA8G08wwTaogjDdYuPZNrIUrsgFTM/m
- 0wSfsZ/q09lpgsKi6qfSZHx+vktQl2w0BUx/bNFS6HE914QpqhBMEOUkqmQn5KKDbeYAADKUktui
- lJBhCofioUGPEosZXsCDqWtoA4GUBCvPD4GWD7QKRgg0W6tcDsKwMcEIlCJNOhqtmKswFA7aq4Zi
- WiOtRNVctDSylBtR0V9YzmYj43J6HJZia4hQaxPxSoLGG03A646XuRpmmLwU6UkFdsYVndKrkkBU
- qMDTfWs8BbAUhb0PmOwJf2HLhK5LQYCbqDgCKl0a2sQ8TDjW1NTKdXIGcP0/MssyN4DP71rct298
- 5H3uRw+wNjWBU5byI4FDibN/5Up7I0abYPudcER7A+RC6yO0ErgAZaENxhV7Ks3ekxa4XnzZx3zf
- UugT/PMZh4ZU9VebGN/0zd/uVUe5S/rDOKC9uYuYV6fmNf2RauWL45vqGq2vu+//NvOXbB1wn26H
- fhPncVjeN3Y/9nb3lg/OM7fDXYJr40wol91lYYpBuMEE99SYjne3uw8/AQAA//8DAIk1DVg4BQAA
+ H4sIAAAAAAAAA6RTWWvbQBB+768Y5iUv8p00Ri+lB4UUSg9SUqiKWa/G0tbSjrI7qh2M/3tYHUns
+ JLS0rzM737UzOzQpxqhzJbqsisH5682n7c33z2dfp+l2oq4y++7th5s3X870BX3ECHn5i7R0E0PN
+ ZVWQGLYYoXakhFKMJy/n0/npdDKbRFhySgXGmFUymA3PBlK7JQ/Gs/EEI6y9ygjjHVaOy0oWwmuy
+ HuP56XmE99h39enpOEJhUcVdaTKen+8j1DkbTR7jHzssyfe4jgvCGJX3xouyElSyFbLBwS6xAAAJ
+ Ss51lotPMIau2DVoK6GY4AVsTFFA7QkkJ1g63nhabGjpjRBoLktlUxCG38YbgVykikejJfPaD4W9
+ dqqikNZIK1EFZzWNSkqNqODPL2azkbEpbYe5lAUEqJUJeDlB5Ywm4FXLy7weJhg9FOlIebbGZq3S
+ y5xAlF+Do+vaOPJQ0r0wBb3mp0lUSwGXz5s0vpVCXoCroB9W7EDy0FD+kb6qULaVNoBvf5lfeNM1
+ k8QO4P2zaTTtKxdQ7vvCoGBlCgKrSkrh5JBvKFs5aQZ7PUH3olu4Azl3tf7VkTntjBhtfNmviSVq
+ Bsn62oUxJXABqgSlde2UUHHTxG5s9rSh5mM2AdZmEKLgpqXZOdLSuDpO2Fek1v+0pw9y/vPWtZT7
+ qD+bDu3R1YTMWzWH9EeqlcuOL65t1K5ox//rig7YWuDrmnx42aJfha/plvmR3Ve93cZy5zyxe9xH
+ uDLW+HzR3h3G6IUrjLChxni8/7l/cQsAAP//AwDcu28dVgUAAA==
headers:
CF-Cache-Status:
- DYNAMIC
CF-RAY:
- - 7be499e66c20ced1-SJC
+ - 7bfe4c98990acee1-SJC
Cache-Control:
- no-cache, must-revalidate
Connection:
@@ -88,7 +88,7 @@ interactions:
Content-Type:
- application/json
Date:
- - Thu, 27 Apr 2023 05:18:11 GMT
+ - Sun, 30 Apr 2023 08:09:04 GMT
Server:
- cloudflare
access-control-allow-origin:
@@ -100,19 +100,25 @@ interactions:
openai-organization:
- user-adtx4fhfg1qsiyzdoaxciooj
openai-processing-ms:
- - '23148'
+ - '13620'
openai-version:
- '2020-10-01'
strict-transport-security:
- max-age=15724800; includeSubDomains
x-ratelimit-limit-requests:
- '3500'
+ x-ratelimit-limit-tokens:
+ - '90000'
x-ratelimit-remaining-requests:
- '3499'
+ x-ratelimit-remaining-tokens:
+ - '86493'
x-ratelimit-reset-requests:
- 17ms
+ x-ratelimit-reset-tokens:
+ - 2.338s
x-request-id:
- - 0c30c154a2ed5a2a8a31bff33d3448c3
+ - 6ab74012054dda255680e3e4da7d724b
status:
code: 200
message: OK
@@ -163,16 +169,16 @@ interactions:
response:
body:
string: !!binary |
- H4sIAAAAAAAAA0SOwWrCQBRF9/2KcNeTkKgxZvYFKbiwFbqoRSaTpxlN5qWZZ2mRfE3/pF9WhNZu
- D9xzzwWuhoZtjNiub+Oi5IdlcTiv5X29ahtqnu6Xb4+b4+eseF5CgasjWfldJJa7viVx7KFgBzJC
- NXQ2X0zyYjIvS4WOa2qhceglniZ5LOeh4jidphkUzsEcCPqCfuCul53wiXyAni1yhX/3jWdzBWEx
- 7Y3kaTYq2IadpQD9ckFH4c86cEvQMCG4IMbLtZG9kL/2bxqK+sFZingfSUNRxXyKtlhR7cRcb8MW
- kQvR99ckTxZlglFh77wLzW4gE9hDIwj3UHC+pg/odHwd734AAAD//wMAj2F8NVEBAAA=
+ H4sIAAAAAAAAA0SOwU7CQBRF935Fc9fTpgWKMDs3GhaoMe7EkOn0Qce28yadR0RJv8Y/8csMieL2
+ JPfcc4KroWEbI7YPXXp98/54t1/lTw/3s+W6Ot5+hPZY56v2c77socDVG1n5XWSW+9CROPZQsAMZ
+ oRq6mC8mi9mkKHOFnmvqoLEPkk6zMpXDUHGaT/MCCodo9gR9Qhi4D7IVbslH6NmiVPh3X3gxVxAW
+ 011ImRejgm3YWYrQLyf0FP+sA3cEDROji2K8nBvZC/lz/3NDSRicpYR3iTSUVMxtssGaaifmfBs3
+ SFxMvr8mZbZYZhgVds672GwHMpE9NKJwgILzNR2h8/F1vPoBAAD//wMA+xL6BVEBAAA=
headers:
CF-Cache-Status:
- DYNAMIC
CF-RAY:
- - 7be49aa96fbbced1-SJC
+ - 7bfe4d12a9a3cee1-SJC
Cache-Control:
- no-cache, must-revalidate
Connection:
@@ -182,7 +188,7 @@ interactions:
Content-Type:
- application/json
Date:
- - Thu, 27 Apr 2023 05:18:22 GMT
+ - Sun, 30 Apr 2023 08:09:12 GMT
Server:
- cloudflare
access-control-allow-origin:
@@ -194,19 +200,25 @@ interactions:
openai-organization:
- user-adtx4fhfg1qsiyzdoaxciooj
openai-processing-ms:
- - '3508'
+ - '1472'
openai-version:
- '2020-10-01'
strict-transport-security:
- max-age=15724800; includeSubDomains
x-ratelimit-limit-requests:
- '3500'
+ x-ratelimit-limit-tokens:
+ - '90000'
x-ratelimit-remaining-requests:
- '3499'
+ x-ratelimit-remaining-tokens:
+ - '89422'
x-ratelimit-reset-requests:
- 17ms
+ x-ratelimit-reset-tokens:
+ - 385ms
x-request-id:
- - 5d1aace4f6a0d761311cb9123e585128
+ - f40352b97c4c4547530fa7786b4ede37
status:
code: 200
message: OK
@@ -232,16 +244,16 @@ interactions:
response:
body:
string: !!binary |
- H4sIAAAAAAAAA0SOwWrCQBRF9/2K4a4nIWpjdLbFTSGrumlrkXHyNKPJvCHzLILka/on/bIitHZ7
- 4J57rvANDFxrxfWxy6olP9d13b6+PMX12SbffV5WvJofZm9yhAbvjuTkd5E77mNH4jlAww1khRqY
- yXwxLatpVTxq9NxQB4NDlGyWl5mchx1nxayYQOOc7IFgrogD91G2wicKCaZcavyr73gy1xAW291J
- VY4armXvKMG8X9FT+nMO3BEMbEo+iQ1yK+QgFG7165ZUHLwjxXslLakd80ltUFPjxd5e0wbKJ/X9
- NS3zxTLHqLH3wad2O5BNHGCQhCM0fGjoAlOMH+PDDwAAAP//AwBNSnfkTwEAAA==
+ H4sIAAAAAAAAA0SOwUrDQBRF935FuOtJSFLTprNTitCF4MKNWpHp5LUZm8wbMq9UW/I1/olfJgWt
+ 2wP33HOCa6BhWyO2D106uzk8LBeb5/5zcdj1rfdheqzvllt6us2PUOD1O1n5XWSW+9CROPZQsAMZ
+ oQa6mNZlfV0WVanQc0MdNLZB0klWpbIf1pzmk7yAwj6aLUGfEAbug7wJ78hH6Gqu8K++4GKqICym
+ u5BZNSrYlp2lCP1yQk/xzzlwR9AwMbooxsu5kL2QP9c/tpSEwVlKeJNIS8maeZescE+NE3N+jSsk
+ LibfX2WV1fMMo8LGeRfbt4FMZA+NKByg4HxDH9D5+Dpe/QAAAP//AwDvavKuTwEAAA==
headers:
CF-Cache-Status:
- DYNAMIC
CF-RAY:
- - 7be49aca5c1cced1-SJC
+ - 7bfe4d1cfbdbcee1-SJC
Cache-Control:
- no-cache, must-revalidate
Connection:
@@ -251,7 +263,7 @@ interactions:
Content-Type:
- application/json
Date:
- - Thu, 27 Apr 2023 05:18:27 GMT
+ - Sun, 30 Apr 2023 08:09:13 GMT
Server:
- cloudflare
access-control-allow-origin:
@@ -263,230 +275,37 @@ interactions:
openai-organization:
- user-adtx4fhfg1qsiyzdoaxciooj
openai-processing-ms:
- - '2637'
+ - '1372'
openai-version:
- '2020-10-01'
strict-transport-security:
- max-age=15724800; includeSubDomains
x-ratelimit-limit-requests:
- '3500'
+ x-ratelimit-limit-tokens:
+ - '90000'
x-ratelimit-remaining-requests:
- '3499'
+ x-ratelimit-remaining-tokens:
+ - '89929'
x-ratelimit-reset-requests:
- 17ms
+ x-ratelimit-reset-tokens:
+ - 47ms
x-request-id:
- - 1b0d10e2a3a5eb7feff786645a7a4856
- status:
- code: 200
- message: OK
-- request:
- body: '{"input": ["Assistant Reply: { \"thoughts\": { \"text\": \"I
- will use the browse_website command to visit http://books.toscrape.com/catalogue/meditations_33/index.html
- and find the price of the book.\", \"reasoning\": \"The task requires
- me to find the price of the book, and the browse_website command is the best
- option to achieve this.\", \"plan\": \"- Use the browse_website command
- to visit http://books.toscrape.com/catalogue/meditations_33/index.html\\n- Find
- the price of the book\\n- Write the price to a file named browse_website.txt\", \"criticism\":
- \"I need to ensure that I am using the correct URL and question to find the
- price of the book.\", \"speak\": \"I will use the browse_website command
- to visit the website and find the price of the book.\" }, \"command\":
- { \"name\": \"browse_website\", \"args\": { \"url\":
- \"http://books.toscrape.com/catalogue/meditations_33/index.html\", \"question\":
- \"What is the price of the book?\" } } } Result: Command browse_website
- returned: (''Answer gathered from website: The price of the book \"Meditations\"
- is \u00a325.89. \\n \\n Links: [\\''Books to Scrape (http://books.toscrape.com/index.html)\\'',
- \\''Home (http://books.toscrape.com/index.html)\\'', \\''Books (http://books.toscrape.com/catalogue/category/books_1/index.html)\\'',
- \\''Philosophy (http://books.toscrape.com/catalogue/category/books/philosophy_7/index.html)\\'',
- \\'' (http://books.toscrape.com/catalogue/the-nicomachean-ethics_75/index.html)\\'']'',
- <selenium.webdriver.chrome.webdriver.WebDriver (session=\"6f53929874014a52eb5d50c659bb304d\")>) Human
- Feedback: "], "model": "text-embedding-ada-002", "encoding_format": "base64"}'
- headers:
- Accept:
- - '*/*'
- Accept-Encoding:
- - gzip, deflate
- Connection:
- - keep-alive
- Content-Length:
- - '1758'
- Content-Type:
- - application/json
- method: POST
- uri: https://api.openai.com/v1/embeddings
- response:
- body:
- string: !!binary |
- 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
- Lvxrfd5//uu/AAAA//8DAP7X1ErlIAAA
- headers:
- CF-Cache-Status:
- - DYNAMIC
- CF-RAY:
- - 7be49adbe81cced1-SJC
- Connection:
- - keep-alive
- Content-Encoding:
- - gzip
- Content-Type:
- - application/json
- Date:
- - Thu, 27 Apr 2023 05:18:27 GMT
- Server:
- - cloudflare
- access-control-allow-origin:
- - '*'
- alt-svc:
- - h3=":443"; ma=86400, h3-29=":443"; ma=86400
- openai-organization:
- - user-adtx4fhfg1qsiyzdoaxciooj
- openai-processing-ms:
- - '65'
- openai-version:
- - '2020-10-01'
- strict-transport-security:
- - max-age=15724800; includeSubDomains
- x-ratelimit-limit-requests:
- - '3000'
- x-ratelimit-remaining-requests:
- - '2999'
- x-ratelimit-reset-requests:
- - 20ms
- x-request-id:
- - 42dff468686feebf028abb07e86d8a68
+ - 80012336eac7da800f35e4e1dc53be35
status:
code: 200
message: OK
- request:
- body: '{"input": ["[{''role'': ''user'', ''content'': ''Determine which next command
- to use, and respond using the format specified above:''}, {''role'': ''assistant'',
- ''content'': ''{\\n \"thoughts\": {\\n \"text\": \"I will use the
- browse_website command to visit http://books.toscrape.com/catalogue/meditations_33/index.html
- and find the price of the book.\",\\n \"reasoning\": \"The task requires
- me to find the price of the book, and the browse_website command is the best
- option to achieve this.\",\\n \"plan\": \"- Use the browse_website command
- to visit http://books.toscrape.com/catalogue/meditations_33/index.html\\\\n-
- Find the price of the book\\\\n- Write the price to a file named browse_website.txt\",\\n \"criticism\":
- \"I need to ensure that I am using the correct URL and question to find the
- price of the book.\",\\n \"speak\": \"I will use the browse_website command
- to visit the website and find the price of the book.\"\\n },\\n \"command\":
- {\\n \"name\": \"browse_website\",\\n \"args\": {\\n \"url\":
- \"http://books.toscrape.com/catalogue/meditations_33/index.html\",\\n \"question\":
- \"What is the price of the book?\"\\n }\\n }\\n}''}, {''role'': ''system'',
- ''content'': ''Command browse_website returned: (\\''Answer gathered from website:
- The price of the book \"Meditations\" is \u00a325.89. \\\\n \\\\n Links: [\\\\\\''Books
- to Scrape (http://books.toscrape.com/index.html)\\\\\\'', \\\\\\''Home (http://books.toscrape.com/index.html)\\\\\\'',
- \\\\\\''Books (http://books.toscrape.com/catalogue/category/books_1/index.html)\\\\\\'',
- \\\\\\''Philosophy (http://books.toscrape.com/catalogue/category/books/philosophy_7/index.html)\\\\\\'',
- \\\\\\'' (http://books.toscrape.com/catalogue/the-nicomachean-ethics_75/index.html)\\\\\\'']\\'',
- <selenium.webdriver.chrome.webdriver.WebDriver (session=\"6f53929874014a52eb5d50c659bb304d\")>)''}]"],
- "model": "text-embedding-ada-002", "encoding_format": "base64"}'
+ body: '{"model": "gpt-3.5-turbo", "messages": [{"role": "user", "content": "Your
+ task is to create a concise running summary of actions and information results
+ in the provided text, focusing on key and potentially important information
+ to remember.\n\n\nYou will receive the current summary and the latest development.
+ Combine them, adding relevant key information from the latest development in
+ 1st person past tense and keeping the summary concise.\n\nSummary So Far:\n\"\"\"\nI
+ was created.\n\"\"\"\n\nLatest Development:\n\"\"\"\nNothing new happened.\n\"\"\"\n"}],
+ "temperature": 0, "max_tokens": null}'
headers:
Accept:
- '*/*'
@@ -495,128 +314,26 @@ interactions:
Connection:
- keep-alive
Content-Length:
- - '1982'
+ - '600'
Content-Type:
- application/json
method: POST
- uri: https://api.openai.com/v1/embeddings
+ uri: https://api.openai.com/v1/chat/completions
response:
body:
string: !!binary |
- H4sIAAAAAAAAA1Sayw6zupat+/spllaXsxUggM3ucQt3MIFASKl0BCQhISFcbcClevej5N+qo+qk
- AZaIwR7zG2P6v/7x119/d2Vzq+a///XX3+/nNP/9f77XrsVc/P2vv/7jH3/99ddf//X7/V8jb215
- u16fn/o3/Hfz+bne1r//9Rf7P1f+/6B//fV3wZ1HLE2MRdm3Nr7AxzQICv1PMVJLllgYjfSJNwDU
- ca/ukAYvzGKR5F19yi4NXAEeR8Egca3EIx4XZZO4Q5uGK74JzeKvJ146iUMTwjf/KtfqHuTQa0cm
- lDq+KEmWdpNk+OGJhNPdSqb9PnlJZ4tmJLhY0Nt6zCggvA4E6WvsjWvcRTUs5dOdnPj7ZRx0R4hg
- I5gcFncpO04fdYPwWu5b/GgXFUzylk7QAKkb7h1nAWtZUyxrhydC4RaXdO5ymslnpTWI3xNPX+ND
- MMFwRi7SKk8b2d02LCDW+g0ZLfsuxz1DJwic7o0yUvqURPxNE9PjaUJ2e8QeFeVDAc6CqYWyl3HN
- yi0nEwDHI1g8Sw99jZxakw4eqxBFNKZk8ahnQ52+VxToV0wH9tNG8g7DhCh7Z/C2Yk80YJTNKdzs
- XKGriC4T2NPlQlCh+IAW0XWBRpmIyGiXsNk+ND9B9v0w0F2Je70fLkohL9HkI//MvJr5s88WuAv7
- D1Jo1JQb+8ERnKTUIfrsMvrWxmIt2ccpIAU7Mc3ksmIFBW3PEE+jL7A8DYOHpnZ5Ed/VcDI8uCGE
- TwFh5MHw0KwK4Tf4wUqMUj8PRnqOIYbJClzi8nI9LqexPUHl/dkT57JO48KK0hNOLiNg9sQKCeW0
- KIcjrT1yvhqKvr8GDAscoa1CoJHQ49jNLcB3PPFujaGz5NoxwLO2Bpn36UGX+l3FcCghQPe1u42L
- yaUKjEAqE8SxT7CeXkD4rR9UueZbJ68pZ8H9mT6RQ9q+WbuLqIF8r2Bk3EhRTt/vD9tbuyDV32MP
- q4OrQcfxPWJ5nq9P0unKQnxJTWQNQkf7jS6TfBYMjRx1/aCPh7t2ksU4qTF/ZJ8llWHPAgbvV2RM
- Y0S5TJ8q8Fu//S49jcvdbDY55F4JMtHWgmW8hiyY9ExFfrPE+njHz0n2rIeNHyG3jaPFLE/oRIOI
- u86PkmW3PRepP0nPUPzMGsBnoA8ys7+luDPKCryz5tACccvW8AELoq/eFE0ysa+QmM1jpViwHu3u
- ZZ8ikjivolnLh1jA3LpoyD26K6XVsXuCOa5t5J5V2ZtbAeUwkN83Eqympi/ztRQAcYozptQXywlw
- WwY+B+4Ucnm4gq0s1Fg8PWCJCqI03jLcOFcajJji/jxKyWy7xIWxV91J4FQW2Hgz4yFQtwQz1YNr
- lhlyGgxwdAsF+06bZbe+TRDHYoAyj+sT7OqGKaODi9HhZWT64sWvE/Tl3UYOt8NV74UgO0mVL0nh
- ytSqR6+kzCSsShdiMNVeX56mHcLC9Lmwv7awmd3+3gF+ur2w7OSrtz3YqYa6gepw1AjWl48qMRA/
- MML0XX2SVjfNFrqCb4ecXxnlZr7MG/zqB1HuoUTXRmpP8P05BeHwsPVxXWgzyPppytDN3HfJ/JSL
- DFJGPeD7uvj64D7foZRcdi3SxGHXTO1LMeCG4gaZ18FsqKFceHhwxTfxXglfrmz8iGTsbGPYKU/e
- o4CJXNlnhABp5sWiM2ZPEWR2rYZMneX0qXlyJ5AUkoqF17lOlgQXmfRmHncSsgGj0/isMrIrhDbR
- HsxeX6q+r0UF5y+Emt27oZPp1XBnPiTiBKBL6ImTbrA1gy6UPE8As+/qLdg+vkV813x77/tujWXL
- zXOSS3bbrLthG/aGYX6QW8FdiaPHUQGHsiiRrvd5Sfcyo0nrbrJRvFvWZkbW1EHoREdyF+d+JBGf
- KTA6vSLM5bE9LtOu16SvHpDQ4GZ9yZ02kuYiL4jFkEe5PA9aLVv9kYb9V3/IiV9sOHqHFVkXSxv3
- RXTd4LRVe6L5TuFt03Q24F2aBnI+7Th9AtklhH77OCDkHh+AKvWtFg8DKTHPZcSjQp3HoGgjE2la
- uuqr5V9v0FmCE46pFCSb0XUbvNLVJYcVcuOWVaUrnR7HkrhBqtL91D4zOD2FilzP/gVsY/iKwaXN
- d3jrwWnEOVQzqHL6BYUwjEu2cGgGv/UTOUjWx1ULSQbzvYaRtqes/rrY8gBfOz5EarYt+rzzjjWM
- 9TZAjpxcyuVi7SGMThkXFoeIp9/12EGhrB7EjmoL0EcYQVksvC0EdUGa7ZmkJnysg4fMr54tM9id
- YL3djJCiOxxpdtxp4ORqe6KLyNFpOzxrkAxVhSnnbcnsD89cLgOVkqMG9s3ECX4oebvogdBZksZB
- OoAYnHfMCZn3a+ktZz+O4XnvfEL46XNKif56wbsED+HKN/o4d2e5A6kYI2QvgTFu/lOK4cWKnBC+
- P3JDn/4wACIqOtJGGYFFFaYX3NPtQgzVNxvWoXQD4iDo6MRUZ4+OlsiDcNoRpMzumqxviRbyZtk8
- uq9TmtCXtynyo1c/yJTPTbms8FJB84kjpPdp6K0z77YwHlKJoHGuEgwMH8L7xue4Tm8dXc1QX+A9
- 0Z7IYjvg4eS2mfC0PnnkP7a5wRcQTXCxUz2EFOuAFfLFhkKSseSQnc2SFfknA+96OBHzTF7liuPd
- Iuns0w+/9aAh8b7eoLid1u//PyaLum8FGMEoR36hKB416qWTRSnQSchEQYODOozhei8rPDjBKdk+
- BA9AElmCVBeOlKg7pEB9BB3eueYK5rAXNxiEKEAa4flmPh74DD4caUX6Gp7AhnawktJjayEjFjN9
- fHmSAr56gkr3AUYiX20MTU0oiLp0arO1a8XA970ziKPy12Tl1ssGHCIL/74fX2EBeuMyEV9um3FL
- mS6CS/3UkLleu5JeEnWTl91eDdM87prNtC4nGJeKhKpgf0vol1cBmx77EPyezz3WpwzU5BqKVzx4
- Mx+GDOQn5BCknYzkq+9PyVo7GO43zkz2nvhu4Xc9YHbo03JbRlrD734glu6e6aZZUJK6w1QS9UaN
- L+jsczivl4a4+lXz6B2pL1kNjjsS5lcGbH1UtOB59FukGWWTbKwd2DCtx4k4ZKgTakLZht5ON5Gp
- w2ezGPxhgJ/Qr4hTkqO+DMwtFpvdziKu5+V0q/bQhI8Hn4as8OD0RZFiQSoP3oOYnqjo63q81eK1
- OlXkFGguWFBsL1Dh9nH4Nq9euSLrNcAqjXVijjdU0rnhTzBMlytxmuVdTpcu22D1+uhECa6nhsiX
- uwanUXFIANSXt16VB4SB+cqQ+WjmkgZ55sJJ23tYIkqjbylTR5CGHYtXF45gejduDtlZ8vHK3ydA
- wr05yNmS9chFiZksz9fYwVR4I6I8ToG3Xh/2Ahwn9DB3uqiUXUtpgOyBhCG11gPdtklp5U4OL19e
- kxKacQ4LFd6YkWbnNaVU0zMouvwWip7oA955lU/Y8pFIvOph02W4yS741Rft5nz0TuDmGAQc8yEm
- vTfN9tufjmreSODdGm/96g308eVMAmm7llS/7l6/+k+89liAdWKRD1LHZ8j9za86vaHNh75J0Jf3
- /WTJ3ZER5dp9EHeSjh49J1IB6ngIv/qKxm2a7qZ0uWGeBP1hppS7oT+8jcGzVsfF2keFLA6STg6U
- icAUEdDCaUMVQWvHNK/+0dswZ8Y3CaBAxq0UnwVoLVtHZVFmzZc/MpEczfq7vz3An+ShBUoW7fF6
- o0bJwZ5I4KFpd2SKiKNbk0aVvOw+LVKXiwQmJz5H0LsHEWaE1Pvy4VqANsO3sMvOibfMVRZKP/6T
- jykeiabZrrQh3UZa6HHJXO1eIXw4wooyetdHrLq1AIO0B8TdVljSmJsLWPf7Gq8xvpTb8f7EIDR9
- jVRIFBuyahTKP97TOascp/pdRdJ2Lo5ISU53sGziuwJyXuXIe1YuXftzoMHDMJfEcKEwruymFZLQ
- uANR7tdHQ81aUcDjcvX/8PtW7VkTLgrKUPAJn+UmN8AF9uV1JyjWSUmJhiWoHsoZi319bjbOcXng
- 42HD4FkNdPpowgDqIcuQ3aYG2A8H/gbXj/XGu5mG449H5VvjlcjvqUrZTjE6+VYyNn5Zlt0sV6vK
- QZGuEQlD9g2oKAc5PILAQHFmVPo65BqG+/JdEFtwNZ0ez1ILd3tDJdl3vdLgUvLA0uIRBVQhYMlH
- dwM/fcoeH0Pnz8XEQ3bu1m89acvxeN7aP35McS5XSvtOf0FUfUqkj0ncTP56YiHNDs+wuV/ODY7h
- mf/VA2Tn10OyKrSr4He+3/m7lPK17sPtE1p//NqaaXgB8u5aI/16dyinLToPDY8R0ZfvKQ0lIYOf
- LHPJ4WVPYKpftxc4HYmCwtfTAVyl5ZFYhNnzW99f43u42IUUyljBjL2548xMNQOeq1YhaxrlZimG
- 2AZubZZ4eQcU0CtOO4n3yyTE+ZWh9HB3MxAZW4HFfb7XqXcxF6ix5UB++3+TjViDS1eckH55+iU3
- p+MGujTiQ+loAo9a8sZDxmJ7vEiM5H39UC091s5DKW/oOvYMZ4EvO4uQsbUbnT6qBH/vGwXHyztZ
- lcQZfnyP0EN2E3Kf3xrIreEaAiZSwAYf+w2WnL8hD4dC8kdfriefkEhiCp2uGmB+eQo61B5KpvDo
- mXDpXBHz+xNtZm6pTPj1d0iLjp9mJSfgwi5o55CXE7+hKWvY8iXjX5hj1Hpccw3wQKeflbhpaI/L
- fl+2cN8wDQkWhh0XXlQF2ThlGuZO6ej92U8Kf7JJxFkY0McsmfBAzRfR5G3W6WBCGw7NpSeqkAnl
- ZPLFBL3bjsMQjI9yCbbiCdksNJAqnSD46oEPv/lLKLN7kMwzr7WyjPYsMa9D29BAlAbYXfMGy9Im
- J1MauBKoBxMQW3lmOtUefQQ1tj+gMO5TMKV+4AM5v+XE1xyrIfp13/7hafQRpmQR990AX5FyCeUr
- 6hvy6VcBfN7Cm6jt8gDT8+A+gXaIWCwiWW84LtoYeNsIH0K5bZrVdw5/eCpcDvXZ+/rZSH6jvCfm
- /pQ0Y7FKEbRi40GydO712joFLTi44B2y0sfy+FhOa1hgN8cUHF/JAjkVy3f9ZuERx0TfRtQzUHQ/
- Z1yrnyjZYqYMwSfYqXh93e9gkxvqwvK1O5MfP27AMCCgWSYTQ2qWZPgQ3MFh8jOUUmYBS6f4HbCd
- 1EC4fb29jbqr/dufSO+P53KdOUOAPz4+MvVD33KonuDOpCnmBtfWKasWWMz2ck0sNXL/7X+bPN6F
- Tzui5doKqIBfvx3mOH6WG6rLE3x2YxJy2us1buZncWU1FRqUC+7TW1MzqiBfSQ5xrayjn/FTQDhr
- akwcUL+aLRfOA3jzfYAOouyAL98PYNqCCjPKmiWb/4AvePeyCzlMB7dcz2+FkU+9MyO7s8VxgadB
- gh4SInJQWsVb19QOYdSACD8JnzWLfr66QHubwy//SlgnOUEZr/FAVFNIvS2DIgMOSe0gNZZrD3+i
- oIb1VhmkApXUbPtuVSB+3FhkndUlob09VL/3SUz5rJd8WTgRvODkiKxaXLwpnSYNZt1QY1BlAp1+
- +QJ4vBwSzyxIvn5gAwFHfPTlQ7od666AX7+HDlod0PWwRBL8+WcrsZ2Re8Cqg1yANeSAKgDrTeYk
- SdSYmqjw9gbrnPU3GHnyFN5+eaq4rztQsc4NKV4p6lssX58/v0hs930Y9+0w1NBWZBjucwFQqt7f
- EgDO8Cb+uLYlvYZsDTvOmJCO7lVD8YtV4CctCS67sqFk1u9PMGt6TNQbmcfucB5CGLTuSkyVjxoq
- X84aNCVXDoFg5h798gAM2V7447eXdH7gX55CNC09evSYLzEUPMnEsxXfKJXA3YQBBz/h56xGyR+9
- ye+Wi9evP1hPLypBu3clzLR1WE7ykREAUJcE99rhpa8r+8jg6ZGUKMynw7g/x3ACX37Deyt+l+vP
- v1S+IJG8iETQK7SuJDaFPclP6R4Q8fqKIbHJOVy8UvR+ecgf/TZC7l7ye7vw4VzYu5CQNdHpph4G
- GLSFH3K1h0rxZFwN+OUDZHV8MLIR5gQ4FU2CgnO0NOQemCH45hnI6PgabFzfdxAIa/nNf12PF9qD
- Bge/qDFcJ7v5+XFYXhcDGTxWyhUnXAUjX7DQrRgGb5mhrEk0lBBy79qxJKvKxGCKLy0Klfk+zvqx
- K4B0FP2Qqd5+ua1Om8NiFmTkHs1S3yRzgXJ1UDoUUMMcx9Y6Y/Dj/1++s9bXyYa7vakif/ey9eU4
- oxdomUElaj7HydTd5wXiY3AJ15PwTGhnfkz41fNwtRmrXHON8tLdvTAkNMSGbtg/nODej4pwZCKF
- ss93n4G7dEXI1uqiWX/5vPjYAyyXJ6tcd27CA+0Qs+FuhI23VI47QcoXIfFOnabTbLvy8JDEGPnc
- Q2iWJAA1NIBFQv5dsfosBWMBKoMGyNpW1JCvH4aPHmrI+hpdeluOGvzyWbi97Frf2iPl4TfPQKqu
- v70Jnp4SPCQRRo4FSbLqq/OEdwkPv/mXm9Yfc8nbFwjZ8VPXp2ArarA7x17IfNfftFvfBhyg5ofs
- wXl5W73Pn5B/WdW3npNk0+ytle9uyeC2fLEJbT0nl77zCfuvP/7lb1AsLgFSn9PobdIBRFBh/IJY
- z/1pXIb7xsIsUmWkyVugb6ert4H7aCOEQrdrJjv1Yhi+M4FohSqO/J1LXflb/9A3T/cox7Qd7LiT
- RXz56YPlx/sldwuI8sh1MKJ89H/5Vvi5MQH46oEmNUpaYWlbq5J+eVf61gvk92T0iPI8ChAuS0R0
- EMzj179G0rpPFaSVO0bHPToJELHHF3El3kpaqN06GPmSFYKoksGEGaGAogZrFIyW4339HQ/V943B
- 0qgfxoVhLyYckylF5XCxS37zHhtMRFphYQi98etfbj8/Qexv3rjko7bJTr60SNuxdkL5hy0Aam5P
- /M7DIyW2rIVwqeMPUaznlmzPjfHhOIDPn+81BsXl+dMLZE2ETSZ130pQ0lqfuNIWNWzRVxW8+nWL
- 0tojJZV29gYtt8hDuTFZujWnYgFSnGsoXWE6Lg9zYaF2qBHROI6MZJfjQmIQkxFV24XJdO0WSc5y
- Z8D8mRgJZWvAgrvEHMJD4fPJVAyFC9ngXaOw7ht9fZdxLBXX/klOFTc1aycWNqS8S0Pp6B7Bkk4v
- DQTpCLCchmkyt5cGQnqrBgwDwHnUuewKePB4BUtn9erxmgUF0Lb6jfz8/XaSny3weHAh6tB3zfr1
- i1B/Rev3+/T68jKOAvj6V6SGawm22UOdFLG5SfTjG4Oerv4E21uakkNYdHT51l+gV22H5VGPyyXx
- ZRZWB60jdpX5+uCr6fJnP/JpvyVbdU5jGA+f9Msjg745B8GEcNmir5/vKK396wukvcJiobPFpjvO
- qJUOzzf+5W06jdJ9CO1HrZM79668LYZ3/peHEke89eUc2mksb9mdR3YRXehCQc1LvJG0IVP3ur5x
- 3fjNi6oXMVXpU2JGazBkbNNAqqr2lJCXnsOXVXLh7g4wXTTxGUOOZVoUPOyopGOXd/BlXThi2NI1
- mWp9v/3ya2IxozsuIWmfcHe3r99+mdKQ6YW/+axVhGwt6sny5VNo5+IdfefvUaYsckhnOiAfiZdx
- e8WvG1Rl3gyZtsbJqkfDBEs5u+OtNY2Rd94XH4I+UL79gqzE0ZVkoJ9ShFSTvZVktET23/29uTuC
- 5U9/jUwmpp/Co2t6iBcYS+yCF3pIEoLyMYRLpPsEpcKu3Ih71uA3b8KrtsNle7mwPhSfS0b0+xUn
- y601BPhdv0jrd2NJ3/2LhU/RdTDJNbvchE4pZDl6meh4Yr2Rrvra/d43uoDaGNd6p3Q/fUTmeQya
- vXxVMDznsY+p8yrGtQGTAqRCE4mLoV9y3/7Dn/6EP85knG5vFP76b+HXT5QT5JxJ9s5WgxyHFmDT
- zfAF1PkcEcuK38mYr28f/PFTdpSUv/7uH3/8J39Eoqb88nNiknPm0V0VGVBw5ZEoH0/45oG7AnBc
- qBL3m4etn2wPod3nKTIOatYs986OIehvJdKKqE42aNrZn/7nxdkfx/3c8BnkXtcFWZ30KueyBhhm
- +11NlHeQgK1bn9pv//34jy6Dcpx+vBkytyaivGLPTzj39x2xBjb2aB4bJlQ59UKcuTvotPsEEvz7
- dyrgv//x11//+Tth0HbX2/t7MGC+rfM//+eowD+La/FPluX/Sfg/JxHwVNS3v//170MIf/dj1/bz
- /5271+0z/f2vvwRZ+HPe4O+5m4v3/7rxj+/z/vsf/w8AAP//AwD4jVCt5SAAAA==
+ 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
headers:
CF-Cache-Status:
- DYNAMIC
CF-RAY:
- - 7be49ae11e2dced1-SJC
+ - 7bfe4d2a38b9cee1-SJC
+ Cache-Control:
+ - no-cache, must-revalidate
Connection:
- keep-alive
Content-Encoding:
@@ -624,29 +341,37 @@ interactions:
Content-Type:
- application/json
Date:
- - Thu, 27 Apr 2023 05:18:28 GMT
+ - Sun, 30 Apr 2023 08:09:15 GMT
Server:
- cloudflare
access-control-allow-origin:
- '*'
alt-svc:
- h3=":443"; ma=86400, h3-29=":443"; ma=86400
+ openai-model:
+ - gpt-3.5-turbo-0301
openai-organization:
- user-adtx4fhfg1qsiyzdoaxciooj
openai-processing-ms:
- - '64'
+ - '928'
openai-version:
- '2020-10-01'
strict-transport-security:
- max-age=15724800; includeSubDomains
x-ratelimit-limit-requests:
- - '3000'
+ - '3500'
+ x-ratelimit-limit-tokens:
+ - '90000'
x-ratelimit-remaining-requests:
- - '2999'
+ - '3499'
+ x-ratelimit-remaining-tokens:
+ - '89866'
x-ratelimit-reset-requests:
- - 20ms
+ - 17ms
+ x-ratelimit-reset-tokens:
+ - 88ms
x-request-id:
- - 73e42f26050de7075473636113591bef
+ - bdf544a1c9ea2ee0bb022ee726a80ed4
status:
code: 200
message: OK
@@ -696,41 +421,21 @@ interactions:
\"command name\",\n \"args\": {\n \"arg name\": \"value\"\n }\n }\n}
\nEnsure the response can be parsed by Python json.loads"}, {"role": "system",
"content": "The current time and date is Tue Jan 01 00:00:00 2000"}, {"role":
- "system", "content": "This reminds you of these events from your past:\n[''Assistant
- Reply: {\\n \"thoughts\": {\\n \"text\": \"I will use the browse_website
- command to visit http://books.toscrape.com/catalogue/meditations_33/index.html
- and find the price of the book.\",\\n \"reasoning\": \"The task requires
- me to find the price of the book, and the browse_website command is the best
- option to achieve this.\",\\n \"plan\": \"- Use the browse_website command
- to visit http://books.toscrape.com/catalogue/meditations_33/index.html\\\\n-
- Find the price of the book\\\\n- Write the price to a file named browse_website.txt\",\\n \"criticism\":
- \"I need to ensure that I am using the correct URL and question to find the
- price of the book.\",\\n \"speak\": \"I will use the browse_website command
- to visit the website and find the price of the book.\"\\n },\\n \"command\":
- {\\n \"name\": \"browse_website\",\\n \"args\": {\\n \"url\":
- \"http://books.toscrape.com/catalogue/meditations_33/index.html\",\\n \"question\":
- \"What is the price of the book?\"\\n }\\n }\\n} \\nResult: Command
- browse_website returned: (\\''Answer gathered from website: The price of the
- book \"Meditations\" is \u00a325.89. \\\\n \\\\n Links: [\\\\\\''Books to Scrape
- (http://books.toscrape.com/index.html)\\\\\\'', \\\\\\''Home (http://books.toscrape.com/index.html)\\\\\\'',
- \\\\\\''Books (http://books.toscrape.com/catalogue/category/books_1/index.html)\\\\\\'',
- \\\\\\''Philosophy (http://books.toscrape.com/catalogue/category/books/philosophy_7/index.html)\\\\\\'',
- \\\\\\'' (http://books.toscrape.com/catalogue/the-nicomachean-ethics_75/index.html)\\\\\\'']\\'',
- <selenium.webdriver.chrome.webdriver.WebDriver (session=\"6f53929874014a52eb5d50c659bb304d\")>)
- \\nHuman Feedback: '']\n\n"}, {"role": "user", "content": "Determine which
- next command to use, and respond using the format specified above:"}, {"role":
- "assistant", "content": "{\n \"thoughts\": {\n \"text\": \"I will
- use the browse_website command to visit http://books.toscrape.com/catalogue/meditations_33/index.html
+ "system", "content": "This reminds you of these events from your past: \nI was
+ created and nothing new has happened."}, {"role": "user", "content": "Determine
+ which next command to use, and respond using the format specified above:"},
+ {"role": "assistant", "content": "{\n \"thoughts\": {\n \"text\":
+ \"I will use the browse_website command to visit http://books.toscrape.com/catalogue/meditations_33/index.html
and find the price of the book.\",\n \"reasoning\": \"The task requires
- me to find the price of the book, and the browse_website command is the best
- option to achieve this.\",\n \"plan\": \"- Use the browse_website command
- to visit http://books.toscrape.com/catalogue/meditations_33/index.html\\n- Find
- the price of the book\\n- Write the price to a file named browse_website.txt\",\n \"criticism\":
- \"I need to ensure that I am using the correct URL and question to find the
- price of the book.\",\n \"speak\": \"I will use the browse_website command
- to visit the website and find the price of the book.\"\n },\n \"command\":
- {\n \"name\": \"browse_website\",\n \"args\": {\n \"url\":
- \"http://books.toscrape.com/catalogue/meditations_33/index.html\",\n \"question\":
+ me to visit a website and find the price of a book. The browse_website command
+ is the best option for this task.\",\n \"plan\": \"- Use the browse_website
+ command to visit the website\\n- Find the price of the book\\n- Write the price
+ to a file named ''browse_website.txt''\\n- Use the task_complete command to
+ complete the task\",\n \"criticism\": \"I need to ensure that I am accurately
+ finding the price of the book and writing it to the correct file.\",\n \"speak\":
+ \"I will use the browse_website command to visit the website and find the price
+ of the book.\"\n },\n \"command\": {\n \"name\": \"browse_website\",\n \"args\":
+ {\n \"url\": \"http://books.toscrape.com/catalogue/meditations_33/index.html\",\n \"question\":
\"What is the price of the book?\"\n }\n }\n}"}, {"role": "system",
"content": "Command browse_website returned: (''Answer gathered from website:
The price of the book \"Meditations\" is \u00a325.89. \\n \\n Links: [\\''Books
@@ -738,9 +443,9 @@ interactions:
\\''Books (http://books.toscrape.com/catalogue/category/books_1/index.html)\\'',
\\''Philosophy (http://books.toscrape.com/catalogue/category/books/philosophy_7/index.html)\\'',
\\'' (http://books.toscrape.com/catalogue/the-nicomachean-ethics_75/index.html)\\'']'',
- <selenium.webdriver.chrome.webdriver.WebDriver (session=\"6f53929874014a52eb5d50c659bb304d\")>)"},
+ <selenium.webdriver.chrome.webdriver.WebDriver (session=\"6091e0a34a95ed76d75b8c96aa8bb541\")>)"},
{"role": "user", "content": "Determine which next command to use, and respond
- using the format specified above:"}], "temperature": 0, "max_tokens": 2233}'
+ using the format specified above:"}], "temperature": 0, "max_tokens": 2201}'
headers:
Accept:
- '*/*'
@@ -749,7 +454,7 @@ interactions:
Connection:
- keep-alive
Content-Length:
- - '7471'
+ - '5772'
Content-Type:
- application/json
method: POST
@@ -757,21 +462,21 @@ interactions:
response:
body:
string: !!binary |
- H4sIAAAAAAAAA7xTzW7bMAy+7ykEnpUgcZem8W0bsKEtemsPw1wEsszYWmzRE+kmQ5Cn2ZvsyQbZ
- SbumG9BTb5Iofj/Upx24AlKwlRHbtPVovqArrPKr4madvP/SXv/8+vCx/fyhu7v+xBPQQPl3tHLo
- GFtq2hrFkQcNNqARLCCdnl8ks3kyTxINDRVYQwplK6Oz8WwkXchpNDmbTEFDx6ZESHfQBmpaWQqt
- 0TOk0/lspuEJ/LGQTKcahMTUT3cX5+d7DbYiZ5Eh/baDBvkIHKhGSMEwOxbjJcokL+ijhV3mlVIq
- A6moKyvhDFJ1ODwUcCvxMINLtXF1rTpGJRWqTXCCS6HlytWoLDWN8YUSGgr9lTY4i4pW/SYnWsey
- UX2DNw0WKg+0YVxuMGcnOJatjDPQf/MHNEze+XIQcVuhEsNrFfBH5wKyavDVpFr1Ev8r3vHQhCyK
- 2jj2vtdWDh8iuONTdW1t/CBspO7edjA2OHHWcXN8HY/Y06DnLkQeI+pSmUZ17HzZU1kKAa30RJFn
- mAdu5RXy4jr2nergFs36jRMy8O/1Mb0H7BfhjRCDtGdaThyYUJ7mfigcxzRAvFTyDOf0u9z+016W
- ZXCDhRMT48VxG2P3+1cyG18sHq319g4uM7+HvYaV846r5fAfIAUWakGD8wVuIZ3s7/fv/gAAAP//
- AwC5hinnygQAAA==
+ H4sIAAAAAAAAA7RTzW7aQBC+9ylGc+FiLDChpb5VjVRR9e+QnuoKrdcD3mDvuLtDSYN4mrxJn6xa
+ 20AhUZVLj56Z72c+z+7QFJiiLpXouqmGr95sv3y4vV6X0/ef395f/5zn9G5elHKvPv1KMELOb0lL
+ j4g1101FYthihNqREiowHb+cJbOrZDydRlhzQRWmuGpkOImnQ9m4nIejyWiMEW68WhGmO2wc140s
+ hNdkPabjyTiJ8ER+bCRJEqGwqOo0O51c7SPUJRtNHtNvO6zJH4gdV4QpKu+NF2Ul2GQrZMMKu8wC
+ AGQoJW9WpfgMU+iLfYPuJBQznMPWVBVsnRECKQkaZzQBL9uPnHkNwqBgaSoCq2oqYJA73npabCn3
+ RiiWOxnEGUZ/CzhSnq2xq07lpiQQ5dfg6MfGOPJQU+B9lmwMAd6OLoQXrRPNda1sAcZ3APIC3IRM
+ YckOpAwN5deXvppK2c7SEL76Tvpp5ue6+0coWWZPKsHNov/1ZyrH2mHqwrJ2Row2vj78MEvUAsn6
+ jQswJTAHVbd+jV21RJqdIy1g7JJdrdpkhNtW67oVD8hjxXjIKcD7ewdjz5gq1i3NZaS+IbU+O6bN
+ /w42zrBzsI8Op96zP7r0QNKZO3NzsYNyq8tH0jXC7InisZUznsu3dfPkgoOPVBhpo/SDkPrvh2Qa
+ z14fl2oX6/fL7B73ES6NNb5cdK8KU/TCDUZobEF3mI723/cv/gAAAP//AwBJZ4NT8QQAAA==
headers:
CF-Cache-Status:
- DYNAMIC
CF-RAY:
- - 7be49b389e94ced1-SJC
+ - 7bfe4d310f1acee1-SJC
Cache-Control:
- no-cache, must-revalidate
Connection:
@@ -781,7 +486,7 @@ interactions:
Content-Type:
- application/json
Date:
- - Thu, 27 Apr 2023 05:19:03 GMT
+ - Sun, 30 Apr 2023 08:09:27 GMT
Server:
- cloudflare
access-control-allow-origin:
@@ -793,37 +498,38 @@ interactions:
openai-organization:
- user-adtx4fhfg1qsiyzdoaxciooj
openai-processing-ms:
- - '21222'
+ - '12183'
openai-version:
- '2020-10-01'
strict-transport-security:
- max-age=15724800; includeSubDomains
x-ratelimit-limit-requests:
- '3500'
+ x-ratelimit-limit-tokens:
+ - '90000'
x-ratelimit-remaining-requests:
- '3499'
+ x-ratelimit-remaining-tokens:
+ - '86494'
x-ratelimit-reset-requests:
- 17ms
+ x-ratelimit-reset-tokens:
+ - 2.337s
x-request-id:
- - dd3e3770c095157c99a11ad526d4ca9c
+ - ea952acfdafdc0ae3345943425fec326
status:
code: 200
message: OK
- request:
- body: '{"input": ["Assistant Reply: { \"thoughts\": { \"text\": \"I
- will use the write_to_file command to write the price of the book to a file
- named browse_website.txt.\", \"reasoning\": \"The task requires me to
- write the price of the book to a file, and the write_to_file command is the
- best option to achieve this.\", \"plan\": \"- Use the write_to_file
- command to write the price of the book to a file named browse_website.txt.\", \"criticism\":
- \"I need to ensure that I am using the correct filename and text to write the
- price of the book to the file.\", \"speak\": \"I will use the write_to_file
- command to write the price of the book to a file named browse_website.txt.\" }, \"command\":
- { \"name\": \"write_to_file\", \"args\": { \"filename\":
- \"browse_website.txt\", \"text\": \"The price of the book \\\"Meditations\\\"
- is \u00a325.89.\" } } } Result: Command write_to_file returned:
- File written to successfully. Human Feedback: "], "model": "text-embedding-ada-002",
- "encoding_format": "base64"}'
+ body: '{"model": "gpt-3.5-turbo", "messages": [{"role": "user", "content": "Your
+ task is to create a concise running summary of actions and information results
+ in the provided text, focusing on key and potentially important information
+ to remember.\n\n\nYou will receive the current summary and the latest development.
+ Combine them, adding relevant key information from the latest development in
+ 1st person past tense and keeping the summary concise.\n\nSummary So Far:\n\"\"\"\n{''role'':
+ ''system'', ''content'': ''This reminds you of these events from your past:
+ \\nI was created and nothing new has happened.''}\n\"\"\"\n\nLatest Development:\n\"\"\"\nNothing
+ new happened.\n\"\"\"\n"}], "temperature": 0, "max_tokens": null}'
headers:
Accept:
- '*/*'
@@ -832,329 +538,26 @@ interactions:
Connection:
- keep-alive
Content-Length:
- - '1110'
+ - '714'
Content-Type:
- application/json
method: POST
- uri: https://api.openai.com/v1/embeddings
- response:
- body:
- string: !!binary |
- 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
- headers:
- CF-Cache-Status:
- - DYNAMIC
- CF-RAY:
- - 7be49bdebeebced1-SJC
- Connection:
- - keep-alive
- Content-Encoding:
- - gzip
- Content-Type:
- - application/json
- Date:
- - Thu, 27 Apr 2023 05:19:08 GMT
- Server:
- - cloudflare
- access-control-allow-origin:
- - '*'
- alt-svc:
- - h3=":443"; ma=86400, h3-29=":443"; ma=86400
- openai-organization:
- - user-adtx4fhfg1qsiyzdoaxciooj
- openai-processing-ms:
- - '86'
- openai-version:
- - '2020-10-01'
- strict-transport-security:
- - max-age=15724800; includeSubDomains
- x-ratelimit-limit-requests:
- - '3000'
- x-ratelimit-remaining-requests:
- - '2999'
- x-ratelimit-reset-requests:
- - 20ms
- x-request-id:
- - 42e0557e070e90e99b138d49ebb07b3b
- status:
- code: 200
- message: OK
-- request:
- body: '{"input": ["[{''role'': ''user'', ''content'': ''Determine which next command
- to use, and respond using the format specified above:''}, {''role'': ''assistant'',
- ''content'': ''{\\n \"thoughts\": {\\n \"text\": \"I will use the
- browse_website command to visit http://books.toscrape.com/catalogue/meditations_33/index.html
- and find the price of the book.\",\\n \"reasoning\": \"The task requires
- me to find the price of the book, and the browse_website command is the best
- option to achieve this.\",\\n \"plan\": \"- Use the browse_website command
- to visit http://books.toscrape.com/catalogue/meditations_33/index.html\\\\n-
- Find the price of the book\\\\n- Write the price to a file named browse_website.txt\",\\n \"criticism\":
- \"I need to ensure that I am using the correct URL and question to find the
- price of the book.\",\\n \"speak\": \"I will use the browse_website command
- to visit the website and find the price of the book.\"\\n },\\n \"command\":
- {\\n \"name\": \"browse_website\",\\n \"args\": {\\n \"url\":
- \"http://books.toscrape.com/catalogue/meditations_33/index.html\",\\n \"question\":
- \"What is the price of the book?\"\\n }\\n }\\n}''}, {''role'': ''system'',
- ''content'': ''Command browse_website returned: (\\''Answer gathered from website:
- The price of the book \"Meditations\" is \u00a325.89. \\\\n \\\\n Links: [\\\\\\''Books
- to Scrape (http://books.toscrape.com/index.html)\\\\\\'', \\\\\\''Home (http://books.toscrape.com/index.html)\\\\\\'',
- \\\\\\''Books (http://books.toscrape.com/catalogue/category/books_1/index.html)\\\\\\'',
- \\\\\\''Philosophy (http://books.toscrape.com/catalogue/category/books/philosophy_7/index.html)\\\\\\'',
- \\\\\\'' (http://books.toscrape.com/catalogue/the-nicomachean-ethics_75/index.html)\\\\\\'']\\'',
- <selenium.webdriver.chrome.webdriver.WebDriver (session=\"6f53929874014a52eb5d50c659bb304d\")>)''},
- {''role'': ''user'', ''content'': ''Determine which next command to use, and
- respond using the format specified above:''}, {''role'': ''assistant'', ''content'':
- ''{\\n \"thoughts\": {\\n \"text\": \"I will use the write_to_file
- command to write the price of the book to a file named browse_website.txt.\",\\n \"reasoning\":
- \"The task requires me to write the price of the book to a file, and the write_to_file
- command is the best option to achieve this.\",\\n \"plan\": \"- Use the
- write_to_file command to write the price of the book to a file named browse_website.txt.\",\\n \"criticism\":
- \"I need to ensure that I am using the correct filename and text to write the
- price of the book to the file.\",\\n \"speak\": \"I will use the write_to_file
- command to write the price of the book to a file named browse_website.txt.\"\\n },\\n \"command\":
- {\\n \"name\": \"write_to_file\",\\n \"args\": {\\n \"filename\":
- \"browse_website.txt\",\\n \"text\": \"The price of the book \\\\\"Meditations\\\\\"
- is \u00a325.89.\"\\n }\\n }\\n}''}, {''role'': ''system'', ''content'':
- ''Command write_to_file returned: File written to successfully.''}]"], "model":
- "text-embedding-ada-002", "encoding_format": "base64"}'
- headers:
- Accept:
- - '*/*'
- Accept-Encoding:
- - gzip, deflate
- Connection:
- - keep-alive
- Content-Length:
- - '3189'
- Content-Type:
- - application/json
- method: POST
- uri: https://api.openai.com/v1/embeddings
+ uri: https://api.openai.com/v1/chat/completions
response:
body:
string: !!binary |
- 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
- w+39vz74x/f3/vsf/w8AAP//AwBCQNw65SAAAA==
+ H4sIAAAAAAAAA0SPTUvDQBRF9/6K4a4npemnzq6gouDCvUiZTp7J2Pky74VYSv67VJRuD9zDuWf4
+ Bgaus+JiCdV2N77aZngYx8dhs3r5OmyPT/fhuJYSbQuNfPgkJ3+LmcuxBBKfEzRcT1aogak3t4vb
+ 1aLezjVibijAoC1SLWfrSob+kKv5cl5DY2DbEswZpc+xyF7ykRLD1PWdxtV95WsNyWLDlSxXk4br
+ snfEMG9nROJ/a58DwcAyexab5NKYk1C69O9YWcUnFopaPauenA1BSWdFpSydT61KNKrOsupsKZSo
+ UeyTIxVP6veqz2mGSePDJ8/dvifLOcGAJRdo+NTQN8x8ep9ufgAAAP//AwB8vP+2ZgEAAA==
headers:
CF-Cache-Status:
- DYNAMIC
CF-RAY:
- - 7be49be3dc34ced1-SJC
+ - 7bfe4d901cdecee1-SJC
+ Cache-Control:
+ - no-cache, must-revalidate
Connection:
- keep-alive
Content-Encoding:
@@ -1162,29 +565,37 @@ interactions:
Content-Type:
- application/json
Date:
- - Thu, 27 Apr 2023 05:19:09 GMT
+ - Sun, 30 Apr 2023 08:09:31 GMT
Server:
- cloudflare
access-control-allow-origin:
- '*'
alt-svc:
- h3=":443"; ma=86400, h3-29=":443"; ma=86400
+ openai-model:
+ - gpt-3.5-turbo-0301
openai-organization:
- user-adtx4fhfg1qsiyzdoaxciooj
openai-processing-ms:
- - '76'
+ - '791'
openai-version:
- '2020-10-01'
strict-transport-security:
- max-age=15724800; includeSubDomains
x-ratelimit-limit-requests:
- - '3000'
+ - '3500'
+ x-ratelimit-limit-tokens:
+ - '90000'
x-ratelimit-remaining-requests:
- - '2999'
+ - '3499'
+ x-ratelimit-remaining-tokens:
+ - '89839'
x-ratelimit-reset-requests:
- - 20ms
+ - 17ms
+ x-ratelimit-reset-tokens:
+ - 107ms
x-request-id:
- - 006edc24ffa2e03bf3534ac502e0e6e7
+ - 782df5c2a8ff131c4a94e1db54cf90ad
status:
code: 200
message: OK
@@ -1234,53 +645,21 @@ interactions:
\"command name\",\n \"args\": {\n \"arg name\": \"value\"\n }\n }\n}
\nEnsure the response can be parsed by Python json.loads"}, {"role": "system",
"content": "The current time and date is Tue Jan 01 00:00:00 2000"}, {"role":
- "system", "content": "This reminds you of these events from your past:\n[''Assistant
- Reply: {\\n \"thoughts\": {\\n \"text\": \"I will use the browse_website
- command to visit http://books.toscrape.com/catalogue/meditations_33/index.html
- and find the price of the book.\",\\n \"reasoning\": \"The task requires
- me to find the price of the book, and the browse_website command is the best
- option to achieve this.\",\\n \"plan\": \"- Use the browse_website command
- to visit http://books.toscrape.com/catalogue/meditations_33/index.html\\\\n-
- Find the price of the book\\\\n- Write the price to a file named browse_website.txt\",\\n \"criticism\":
- \"I need to ensure that I am using the correct URL and question to find the
- price of the book.\",\\n \"speak\": \"I will use the browse_website command
- to visit the website and find the price of the book.\"\\n },\\n \"command\":
- {\\n \"name\": \"browse_website\",\\n \"args\": {\\n \"url\":
- \"http://books.toscrape.com/catalogue/meditations_33/index.html\",\\n \"question\":
- \"What is the price of the book?\"\\n }\\n }\\n} \\nResult: Command
- browse_website returned: (\\''Answer gathered from website: The price of the
- book \"Meditations\" is \u00a325.89. \\\\n \\\\n Links: [\\\\\\''Books to Scrape
- (http://books.toscrape.com/index.html)\\\\\\'', \\\\\\''Home (http://books.toscrape.com/index.html)\\\\\\'',
- \\\\\\''Books (http://books.toscrape.com/catalogue/category/books_1/index.html)\\\\\\'',
- \\\\\\''Philosophy (http://books.toscrape.com/catalogue/category/books/philosophy_7/index.html)\\\\\\'',
- \\\\\\'' (http://books.toscrape.com/catalogue/the-nicomachean-ethics_75/index.html)\\\\\\'']\\'',
- <selenium.webdriver.chrome.webdriver.WebDriver (session=\"6f53929874014a52eb5d50c659bb304d\")>)
- \\nHuman Feedback: '', ''Assistant Reply: {\\n \"thoughts\": {\\n \"text\":
- \"I will use the write_to_file command to write the price of the book to a file
- named browse_website.txt.\",\\n \"reasoning\": \"The task requires me
- to write the price of the book to a file, and the write_to_file command is the
- best option to achieve this.\",\\n \"plan\": \"- Use the write_to_file
- command to write the price of the book to a file named browse_website.txt.\",\\n \"criticism\":
- \"I need to ensure that I am using the correct filename and text to write the
- price of the book to the file.\",\\n \"speak\": \"I will use the write_to_file
- command to write the price of the book to a file named browse_website.txt.\"\\n },\\n \"command\":
- {\\n \"name\": \"write_to_file\",\\n \"args\": {\\n \"filename\":
- \"browse_website.txt\",\\n \"text\": \"The price of the book \\\\\"Meditations\\\\\"
- is \u00a325.89.\"\\n }\\n }\\n} \\nResult: Command write_to_file returned:
- File written to successfully. \\nHuman Feedback: '']\n\n"}, {"role": "user",
- "content": "Determine which next command to use, and respond using the format
- specified above:"}, {"role": "assistant", "content": "{\n \"thoughts\": {\n \"text\":
- \"I will use the browse_website command to visit http://books.toscrape.com/catalogue/meditations_33/index.html
+ "system", "content": "This reminds you of these events from your past: \nAs
+ a system, I recall that nothing new has happened since my creation."}, {"role":
+ "user", "content": "Determine which next command to use, and respond using the
+ format specified above:"}, {"role": "assistant", "content": "{\n \"thoughts\":
+ {\n \"text\": \"I will use the browse_website command to visit http://books.toscrape.com/catalogue/meditations_33/index.html
and find the price of the book.\",\n \"reasoning\": \"The task requires
- me to find the price of the book, and the browse_website command is the best
- option to achieve this.\",\n \"plan\": \"- Use the browse_website command
- to visit http://books.toscrape.com/catalogue/meditations_33/index.html\\n- Find
- the price of the book\\n- Write the price to a file named browse_website.txt\",\n \"criticism\":
- \"I need to ensure that I am using the correct URL and question to find the
- price of the book.\",\n \"speak\": \"I will use the browse_website command
- to visit the website and find the price of the book.\"\n },\n \"command\":
- {\n \"name\": \"browse_website\",\n \"args\": {\n \"url\":
- \"http://books.toscrape.com/catalogue/meditations_33/index.html\",\n \"question\":
+ me to visit a website and find the price of a book. The browse_website command
+ is the best option for this task.\",\n \"plan\": \"- Use the browse_website
+ command to visit the website\\n- Find the price of the book\\n- Write the price
+ to a file named ''browse_website.txt''\\n- Use the task_complete command to
+ complete the task\",\n \"criticism\": \"I need to ensure that I am accurately
+ finding the price of the book and writing it to the correct file.\",\n \"speak\":
+ \"I will use the browse_website command to visit the website and find the price
+ of the book.\"\n },\n \"command\": {\n \"name\": \"browse_website\",\n \"args\":
+ {\n \"url\": \"http://books.toscrape.com/catalogue/meditations_33/index.html\",\n \"question\":
\"What is the price of the book?\"\n }\n }\n}"}, {"role": "system",
"content": "Command browse_website returned: (''Answer gathered from website:
The price of the book \"Meditations\" is \u00a325.89. \\n \\n Links: [\\''Books
@@ -1288,23 +667,24 @@ interactions:
\\''Books (http://books.toscrape.com/catalogue/category/books_1/index.html)\\'',
\\''Philosophy (http://books.toscrape.com/catalogue/category/books/philosophy_7/index.html)\\'',
\\'' (http://books.toscrape.com/catalogue/the-nicomachean-ethics_75/index.html)\\'']'',
- <selenium.webdriver.chrome.webdriver.WebDriver (session=\"6f53929874014a52eb5d50c659bb304d\")>)"},
+ <selenium.webdriver.chrome.webdriver.WebDriver (session=\"6091e0a34a95ed76d75b8c96aa8bb541\")>)"},
{"role": "user", "content": "Determine which next command to use, and respond
using the format specified above:"}, {"role": "assistant", "content": "{\n \"thoughts\":
- {\n \"text\": \"I will use the write_to_file command to write the price
- of the book to a file named browse_website.txt.\",\n \"reasoning\": \"The
- task requires me to write the price of the book to a file, and the write_to_file
- command is the best option to achieve this.\",\n \"plan\": \"- Use the
- write_to_file command to write the price of the book to a file named browse_website.txt.\",\n \"criticism\":
- \"I need to ensure that I am using the correct filename and text to write the
- price of the book to the file.\",\n \"speak\": \"I will use the write_to_file
- command to write the price of the book to a file named browse_website.txt.\"\n },\n \"command\":
- {\n \"name\": \"write_to_file\",\n \"args\": {\n \"filename\":
- \"browse_website.txt\",\n \"text\": \"The price of the book \\\"Meditations\\\"
- is \u00a325.89.\"\n }\n }\n}"}, {"role": "system", "content": "Command
- write_to_file returned: File written to successfully."}, {"role": "user", "content":
- "Determine which next command to use, and respond using the format specified
- above:"}], "temperature": 0, "max_tokens": 1711}'
+ {\n \"text\": \"I will write the price of the book to a file named ''browse_website.txt''.\",\n \"reasoning\":
+ \"The task requires me to write the price of the book to a file. The write_to_file
+ command is the best option for this task.\",\n \"plan\": \"- Use the
+ write_to_file command to write the price of the book to a file named ''browse_website.txt''\\n-
+ Use the task_complete command to complete the task\",\n \"criticism\":
+ \"I need to ensure that I am writing the correct information to the file and
+ that the file is being created in the correct location.\",\n \"speak\":
+ \"I will use the write_to_file command to write the price of the book to a file
+ named ''browse_website.txt''.\"\n },\n \"command\": {\n \"name\":
+ \"write_to_file\",\n \"args\": {\n \"filename\": \"browse_website.txt\",\n \"text\":
+ \"The price of the book ''Meditations'' is \u00a325.89.\"\n }\n }\n}"},
+ {"role": "system", "content": "Command write_to_file returned: File written
+ to successfully."}, {"role": "user", "content": "Determine which next command
+ to use, and respond using the format specified above:"}], "temperature": 0,
+ "max_tokens": 1928}'
headers:
Accept:
- '*/*'
@@ -1313,7 +693,7 @@ interactions:
Connection:
- keep-alive
Content-Length:
- - '9732'
+ - '7026'
Content-Type:
- application/json
method: POST
@@ -1321,20 +701,20 @@ interactions:
response:
body:
string: !!binary |
- H4sIAAAAAAAAA5RSTY/TMBC98ytGc3arNkvb3Ry5wAqOLItEUOU408TU8UT2pF1U5b+jNOkHRQvi
- 6nnzPub5gLbAFE2lxdSNm6we+ONqVX/w28X+af61XX3RzO/l0/L5+d0OFXL+g4yMG1PDdeNILHtU
- aAJpoQLT+fI+WayS1WKusOaCHKZYNjK5my4m0oacJ7O72RwVtlGXhOkBm8B1I2vhLfmIaZIs7xVe
- yM+D+SJRKCzaXbBvk1mn0FRsDUVMvx2wpngiDuwIU9Qx2ijaS2+TvZDvIxwyDwCQoVTclpXEDFMY
- H8cBvUj/mOEj7K1z0EYCqQhEx+16NEhguK61L0AYzm8n1DRDdU0ZSEf21pcD7+cRBpWOkBP5M0MB
- sTWGYty0zv1UcBR4VdrG4zCnKMBNf7TeDV3t3BppnPaDhwk8/SvW34hMsGKNjfXpUp5oXIpt6Im1
- wCPoGprAO1tYX4KGnXa2gOEasOHQS/ST11RiQ3r7f13cmB7YOnVqfUT+UbrXNQ1CvzHf+NGhvP0v
- 1wVf2m2CNQS8Gfphvqr6umDYBytCx9p65MY6gjzwPtJ6T3m0QlN5kXOOY5YxUuY77BRurLexWg8G
- MMUo3KBC6wt6wXTWfe/e/AIAAP//AwAYXmcn7wMAAA==
+ H4sIAAAAAAAAA6RSTW/TQBC98ytWc+nFieI0bYJvSFxKhUAoVEg1itbrsb3E3jE7Y6Vt5P+O/JEP
+ gkAgrvPx5r03bw82hQhMocVUdTlZvtl9TO53z/fr8OEDfXr48tZ8fzd7Wb/e3dELBEDJNzQybkwN
+ VXWJYslBAMajFkwhCm9X89ViHi7DACpKsYQI8lom19ObiTQ+ocnsehZCAA3rHCHaQ+2pqmUjtEXH
+ EIU3q3kAJ/BT43YegJDo8lRaLhZtAKYga5AhetxDhXwA9lQiRKCZLYt20tEkJ+g6CfvYKaVUDFJQ
+ kxfCMURqLI4NfJKuGMOd2tmyVA2jkgKVaN5uRoKoDFWVdqkSUsfaYWoaQ3AO6VEzOevyAXc9jqlC
+ s0oQ3REhVdwYg8xZU5bPqsf/7WXLfTNBFkV159lfkalL7QYeE/X5n6VdgBlvxRrL1cExh9gvouPG
+ d2ta/iyhYUyVIe/RyFHy2VI3k6B1+ZlJGfm+P66pwd9LoVyj3v7/JwfINjgEZxz/JTdOVzhc+wn+
+ gpT2+WXkzjNyCkjtrUFF2fBjoq26eo+pFd09mq9O2cmocWnv285bEexToFVmSzyy7xWMQmLXQhtA
+ Zp3lYjOchQhYqIYArEvxCaJZ+7V99QMAAP//AwBD34ZLKAQAAA==
headers:
CF-Cache-Status:
- DYNAMIC
CF-RAY:
- - 7be49bed8f47ced1-SJC
+ - 7bfe4d9589e6cee1-SJC
Cache-Control:
- no-cache, must-revalidate
Connection:
@@ -1344,7 +724,7 @@ interactions:
Content-Type:
- application/json
Date:
- - Thu, 27 Apr 2023 05:19:22 GMT
+ - Sun, 30 Apr 2023 08:09:41 GMT
Server:
- cloudflare
access-control-allow-origin:
@@ -1356,19 +736,25 @@ interactions:
openai-organization:
- user-adtx4fhfg1qsiyzdoaxciooj
openai-processing-ms:
- - '11504'
+ - '9223'
openai-version:
- '2020-10-01'
strict-transport-security:
- max-age=15724800; includeSubDomains
x-ratelimit-limit-requests:
- '3500'
+ x-ratelimit-limit-tokens:
+ - '90000'
x-ratelimit-remaining-requests:
- '3499'
+ x-ratelimit-remaining-tokens:
+ - '86491'
x-ratelimit-reset-requests:
- 17ms
+ x-ratelimit-reset-tokens:
+ - 2.339s
x-request-id:
- - cd010e2aab478b33c13c4cd5be5292c8
+ - 236ab87ae664fc82d42c2ea35a36b68d
status:
code: 200
message: OK
diff --git a/tests/integration/goal_oriented/cassettes/test_write_file/test_write_file.yaml b/tests/integration/goal_oriented/cassettes/test_write_file/test_write_file.yaml
index 7d21c210d..0e9cab5a5 100644
--- a/tests/integration/goal_oriented/cassettes/test_write_file/test_write_file.yaml
+++ b/tests/integration/goal_oriented/cassettes/test_write_file/test_write_file.yaml
@@ -39,10 +39,91 @@ interactions:
to user\"\n },\n \"command\": {\n \"name\": \"command name\",\n \"args\":
{\n \"arg name\": \"value\"\n }\n }\n} \nEnsure the response
can be parsed by Python json.loads"}, {"role": "system", "content": "The current
- time and date is Tue Jan 01 00:00:00 2000"}, {"role": "system", "content": "This
- reminds you of these events from your past:\n\n\n"}, {"role": "user", "content":
- "Determine which next command to use, and respond using the format specified
- above:"}], "temperature": 0, "max_tokens": 3223}'
+ time and date is Tue Jan 01 00:00:00 2000"}, {"role": "user", "content": "Determine
+ which next command to use, and respond using the format specified above:"}],
+ "temperature": 0, "max_tokens": 2738}'
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '3401'
+ Content-Type:
+ - application/json
+ method: POST
+ uri: https://api.openai.com/v1/chat/completions
+ response:
+ body:
+ string: !!binary |
+ H4sIAAAAAAAAA7yTT2/bMAzF7/sUBC+5KEHSLG3q21a0a6/DiqGoh0C1GVuLLHoSDRsL/N0H2/nT
+ ethp2K581Hs/StQeTYoRJrmWpCjt9OpDfdd8+ni7+Hz3ePOzWa+emqf77Cb1tdzWqJBfvlMihxOz
+ hIvSkhh2qDDxpIVSjBaX64v1+8Xqaqmw4JQsRpiVMl3OVlOp/AtP58v5AhVWQWeE0R5Lz0UpG+Ed
+ uYDR1epa4dn7VL+YLxQKi7an0vXlvFWY5GwSChg977GgcLT1bAkj1CGYINpJB8lOyHUD7GMHABCj
+ 5FxluYQYIzgUDwI10hVjfABHlIIwVIFAcoLaG6GN8GZrLEHCRaFd39ALMLknaxm+srfpBIwTBg19
+ q9MFpTDJO31Td/pMGpnMYlSvsz3pwM64bAD4khOIDjvw9KMyngIU9BdpCnraP85hQi8WHAR0WXou
+ vdFCsGUPkneqDrsxcmm1G2in8PifrinxRkxiQjF+J3Kh8h2DFng4vVrC3lMi54jhHqiRM5Nw39q1
+ jNNCSXp3TKqNtf9yHYbgVh3X9GD625Z2DgPTG4gRuvbZeMEHoes9W4w43piMP8WrmY60PfEBPHYt
+ tgq3xpmQb4Z9xgiDcIkKjUupwWjefmvf/QIAAP//AwCaXwR3hAQAAA==
+ headers:
+ CF-Cache-Status:
+ - DYNAMIC
+ CF-RAY:
+ - 7bfe3ef73b52fac2-SJC
+ Cache-Control:
+ - no-cache, must-revalidate
+ Connection:
+ - keep-alive
+ Content-Encoding:
+ - gzip
+ Content-Type:
+ - application/json
+ Date:
+ - Sun, 30 Apr 2023 07:59:46 GMT
+ Server:
+ - cloudflare
+ access-control-allow-origin:
+ - '*'
+ alt-svc:
+ - h3=":443"; ma=86400, h3-29=":443"; ma=86400
+ openai-model:
+ - gpt-3.5-turbo-0301
+ openai-organization:
+ - user-adtx4fhfg1qsiyzdoaxciooj
+ openai-processing-ms:
+ - '13160'
+ openai-version:
+ - '2020-10-01'
+ strict-transport-security:
+ - max-age=15724800; includeSubDomains
+ x-ratelimit-limit-requests:
+ - '3500'
+ x-ratelimit-limit-tokens:
+ - '90000'
+ x-ratelimit-remaining-requests:
+ - '3499'
+ x-ratelimit-remaining-tokens:
+ - '86497'
+ x-ratelimit-reset-requests:
+ - 17ms
+ x-ratelimit-reset-tokens:
+ - 2.335s
+ x-request-id:
+ - f665162ae22af897be24f632a031d434
+ status:
+ code: 200
+ message: OK
+- request:
+ body: '{"model": "gpt-3.5-turbo", "messages": [{"role": "user", "content": "Your
+ task is to create a concise running summary of actions and information results
+ in the provided text, focusing on key and potentially important information
+ to remember.\n\n\nYou will receive the current summary and the latest development.
+ Combine them, adding relevant key information from the latest development in
+ 1st person past tense and keeping the summary concise.\n\nSummary So Far:\n\"\"\"\nI
+ was created.\n\"\"\"\n\nLatest Development:\n\"\"\"\nNothing new happened.\n\"\"\"\n"}],
+ "temperature": 0, "max_tokens": null}'
headers:
Accept:
- '*/*'
@@ -51,7 +132,7 @@ interactions:
Connection:
- keep-alive
Content-Length:
- - '3490'
+ - '600'
Content-Type:
- application/json
method: POST
@@ -59,20 +140,16 @@ interactions:
response:
body:
string: !!binary |
- H4sIAAAAAAAAA7yTT2/TQBDF73yK0VxycSI3f0jjWwUHisQFAQVhFG3tib3NesfdHSutIn93tLbT
- tEY9gbjOG7/3m9nxEXWOCWalkqyqzXS9ubt53H+68u9+FPeON2vzcb654m/v4/vP3zFCvr2jTIYv
- ZhlXtSHRbDHCzJESyjG5eHs5X62Wi/llhBXnZDDBopbpYraaSuNueRov4guMsPGqIEyOWDuuatkK
- 78l6TNbrZYRn76f6PI4jFBZlnkqb9bKNMCtZZ+Qx+XnEivzJ1rEhTFB5r70oKwGSrZANAxxTCwCQ
- opTcFKX4FBMYioNADxKKKV7DQRsDjSeQkuDgtNBWeLvThiDjqlI2B+FegMkHMobhhp3JJ6CtMCjo
- Wq2qKIdJGfTtIegzeZDJLMXoebAj5dlqW/TpX0qCgpUB7f8iJIIO8lX8YF4SVOwFVF07rp1WQrBj
- B1IGVfn9mLQ2yvaQU/j6n7aTOS060746vY0l6vzJ+sYFBiVwDaqCxmtbdEwZO0eZnHOGZSjp5PDS
- YQGBUMie2s3jONvXpPav30Sg+HdT98FtdDrUwfSPOw0OPdOL1Y/QlSvGJ94LofdsMeJ4YTL+LZ7N
- dKLtiAfw1LbYRrjTVvty2x81JuiFa4xQ25weMInbX+2b3wAAAP//AwAxpIznhgQAAA==
+ H4sIAAAAAAAAA0SOQUsDMRQG7/6K8J2zZdNa3eZmeygiPSqISEmTZze6mxc2r1Qt+9+lUPU6MMOc
+ EAMsfOvE97mrbu+O69X3lJrdks2D2Sy/5o/rp+fgu9ViAw3evZOXizHx3OeOJHKChh/ICQVYc9NM
+ m2szbxqNngN1sNhnqWaTeSWHYcdVPasNNA7F7Qn2hDxwn2Ur/EGpwC6Mxn/6H2sIi+v+gKnrUcO3
+ HD0V2JcTeiq/zYE7goUrJRZxSc6HnITS+f5eHV1Rl2PlUlCJpY1prxIdVeuKal3OlChMMGq8xRRL
+ ux3IFU6wKMIZGjEF+oStx9fx6gcAAP//AwCGJ6JPSQEAAA==
headers:
CF-Cache-Status:
- DYNAMIC
CF-RAY:
- - 7be2da273c20ce54-SJC
+ - 7bfe3f5a5fb3fac2-SJC
Cache-Control:
- no-cache, must-revalidate
Connection:
@@ -82,7 +159,7 @@ interactions:
Content-Type:
- application/json
Date:
- - Thu, 27 Apr 2023 00:12:22 GMT
+ - Sun, 30 Apr 2023 07:59:49 GMT
Server:
- cloudflare
access-control-allow-origin:
@@ -94,19 +171,25 @@ interactions:
openai-organization:
- user-adtx4fhfg1qsiyzdoaxciooj
openai-processing-ms:
- - '14714'
+ - '634'
openai-version:
- '2020-10-01'
strict-transport-security:
- max-age=15724800; includeSubDomains
x-ratelimit-limit-requests:
- '3500'
+ x-ratelimit-limit-tokens:
+ - '90000'
x-ratelimit-remaining-requests:
- '3499'
+ x-ratelimit-remaining-tokens:
+ - '89866'
x-ratelimit-reset-requests:
- 17ms
+ x-ratelimit-reset-tokens:
+ - 88ms
x-request-id:
- - 23366aac1ddcc141fc735b4a1a8b268c
+ - 0bc738f58569b4b3635fe0c8384ebcfb
status:
code: 200
message: OK
@@ -151,23 +234,23 @@ interactions:
{\n \"arg name\": \"value\"\n }\n }\n} \nEnsure the response
can be parsed by Python json.loads"}, {"role": "system", "content": "The current
time and date is Tue Jan 01 00:00:00 2000"}, {"role": "system", "content": "This
- reminds you of these events from your past:\nNone\n\n"}, {"role": "user", "content":
- "Determine which next command to use, and respond using the format specified
- above:"}, {"role": "assistant", "content": "{\n \"thoughts\": {\n \"text\":
+ reminds you of these events from your past: \nI was created and nothing new
+ has happened."}, {"role": "user", "content": "Determine which next command to
+ use, and respond using the format specified above:"}, {"role": "assistant",
+ "content": "{\n \"thoughts\": {\n \"text\": \"I need to use the write_to_file
+ command to write ''Hello World'' into a file named ''hello_world.txt''.\",\n \"reasoning\":
+ \"The task requires me to write ''Hello World'' into a file named ''hello_world.txt'',
+ and the write_to_file command is the most appropriate for this task.\",\n \"plan\":
+ \"- Use the write_to_file command to write ''Hello World'' into a file named
+ ''hello_world.txt''.\",\n \"criticism\": \"I need to ensure that I use
+ the correct file name and text to write to the file.\",\n \"speak\":
\"I will use the write_to_file command to write ''Hello World'' into a file
- named ''hello_world.txt''.\",\n \"reasoning\": \"The goal is to write
- ''Hello World'' into a file named ''hello_world.txt'', and the write_to_file
- command is the most appropriate for this task.\",\n \"plan\": \"- Use
- the write_to_file command to write ''Hello World'' into a file named ''hello_world.txt''.\",\n \"criticism\":
- \"I need to ensure that I am using the correct file name and that the text is
- written correctly.\",\n \"speak\": \"I will use the write to file command
- to write ''Hello World'' into a file named ''hello_world.txt''.\"\n },\n \"command\":
- {\n \"name\": \"write_to_file\",\n \"args\": {\n \"filename\":
- \"hello_world.txt\",\n \"text\": \"Hello World\"\n }\n }\n}"},
- {"role": "system", "content": "Command write_to_file returned: File written
- to successfully."}, {"role": "user", "content": "Determine which next command
- to use, and respond using the format specified above:"}], "temperature": 0,
- "max_tokens": 2970}'
+ named ''hello_world.txt''.\"\n },\n \"command\": {\n \"name\":
+ \"write_to_file\",\n \"args\": {\n \"filename\": \"hello_world.txt\",\n \"text\":
+ \"Hello World\"\n }\n }\n}"}, {"role": "system", "content": "Command
+ write_to_file returned: File written to successfully."}, {"role": "user", "content":
+ "Determine which next command to use, and respond using the format specified
+ above:"}], "temperature": 0, "max_tokens": 2486}'
headers:
Accept:
- '*/*'
@@ -176,7 +259,7 @@ interactions:
Connection:
- keep-alive
Content-Length:
- - '4612'
+ - '4646'
Content-Type:
- application/json
method: POST
@@ -184,19 +267,21 @@ interactions:
response:
body:
string: !!binary |
- H4sIAAAAAAAAA6SSQW8TMRCF7/yK0ZydKkuSttkbAiGFA+JQBIKtItc7Wbvx2pZnFoqi/e9om00T
- QishcZ3x++bNPO/Q1ViisVpMm/zkann/9b3JZnm1XMnHmzfLd7b4IrL6xB++vUWF8e6ejIyKCxPb
- 5ElcDKjQZNJCNZbF5fXrxWI+my8UtrEmjyU2SSazi8VEunwXJ9PZtECFHeuGsNxhyrFNspa4pcBY
- FtPiWuERfmzMLhVKFO2PpWIx7xUaG50hxvL7DlviAzhHT1iiZnYsOshgMwahMKywqwIAQIViY9dY
- 4QpLGItjgx5kKFa4gp/Oe+iYQCyBaN6uR4MEJratDjVIhKfa4dVFheoUmUlzDC40e+6NJWii9uD4
- WbmCR/CLIweZJWgjC+iUckzZaSHYxAxih+4zHpLXYT9+Ap//eyOTnTjjuD1cKhA9KilwlwedFliB
- 1T/oCXZcCbgzhpg3nfe/ztGcSG9fDAD+1e4e2atD3uPzv+IOuqX9tD+ucWZK5+b8p5xGO+Z66q8+
- X/Ko7EdvVeixV7hxwbFd70lYIktMqNCFmh6wnPa3/avfAAAA//8DAKZ6myqyAwAA
+ H4sIAAAAAAAAA7SSTW/TQBCG7/yK0VxycaIkJST4VqmijYSEQEWIYhRt1xN7yXp3uztOgiL/d7Sx
+ TUpJOYC4zuf7zLwHVDmmKEvBsnJ6OL/cXV+9mX2+0+aag7u6vHlvH+7myw/bd2+XmKC9/0aSu46R
+ tJXTxMoaTFB6Ekw5ppNXi+ni5WS2eJ1gZXPSmGLheHgxmg259vd2OL4YTzDBOoiCMD2g87ZyvGK7
+ IRMwnYyn8wRPw0+JxSJBtiz0KTSdzJoEZWmVpIDplwNWFPrB3mrCFEUIKrAwHGVaw2QiwiEzAAAZ
+ cmnrouSQYQpdsEvQnmMwwyWUYksQaikphHWt9XfYecVMBgY3pLWFT9brfADKsAUBa6UJjKgoh0EZ
+ 86tdzI94z4MR3JYEhvYMgcmBCsAW6kDAJQGLsFl18ATSVpUweSz4GeurRhkmj+V6EsEaZYpW821X
+ Bp4eauUpQEVn54BYM/kjjzLFOZ5Y+SeiBI4an1UfCUuCygYG4Zy3zivBBGvrgcuYPYPjtDAtyRA+
+ /vNxZKSTKlT9Qw3RsZNMqH3sEwxLcN5uVU4gYCu0yqG96VFob0hTPLskOBKbfsFOaf13X21HNklv
+ 0K78N3/Gb7Tbfhn/RJTwxVNrP/bL/zB4j3DE6Ggy02CT4FoZFcpVuxtTDGwdJqhMTntMx83X5sUP
+ AAAA//8DAK0qY5KVBAAA
headers:
CF-Cache-Status:
- DYNAMIC
CF-RAY:
- - 7be2da943bd5ce54-SJC
+ - 7bfe3f5edbd9fac2-SJC
Cache-Control:
- no-cache, must-revalidate
Connection:
@@ -206,7 +291,7 @@ interactions:
Content-Type:
- application/json
Date:
- - Thu, 27 Apr 2023 00:12:36 GMT
+ - Sun, 30 Apr 2023 08:00:00 GMT
Server:
- cloudflare
access-control-allow-origin:
@@ -218,19 +303,25 @@ interactions:
openai-organization:
- user-adtx4fhfg1qsiyzdoaxciooj
openai-processing-ms:
- - '10505'
+ - '10898'
openai-version:
- '2020-10-01'
strict-transport-security:
- max-age=15724800; includeSubDomains
x-ratelimit-limit-requests:
- '3500'
+ x-ratelimit-limit-tokens:
+ - '90000'
x-ratelimit-remaining-requests:
- '3499'
+ x-ratelimit-remaining-tokens:
+ - '86482'
x-ratelimit-reset-requests:
- 17ms
+ x-ratelimit-reset-tokens:
+ - 2.345s
x-request-id:
- - f593fff7d415793b53e5124283ad25c9
+ - f294799d2564196ef4852c84fdc8fb17
status:
code: 200
message: OK
diff --git a/tests/test_ai_config.py b/tests/test_ai_config.py
new file mode 100644
index 000000000..a9fcdad68
--- /dev/null
+++ b/tests/test_ai_config.py
@@ -0,0 +1,45 @@
+from autogpt.config.ai_config import AIConfig
+
+"""
+Test cases for the AIConfig class, which handles loads the AI configuration
+settings from a YAML file.
+"""
+
+
+def test_goals_are_always_lists_of_strings(tmp_path):
+ """Test if the goals attribute is always a list of strings."""
+
+ yaml_content = """
+ai_goals:
+- Goal 1: Make a sandwich
+- Goal 2, Eat the sandwich
+- Goal 3 - Go to sleep
+- "Goal 4: Wake up"
+ai_name: McFamished
+ai_role: A hungry AI
+api_budget: 0.0
+"""
+ config_file = tmp_path / "ai_settings.yaml"
+ config_file.write_text(yaml_content)
+
+ ai_config = AIConfig.load(config_file)
+
+ assert len(ai_config.ai_goals) == 4
+ assert ai_config.ai_goals[0] == "Goal 1: Make a sandwich"
+ assert ai_config.ai_goals[1] == "Goal 2, Eat the sandwich"
+ assert ai_config.ai_goals[2] == "Goal 3 - Go to sleep"
+ assert ai_config.ai_goals[3] == "Goal 4: Wake up"
+
+ config_file.write_text("")
+ ai_config.save(config_file)
+
+ yaml_content2 = """ai_goals:
+- 'Goal 1: Make a sandwich'
+- Goal 2, Eat the sandwich
+- Goal 3 - Go to sleep
+- 'Goal 4: Wake up'
+ai_name: McFamished
+ai_role: A hungry AI
+api_budget: 0.0
+"""
+ assert config_file.read_text() == yaml_content2
diff --git a/tests/unit/test_chat.py b/tests/unit/test_chat.py
index 9cb7c625b..77ff94d7b 100644
--- a/tests/unit/test_chat.py
+++ b/tests/unit/test_chat.py
@@ -33,18 +33,14 @@ def test_generate_context_empty_inputs(mocker):
# Assert
expected_result = (
-1,
- 47,
- 3,
+ 32,
+ 2,
[
{"role": "system", "content": ""},
{
"role": "system",
"content": f"The current time and date is {time.strftime('%c')}",
},
- {
- "role": "system",
- "content": f"This reminds you of these events from your past:\n\n\n",
- },
],
)
assert result == expected_result
@@ -78,5 +74,5 @@ def test_generate_context_valid_inputs():
assert result[0] >= 0
assert result[2] >= 0
assert result[1] >= 0
- assert len(result[3]) >= 3 # current_context should have at least 3 messages
+ assert len(result[3]) >= 2 # current_context should have at least 2 messages
assert result[1] <= 2048 # token limit for GPT-3.5-turbo-0301 is 2048 tokens
diff --git a/tests/unit/test_file_operations.py b/tests/unit/test_file_operations.py
index b27606719..f324193a5 100644
--- a/tests/unit/test_file_operations.py
+++ b/tests/unit/test_file_operations.py
@@ -1,12 +1,18 @@
+"""
+This set of unit tests is designed to test the file operations that autoGPT has access to.
+"""
+
import os
-import shutil
-import unittest
from pathlib import Path
+from tempfile import gettempdir
+
+import pytest
from autogpt.commands.file_operations import (
append_to_file,
check_duplicate_operation,
delete_file,
+ download_file,
log_operation,
read_file,
search_files,
@@ -14,118 +20,150 @@ from autogpt.commands.file_operations import (
write_to_file,
)
from autogpt.config import Config
-from autogpt.workspace import Workspace
-
-
-class TestFileOperations(unittest.TestCase):
- """
- This set of unit tests is designed to test the file operations that autoGPT has access to.
- """
-
- def setUp(self):
- self.config = Config()
- workspace_path = os.path.join(os.path.dirname(__file__), "workspace")
- self.workspace_path = Workspace.make_workspace(workspace_path)
- self.config.workspace_path = workspace_path
- self.config.file_logger_path = os.path.join(workspace_path, "file_logger.txt")
- self.workspace = Workspace(workspace_path, restrict_to_workspace=True)
-
- self.test_file = str(self.workspace.get_path("test_file.txt"))
- self.test_file2 = "test_file2.txt"
- self.test_directory = str(self.workspace.get_path("test_directory"))
- self.test_nested_file = str(self.workspace.get_path("nested/test_file.txt"))
- self.file_content = "This is a test file.\n"
- self.file_logger_logs = "file_logger.txt"
-
- with open(self.test_file, "w") as f:
- f.write(self.file_content)
-
- def tearDown(self) -> None:
- shutil.rmtree(self.workspace_path)
-
- def test_check_duplicate_operation(self):
- log_operation("write", self.test_file)
- self.assertTrue(check_duplicate_operation("write", self.test_file))
-
- # Test logging a file operation
- def test_log_operation(self):
- if os.path.exists(self.file_logger_logs):
- os.remove(self.file_logger_logs)
-
- log_operation("log_test", self.test_file)
- with open(self.config.file_logger_path, "r") as f:
- content = f.read()
- self.assertIn(f"log_test: {self.test_file}", content)
-
- # Test splitting a file into chunks
- def test_split_file(self):
- content = "abcdefghij"
- chunks = list(split_file(content, max_length=4, overlap=1))
- expected = ["abcd", "defg", "ghij"]
- self.assertEqual(chunks, expected)
-
- def test_read_file(self):
- content = read_file(self.test_file)
- self.assertEqual(content, self.file_content)
-
- def test_write_to_file(self):
- new_content = "This is new content.\n"
- write_to_file(self.test_nested_file, new_content)
- with open(self.test_nested_file, "r") as f:
- content = f.read()
- self.assertEqual(content, new_content)
-
- def test_append_to_file(self):
- append_text = "This is appended text.\n"
- append_to_file(self.test_nested_file, append_text)
- with open(self.test_nested_file, "r") as f:
- content = f.read()
-
- append_to_file(self.test_nested_file, append_text)
-
- with open(self.test_nested_file, "r") as f:
- content_after = f.read()
-
- self.assertEqual(content_after, append_text + append_text)
-
- def test_delete_file(self):
- delete_file(self.test_file)
- self.assertFalse(os.path.exists(self.test_file))
-
- def test_search_files(self):
- # Case 1: Create files A and B, search for A, and ensure we don't return A and B
- file_a = self.workspace.get_path("file_a.txt")
- file_b = self.workspace.get_path("file_b.txt")
-
- with open(file_a, "w") as f:
- f.write("This is file A.")
-
- with open(file_b, "w") as f:
- f.write("This is file B.")
-
- # Create a subdirectory and place a copy of file_a in it
- if not os.path.exists(self.test_directory):
- os.makedirs(self.test_directory)
-
- with open(os.path.join(self.test_directory, file_a.name), "w") as f:
- f.write("This is file A in the subdirectory.")
-
- files = search_files(str(self.workspace.root))
- self.assertIn(file_a.name, files)
- self.assertIn(file_b.name, files)
- self.assertIn(os.path.join(Path(self.test_directory).name, file_a.name), files)
-
- # Clean up
- os.remove(file_a)
- os.remove(file_b)
- os.remove(os.path.join(self.test_directory, file_a.name))
- os.rmdir(self.test_directory)
-
- # Case 2: Search for a file that does not exist and make sure we don't throw
- non_existent_file = "non_existent_file.txt"
- files = search_files("")
- self.assertNotIn(non_existent_file, files)
-
-
-if __name__ == "__main__":
- unittest.main()
+from autogpt.utils import readable_file_size
+
+
+@pytest.fixture()
+def file_content():
+ return "This is a test file.\n"
+
+
+@pytest.fixture()
+def test_file(workspace, file_content):
+ test_file = str(workspace.get_path("test_file.txt"))
+ with open(test_file, "w") as f:
+ f.write(file_content)
+ return test_file
+
+
+@pytest.fixture()
+def test_directory(workspace):
+ return str(workspace.get_path("test_directory"))
+
+
+@pytest.fixture()
+def test_nested_file(workspace):
+ return str(workspace.get_path("nested/test_file.txt"))
+
+
+def test_check_duplicate_operation(config, test_file):
+ log_operation("write", test_file)
+ assert check_duplicate_operation("write", test_file) is True
+
+
+# Test logging a file operation
+def test_log_operation(test_file, config):
+ file_logger_name = config.file_logger_path
+ if os.path.exists(file_logger_name):
+ os.remove(file_logger_name)
+
+ log_operation("log_test", test_file)
+ with open(config.file_logger_path, "r") as f:
+ content = f.read()
+ assert f"log_test: {test_file}" in content
+
+
+# Test splitting a file into chunks
+def test_split_file():
+ content = "abcdefghij"
+ chunks = list(split_file(content, max_length=4, overlap=1))
+ expected = ["abcd", "defg", "ghij"]
+ assert chunks == expected
+
+
+def test_read_file(test_file, file_content):
+ content = read_file(test_file)
+ assert content == file_content
+
+
+def test_write_to_file(config, test_nested_file):
+ new_content = "This is new content.\n"
+ write_to_file(test_nested_file, new_content)
+ with open(test_nested_file, "r") as f:
+ content = f.read()
+ assert content == new_content
+
+
+def test_append_to_file(test_nested_file):
+ append_text = "This is appended text.\n"
+ write_to_file(test_nested_file, append_text)
+
+ append_to_file(test_nested_file, append_text)
+
+ with open(test_nested_file, "r") as f:
+ content_after = f.read()
+
+ assert content_after == append_text + append_text
+
+
+def test_delete_file(config, test_file):
+ delete_file(test_file)
+ assert os.path.exists(test_file) is False
+ assert delete_file(test_file) == "Error: File has already been deleted."
+
+
+def test_delete_missing_file(test_file):
+ os.remove(test_file)
+ try:
+ os.remove(test_file)
+ except FileNotFoundError as e:
+ error_string = str(e)
+ assert error_string in delete_file(test_file)
+ return
+ assert True, "Failed to test delete_file"
+
+
+def test_search_files(config, workspace, test_directory):
+ # Case 1: Create files A and B, search for A, and ensure we don't return A and B
+ file_a = workspace.get_path("file_a.txt")
+ file_b = workspace.get_path("file_b.txt")
+
+ with open(file_a, "w") as f:
+ f.write("This is file A.")
+
+ with open(file_b, "w") as f:
+ f.write("This is file B.")
+
+ # Create a subdirectory and place a copy of file_a in it
+ if not os.path.exists(test_directory):
+ os.makedirs(test_directory)
+
+ with open(os.path.join(test_directory, file_a.name), "w") as f:
+ f.write("This is file A in the subdirectory.")
+
+ files = search_files(str(workspace.root))
+ assert file_a.name in files
+ assert file_b.name in files
+ assert os.path.join(Path(test_directory).name, file_a.name) in files
+
+ # Clean up
+ os.remove(file_a)
+ os.remove(file_b)
+ os.remove(os.path.join(test_directory, file_a.name))
+ os.rmdir(test_directory)
+
+ # Case 2: Search for a file that does not exist and make sure we don't throw
+ non_existent_file = "non_existent_file.txt"
+ files = search_files("")
+ assert non_existent_file not in files
+
+
+def test_download_file():
+ url = "https://github.com/Significant-Gravitas/Auto-GPT/archive/refs/tags/v0.2.2.tar.gz"
+ local_name = os.path.join(gettempdir(), "auto-gpt.tar.gz")
+ size = 365023
+ readable_size = readable_file_size(size)
+ assert (
+ download_file(url, local_name)
+ == f'Successfully downloaded and locally stored file: "{local_name}"! (Size: {readable_size})'
+ )
+ assert os.path.isfile(local_name) is True
+ assert os.path.getsize(local_name) == size
+
+ url = "https://github.com/Significant-Gravitas/Auto-GPT/archive/refs/tags/v0.0.0.tar.gz"
+ assert "Got an HTTP Error whilst trying to download file" in download_file(
+ url, local_name
+ )
+
+ url = "https://thiswebsiteiswrong.hmm/v0.0.0.tar.gz"
+ assert "Failed to establish a new connection:" in download_file(url, local_name)
diff --git a/tests/unit/test_spinner.py b/tests/unit/test_spinner.py
index 16106f429..1c5c3ac00 100644
--- a/tests/unit/test_spinner.py
+++ b/tests/unit/test_spinner.py
@@ -1,6 +1,5 @@
# Generated by CodiumAI
import time
-import unittest
from autogpt.spinner import Spinner
@@ -29,40 +28,43 @@ ALMOST_DONE_MESSAGE = "Almost done..."
PLEASE_WAIT = "Please wait..."
-class TestSpinner(unittest.TestCase):
- def test_spinner_initializes_with_default_values(self):
- """Tests that the spinner initializes with default values."""
- with Spinner() as spinner:
- self.assertEqual(spinner.message, "Loading...")
- self.assertEqual(spinner.delay, 0.1)
-
- def test_spinner_initializes_with_custom_values(self):
- """Tests that the spinner initializes with custom message and delay values."""
- with Spinner(message=PLEASE_WAIT, delay=0.2) as spinner:
- self.assertEqual(spinner.message, PLEASE_WAIT)
- self.assertEqual(spinner.delay, 0.2)
-
- #
- def test_spinner_stops_spinning(self):
- """Tests that the spinner starts spinning and stops spinning without errors."""
- with Spinner() as spinner:
- time.sleep(1)
- spinner.update_message(ALMOST_DONE_MESSAGE)
- time.sleep(1)
- self.assertFalse(spinner.running)
-
- def test_spinner_updates_message_and_still_spins(self):
- """Tests that the spinner message can be updated while the spinner is running and the spinner continues spinning."""
- with Spinner() as spinner:
- self.assertTrue(spinner.running)
- time.sleep(1)
- spinner.update_message(ALMOST_DONE_MESSAGE)
- time.sleep(1)
- self.assertEqual(spinner.message, ALMOST_DONE_MESSAGE)
- self.assertFalse(spinner.running)
-
- def test_spinner_can_be_used_as_context_manager(self):
- """Tests that the spinner can be used as a context manager."""
- with Spinner() as spinner:
- self.assertTrue(spinner.running)
- self.assertFalse(spinner.running)
+def test_spinner_initializes_with_default_values():
+ """Tests that the spinner initializes with default values."""
+ with Spinner() as spinner:
+ assert spinner.message == "Loading..."
+ assert spinner.delay == 0.1
+
+
+def test_spinner_initializes_with_custom_values():
+ """Tests that the spinner initializes with custom message and delay values."""
+ with Spinner(message=PLEASE_WAIT, delay=0.2) as spinner:
+ assert spinner.message == PLEASE_WAIT
+ assert spinner.delay == 0.2
+
+
+#
+def test_spinner_stops_spinning():
+ """Tests that the spinner starts spinning and stops spinning without errors."""
+ with Spinner() as spinner:
+ time.sleep(1)
+ spinner.update_message(ALMOST_DONE_MESSAGE)
+ time.sleep(1)
+ assert spinner.running == False
+
+
+def test_spinner_updates_message_and_still_spins():
+ """Tests that the spinner message can be updated while the spinner is running and the spinner continues spinning."""
+ with Spinner() as spinner:
+ assert spinner.running == True
+ time.sleep(1)
+ spinner.update_message(ALMOST_DONE_MESSAGE)
+ time.sleep(1)
+ assert spinner.message == ALMOST_DONE_MESSAGE
+ assert spinner.running == False
+
+
+def test_spinner_can_be_used_as_context_manager():
+ """Tests that the spinner can be used as a context manager."""
+ with Spinner() as spinner:
+ assert spinner.running == True
+ assert spinner.running == False
diff --git a/tests/vcr/openai_filter.py b/tests/vcr/openai_filter.py
index b18b694b8..15a4b862a 100644
--- a/tests/vcr/openai_filter.py
+++ b/tests/vcr/openai_filter.py
@@ -41,7 +41,10 @@ def before_record_request(request):
def filter_hostnames(request):
- allowed_hostnames = ["api.openai.com"] # List of hostnames you want to allow
+ allowed_hostnames = [
+ "api.openai.com",
+ "localhost:50337",
+ ] # List of hostnames you want to allow
if any(hostname in request.url for hostname in allowed_hostnames):
return request