A high-throughput and memory-efficient inference and serving engine for LLMs
Mirrored from https://github.com/tduncan-lum/Nvidia-Optimization-Stack---VLLM.git
Synced Nov 7, 19:00 UTC
[Bugfix] Fix AttributeError when passing StructuredOutputsParams to CompletionRequest (#35237)
Signed-off-by: Patrick Simianer <patrick@lilt.com>
pks committed
Feb 25, 2026 at 07:00 UTC
af770b8e7bf77539fcbc81a9ff1974f12cdf87ff
2 files changed
+18
-2
vllm/entrypoints/openai/chat_completion/protocol.py
+9
-1
@@ -555,8 +555,16 @@ class ChatCompletionRequest(OpenAIBaseModel):
555
return data
556
557
structured_outputs_kwargs = data["structured_outputs"]
558
+ # structured_outputs may arrive as a dict (from JSON/raw kwargs) or
559
+ # as a StructuredOutputsParams dataclass instance.
560
+ is_dataclass = isinstance(structured_outputs_kwargs, StructuredOutputsParams)
561
count = sum(
559
- structured_outputs_kwargs.get(k) is not None
562
+ (
563
+ getattr(structured_outputs_kwargs, k, None)
564
+ if is_dataclass
565
+ else structured_outputs_kwargs.get(k)
566
+ )
567
+ is not None
568
for k in ("json", "regex", "choice")
569
)
570
# you can only use one kind of constraints for structured outputs
vllm/entrypoints/openai/completion/protocol.py
+9
-1
@@ -320,8 +320,16 @@ class CompletionRequest(OpenAIBaseModel):
320
return data
321
322
structured_outputs_kwargs = data["structured_outputs"]
323
+ # structured_outputs may arrive as a dict (from JSON/raw kwargs) or
324
+ # as a StructuredOutputsParams dataclass instance.
325
+ is_dataclass = isinstance(structured_outputs_kwargs, StructuredOutputsParams)
326
count = sum(
324
- structured_outputs_kwargs.get(k) is not None
327
+ (
328
+ getattr(structured_outputs_kwargs, k, None)
329
+ if is_dataclass
330
+ else structured_outputs_kwargs.get(k)
331
+ )
332
+ is not None
333
for k in ("json", "regex", "choice")
334
)
335
if count > 1: