Skip to content

Commit b6331f2

Browse files
authored
fix: use empty string instead of nullptr for templates requiring non null
1 parent f06140f commit b6331f2

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

include/minja/chat-template.hpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -162,10 +162,14 @@ class chat_template {
162162
}), false);
163163
caps_.supports_tools = contains(out, "some_tool");
164164

165+
auto out_empty = try_raw_render(json::array({dummy_user_msg, {{"role", "assistant"}, {"content", ""}}}), {}, false);
166+
auto out_null = try_raw_render(json::array({dummy_user_msg, {{"role", "assistant"}, {"content", nullptr}}}), {}, false);
167+
caps_.requires_non_null_content = contains(out_empty, user_needle) && !contains(out_null, user_needle);
168+
165169
auto make_tool_calls_msg = [&](const json & tool_calls) {
166170
return json {
167171
{"role", "assistant"},
168-
{"content", nullptr},
172+
{"content", caps_.requires_non_null_content? "" : nullptr},
169173
{"tool_calls", tool_calls},
170174
};
171175
};
@@ -195,9 +199,6 @@ class chat_template {
195199

196200
caps_.supports_tool_calls = tool_call_renders_str_arguments || tool_call_renders_obj_arguments;
197201
caps_.requires_object_arguments = !tool_call_renders_str_arguments && tool_call_renders_obj_arguments;
198-
auto out_empty = try_raw_render(json::array({dummy_user_msg, {{"role", "assistant"}, {"content", ""}}}), {}, false);
199-
auto out_null = try_raw_render(json::array({dummy_user_msg, {{"role", "assistant"}, {"content", nullptr}}}), {}, false);
200-
caps_.requires_non_null_content = contains(out_empty, user_needle) && !contains(out_null, user_needle);
201202

202203
if (caps_.supports_tool_calls) {
203204
auto dummy_args = caps_.requires_object_arguments ? dummy_args_obj : json(dummy_args_obj.dump());
@@ -234,7 +235,7 @@ class chat_template {
234235
};
235236
const json tool_call_msg {
236237
{"role", "assistant"},
237-
{"content", nullptr},
238+
{"content", caps_.requires_non_null_content ? "" : nullptr},
238239
{"tool_calls", json::array({
239240
{
240241
// TODO: detect if requires numerical id or fixed length == 6 like Nemo

0 commit comments

Comments
 (0)