fix: use configured max_logprobs instead of hardcoded 20 in derender validation (#47834)
Signed-off-by: jperezde <jperezde@redhat.com> Co-authored-by: Cursor <cursoragent@cursor.com>
Juan Pérez de Algaba committed
Jul 7, 2026 at 11:42 UTC
b3e85be663af852b5c4122d055bfa863a8a36140
2 files changed
+13
-4
tests/entrypoints/scale_out/derender/test_derender.py
+4
-2
@@ -622,7 +622,7 @@ async def test_derender_chat_oversized_logprobs_rejected(client):
622
623
@pytest.mark.asyncio
624
async def test_derender_chat_oversized_top_logprobs_rejected(client):
625
- """top_logprobs count exceeding 20 returns 400."""
625
+ """top_logprobs count exceeding max_logprobs (default 20) returns 400."""
626
oversized_top_logprobs = {
627
"content": [
628
{
@@ -654,7 +654,9 @@ async def test_derender_chat_oversized_top_logprobs_rejected(client):
654
},
655
)
656
assert response.status_code == 400
657
- assert "top_logprobs count" in response.json()["error"]["message"]
657
+ msg = response.json()["error"]["message"]
658
+ assert "top_logprobs count" in msg
659
+ assert "max_logprobs" in msg
660
661
662
@pytest.mark.asyncio
vllm/entrypoints/scale_out/derender/serving.py
+9
-2
@@ -64,6 +64,8 @@ class ServingDerender(BaseServing):
64
"""
65
max_n = envs.VLLM_MAX_N_SEQUENCES
66
max_model_len = self.model_config.max_model_len
67
+ # See ModelConfig.max_logprobs for semantics and default value.
68
+ max_logprobs = self.model_config.max_logprobs
69
70
if len(generate_responses) > max_n:
71
return self.create_error_response(
@@ -95,11 +97,16 @@ class ServingDerender(BaseServing):
97
f"max_model_len ({max_model_len})."
98
)
99
for entry in choice.logprobs.content:
98
- if entry.top_logprobs and len(entry.top_logprobs) > 20:
100
+ if (
101
+ max_logprobs >= 0
102
+ and entry.top_logprobs
103
+ and len(entry.top_logprobs) > max_logprobs
104
+ ):
105
return self.create_error_response(
106
f"top_logprobs count "
107
f"({len(entry.top_logprobs)}) in "
102
- f"choice {choice.index} exceeds maximum (20)."
108
+ f"choice {choice.index} exceeds "
109
+ f"max_logprobs ({max_logprobs})."
110
)
111
112
if gen.prompt_logprobs and len(gen.prompt_logprobs) > max_model_len: