Forráskód Böngészése

Add default values for optional parameters in API tool and parser (#2491)

Yeuoly 1 éve
szülő
commit
25957d917a
2 módosított fájl, 9 hozzáadás és 1 törlés
  1. 8 0
      api/core/tools/tool/api_tool.py
  2. 1 1
      api/core/tools/utils/parser.py

+ 8 - 0
api/core/tools/tool/api_tool.py

@@ -127,6 +127,8 @@ class ApiTool(Tool):
                     value = parameters[parameter['name']]
                 elif parameter['required']:
                     raise ToolProviderCredentialValidationError(f"Missing required parameter {parameter['name']}")
+                else:
+                    value = (parameter.get('schema', {}) or {}).get('default', '')
                 path_params[parameter['name']] = value
 
             elif parameter['in'] == 'query':
@@ -135,6 +137,8 @@ class ApiTool(Tool):
                     value = parameters[parameter['name']]
                 elif parameter['required']:
                     raise ToolProviderCredentialValidationError(f"Missing required parameter {parameter['name']}")
+                else:
+                    value = (parameter.get('schema', {}) or {}).get('default', '')
                 params[parameter['name']] = value
 
             elif parameter['in'] == 'cookie':
@@ -143,6 +147,8 @@ class ApiTool(Tool):
                     value = parameters[parameter['name']]
                 elif parameter['required']:
                     raise ToolProviderCredentialValidationError(f"Missing required parameter {parameter['name']}")
+                else:
+                    value = (parameter.get('schema', {}) or {}).get('default', '')
                 cookies[parameter['name']] = value
 
             elif parameter['in'] == 'header':
@@ -151,6 +157,8 @@ class ApiTool(Tool):
                     value = parameters[parameter['name']]
                 elif parameter['required']:
                     raise ToolProviderCredentialValidationError(f"Missing required parameter {parameter['name']}")
+                else:
+                    value = (parameter.get('schema', {}) or {}).get('default', '')
                 headers[parameter['name']] = value
 
         # check if there is a request body and handle it

+ 1 - 1
api/core/tools/utils/parser.py

@@ -60,7 +60,7 @@ class ApiBasedToolSchemaParser:
                         required=parameter.get('required', False),
                         form=ToolParameter.ToolParameterForm.LLM,
                         llm_description=parameter.get('description'),
-                        default=parameter['default'] if 'default' in parameter else None,
+                        default=parameter['schema']['default'] if 'schema' in parameter and 'default' in parameter['schema'] else None,
                     ))
             # create tool bundle
             # check if there is a request body