v2.5.1 修复解码速度荒谬值:兼容 vLLM reasoning 字段思维链 + 幻影token防护(usage有token但流无正文时解码速度置空)
This commit is contained in:
+7
-2
@@ -63,6 +63,10 @@ def _metrics(start, first_token_at, end, prompt_tokens, output_tokens,
|
||||
total_ms = (end - start) * 1000
|
||||
prefill = (prompt_tokens / (ttft_ms / 1000)) if prompt_tokens and ttft_ms > 0 else None
|
||||
decode = (output_tokens / (decode_ms / 1000)) if output_tokens and decode_ms > 0 else None
|
||||
# 防“幻影 token”:usage 报了输出 token,但整个流没收到任何文本(如推理全用满 max_tokens
|
||||
# 或提供商只回 usage 不正文),此时解码时间无意义,不报出数百万的荒谬速度
|
||||
if output_tokens and decode is not None and not output_chars:
|
||||
decode = None
|
||||
return {
|
||||
"prompt_tokens": int(prompt_tokens or 0),
|
||||
"output_tokens": int(output_tokens or 0),
|
||||
@@ -132,8 +136,9 @@ def stream_openai(cfg, prompt, gen, log, should_stop=None):
|
||||
event_count += 1
|
||||
if obj.get("choices"):
|
||||
delta = obj["choices"][0].get("delta") or {}
|
||||
# 兼容推理型模型:Qwen3/DeepSeek 思维链在 reasoning_content
|
||||
piece = delta.get("content") or delta.get("reasoning_content") or ""
|
||||
# 兼容推理型模型思维链:DeepSeek 用 reasoning_content,部分 vLLM(Qwen3.8-27B-FP8) 用 reasoning,Anthropic/Gemini 分别在各自适配器处理
|
||||
piece = (delta.get("content") or delta.get("reasoning_content")
|
||||
or delta.get("reasoning") or "")
|
||||
if piece:
|
||||
if first_token_at is None:
|
||||
first_token_at = time.time()
|
||||
|
||||
Reference in New Issue
Block a user