Skip to content

Commit efd8e02

Browse files
committed
fix glm 4.6 tool detection
1 parent fe177fe commit efd8e02

File tree

3 files changed

+16
-4
lines changed

3 files changed

+16
-4
lines changed

include/minja/chat-template.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -198,12 +198,12 @@ class chat_template {
198198
dummy_user_msg,
199199
make_tool_calls_msg(json::array({make_tool_call("ipython", dummy_args_obj.dump())})),
200200
}), {}, false);
201-
auto tool_call_renders_str_arguments = contains(out, "<parameter=argument_needle>") || contains(out, "\"argument_needle\":") || contains(out, "'argument_needle':");
201+
auto tool_call_renders_str_arguments = contains(out, "<parameter=argument_needle>") || contains(out, "\"argument_needle\":") || contains(out, "'argument_needle':") || contains(out, ">argument_needle<");
202202
out = try_raw_render(json::array({
203203
dummy_user_msg,
204204
make_tool_calls_msg(json::array({make_tool_call("ipython", dummy_args_obj)})),
205205
}), {}, false);
206-
auto tool_call_renders_obj_arguments = contains(out, "<parameter=argument_needle>") || contains(out, "\"argument_needle\":") || contains(out, "'argument_needle':");
206+
auto tool_call_renders_obj_arguments = contains(out, "<parameter=argument_needle>") || contains(out, "\"argument_needle\":") || contains(out, "'argument_needle':") || contains(out, ">argument_needle<");
207207

208208
caps_.supports_tool_calls = tool_call_renders_str_arguments || tool_call_renders_obj_arguments;
209209
caps_.requires_object_arguments = !tool_call_renders_str_arguments && tool_call_renders_obj_arguments;

scripts/fetch_templates_and_goldens.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -197,12 +197,12 @@ def make_tool_call(tool_name, arguments):
197197
dummy_user_msg,
198198
make_tool_calls_msg([make_tool_call("ipython", json.dumps(dummy_args_obj))]),
199199
])
200-
tool_call_renders_str_arguments = "<parameter=argument_needle>" in out or '"argument_needle":' in out or "'argument_needle':" in out
200+
tool_call_renders_str_arguments = "<parameter=argument_needle>" in out or '"argument_needle":' in out or "'argument_needle':" in out or ">argument_needle<" in out
201201
out = self.try_raw_render([
202202
dummy_user_msg,
203203
make_tool_calls_msg([make_tool_call("ipython", dummy_args_obj)]),
204204
])
205-
tool_call_renders_obj_arguments = "<parameter=argument_needle>" in out or '"argument_needle":' in out or "'argument_needle':" in out
205+
tool_call_renders_obj_arguments = "<parameter=argument_needle>" in out or '"argument_needle":' in out or "'argument_needle':" in out or ">argument_needle<" in out
206206

207207
caps.supports_tool_calls = tool_call_renders_str_arguments or tool_call_renders_obj_arguments
208208
caps.requires_object_arguments = not tool_call_renders_str_arguments and tool_call_renders_obj_arguments

tests/test-capabilities.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,3 +257,15 @@ TEST(CapabilitiesTest, CommandRPlusToolUse) {
257257
// EXPECT_TRUE(caps.requires_non_null_content);
258258
EXPECT_FALSE(caps.requires_typed_content);
259259
}
260+
261+
TEST(CapabilitiesTest, GLM46) {
262+
auto caps = get_caps("tests/zai-org-GLM-4.6.jinja");
263+
EXPECT_TRUE(caps.supports_system_role);
264+
EXPECT_TRUE(caps.supports_tools);
265+
EXPECT_TRUE(caps.supports_tool_calls);
266+
EXPECT_TRUE(caps.supports_tool_responses);
267+
EXPECT_TRUE(caps.supports_parallel_tool_calls);
268+
EXPECT_TRUE(caps.requires_object_arguments);
269+
// EXPECT_TRUE(caps.requires_non_null_content);
270+
EXPECT_FALSE(caps.requires_typed_content);
271+
}

0 commit comments

Comments
 (0)