[Frontend] Enable generic structured_outputs for responses API (#33709)

Signed-off-by: Alec Solder <alecs@fb.com>
Co-authored-by: Alec Solder <alecs@fb.com>
This commit is contained in:
Alec S
2026-02-12 19:15:48 -05:00
committed by GitHub
parent 9ea1f598ce
commit be7370daf3
2 changed files with 58 additions and 7 deletions

View File

@@ -233,6 +233,10 @@ class ResponsesRequest(OpenAIBaseModel):
# this cannot be used in conjunction with previous_response_id
# TODO: consider supporting non harmony messages as well
previous_input_messages: list[OpenAIHarmonyMessage | dict] | None = None
structured_outputs: StructuredOutputsParams | None = Field(
default=None,
description="Additional kwargs for structured outputs",
)
repetition_penalty: float | None = None
seed: int | None = Field(None, ge=_LONG_INFO.min, le=_LONG_INFO.max)
@@ -319,8 +323,14 @@ class ResponsesRequest(OpenAIBaseModel):
stop_token_ids = default_sampling_params.get("stop_token_ids")
# Structured output
structured_outputs = None
structured_outputs = self.structured_outputs
# Also check text.format for OpenAI-style json_schema
if self.text is not None and self.text.format is not None:
if structured_outputs is not None:
raise ValueError(
"Cannot specify both structured_outputs and text.format"
)
response_format = self.text.format
if (
response_format.type == "json_schema"
@@ -329,8 +339,6 @@ class ResponsesRequest(OpenAIBaseModel):
structured_outputs = StructuredOutputsParams(
json=response_format.schema_
)
elif response_format.type == "json_object":
raise NotImplementedError("json_object is not supported")
stop = self.stop if self.stop else []
if isinstance(stop, str):