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
|
# Handle response_format constraints
|
||||||
if request.response_format and request.response_format.type == "json_schema":
|
if request.response_format and request.response_format.type == "json_schema":
|
||||||
sampling_params["json_schema"] = convert_json_schema_to_str(
|
json_schema = request.response_format.json_schema
|
||||||
request.response_format.json_schema.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":
|
elif request.response_format and request.response_format.type == "json_object":
|
||||||
sampling_params["json_schema"] = '{"type": "object"}'
|
sampling_params["json_schema"] = '{"type": "object"}'
|
||||||
elif (
|
elif (
|
||||||
|
|||||||
@@ -140,6 +140,17 @@ class ServingCompletionTestCase(unittest.TestCase):
|
|||||||
self.assertIn("json_schema", sampling_params)
|
self.assertIn("json_schema", sampling_params)
|
||||||
self.assertIsInstance(sampling_params["json_schema"], str)
|
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):
|
def test_response_format_structural_tag(self):
|
||||||
"""Test that response_format structural_tag is correctly processed in sampling params."""
|
"""Test that response_format structural_tag is correctly processed in sampling params."""
|
||||||
req = CompletionRequest(
|
req = CompletionRequest(
|
||||||
|
|||||||
Reference in New Issue
Block a user