Adds full file I/O

This commit is contained in:
Torantulino
2023-04-01 04:08:30 +01:00
parent 2553dc1538
commit a608d8dbdc
3 changed files with 64 additions and 11 deletions

View File

@@ -5,6 +5,7 @@ import datetime
import agent_manager as agents import agent_manager as agents
import speak import speak
from config import Config from config import Config
from file_operations import read_file, write_to_file, append_to_file, delete_file
cfg = Config() cfg = Config()
@@ -55,8 +56,14 @@ def execute_command(command_name, arguments):
return get_text_summary(arguments["url"]) return get_text_summary(arguments["url"])
elif command_name == "get_hyperlinks": elif command_name == "get_hyperlinks":
return get_hyperlinks(arguments["url"]) return get_hyperlinks(arguments["url"])
elif command_name == "read_file":
return read_file(arguments["file"])
elif command_name == "write_to_file": elif command_name == "write_to_file":
return write_to_file(arguments["file"], arguments["text"]) return write_to_file(arguments["file"], arguments["text"])
elif command_name == "append_to_file":
return append_to_file(arguments["file"], arguments["text"])
elif command_name == "delete_file":
return delete_file(arguments["file"])
elif command_name == "browse_website": elif command_name == "browse_website":
return browse_website(arguments["url"]) return browse_website(arguments["url"])
elif command_name == "task_complete": elif command_name == "task_complete":
@@ -130,15 +137,6 @@ def overwrite_memory(key, string):
print("Invalid key, cannot overwrite memory.") print("Invalid key, cannot overwrite memory.")
return None return None
def write_to_file(filename, text):
try:
f = open(filename, "w")
f.write(text)
f.close()
except Exception as e:
return "Error: " + str(e)
return "File written to successfully."
def shutdown(): def shutdown():
print("Shutting down...") print("Shutting down...")
quit() quit()

View File

@@ -16,7 +16,10 @@ COMMANDS:
9. List GPT Agents: "list_agents", args: "" 9. List GPT Agents: "list_agents", args: ""
10. Delete GPT Agent: "delete_agent", args: "key": "<key>" 10. Delete GPT Agent: "delete_agent", args: "key": "<key>"
11. Write to file: "write_to_file", args: "file": "<file>", "text": "<text>" 11. Write to file: "write_to_file", args: "file": "<file>", "text": "<text>"
12. Task Complete (Shutdown): "task_complete", args: "reason": "<reason>" 12. Read file: "read_file", args: "file": "<file>"
13. Append to file: "append_to_file", args: "file": "<file>", "text": "<text>"
14. Delete file: "delete_file", args: "file": "<file>"
15. Task Complete (Shutdown): "task_complete", args: "reason": "<reason>"
RESOURCES: RESOURCES:
@@ -50,4 +53,4 @@ RESPONSE FORMAT:
"criticism": "constructive self-criticism" "criticism": "constructive self-criticism"
"speak": "thoughts summary to say to user" "speak": "thoughts summary to say to user"
} }
} }

View File

@@ -0,0 +1,52 @@
import os
import os.path
# Set a dedicated folder for file I/O
working_directory = "auto_gpt_workspace"
if not os.path.exists(working_directory):
os.makedirs(working_directory)
def safe_join(base, *paths):
new_path = os.path.join(base, *paths)
norm_new_path = os.path.normpath(new_path)
if os.path.commonprefix([base, norm_new_path]) != base:
raise ValueError("Attempted to access outside of working directory.")
return norm_new_path
def read_file(filename):
try:
filepath = safe_join(working_directory, filename)
with open(filepath, "r") as f:
content = f.read()
return content
except Exception as e:
return "Error: " + str(e)
def write_to_file(filename, text):
try:
filepath = safe_join(working_directory, filename)
with open(filepath, "w") as f:
f.write(text)
return "File written to successfully."
except Exception as e:
return "Error: " + str(e)
def append_to_file(filename, text):
try:
filepath = safe_join(working_directory, filename)
with open(filepath, "a") as f:
f.write(text)
return "Text appended successfully."
except Exception as e:
return "Error: " + str(e)
def delete_file(filename):
try:
filepath = safe_join(working_directory, filename)
os.remove(filepath)
return "File deleted successfully."
except Exception as e:
return "Error: " + str(e)