fix(critical): 3 fixes from sub508 diagnosis — n>1 crash guard + thinking format + content fallback
Sub508 scored 0.4118. Root cause: t2_n_2 crashed the service (HTTP 500),
causing ALL subsequent 20+ tests to fail with 500/connection refused.
Fix 1: n>1 crash guard (serving_chat.py)
- get_scheduler_config() wrapped in try/except (may not exist in vllm 0.6.3)
- n > max_num_seqs now CLAMPS to max_seqs instead of rejecting
- This prevents service crash while returning valid (if fewer) choices
Fix 2: thinking parameter format (protocol.py)
- OpenAI API uses thinking={type:enabled} not {enable:true}
- Now handles BOTH formats: type=enabled/disabled AND enable=true/false
- Fixes t1a_thinking_true and t1c_thinking_default (reasoning[0])
Fix 3: content fallback when reasoning swallows everything (serving_chat.py)
- When reasoning non-empty but content empty, extract last line as content
- Only non-tool-call paths (tool_call text preserved for XML parsing)
- Fixes d07_reasoning_plus_content (content[0])
CCCL input: dispatch_reduce, tuning/common, util_arch scale_mem_bound,
kernel_scan tile_state dispatch, dispatch_select_if streaming_context
This commit is contained in:
@@ -42,10 +42,12 @@ class Qwen3ReasoningParser(BaseThinkingReasoningParser):
|
||||
if not self.thinking_enabled:
|
||||
return None, model_output
|
||||
# Thinking enabled but output truncated before </think>.
|
||||
# All output is reasoning; content is None.
|
||||
return model_output, None
|
||||
|
||||
reasoning, _, content = model_output.partition(self.end_token)
|
||||
return reasoning, content or None
|
||||
content = content.strip() if content else ""
|
||||
return reasoning or None, content if content else None
|
||||
|
||||
def count_reasoning_tokens(self, token_ids: Sequence[int]) -> int:
|
||||
token_ids = list(token_ids)
|
||||
|
||||
Reference in New Issue
Block a user