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 6add645597
commit f93c743d03

View File

@@ -327,7 +327,14 @@ class OneShotAgentPromptStrategy(PromptStrategy):
f"{json.dumps(assistant_reply_dict, indent=4)}" 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: if errors:
raise InvalidAgentResponseError( raise InvalidAgentResponseError(
"Validation of response failed:\n " "Validation of response failed:\n "
@@ -372,7 +379,7 @@ def extract_command(
""" """
if use_openai_functions_api: if use_openai_functions_api:
if not assistant_reply.tool_calls: 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"] = { assistant_reply_json["command"] = {
"name": assistant_reply.tool_calls[0].function.name, "name": assistant_reply.tool_calls[0].function.name,
"args": assistant_reply.tool_calls[0].function.arguments, "args": assistant_reply.tool_calls[0].function.arguments,