Skip to content

Commit 469b1d7

Browse files
committed
[Fix]fix empty prompt_token_ids,update the parser's triggering condition,add prompt log
1 parent 52aca23 commit 469b1d7

File tree

3 files changed

+17
-4
lines changed

3 files changed

+17
-4
lines changed

fastdeploy/input/ernie_processor.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,8 @@ def process_request(self, request, max_model_len=None, **kwargs):
114114
else:
115115
request.prompt_token_ids = self.messages2ids(request.to_dict())
116116

117+
if len(request.prompt_token_ids) == 0:
118+
raise ValueError("Invalid input: prompt_token_ids must be a non-empty sequence of token IDs")
117119
if max_model_len is not None and len(
118120
request.prompt_token_ids) > max_model_len:
119121
request.prompt_token_ids = request.prompt_token_ids[:
@@ -170,6 +172,8 @@ def process_request_dict(self, request, max_model_len=None):
170172
)
171173
else:
172174
request['prompt_token_ids'] = self.messages2ids(request)
175+
if len(request['prompt_token_ids']) == 0:
176+
raise ValueError("Invalid input: prompt_token_ids must be a non-empty sequence of token IDs")
173177

174178
# 截断超过长度限制的prompt
175179
if max_model_len is not None and len(
@@ -196,7 +200,6 @@ def process_response(self, response_dict, **kwargs):
196200
Returns:
197201
Dict: response contain text fields
198202
"""
199-
200203
req_id = response_dict.request_id
201204
token_ids = response_dict.outputs.token_ids
202205

@@ -245,6 +248,7 @@ def process_response_dict_normal(self, response_dict, **kwargs):
245248
Returns:
246249
Dict: response contain text fields
247250
"""
251+
enable_thinking = kwargs.get("enable_thinking")
248252
token_ids = response_dict["outputs"]["token_ids"]
249253
is_end = response_dict["finished"]
250254
req_id = response_dict["request_id"]
@@ -254,7 +258,7 @@ def process_response_dict_normal(self, response_dict, **kwargs):
254258
delta_text, _, previous_texts = self.ids2tokens(token_ids, req_id)
255259
if is_end:
256260
full_text = previous_texts + delta_text
257-
if self.reasoning_parser:
261+
if enable_thinking and self.reasoning_parser:
258262
reasoning_content, text = self.reasoning_parser.extract_reasoning_content(
259263
full_text, response_dict)
260264
response_dict["outputs"]["text"] = text

fastdeploy/input/mm_processor/process.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
from .utils.render_timestamp import render_frame_timestamp
3535
from fastdeploy.input.ernie_tokenizer import ErnieBotTokenizer
3636
from fastdeploy.entrypoints.chat_utils import parse_chat_messages
37+
from fastdeploy.utils import data_processor_logger
3738

3839
IDS_TYPE_FLAG = {"text": 0, "image": 1, "video": 2, "audio": 3}
3940

@@ -236,6 +237,8 @@ def request2ids(self, request: Dict[str, Any]) -> Dict[str, Union[np.ndarray, Li
236237
image_message_list.append(item)
237238

238239
prompt_token_ids = self.apply_chat_template(request)
240+
if len(prompt_token_ids) == 0:
241+
raise ValueError("Invalid input: prompt_token_ids must be a non-empty sequence of token IDs")
239242
image_start_index = 0
240243
image_message_index = 0
241244
for i in range(len(prompt_token_ids)):
@@ -452,4 +455,6 @@ def apply_chat_template(self, request):
452455
).replace("<|image@placeholder|>", "").replace("<|video@placeholder|>", "")
453456
tokens = self.tokenizer.tokenize(prompt_token_str)
454457
token_ids = self.tokenizer.convert_tokens_to_ids(tokens)
458+
data_processor_logger.info(
459+
f"req_id:{request.get('request_id', ''),} tokens:{tokens}, token_ids: {token_ids}")
455460
return token_ids

fastdeploy/input/text_processor.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,8 @@ def process_request(self, request, max_model_len=None, **kwargs):
252252
raise ValueError(
253253
f"The request should have `input_ids`, `text` or `messages`: {request}."
254254
)
255+
if len(request.prompt_token_ids) == 0:
256+
raise ValueError("Invalid input: prompt_token_ids must be a non-empty sequence of token IDs")
255257
if request.get("max_tokens") is None:
256258
request.set("max_tokens",
257259
max(1, max_model_len - len(request.prompt_token_ids)))
@@ -299,7 +301,8 @@ def process_request_dict(self, request, max_model_len=None, **kwargs):
299301
raise ValueError(
300302
f"Request must contain 'prompt_token_ids', 'prompt', or 'messages': {request}"
301303
)
302-
304+
if len(request['prompt_token_ids']) == 0:
305+
raise ValueError("Invalid input: prompt_token_ids must be a non-empty sequence of token IDs")
303306
if request.get("max_tokens") is None:
304307
request["max_tokens"] = max(
305308
1, max_model_len - len(request['prompt_token_ids']))
@@ -352,6 +355,7 @@ def process_response_dict_normal(self, response_dict, **kwargs):
352355
Returns:
353356
Dict: response contain text fields
354357
"""
358+
enable_thinking = kwargs.get("enable_thinking")
355359
token_ids = response_dict["outputs"]["token_ids"]
356360
is_end = response_dict["finished"]
357361
req_id = response_dict["request_id"]
@@ -361,7 +365,7 @@ def process_response_dict_normal(self, response_dict, **kwargs):
361365
delta_text, _, previous_texts = self.ids2tokens(token_ids, req_id)
362366
if is_end:
363367
full_text = previous_texts + delta_text
364-
if self.reasoning_parser:
368+
if enable_thinking and self.reasoning_parser:
365369
reasoning_content, text = self.reasoning_parser.extract_reasoning_content(
366370
full_text, response_dict)
367371
response_dict["outputs"]["text"] = text

0 commit comments

Comments
 (0)