diff --git a/vllm/entrypoints/openai/serving_chat.py b/vllm/entrypoints/openai/serving_chat.py index 934bd2a95063..d8cf6b0c0810 100644 --- a/vllm/entrypoints/openai/serving_chat.py +++ b/vllm/entrypoints/openai/serving_chat.py @@ -841,6 +841,8 @@ async def chat_completion_full_generator( request_metadata.final_usage_info = usage + self._clean_prompt_logprobs(final_res.prompt_logprobs) + response = ChatCompletionResponse( id=request_id, created=created_time, diff --git a/vllm/entrypoints/openai/serving_completion.py b/vllm/entrypoints/openai/serving_completion.py index e7ad263e7fbe..bcbb83fdcd5a 100644 --- a/vllm/entrypoints/openai/serving_completion.py +++ b/vllm/entrypoints/openai/serving_completion.py @@ -396,13 +396,9 @@ def request_output_to_completion_response( for final_res in final_res_batch: prompt_token_ids = final_res.prompt_token_ids assert prompt_token_ids is not None + self._clean_prompt_logprobs(final_res.prompt_logprobs) prompt_logprobs = final_res.prompt_logprobs - if prompt_logprobs: - for logprob_dict in prompt_logprobs: - if logprob_dict: - for logprob_values in logprob_dict.values(): - if logprob_values.logprob == float('-inf'): - logprob_values.logprob = -9999.0 + prompt_text = final_res.prompt token_ids: GenericSequence[int] diff --git a/vllm/entrypoints/openai/serving_engine.py b/vllm/entrypoints/openai/serving_engine.py index 785117ca1d45..da53c4134ffe 100644 --- a/vllm/entrypoints/openai/serving_engine.py +++ b/vllm/entrypoints/openai/serving_engine.py @@ -499,6 +499,20 @@ async def _get_trace_headers( return None + @staticmethod + def _clean_prompt_logprobs( + prompt_logprobs: Union[None, List[Union[None, Dict]]]) -> None: + """ + Preprocess prompt_logprobs result + to avoid starlette.response.JSONResponse's error + """ + if prompt_logprobs: + for logprob_dict in prompt_logprobs: + if logprob_dict: + for logprob_values in logprob_dict.values(): + if logprob_values.logprob == float('-inf'): + logprob_values.logprob = -9999.0 + @staticmethod def _base_request_id(raw_request: Optional[Request], default: Optional[str] = None) -> Optional[str]: