Preserve anyOf/$ref/$defs in Gemma tool declarations

#89
by sigjhl - opened
Files changed (1) hide show
  1. chat_template.jinja +24 -8
chat_template.jinja CHANGED
@@ -11,12 +11,20 @@
11
  description:<|"|>{{ value['description'] }}<|"|>
12
  {%- set add_comma = true -%}
13
  {%- endif -%}
14
- {%- if value['type'] | upper == 'STRING' -%}
 
 
 
 
 
 
 
 
15
  {%- if value['enum'] -%}
16
  {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}
17
  enum:{{ format_argument(value['enum']) }}
18
  {%- endif -%}
19
- {%- elif value['type'] | upper == 'ARRAY' -%}
20
  {%- if value['items'] is mapping and value['items'] -%}
21
  {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}
22
  items:{
@@ -52,11 +60,11 @@
52
  }
53
  {%- endif -%}
54
  {%- endif -%}
55
- {%- if value['nullable'] %}
56
  {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}
57
  nullable:true
58
  {%- endif -%}
59
- {%- if value['type'] | upper == 'OBJECT' -%}
60
  {%- if value['properties'] is defined and value['properties'] is mapping -%}
61
  {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}
62
  properties:{
@@ -68,7 +76,7 @@
68
  {{- format_parameters(value, value['required'] | default([]), filter_keys=true) -}}
69
  }
70
  {%- endif -%}
71
- {%- if value['required'] -%}
72
  {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}
73
  required:[
74
  {%- for item in value['required'] | default([]) -%}
@@ -78,8 +86,11 @@
78
  ]
79
  {%- endif -%}
80
  {%- endif -%}
81
- {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}
82
- type:<|"|>{{ value['type'] | upper }}<|"|>}
 
 
 
83
  {%- endif -%}
84
  {%- endfor -%}
85
  {%- endmacro -%}
@@ -91,6 +102,9 @@
91
  {%- if params['properties'] -%}
92
  properties:{ {{- format_parameters(params['properties'], params['required']) -}} },
93
  {%- endif -%}
 
 
 
94
  {%- if params['required'] -%}
95
  required:[
96
  {%- for item in params['required'] -%}
@@ -120,6 +134,8 @@
120
  {{- '<|"|>' + argument + '<|"|>' -}}
121
  {%- elif argument is boolean -%}
122
  {{- 'true' if argument else 'false' -}}
 
 
123
  {%- elif argument is mapping -%}
124
  {{- '{' -}}
125
  {%- set ns = namespace(found_first=false) -%}
@@ -351,4 +367,4 @@
351
  {{- '<|channel>thought\n<channel|>' -}}
352
  {%- endif -%}
353
  {%- endif -%}
354
- {%- endif -%}
 
11
  description:<|"|>{{ value['description'] }}<|"|>
12
  {%- set add_comma = true -%}
13
  {%- endif -%}
14
+ {%- if value['anyOf'] is defined and value['anyOf'] -%}
15
+ {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}
16
+ anyOf:{{ format_argument(value['anyOf'], escape_keys=false) }}
17
+ {%- endif -%}
18
+ {%- if value['$ref'] is defined and value['$ref'] -%}
19
+ {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}
20
+ $ref:<|"|>{{ value['$ref'] }}<|"|>
21
+ {%- endif -%}
22
+ {%- if value['type'] is defined and value['type'] and value['type'] | upper == 'STRING' -%}
23
  {%- if value['enum'] -%}
24
  {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}
25
  enum:{{ format_argument(value['enum']) }}
26
  {%- endif -%}
27
+ {%- elif value['type'] is defined and value['type'] and value['type'] | upper == 'ARRAY' -%}
28
  {%- if value['items'] is mapping and value['items'] -%}
29
  {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}
30
  items:{
 
60
  }
61
  {%- endif -%}
62
  {%- endif -%}
63
+ {%- if value['nullable'] is defined and value['nullable'] %}
64
  {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}
65
  nullable:true
66
  {%- endif -%}
67
+ {%- if value['type'] is defined and value['type'] and value['type'] | upper == 'OBJECT' -%}
68
  {%- if value['properties'] is defined and value['properties'] is mapping -%}
69
  {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}
70
  properties:{
 
76
  {{- format_parameters(value, value['required'] | default([]), filter_keys=true) -}}
77
  }
78
  {%- endif -%}
79
+ {%- if value['required'] is defined and value['required'] -%}
80
  {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}
81
  required:[
82
  {%- for item in value['required'] | default([]) -%}
 
86
  ]
87
  {%- endif -%}
88
  {%- endif -%}
89
+ {%- if value['type'] is defined and value['type'] -%}
90
+ {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}
91
+ type:<|"|>{{ value['type'] | upper }}<|"|>
92
+ {%- endif -%}
93
+ }
94
  {%- endif -%}
95
  {%- endfor -%}
96
  {%- endmacro -%}
 
102
  {%- if params['properties'] -%}
103
  properties:{ {{- format_parameters(params['properties'], params['required']) -}} },
104
  {%- endif -%}
105
+ {%- if params['$defs'] is defined and params['$defs'] -%}
106
+ $defs:{{ format_argument(params['$defs'], escape_keys=false) }},
107
+ {%- endif -%}
108
  {%- if params['required'] -%}
109
  required:[
110
  {%- for item in params['required'] -%}
 
134
  {{- '<|"|>' + argument + '<|"|>' -}}
135
  {%- elif argument is boolean -%}
136
  {{- 'true' if argument else 'false' -}}
137
+ {%- elif argument is none -%}
138
+ {{- 'null' -}}
139
  {%- elif argument is mapping -%}
140
  {{- '{' -}}
141
  {%- set ns = namespace(found_first=false) -%}
 
367
  {{- '<|channel>thought\n<channel|>' -}}
368
  {%- endif -%}
369
  {%- endif -%}
370
+ {%- endif -%}