aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Reinier van der Leer <pwuts@agpt.co> 2024-04-24 18:59:13 +0200
committerGravatar Reinier van der Leer <pwuts@agpt.co> 2024-04-24 18:59:13 +0200
commitf93c743d034cedaeffadebfb89d6a0f4fe80eec1 (patch)
treeb54a6d75b63f73e04300217347cc05039a6b2e9c
parentfix(agent): Expand failure check in `json_loads(..)` (diff)
downloadAuto-GPT-f93c743d034cedaeffadebfb89d6a0f4fe80eec1.tar.gz
Auto-GPT-f93c743d034cedaeffadebfb89d6a0f4fe80eec1.tar.bz2
Auto-GPT-f93c743d034cedaeffadebfb89d6a0f4fe80eec1.zip
fix(agent): Fix `OneShotAgentPromptStrategy` parser when using functions/tools API
Also: - Improve error message when the LLM doesn't call any tools
-rw-r--r--autogpts/autogpt/autogpt/agents/prompt_strategies/one_shot.py11
1 files changed, 9 insertions, 2 deletions
diff --git a/autogpts/autogpt/autogpt/agents/prompt_strategies/one_shot.py b/autogpts/autogpt/autogpt/agents/prompt_strategies/one_shot.py
index 72230f41f..0be7b8673 100644
--- a/autogpts/autogpt/autogpt/agents/prompt_strategies/one_shot.py
+++ b/autogpts/autogpt/autogpt/agents/prompt_strategies/one_shot.py
@@ -327,7 +327,14 @@ class OneShotAgentPromptStrategy(PromptStrategy):
f"{json.dumps(assistant_reply_dict, indent=4)}"
)
- _, errors = self.response_schema.validate_object(assistant_reply_dict)
+ response_schema = self.response_schema.copy(deep=True)
+ if (
+ self.config.use_functions_api
+ and response_schema.properties
+ and "command" in response_schema.properties
+ ):
+ del response_schema.properties["command"]
+ _, errors = response_schema.validate_object(assistant_reply_dict)
if errors:
raise InvalidAgentResponseError(
"Validation of response failed:\n "
@@ -372,7 +379,7 @@ def extract_command(
"""
if use_openai_functions_api:
if not assistant_reply.tool_calls:
- raise InvalidAgentResponseError("No 'tool_calls' in assistant reply")
+ raise InvalidAgentResponseError("Assistant did not use any tools")
assistant_reply_json["command"] = {
"name": assistant_reply.tool_calls[0].function.name,
"args": assistant_reply.tool_calls[0].function.arguments,