mirror of
				https://github.com/ggml-org/llama.cpp.git
				synced 2025-10-30 08:42:00 +00:00 
			
		
		
		
	examples : support minItems/maxItems in JSON grammar converter (#5039)
* support minLength and maxLength in JSON schema grammar converter * Update examples/json-schema-to-grammar.py --------- Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
This commit is contained in:
		| @@ -87,7 +87,21 @@ class SchemaConverter: | |||||||
|         elif schema_type == 'array' and 'items' in schema: |         elif schema_type == 'array' and 'items' in schema: | ||||||
|             # TODO `prefixItems` keyword |             # TODO `prefixItems` keyword | ||||||
|             item_rule_name = self.visit(schema['items'], f'{name}{"-" if name else ""}item') |             item_rule_name = self.visit(schema['items'], f'{name}{"-" if name else ""}item') | ||||||
|             rule = f'"[" space ({item_rule_name} ("," space {item_rule_name})*)? "]" space' |             list_item_operator = f'("," space {item_rule_name})' | ||||||
|  |             successive_items = "" | ||||||
|  |             min_items = schema.get("minItems", 0) | ||||||
|  |             if min_items > 0: | ||||||
|  |                first_item = f"({item_rule_name})" | ||||||
|  |                successive_items = list_item_operator * (min_items - 1) | ||||||
|  |                min_items -= 1 | ||||||
|  |             else: | ||||||
|  |                first_item = f"({item_rule_name})?" | ||||||
|  |             max_items = schema.get("maxItems") | ||||||
|  |             if max_items is not None and max_items > min_items: | ||||||
|  |                 successive_items += (list_item_operator + "?") * (max_items - min_items - 1) | ||||||
|  |             else: | ||||||
|  |                 successive_items += list_item_operator + "*" | ||||||
|  |             rule = f'"[" space {first_item} {successive_items} "]" space' | ||||||
|             return self._add_rule(rule_name, rule) |             return self._add_rule(rule_name, rule) | ||||||
|  |  | ||||||
|         else: |         else: | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 nopperl
					nopperl