fix(frontend): return 400 for missing completions json_schema (#28090)
Signed-off-by: Ting Sun <suntcrick@gmail.com>
This commit is contained in:
@@ -164,9 +164,13 @@ class OpenAIServingCompletion(OpenAIServingBase):
|
||||
|
||||
# Handle response_format constraints
|
||||
if request.response_format and request.response_format.type == "json_schema":
|
||||
sampling_params["json_schema"] = convert_json_schema_to_str(
|
||||
request.response_format.json_schema.schema_
|
||||
)
|
||||
json_schema = request.response_format.json_schema
|
||||
schema = getattr(json_schema, "schema_", None)
|
||||
if schema is None:
|
||||
raise ValueError(
|
||||
"schema_ is required for json_schema response format request."
|
||||
)
|
||||
sampling_params["json_schema"] = convert_json_schema_to_str(schema)
|
||||
elif request.response_format and request.response_format.type == "json_object":
|
||||
sampling_params["json_schema"] = '{"type": "object"}'
|
||||
elif (
|
||||
|
||||
@@ -140,6 +140,17 @@ class ServingCompletionTestCase(unittest.TestCase):
|
||||
self.assertIn("json_schema", sampling_params)
|
||||
self.assertIsInstance(sampling_params["json_schema"], str)
|
||||
|
||||
def test_response_format_json_schema_missing_schema(self):
|
||||
"""Test that json_schema response_format without a schema raises a ValueError."""
|
||||
req = CompletionRequest(
|
||||
model="x",
|
||||
prompt="Generate a JSON object:",
|
||||
max_tokens=100,
|
||||
response_format={"type": "json_schema"},
|
||||
)
|
||||
with self.assertRaises(ValueError):
|
||||
self.sc._build_sampling_params(req)
|
||||
|
||||
def test_response_format_structural_tag(self):
|
||||
"""Test that response_format structural_tag is correctly processed in sampling params."""
|
||||
req = CompletionRequest(
|
||||
|
||||
Reference in New Issue
Block a user