mirror of
https://git.datalinker.icu/vllm-project/vllm.git
synced 2025-12-21 15:55:26 +08:00
[Bugfix] Prevent crash on empty grammar string (#28210)
Signed-off-by: tjandy98 <3953059+tjandy98@users.noreply.github.com>
This commit is contained in:
parent
ca00b1bfc6
commit
4504e8029b
@ -138,3 +138,23 @@ async def test_invalid_grammar(client: openai.AsyncOpenAI, model_name: str):
|
|||||||
"structured_outputs": {"grammar": invalid_simplified_sql_grammar}
|
"structured_outputs": {"grammar": invalid_simplified_sql_grammar}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.asyncio
|
||||||
|
@pytest.mark.parametrize(
|
||||||
|
"model_name",
|
||||||
|
[MODEL_NAME],
|
||||||
|
)
|
||||||
|
async def test_empty_grammar(client: openai.AsyncOpenAI, model_name: str) -> None:
|
||||||
|
prompt = "Say hello"
|
||||||
|
with pytest.raises((openai.BadRequestError, openai.APIError)):
|
||||||
|
await client.chat.completions.create(
|
||||||
|
model=model_name,
|
||||||
|
messages=[
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": prompt,
|
||||||
|
}
|
||||||
|
],
|
||||||
|
extra_body={"structured_outputs": {"grammar": ""}},
|
||||||
|
)
|
||||||
|
|||||||
@ -270,6 +270,12 @@ class Processor:
|
|||||||
raise ValueError(
|
raise ValueError(
|
||||||
f"Choice '{params.structured_outputs.choice}' cannot be an empty list" # noqa: E501
|
f"Choice '{params.structured_outputs.choice}' cannot be an empty list" # noqa: E501
|
||||||
)
|
)
|
||||||
|
# Reject empty string grammar early to avoid engine-side crashes
|
||||||
|
if (
|
||||||
|
isinstance(params.structured_outputs.grammar, str)
|
||||||
|
and params.structured_outputs.grammar.strip() == ""
|
||||||
|
):
|
||||||
|
raise ValueError("structured_outputs.grammar cannot be an empty string")
|
||||||
|
|
||||||
if backend.startswith("xgrammar"):
|
if backend.startswith("xgrammar"):
|
||||||
# xgrammar with no fallback
|
# xgrammar with no fallback
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user