fix(agent): Fix OneShotAgentPromptStrategy parser when using functions/tools API

Also:
- Improve error message when the LLM doesn't call any tools
This commit is contained in:
Reinier van der Leer
2024-04-24 18:59:13 +02:00
parent d2260bec5a
commit 7d727d1b54

View File

@@ -392,7 +392,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 "
@@ -433,7 +440,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,