mirror of
https://git.mirrors.martin98.com/https://github.com/langgenius/dify.git
synced 2025-08-12 04:29:07 +08:00
fix incorrect exception raised by api tool which leads to incorrect L… (#2886)
Co-authored-by: OSS-MAOLONGDONG\kaihong <maolongdong@kaihong.com>
This commit is contained in:
parent
8133ba16b1
commit
53d428907b
@ -9,7 +9,7 @@ import requests
|
|||||||
import core.helper.ssrf_proxy as ssrf_proxy
|
import core.helper.ssrf_proxy as ssrf_proxy
|
||||||
from core.tools.entities.tool_bundle import ApiBasedToolBundle
|
from core.tools.entities.tool_bundle import ApiBasedToolBundle
|
||||||
from core.tools.entities.tool_entities import ToolInvokeMessage
|
from core.tools.entities.tool_entities import ToolInvokeMessage
|
||||||
from core.tools.errors import ToolProviderCredentialValidationError
|
from core.tools.errors import ToolInvokeError, ToolParameterValidationError, ToolProviderCredentialValidationError
|
||||||
from core.tools.tool.tool import Tool
|
from core.tools.tool.tool import Tool
|
||||||
|
|
||||||
API_TOOL_DEFAULT_TIMEOUT = (10, 60)
|
API_TOOL_DEFAULT_TIMEOUT = (10, 60)
|
||||||
@ -81,7 +81,7 @@ class ApiTool(Tool):
|
|||||||
needed_parameters = [parameter for parameter in self.api_bundle.parameters if parameter.required]
|
needed_parameters = [parameter for parameter in self.api_bundle.parameters if parameter.required]
|
||||||
for parameter in needed_parameters:
|
for parameter in needed_parameters:
|
||||||
if parameter.required and parameter.name not in parameters:
|
if parameter.required and parameter.name not in parameters:
|
||||||
raise ToolProviderCredentialValidationError(f"Missing required parameter {parameter.name}")
|
raise ToolParameterValidationError(f"Missing required parameter {parameter.name}")
|
||||||
|
|
||||||
if parameter.default is not None and parameter.name not in parameters:
|
if parameter.default is not None and parameter.name not in parameters:
|
||||||
parameters[parameter.name] = parameter.default
|
parameters[parameter.name] = parameter.default
|
||||||
@ -94,7 +94,7 @@ class ApiTool(Tool):
|
|||||||
"""
|
"""
|
||||||
if isinstance(response, httpx.Response):
|
if isinstance(response, httpx.Response):
|
||||||
if response.status_code >= 400:
|
if response.status_code >= 400:
|
||||||
raise ToolProviderCredentialValidationError(f"Request failed with status code {response.status_code}")
|
raise ToolInvokeError(f"Request failed with status code {response.status_code} and {response.text}")
|
||||||
if not response.content:
|
if not response.content:
|
||||||
return 'Empty response from the tool, please check your parameters and try again.'
|
return 'Empty response from the tool, please check your parameters and try again.'
|
||||||
try:
|
try:
|
||||||
@ -107,7 +107,7 @@ class ApiTool(Tool):
|
|||||||
return response.text
|
return response.text
|
||||||
elif isinstance(response, requests.Response):
|
elif isinstance(response, requests.Response):
|
||||||
if not response.ok:
|
if not response.ok:
|
||||||
raise ToolProviderCredentialValidationError(f"Request failed with status code {response.status_code}")
|
raise ToolInvokeError(f"Request failed with status code {response.status_code} and {response.text}")
|
||||||
if not response.content:
|
if not response.content:
|
||||||
return 'Empty response from the tool, please check your parameters and try again.'
|
return 'Empty response from the tool, please check your parameters and try again.'
|
||||||
try:
|
try:
|
||||||
@ -139,7 +139,7 @@ class ApiTool(Tool):
|
|||||||
if parameter['name'] in parameters:
|
if parameter['name'] in parameters:
|
||||||
value = parameters[parameter['name']]
|
value = parameters[parameter['name']]
|
||||||
elif parameter['required']:
|
elif parameter['required']:
|
||||||
raise ToolProviderCredentialValidationError(f"Missing required parameter {parameter['name']}")
|
raise ToolParameterValidationError(f"Missing required parameter {parameter['name']}")
|
||||||
else:
|
else:
|
||||||
value = (parameter.get('schema', {}) or {}).get('default', '')
|
value = (parameter.get('schema', {}) or {}).get('default', '')
|
||||||
path_params[parameter['name']] = value
|
path_params[parameter['name']] = value
|
||||||
@ -149,7 +149,7 @@ class ApiTool(Tool):
|
|||||||
if parameter['name'] in parameters:
|
if parameter['name'] in parameters:
|
||||||
value = parameters[parameter['name']]
|
value = parameters[parameter['name']]
|
||||||
elif parameter['required']:
|
elif parameter['required']:
|
||||||
raise ToolProviderCredentialValidationError(f"Missing required parameter {parameter['name']}")
|
raise ToolParameterValidationError(f"Missing required parameter {parameter['name']}")
|
||||||
else:
|
else:
|
||||||
value = (parameter.get('schema', {}) or {}).get('default', '')
|
value = (parameter.get('schema', {}) or {}).get('default', '')
|
||||||
params[parameter['name']] = value
|
params[parameter['name']] = value
|
||||||
@ -159,7 +159,7 @@ class ApiTool(Tool):
|
|||||||
if parameter['name'] in parameters:
|
if parameter['name'] in parameters:
|
||||||
value = parameters[parameter['name']]
|
value = parameters[parameter['name']]
|
||||||
elif parameter['required']:
|
elif parameter['required']:
|
||||||
raise ToolProviderCredentialValidationError(f"Missing required parameter {parameter['name']}")
|
raise ToolParameterValidationError(f"Missing required parameter {parameter['name']}")
|
||||||
else:
|
else:
|
||||||
value = (parameter.get('schema', {}) or {}).get('default', '')
|
value = (parameter.get('schema', {}) or {}).get('default', '')
|
||||||
cookies[parameter['name']] = value
|
cookies[parameter['name']] = value
|
||||||
@ -169,7 +169,7 @@ class ApiTool(Tool):
|
|||||||
if parameter['name'] in parameters:
|
if parameter['name'] in parameters:
|
||||||
value = parameters[parameter['name']]
|
value = parameters[parameter['name']]
|
||||||
elif parameter['required']:
|
elif parameter['required']:
|
||||||
raise ToolProviderCredentialValidationError(f"Missing required parameter {parameter['name']}")
|
raise ToolParameterValidationError(f"Missing required parameter {parameter['name']}")
|
||||||
else:
|
else:
|
||||||
value = (parameter.get('schema', {}) or {}).get('default', '')
|
value = (parameter.get('schema', {}) or {}).get('default', '')
|
||||||
headers[parameter['name']] = value
|
headers[parameter['name']] = value
|
||||||
@ -188,7 +188,7 @@ class ApiTool(Tool):
|
|||||||
# convert type
|
# convert type
|
||||||
body[name] = self._convert_body_property_type(property, parameters[name])
|
body[name] = self._convert_body_property_type(property, parameters[name])
|
||||||
elif name in required:
|
elif name in required:
|
||||||
raise ToolProviderCredentialValidationError(
|
raise ToolParameterValidationError(
|
||||||
f"Missing required parameter {name} in operation {self.api_bundle.operation_id}"
|
f"Missing required parameter {name} in operation {self.api_bundle.operation_id}"
|
||||||
)
|
)
|
||||||
elif 'default' in property:
|
elif 'default' in property:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user