diff options
author | Reinier van der Leer <pwuts@agpt.co> | 2024-04-24 18:59:13 +0200 |
---|---|---|
committer | Reinier van der Leer <pwuts@agpt.co> | 2024-04-24 18:59:13 +0200 |
commit | f93c743d034cedaeffadebfb89d6a0f4fe80eec1 (patch) | |
tree | b54a6d75b63f73e04300217347cc05039a6b2e9c | |
parent | fix(agent): Expand failure check in `json_loads(..)` (diff) | |
download | Auto-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.py | 11 |
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, |