@@ -162,10 +162,15 @@ 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+ 
169+         json j_null;
165170        auto  make_tool_calls_msg = [&](const  json & tool_calls) {
166171            return  json {
167172                {" role"  , " assistant"  },
168-                 {" content"  , nullptr },
173+                 {" content"  , caps_. requires_non_null_content ?  " "  : j_null },
169174                {" tool_calls"  , tool_calls},
170175            };
171176        };
@@ -195,9 +200,6 @@ class chat_template {
195200
196201        caps_.supports_tool_calls  = tool_call_renders_str_arguments || tool_call_renders_obj_arguments;
197202        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);
201203
202204        if  (caps_.supports_tool_calls ) {
203205            auto  dummy_args = caps_.requires_object_arguments  ? dummy_args_obj : json (dummy_args_obj.dump ());
@@ -234,7 +236,7 @@ class chat_template {
234236                };
235237                const  json tool_call_msg {
236238                    {" role"  , " assistant"  },
237-                     {" content"  , nullptr },
239+                     {" content"  , caps_. requires_non_null_content  ?  " "  : j_null },
238240                    {" tool_calls"  , json::array ({
239241                        {
240242                            //  TODO: detect if requires numerical id or fixed length == 6 like Nemo
0 commit comments