Skip to content

Commit

Permalink
Make tool JSON schemas consistent (#31756)
Browse files Browse the repository at this point in the history
Make the order of array items consistent using sorted()
  • Loading branch information
Rocketknight1 authored Jul 2, 2024
1 parent 82486e5 commit cd0935d
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 4 deletions.
2 changes: 1 addition & 1 deletion src/transformers/utils/chat_template_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ def _parse_type_hint(hint: str) -> Dict:
return_dict = subtypes[0]
elif all(isinstance(subtype["type"], str) for subtype in subtypes):
# A union of basic types can be expressed as a list in the schema
return_dict = {"type": [subtype["type"] for subtype in subtypes]}
return_dict = {"type": sorted([subtype["type"] for subtype in subtypes])}
else:
# A union of more complex types requires "anyOf"
return_dict = {"anyOf": subtypes}
Expand Down
6 changes: 3 additions & 3 deletions tests/utils/test_chat_template_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ def fn(x: List[List[Union[str, int]]]):
"properties": {
"x": {
"type": "array",
"items": {"type": "array", "items": {"type": ["string", "integer"]}},
"items": {"type": "array", "items": {"type": ["integer", "string"]}},
"description": "The input",
}
},
Expand Down Expand Up @@ -455,13 +455,13 @@ def fn(
},
"y": {
"type": "array",
"items": {"type": ["string", "integer"]},
"items": {"type": ["integer", "string"]},
"nullable": True,
"description": "The second input. It's a big list with a single-line description.",
},
"z": {
"type": "array",
"prefixItems": [{"type": ["string", "integer"]}, {"type": "string"}],
"prefixItems": [{"type": ["integer", "string"]}, {"type": "string"}],
"description": "The third input. It's some kind of tuple with a default arg.",
},
},
Expand Down

0 comments on commit cd0935d

Please sign in to comment.