@tduncan / Nvidia-Optimization-Stack-VLLM Mirror · read-only / commits / af770b8e7b
Fork 0

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: