Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,5 @@ dist/
.DS_Store
Testing/
.vscode/
__pycache__/
__pycache__/
clangd/
6 changes: 3 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -55,20 +55,20 @@ endif()
include(FetchContent)

# Fetch nlohmann/json
FetchContent_Declare(json URL https://github.com/nlohmann/json/archive/refs/heads/develop.zip)
FetchContent_Declare(json URL https://github.com/nlohmann/json/archive/refs/tags/v3.12.0.zip)
FetchContent_MakeAvailable(json)
target_link_libraries(minja INTERFACE nlohmann_json::nlohmann_json)

if(MINJA_TEST_ENABLED)
if (MINJA_FUZZTEST_ENABLED)
# Fetch google/fuzztest (and indirectly, gtest)
FetchContent_Declare(fuzztest URL https://github.com/google/fuzztest/archive/refs/heads/main.zip)
FetchContent_Declare(fuzztest URL https://github.com/google/fuzztest/archive/refs/tags/2025-08-05.zip)
FetchContent_MakeAvailable(fuzztest)
message(STATUS "${fuzztest_BINARY_DIR}: ${${fuzztest_BINARY_DIR}}")
else()
# Fetch gtest
set(INSTALL_GTEST OFF)
FetchContent_Declare(googletest URL https://github.com/google/googletest/archive/refs/heads/main.zip)
FetchContent_Declare(googletest URL https://github.com/google/googletest/archive/refs/tags/v1.17.0.zip)
FetchContent_MakeAvailable(googletest)
endif()
endif()
Expand Down
12 changes: 6 additions & 6 deletions scripts/fetch_templates_and_goldens.py
Original file line number Diff line number Diff line change
Expand Up @@ -166,10 +166,14 @@ def __init__(self, template, env=None, filters=None, global_functions=None):
}])
caps.supports_tools = "some_tool" in out

caps.requires_non_null_content = \
(user_needle in self.try_raw_render([dummy_user_msg, {"role": "assistant", "content": ''}])) \
and (user_needle not in self.try_raw_render([dummy_user_msg, {"role": "assistant", "content": None}]))

def make_tool_calls_msg(tool_calls, content=None):
return {
"role": "assistant",
"content": content,
"content": "" if content is None and caps.requires_non_null_content else content,
"tool_calls": tool_calls,
}
def make_tool_call(tool_name, arguments):
Expand Down Expand Up @@ -198,10 +202,6 @@ def make_tool_call(tool_name, arguments):
caps.supports_tool_calls = tool_call_renders_str_arguments or tool_call_renders_obj_arguments
caps.requires_object_arguments = not tool_call_renders_str_arguments and tool_call_renders_obj_arguments

caps.requires_non_null_content = \
(user_needle in self.try_raw_render([dummy_user_msg, {"role": "assistant", "content": ''}])) \
and (user_needle not in self.try_raw_render([dummy_user_msg, {"role": "assistant", "content": None}]))

if caps.supports_tool_calls:
dummy_args = dummy_args_obj if caps.requires_object_arguments else json.dumps(dummy_args_obj)
tc1 = make_tool_call("test_tool1", dummy_args)
Expand Down Expand Up @@ -232,7 +232,7 @@ def make_tool_call(tool_name, arguments):
args = {"arg1": "some_value"}
tool_call_msg = {
"role": "assistant",
"content": None,
"content": "" if caps.requires_non_null_content else None,
"tool_calls": [
{
"id": "call_1___",
Expand Down
2 changes: 1 addition & 1 deletion tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -285,7 +285,6 @@ set(MODEL_IDS
Qwen/Qwen2.5-VL-3B-Instruct
Qwen/Qwen2.5-VL-72B-Instruct
Qwen/Qwen2.5-VL-7B-Instruct
Qwen/QwQ-32B
Qwen/QwQ-32B-Preview
rubenroy/Zurich-14B-GCv2-5m
rubenroy/Zurich-7B-GCv2-5m
Expand Down Expand Up @@ -323,6 +322,7 @@ set(MODEL_IDS
Qwen/Qwen3-4B

# Broken, TODO:
# Qwen/QwQ-32B
# ai21labs/AI21-Jamba-1.5-Large # https://github.com/google/minja/issues/8
# Almawave/Velvet-14B
# deepseek-ai/DeepSeek-R1
Expand Down
14 changes: 13 additions & 1 deletion tests/test-capabilities.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,18 @@ TEST(CapabilitiesTest, Gemma7b) {
EXPECT_FALSE(caps.requires_typed_content);
}

TEST(CapabilitiesTest, QwQ32B) {
auto caps = get_caps("tests/Qwen-QwQ-32B.jinja");
EXPECT_TRUE(caps.supports_system_role);
EXPECT_TRUE(caps.supports_tools);
EXPECT_TRUE(caps.supports_tool_calls);
EXPECT_FALSE(caps.supports_tool_responses);
EXPECT_TRUE(caps.supports_parallel_tool_calls);
EXPECT_TRUE(caps.requires_object_arguments);
// EXPECT_TRUE(caps.requires_non_null_content);
EXPECT_FALSE(caps.requires_typed_content);
}

#ifndef _WIN32
TEST(CapabilitiesTest, DeepSeekR1Distill)
{
Expand Down Expand Up @@ -141,7 +153,7 @@ TEST(CapabilitiesTest, MetaLlama3_3_70BInstruct) {
TEST(CapabilitiesTest, MiniMaxAIText01) {
auto caps = get_caps("tests/MiniMaxAI-MiniMax-Text-01.jinja");
EXPECT_TRUE(caps.supports_system_role);
EXPECT_FALSE(caps.supports_tools);
EXPECT_TRUE(caps.supports_tools);
EXPECT_FALSE(caps.supports_tool_calls);
EXPECT_FALSE(caps.supports_tool_responses);
EXPECT_FALSE(caps.supports_parallel_tool_calls);
Expand Down
Loading