Selaa lähdekoodia

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
Rain6435 2 kuukautta sitten
vanhempi
commit
30540cb40e
1 muutettua tiedostoa jossa 7 lisäystä ja 1 poistoa
  1. 7 1
      backend/open_webui/utils/tools.py

+ 7 - 1
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)