Skip to content

Commit 60eff2f

Browse files
tjohnson31415joennlae
authored andcommitted
fix: set additionalProperties recursively
Signed-off-by: Travis Johnson <[email protected]>
1 parent ae8acf0 commit 60eff2f

File tree

1 file changed

+17
-2
lines changed

1 file changed

+17
-2
lines changed

vllm/model_executor/guided_decoding/guidance_decoding.py

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
# SPDX-License-Identifier: Apache-2.0
2+
import copy
23
import json
34
from re import escape as regex_escape
45

@@ -10,6 +11,18 @@
1011
from vllm.sampling_params import GuidedDecodingParams
1112

1213

14+
def _walk_json_for_additional_properties(data: object):
15+
if isinstance(data, dict):
16+
for value in data.values():
17+
_walk_json_for_additional_properties(value)
18+
if 'additionalProperties' not in data and \
19+
('properties' in data or 'patternProperties' in data):
20+
data['additionalProperties'] = False
21+
elif isinstance(data, list):
22+
for item in data:
23+
_walk_json_for_additional_properties(item)
24+
25+
1326
def get_local_guidance_guided_decoding_logits_processor(
1427
guided_params: GuidedDecodingParams,
1528
tokenizer: PreTrainedTokenizerBase) -> GuidanceLogitsProcessor:
@@ -28,8 +41,10 @@ def get_local_guidance_guided_decoding_logits_processor(
2841
if 'no-additional-properties' in guided_params.backend_options():
2942
if isinstance(guide_json, str):
3043
guide_json = json.loads(guide_json)
31-
if 'additionalProperties' not in guide_json:
32-
guide_json['additionalProperties'] = False
44+
else:
45+
# copy for modifications
46+
guide_json = copy.deepcopy(guide_json)
47+
_walk_json_for_additional_properties(guide_json)
3348

3449
grm = llguidance.LLMatcher.grammar_from_json_schema(
3550
guide_json,

0 commit comments

Comments
 (0)