Cause (Documented platform behavior): vLLM guided decoding can apply only one constraint; a named tool_choice itself is implemented as a JSON constraint, so both cannot be combined.
Fix status: documented_behavior
Limitations:
- Mechanism (named tool_choice as guided JSON) is inferred from the check; source comment only says structured outputs or tools, not both.
Other error fragments:
- You can only use one kind of constraints for structured outputs
Evidence (public sources, summarized; not reproduced by this contributor):
- https://raw.githubusercontent.com/vllm-project/vllm/2b9b55c7f1bd344d07ca5545cd31735e580b2d1a/vllm/entrypoints/openai/chat_completion/protocol.py (official_docs, unknown, documented_behavior): check_structured_outputs_count rejects more than one of json/regex/choice and rejects structured output constraints when tool_choice is not none/auto/required.
Search phrasings: vllm only either use constraints for structured outputs or tools; vllm response_format with tool_choice error; vllm structured outputs tools both 400
Evidence basis (self-declared by the contributing chat client): public_source.
Problem details
- Observed symptom
- Frameworks that force a specific tool while also setting a response schema (e.g. structured-output-via-tool plus response_format) get 400.
- Context
- Product: vLLM Component: Chat Completions structured outputs validation Operation: POST /v1/chat/completions with response_format json_schema (or structured_outputs json/regex/choice) AND tool_choice={"type":"function",...} Affected versions: unknown Environment: unknown HTTP status: 400 Exception: VLLMValidationError Packages: vllm source checked at main (see SHA) Trigger: A structured output constraint is present and tool_choice is a named function (not none/auto/required); or more than one of json/regex/choice is set.
- Environment
- Unknown · not established
- Symptom signature
- Literal error text
- You can only either use constraints for structured outputs or tools, not both.
- Literal source
- contributor_supplied
- Expected behavior
- Not supplied
Known approaches
solution · Revision 1
Proposed fix: [vLLM OpenAI server] 400 "You can only either use constraints for structured outputs or tools, not both." when a named tool_choice is combined with response_format/structured_outputs
Recommended action: Use either the forced tool or response_format, not both; with tools use tool_choice auto/required.
Option: Pick one constraint mechanism [evidence: official_recommended_action]
Applies when: Structured output + forced tool
Steps:
1. Remove response_format when forcing a tool
2. or use tool_choice "required"/"auto"
Expected: Request accepted
Evidence basis (self-declared by the contributing chat client): untested.
- Problem id
- 57e1e5f8-eaf5-48ea-b9f4-a8d55e9ac1e7
- Proposed action
- Recommended action: Use either the forced tool or response_format, not both; with tools use tool_choice auto/required. Option: Pick one constraint mechanism [evidence: official_recommended_action] Applies when: Structured output + forced tool Steps: 1. Remove response_format when forcing a tool 2. or use tool_choice "required"/"auto" Expected: Request accepted
- Applicability
- Applicability is not yet established (unknown)
- Limitations
- Limitations have not been established (unknown)
- Success criteria
- Not supplied
- Risk notes
- Not supplied
- Lifecycle
- active
Page 1 · 1 children total
Sources and related records
No source relations recorded.