mirror of
https://github.com/PaddlePaddle/FastDeploy.git
synced 2025-10-07 01:22:59 +08:00
Bugfix test exception (#4171)
* feat(log):add_request_and_response_log * modify default error type
This commit is contained in:
@@ -87,7 +87,7 @@ class OpenAIServingChat:
|
||||
f"Only master node can accept completion request, please send request to master node: {self.master_ip}"
|
||||
)
|
||||
api_server_logger.error(err_msg)
|
||||
return ErrorResponse(error=ErrorInfo(message=err_msg, type=ErrorType.SERVER_ERROR))
|
||||
return ErrorResponse(error=ErrorInfo(message=err_msg, type=ErrorType.INTERNAL_ERROR))
|
||||
|
||||
if self.models:
|
||||
is_supported, request.model = self.models.is_supported_model(request.model)
|
||||
@@ -95,7 +95,7 @@ class OpenAIServingChat:
|
||||
err_msg = f"Unsupported model: [{request.model}], support [{', '.join([x.name for x in self.models.model_paths])}] or default"
|
||||
api_server_logger.error(err_msg)
|
||||
return ErrorResponse(
|
||||
error=ErrorInfo(message=err_msg, type=ErrorType.SERVER_ERROR, code=ErrorCode.MODEL_NOT_SUPPORT)
|
||||
error=ErrorInfo(message=err_msg, type=ErrorType.INTERNAL_ERROR, code=ErrorCode.MODEL_NOT_SUPPORT)
|
||||
)
|
||||
|
||||
try:
|
||||
@@ -145,7 +145,7 @@ class OpenAIServingChat:
|
||||
except Exception as e:
|
||||
error_msg = f"request[{request_id}]full generator error: {str(e)}, {str(traceback.format_exc())}"
|
||||
api_server_logger.error(error_msg)
|
||||
return ErrorResponse(error=ErrorInfo(message=error_msg, type=ErrorType.SERVER_ERROR))
|
||||
return ErrorResponse(error=ErrorInfo(message=error_msg, type=ErrorType.INTERNAL_ERROR))
|
||||
except Exception as e:
|
||||
error_msg = (
|
||||
f"request[{request_id}] waiting error: {str(e)}, {str(traceback.format_exc())}, "
|
||||
@@ -158,7 +158,7 @@ class OpenAIServingChat:
|
||||
|
||||
def _create_streaming_error_response(self, message: str) -> str:
|
||||
api_server_logger.error(message)
|
||||
error_response = ErrorResponse(error=ErrorInfo(message=message, type=ErrorType.SERVER_ERROR))
|
||||
error_response = ErrorResponse(error=ErrorInfo(message=message, type=ErrorType.INTERNAL_ERROR))
|
||||
return error_response.model_dump_json()
|
||||
|
||||
async def chat_completion_stream_generator(
|
||||
|
@@ -64,14 +64,14 @@ class OpenAIServingCompletion:
|
||||
f"Only master node can accept completion request, please send request to master node: {self.master_ip}"
|
||||
)
|
||||
api_server_logger.error(err_msg)
|
||||
return ErrorResponse(error=ErrorInfo(message=err_msg, type=ErrorType.SERVER_ERROR))
|
||||
return ErrorResponse(error=ErrorInfo(message=err_msg, type=ErrorType.INTERNAL_ERROR))
|
||||
if self.models:
|
||||
is_supported, request.model = self.models.is_supported_model(request.model)
|
||||
if not is_supported:
|
||||
err_msg = f"Unsupported model: [{request.model}], support [{', '.join([x.name for x in self.models.model_paths])}] or default"
|
||||
api_server_logger.error(err_msg)
|
||||
return ErrorResponse(
|
||||
error=ErrorInfo(message=err_msg, type=ErrorType.SERVER_ERROR, code=ErrorCode.MODEL_NOT_SUPPORT)
|
||||
error=ErrorInfo(message=err_msg, type=ErrorType.INTERNAL_ERROR, code=ErrorCode.MODEL_NOT_SUPPORT)
|
||||
)
|
||||
created_time = int(time.time())
|
||||
if request.user is not None:
|
||||
@@ -115,7 +115,7 @@ class OpenAIServingCompletion:
|
||||
except Exception as e:
|
||||
error_msg = f"OpenAIServingCompletion create_completion: {e}, {str(traceback.format_exc())}"
|
||||
api_server_logger.error(error_msg)
|
||||
return ErrorResponse(error=ErrorInfo(message=error_msg, type=ErrorType.SERVER_ERROR))
|
||||
return ErrorResponse(error=ErrorInfo(message=error_msg, type=ErrorType.INTERNAL_ERROR))
|
||||
|
||||
if request_prompt_ids is not None:
|
||||
request_prompts = request_prompt_ids
|
||||
@@ -189,12 +189,12 @@ class OpenAIServingCompletion:
|
||||
f"OpenAIServingCompletion completion_full_generator error: {e}, {str(traceback.format_exc())}"
|
||||
)
|
||||
api_server_logger.error(error_msg)
|
||||
return ErrorResponse(error=ErrorInfo(message=error_msg, type=ErrorType.SERVER_ERROR))
|
||||
return ErrorResponse(error=ErrorInfo(message=error_msg, type=ErrorType.INTERNAL_ERROR))
|
||||
|
||||
except Exception as e:
|
||||
error_msg = f"OpenAIServingCompletion create_completion error: {e}, {str(traceback.format_exc())}"
|
||||
api_server_logger.error(error_msg)
|
||||
return ErrorResponse(error=ErrorInfo(message=error_msg, type=ErrorType.SERVER_ERROR))
|
||||
return ErrorResponse(error=ErrorInfo(message=error_msg, type=ErrorType.INTERNAL_ERROR))
|
||||
|
||||
async def completion_full_generator(
|
||||
self,
|
||||
|
@@ -87,7 +87,7 @@ class OpenAIServingModels:
|
||||
f"Only master node can accept models request, please send request to master node: {self.master_ip}"
|
||||
)
|
||||
api_server_logger.error(err_msg)
|
||||
return ErrorResponse(error=ErrorInfo(message=err_msg, type=ErrorType.SERVER_ERROR))
|
||||
return ErrorResponse(error=ErrorInfo(message=err_msg, type=ErrorType.INTERNAL_ERROR))
|
||||
model_infos = [
|
||||
ModelInfo(
|
||||
id=model.name, max_model_len=self.max_model_len, root=model.model_path, permission=[ModelPermission()]
|
||||
|
@@ -8,6 +8,10 @@ from fastapi.responses import JSONResponse
|
||||
from fastdeploy.utils import ErrorCode, ExceptionHandler, ParameterError
|
||||
|
||||
|
||||
class DummyRequest:
|
||||
url = "http://testserver/test"
|
||||
|
||||
|
||||
class TestParameterError(unittest.TestCase):
|
||||
def test_parameter_error_init(self):
|
||||
exc = ParameterError("param1", "error message")
|
||||
@@ -30,7 +34,8 @@ class TestExceptionHandler(unittest.IsolatedAsyncioTestCase):
|
||||
async def test_handle_request_validation_missing_messages(self):
|
||||
"""缺少 messages 参数时,应返回 missing_required_parameter"""
|
||||
exc = RequestValidationError([{"loc": ("body", "messages"), "msg": "Field required", "type": "missing"}])
|
||||
resp: JSONResponse = await ExceptionHandler.handle_request_validation_exception(None, exc)
|
||||
dummy_request = DummyRequest()
|
||||
resp: JSONResponse = await ExceptionHandler.handle_request_validation_exception(dummy_request, exc)
|
||||
data = json.loads(resp.body.decode())
|
||||
self.assertEqual(resp.status_code, HTTPStatus.BAD_REQUEST)
|
||||
self.assertEqual(data["error"]["param"], "messages")
|
||||
@@ -42,7 +47,8 @@ class TestExceptionHandler(unittest.IsolatedAsyncioTestCase):
|
||||
exc = RequestValidationError(
|
||||
[{"loc": ("body", "top_p"), "msg": "Input should be less than or equal to 1", "type": "value_error"}]
|
||||
)
|
||||
resp: JSONResponse = await ExceptionHandler.handle_request_validation_exception(None, exc)
|
||||
dummy_request = DummyRequest()
|
||||
resp: JSONResponse = await ExceptionHandler.handle_request_validation_exception(dummy_request, exc)
|
||||
data = json.loads(resp.body.decode())
|
||||
self.assertEqual(resp.status_code, HTTPStatus.BAD_REQUEST)
|
||||
self.assertEqual(data["error"]["param"], "top_p")
|
||||
|
Reference in New Issue
Block a user