From 30540cb40e6d3040d03a7da6dc243bcece1377c6 Mon Sep 17 00:00:00 2001 From: Rain6435 Date: Thu, 7 Aug 2025 01:21:22 -0400 Subject: [PATCH] fix: include items property in OpenAPI array parameters for OpenAI function calling Resolves issue where OpenAPI specs with array query parameters were generating invalid OpenAI function schemas missing the required 'items' property, causing 400 Bad Request errors from OpenAI. The fix ensures that when converting OpenAPI parameter schemas to OpenAI function schemas, array parameters properly include their 'items' property definition. Fixes open-webui/open-webui#14115 --- backend/open_webui/utils/tools.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/backend/open_webui/utils/tools.py b/backend/open_webui/utils/tools.py index 02c8b3a86b..915df6c89f 100644 --- a/backend/open_webui/utils/tools.py +++ b/backend/open_webui/utils/tools.py @@ -399,10 +399,16 @@ def convert_openapi_to_tool_payload(openapi_spec): description += ( f". Possible values: {', '.join(param_schema.get('enum'))}" ) - tool["parameters"]["properties"][param_name] = { + param_property = { "type": param_schema.get("type"), "description": description, } + + # Include items property for array types (required by OpenAI) + if param_schema.get("type") == "array" and "items" in param_schema: + param_property["items"] = param_schema["items"] + + tool["parameters"]["properties"][param_name] = param_property if param.get("required"): tool["parameters"]["required"].append(param_name)