Skip to content

Commit

Permalink
Merge pull request Significant-Gravitas#208 from slavakurilyak/add_is…
Browse files Browse the repository at this point in the history
…_valid_int_and_key_validation

Improve Key Validation and Handling in Overwrite Memory and Message Agent Functions
  • Loading branch information
Torantulino authored Apr 6, 2023
2 parents ec465c8 + dcc29a5 commit c92eebc
Showing 1 changed file with 35 additions and 7 deletions.
42 changes: 35 additions & 7 deletions scripts/commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,13 @@
cfg = Config()


def is_valid_int(value):
try:
int(value)
return True
except ValueError:
return False

def get_command(response):
try:
response_json = fix_and_parse_json(response)
Expand Down Expand Up @@ -194,14 +201,28 @@ def delete_memory(key):


def overwrite_memory(key, string):
if int(key) >= 0 and key < len(mem.permanent_memory):
_text = "Overwriting memory with key " + \
str(key) + " and string " + string
# Check if the key is a valid integer
if is_valid_int(key):
key_int = int(key)
# Check if the integer key is within the range of the permanent_memory list
if 0 <= key_int < len(mem.permanent_memory):
_text = "Overwriting memory with key " + str(key) + " and string " + string
# Overwrite the memory slot with the given integer key and string
mem.permanent_memory[key_int] = string
print(_text)
return _text
else:
print(f"Invalid key '{key}', out of range.")
return None
# Check if the key is a valid string
elif isinstance(key, str):
_text = "Overwriting memory with key " + key + " and string " + string
# Overwrite the memory slot with the given string key and string
mem.permanent_memory[key] = string
print(_text)
return _text
else:
print("Invalid key, cannot overwrite memory.")
print(f"Invalid key '{key}', must be an integer or a string.")
return None


Expand Down Expand Up @@ -235,13 +256,20 @@ def start_agent(name, task, prompt, model=cfg.fast_llm_model):

def message_agent(key, message):
global cfg
agent_response = agents.message_agent(key, message)

# Check if the key is a valid integer
if is_valid_int(key):
agent_response = agents.message_agent(int(key), message)
# Check if the key is a valid string
elif isinstance(key, str):
agent_response = agents.message_agent(key, message)
else:
return "Invalid key, must be an integer or a string."

# Speak response
if cfg.speak_mode:
speak.say_text(agent_response, 1)

return f"Agent {key} responded: {agent_response}"
return agent_response


def list_agents():
Expand Down

0 comments on commit c92eebc

Please sign in to comment.