GLM (4.5, 4.6, 4.7, 5.x) on ollama 7af39318
fail 91% strict pass 29 pass · 3 fail · 19 unsupported
Run
Checks
| Check | Pass | Soft | Fail | Error | Strict pass rate |
|---|---|---|---|---|---|
expected_match |
28 | 0 | 2 | 0 | 93% |
expected_error |
1 | 0 | 1 | 0 | 50% |
stream_equals_nonstream |
32 | 0 | 0 | 0 | 100% |
no_leakage |
31 | 0 | 1 | 0 | 97% |
arguments_json |
27 | 0 | 0 | 0 | 100% |
arguments_schema |
27 | 0 | 0 | 0 | 100% |
parallel_order |
4 | 0 | 0 | 0 | 100% |
3 fixture(s) failed only a synthetic strategy: char:* (which can split
special tokens), or a multi-token strategy this engine never produces because its server streams one token per event (one, special, rand:1:8, rand:2:8, rand:3:8, rand:4:8, rand:5:8). These are listed below but never count toward the status.
Fixtures needing attention
fail glm/glm47-marker-in-arguments
expected_match, no_leakage
| Check | Strategy | Result | Detail |
|---|---|---|---|
expected_match | nonstream | fail | content: expected None, got '; keys go in <arg_key>.</arg_value></tool_call>'; tool_calls[0].arguments: expected '{"path": "docs/format.md", "content": "Wrap each call in <tool_call> and </tool_call>; keys go in <arg_key>."}', got '{"path":"docs/format.md","content":"Wrap each call in \\u003ctool_call\\u003e and"}' |
expected_match | token | fail | content: expected None, got '; keys go in <arg_key>.</arg_value></tool_call>'; tool_calls[0].arguments: expected '{"path": "docs/format.md", "content": "Wrap each call in <tool_call> and </tool_call>; keys go in <arg_key>."}', got '{"path":"docs/format.md","content":"Wrap each call in \\u003ctool_call\\u003e and"}' |
no_leakage | nonstream | fail | content contains '</tool_call>'; content contains '<arg_key>'; content contains '</arg_value>' |
no_leakage | token | fail | content contains '</tool_call>'; content contains '<arg_key>'; content contains '</arg_value>' |
Synthetic strategies (not counted): expected_match@one fail, expected_match@special fail, expected_match@rand:1:8 fail, expected_match@rand:2:8 fail, expected_match@rand:3:8 fail, expected_match@rand:4:8 fail, expected_match@rand:5:8 fail, no_leakage@one fail, no_leakage@special fail, no_leakage@rand:1:8 fail, no_leakage@rand:2:8 fail, no_leakage@rand:3:8 fail, no_leakage@rand:4:8 fail, no_leakage@rand:5:8 fail
Minimal repro
uv run canitoolcall run --engine ollama --fixtures fixtures/glm/glm47-render.jsonl --id glm/glm47-marker-in-arguments --strategy token --observed all
Set up the engine first with scripts/engines/ollama.sh; this run used ollama 7af39318.
The fixture is line 8 of fixtures/glm/glm47-render.jsonl.
Observed vs expected
Identical parses are grouped. Empty strings are shown as null, as in strict comparison.
Strategies: nonstream, one, special, token, rand:1:8, rand:2:8, rand:3:8, rand:4:8, rand:5:8
@@ -1,9 +1,9 @@ { - "content": null, + "content": "; keys go in <arg_key>.</arg_value></tool_call>", "reasoning_content": "Write the format note to the docs file.", "tool_calls": [ { "arguments": { - "content": "Wrap each call in <tool_call> and </tool_call>; keys go in <arg_key>.", + "content": "Wrap each call in <tool_call> and", "path": "docs/format.md" },
Fixture
Provenance: template_render, https://huggingface.co/zai-org/GLM-4.7/blob/602d01efcdd332c5238ca4bcede555defbe83eb7/chat_template.jinja.
Tags: single-call, marker-in-arguments, reasoning, x-glm47.
Raw output
Write the format note to the docs file.</think><tool_call>write_file<arg_key>path</arg_key><arg_value>docs/format.md</arg_value><arg_key>content</arg_key><arg_value>Wrap each call in <tool_call> and </tool_call>; keys go in <arg_key>.</arg_value></tool_call>
Expected parse
{
"content": null,
"reasoning_content": "Write the format note to the docs file.",
"tool_calls": [
{
"arguments": {
"content": "Wrap each call in <tool_call> and </tool_call>; keys go in <arg_key>.",
"path": "docs/format.md"
},
"name": "write_file"
}
]
}
Fixture record (JSONL, ready to vendor into an engine's tests)
{"id": "glm/glm47-marker-in-arguments", "family": "glm", "models": ["zai-org/GLM-4.7", "zai-org/GLM-4.7-Flash"], "spec_version": "0.1", "provenance": {"kind": "template_render", "source_url": "https://huggingface.co/zai-org/GLM-4.7/blob/602d01efcdd332c5238ca4bcede555defbe83eb7/chat_template.jinja", "revision": "602d01efcdd332c5238ca4bcede555defbe83eb7", "license": "MIT", "generator": "scripts/fixtures/glm/build.py", "template_sha256": "d63ad536c3c81880043e22ec7fd08db42b4d8fb7c89c7138bc562bfa25281375"}, "tools": [{"type": "function", "function": {"name": "get_weather", "description": "Get the current weather for a city.", "parameters": {"type": "object", "properties": {"city": {"type": "string"}, "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}}, "required": ["city"]}}}, {"type": "function", "function": {"name": "search_web", "description": "Search the web.", "parameters": {"type": "object", "properties": {"query": {"type": "string"}, "filters": {"type": "object", "properties": {"site": {"type": "string"}, "max_results": {"type": "integer"}, "tags": {"type": "array", "items": {"type": "string"}}}}}, "required": ["query"]}}}, {"type": "function", "function": {"name": "get_time", "description": "Get the current UTC time.", "parameters": {"type": "object", "properties": {}}}}, {"type": "function", "function": {"name": "write_file", "description": "Write a text file.", "parameters": {"type": "object", "properties": {"path": {"type": "string"}, "content": {"type": "string"}}, "required": ["path", "content"]}}}, {"type": "function", "function": {"name": "set_timer", "description": "Start a countdown timer.", "parameters": {"type": "object", "properties": {"seconds": {"type": "integer"}, "label": {"type": "string"}}, "required": ["seconds"]}}}, {"type": "function", "function": {"name": "create_event", "description": "Create a calendar event.", "parameters": {"type": "object", "properties": {"title": {"type": "string"}, "attendees": {"type": "array", "items": {"type": "string"}}, "duration_minutes": {"type": "integer"}, "all_day": {"type": "boolean"}, "reminder_minutes": {"type": ["integer", "null"]}}, "required": ["title"]}}}, {"type": "function", "function": {"name": "lookup_order", "description": "Look up an order by its id.", "parameters": {"type": "object", "properties": {"order_id": {"type": "string"}, "reference": {"type": "string"}}, "required": ["order_id"]}}}, {"type": "function", "function": {"name": "update_settings", "description": "Update user settings.", "parameters": {"type": "object", "properties": {"settings": {"type": "object"}, "dry_run": {"type": "boolean"}}, "required": ["settings"]}}}, {"type": "function", "function": {"name": "convert_units", "description": "Convert a value between units.", "parameters": {"type": "object", "properties": {"value": {"type": "number"}, "from_unit": {"type": "string"}, "to_unit": {"type": "string"}}, "required": ["value", "from_unit", "to_unit"]}}}], "raw_output": "Write the format note to the docs file.</think><tool_call>write_file<arg_key>path</arg_key><arg_value>docs/format.md</arg_value><arg_key>content</arg_key><arg_value>Wrap each call in <tool_call> and </tool_call>; keys go in <arg_key>.</arg_value></tool_call>", "output_token_ids": [7984, 279, 3561, 5185, 311, 279, 26257, 1034, 13, 151351, 151352, 4934, 2458, 151356, 2343, 151357, 151358, 14111, 91564, 21274, 151359, 151356, 1796, 151357, 151358, 26701, 1817, 1618, 304, 220, 151352, 323, 220, 151353, 26, 6894, 728, 304, 220, 151356, 13, 151359, 151353], "tokenizer": {"repo": "zai-org/GLM-4.7", "revision": "602d01efcdd332c5238ca4bcede555defbe83eb7", "mode": "hf"}, "thinking": true, "expected": {"content": null, "reasoning_content": "Write the format note to the docs file.", "tool_calls": [{"name": "write_file", "arguments": {"path": "docs/format.md", "content": "Wrap each call in <tool_call> and </tool_call>; keys go in <arg_key>."}}]}, "tags": ["single-call", "marker-in-arguments", "reasoning", "x-glm47"], "notes": "The string value contains <tool_call>, </tool_call> and <arg_key> (tokenized as the marker tokens). It does not contain </arg_value>, so the value is still delimited unambiguously."}
Parser configuration
{
"chunking": "one llama-server event per token; Add(delta, false) per non-empty group, then Add('', true)",
"detokenizer": "llama-server common_token_to_piece(special = id in preserved_tokens)",
"eog_stop": "tokens after the first end-of-generation token are dropped (llama-server stops there)",
"has_thinking_support": true,
"legacy_template_parser": false,
"llama_cpp_build": "b11081",
"nonstream": "per-token events concatenated (routes.go writeChatResponse)",
"ollama_commit": "7af393188defd52d370464de0d2064649cab9b41",
"parser": "glm-4.7",
"parser_source": "Ollama library model config (registry.ollama.ai, fetched 2026-09-25): glm-4.7-flash; create/metadata.go glm4 -> glm-4.7",
"preserved_tokens": [
"<think>",
"</think>",
"<tool_call>",
"</tool_call>",
"<arg_key>",
"</arg_key>",
"<arg_value>",
"</arg_value>"
],
"think_effective": true,
"think_requested": true,
"tool_call_serialization": "openai.ToToolCalls",
"vocab_gguf": "zai-org--GLM-4.7.vocab.gguf",
"vocab_gguf_converter_llama_cpp_commit": "a25c9865fe03c954c93fd755b5d79ae86ba99750",
"vocab_gguf_revision": "602d01efcdd332c5238ca4bcede555defbe83eb7",
"vocab_gguf_revision_matches_tokenizer": true,
"vocab_gguf_sha256": "6b9f8ab9bceda63102fc1fc9775e79287dd4c921eaefa03a9170ab4a14ae6570"
}
fail glm/glm47-significant-whitespace
expected_match
| Check | Strategy | Result | Detail |
|---|---|---|---|
expected_match | nonstream | fail | tool_calls[0].arguments: expected '{"path": "pad.txt", "content": " two spaces\\n"}', got '{"path":"pad.txt","content":" two spaces"}' |
expected_match | token | fail | tool_calls[0].arguments: expected '{"path": "pad.txt", "content": " two spaces\\n"}', got '{"path":"pad.txt","content":" two spaces"}' |
Synthetic strategies (not counted): expected_match@one fail, expected_match@special fail, expected_match@rand:1:8 fail, expected_match@rand:2:8 fail, expected_match@rand:3:8 fail, expected_match@rand:4:8 fail, expected_match@rand:5:8 fail
Minimal repro
uv run canitoolcall run --engine ollama --fixtures fixtures/glm/glm47-render.jsonl --id glm/glm47-significant-whitespace --strategy token --observed all
Set up the engine first with scripts/engines/ollama.sh; this run used ollama 7af39318.
The fixture is line 13 of fixtures/glm/glm47-render.jsonl.
Observed vs expected
Identical parses are grouped. Empty strings are shown as null, as in strict comparison.
Strategies: nonstream, one, special, token, rand:1:8, rand:2:8, rand:3:8, rand:4:8, rand:5:8
@@ -5,5 +5,5 @@ { "arguments": { - "content": " two spaces\n", + "content": " two spaces", "path": "pad.txt" },
Fixture
Provenance: template_render, https://huggingface.co/zai-org/GLM-4.7/blob/602d01efcdd332c5238ca4bcede555defbe83eb7/chat_template.jinja.
Tags: single-call, x-significant-whitespace, reasoning, x-glm47.
Raw output
Keep the spacing exactly.</think><tool_call>write_file<arg_key>path</arg_key><arg_value>pad.txt</arg_value><arg_key>content</arg_key><arg_value> two spaces </arg_value></tool_call>
Expected parse
{
"content": null,
"reasoning_content": "Keep the spacing exactly.",
"tool_calls": [
{
"arguments": {
"content": " two spaces\n",
"path": "pad.txt"
},
"name": "write_file"
}
]
}
Fixture record (JSONL, ready to vendor into an engine's tests)
{"id": "glm/glm47-significant-whitespace", "family": "glm", "models": ["zai-org/GLM-4.7", "zai-org/GLM-4.7-Flash"], "spec_version": "0.1", "provenance": {"kind": "template_render", "source_url": "https://huggingface.co/zai-org/GLM-4.7/blob/602d01efcdd332c5238ca4bcede555defbe83eb7/chat_template.jinja", "revision": "602d01efcdd332c5238ca4bcede555defbe83eb7", "license": "MIT", "generator": "scripts/fixtures/glm/build.py", "template_sha256": "d63ad536c3c81880043e22ec7fd08db42b4d8fb7c89c7138bc562bfa25281375"}, "tools": [{"type": "function", "function": {"name": "get_weather", "description": "Get the current weather for a city.", "parameters": {"type": "object", "properties": {"city": {"type": "string"}, "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}}, "required": ["city"]}}}, {"type": "function", "function": {"name": "search_web", "description": "Search the web.", "parameters": {"type": "object", "properties": {"query": {"type": "string"}, "filters": {"type": "object", "properties": {"site": {"type": "string"}, "max_results": {"type": "integer"}, "tags": {"type": "array", "items": {"type": "string"}}}}}, "required": ["query"]}}}, {"type": "function", "function": {"name": "get_time", "description": "Get the current UTC time.", "parameters": {"type": "object", "properties": {}}}}, {"type": "function", "function": {"name": "write_file", "description": "Write a text file.", "parameters": {"type": "object", "properties": {"path": {"type": "string"}, "content": {"type": "string"}}, "required": ["path", "content"]}}}, {"type": "function", "function": {"name": "set_timer", "description": "Start a countdown timer.", "parameters": {"type": "object", "properties": {"seconds": {"type": "integer"}, "label": {"type": "string"}}, "required": ["seconds"]}}}, {"type": "function", "function": {"name": "create_event", "description": "Create a calendar event.", "parameters": {"type": "object", "properties": {"title": {"type": "string"}, "attendees": {"type": "array", "items": {"type": "string"}}, "duration_minutes": {"type": "integer"}, "all_day": {"type": "boolean"}, "reminder_minutes": {"type": ["integer", "null"]}}, "required": ["title"]}}}, {"type": "function", "function": {"name": "lookup_order", "description": "Look up an order by its id.", "parameters": {"type": "object", "properties": {"order_id": {"type": "string"}, "reference": {"type": "string"}}, "required": ["order_id"]}}}, {"type": "function", "function": {"name": "update_settings", "description": "Update user settings.", "parameters": {"type": "object", "properties": {"settings": {"type": "object"}, "dry_run": {"type": "boolean"}}, "required": ["settings"]}}}, {"type": "function", "function": {"name": "convert_units", "description": "Convert a value between units.", "parameters": {"type": "object", "properties": {"value": {"type": "number"}, "from_unit": {"type": "string"}, "to_unit": {"type": "string"}}, "required": ["value", "from_unit", "to_unit"]}}}], "raw_output": "Keep the spacing exactly.</think><tool_call>write_file<arg_key>path</arg_key><arg_value>pad.txt</arg_value><arg_key>content</arg_key><arg_value> two spaces\n</arg_value></tool_call>", "output_token_ids": [19397, 279, 25862, 6896, 13, 151351, 151352, 4934, 2458, 151356, 2343, 151357, 151358, 13234, 3909, 151359, 151356, 1796, 151357, 151358, 220, 1378, 220, 12615, 198, 151359, 151353], "tokenizer": {"repo": "zai-org/GLM-4.7", "revision": "602d01efcdd332c5238ca4bcede555defbe83eb7", "mode": "hf"}, "thinking": true, "expected": {"content": null, "reasoning_content": "Keep the spacing exactly.", "tool_calls": [{"name": "write_file", "arguments": {"path": "pad.txt", "content": " two spaces\n"}}]}, "tags": ["single-call", "x-significant-whitespace", "reasoning", "x-glm47"], "notes": "Values have no wrapping newlines in GLM, so leading/trailing whitespace inside <arg_value> is data."}
Parser configuration
{
"chunking": "one llama-server event per token; Add(delta, false) per non-empty group, then Add('', true)",
"detokenizer": "llama-server common_token_to_piece(special = id in preserved_tokens)",
"eog_stop": "tokens after the first end-of-generation token are dropped (llama-server stops there)",
"has_thinking_support": true,
"legacy_template_parser": false,
"llama_cpp_build": "b11081",
"nonstream": "per-token events concatenated (routes.go writeChatResponse)",
"ollama_commit": "7af393188defd52d370464de0d2064649cab9b41",
"parser": "glm-4.7",
"parser_source": "Ollama library model config (registry.ollama.ai, fetched 2026-09-25): glm-4.7-flash; create/metadata.go glm4 -> glm-4.7",
"preserved_tokens": [
"<think>",
"</think>",
"<tool_call>",
"</tool_call>",
"<arg_key>",
"</arg_key>",
"<arg_value>",
"</arg_value>"
],
"think_effective": true,
"think_requested": true,
"tool_call_serialization": "openai.ToToolCalls",
"vocab_gguf": "zai-org--GLM-4.7.vocab.gguf",
"vocab_gguf_converter_llama_cpp_commit": "a25c9865fe03c954c93fd755b5d79ae86ba99750",
"vocab_gguf_revision": "602d01efcdd332c5238ca4bcede555defbe83eb7",
"vocab_gguf_revision_matches_tokenizer": true,
"vocab_gguf_sha256": "6b9f8ab9bceda63102fc1fc9775e79287dd4c921eaefa03a9170ab4a14ae6570"
}
fail glm/glm47-truncated-before-close-call
expected_error
| Check | Strategy | Result | Detail |
|---|---|---|---|
expected_error | nonstream | fail | returned 1 tool call(s) ['get_weather'] for max_tokens hit after the last </arg_value>; </tool_call> is missing. |
expected_error | token | fail | returned 1 tool call(s) ['get_weather'] for max_tokens hit after the last </arg_value>; </tool_call> is missing. |
Synthetic strategies (not counted): expected_error@one fail, expected_error@special fail, expected_error@rand:1:8 fail, expected_error@rand:2:8 fail, expected_error@rand:3:8 fail, expected_error@rand:4:8 fail, expected_error@rand:5:8 fail
Minimal repro
uv run canitoolcall run --engine ollama --fixtures fixtures/glm/truncated-malformed.jsonl --id glm/glm47-truncated-before-close-call --strategy token --observed all
Set up the engine first with scripts/engines/ollama.sh; this run used ollama 7af39318.
The fixture is line 2 of fixtures/glm/truncated-malformed.jsonl.
Observed
Identical parses are grouped. Empty strings are shown as null, as in strict comparison.
Strategies: nonstream, one, special, token, rand:1:8, rand:2:8, rand:3:8, rand:4:8, rand:5:8
{
"content": null,
"reasoning_content": null,
"tool_calls": [
{
"arguments": {
"city": "Berlin",
"unit": "celsius"
},
"name": "get_weather"
}
]
}
Fixture
Provenance: template_render, https://huggingface.co/zai-org/GLM-4.7/blob/602d01efcdd332c5238ca4bcede555defbe83eb7/chat_template.jinja.
Tags: truncated, x-glm47.
Expected graceful failure: max_tokens hit after the last </arg_value>; </tool_call> is missing. (accept: no_tool_calls, content_passthrough, exception).
Raw output
<tool_call>get_weather<arg_key>city</arg_key><arg_value>Berlin</arg_value><arg_key>unit</arg_key><arg_value>celsius</arg_value>
Fixture record (JSONL, ready to vendor into an engine's tests)
{"id": "glm/glm47-truncated-before-close-call", "family": "glm", "models": ["zai-org/GLM-4.7"], "spec_version": "0.1", "provenance": {"kind": "template_render", "source_url": "https://huggingface.co/zai-org/GLM-4.7/blob/602d01efcdd332c5238ca4bcede555defbe83eb7/chat_template.jinja", "revision": "602d01efcdd332c5238ca4bcede555defbe83eb7", "license": "MIT", "generator": "scripts/fixtures/glm/build.py", "template_sha256": "d63ad536c3c81880043e22ec7fd08db42b4d8fb7c89c7138bc562bfa25281375"}, "tools": [{"type": "function", "function": {"name": "get_weather", "description": "Get the current weather for a city.", "parameters": {"type": "object", "properties": {"city": {"type": "string"}, "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}}, "required": ["city"]}}}, {"type": "function", "function": {"name": "search_web", "description": "Search the web.", "parameters": {"type": "object", "properties": {"query": {"type": "string"}, "filters": {"type": "object", "properties": {"site": {"type": "string"}, "max_results": {"type": "integer"}, "tags": {"type": "array", "items": {"type": "string"}}}}}, "required": ["query"]}}}, {"type": "function", "function": {"name": "get_time", "description": "Get the current UTC time.", "parameters": {"type": "object", "properties": {}}}}, {"type": "function", "function": {"name": "write_file", "description": "Write a text file.", "parameters": {"type": "object", "properties": {"path": {"type": "string"}, "content": {"type": "string"}}, "required": ["path", "content"]}}}, {"type": "function", "function": {"name": "set_timer", "description": "Start a countdown timer.", "parameters": {"type": "object", "properties": {"seconds": {"type": "integer"}, "label": {"type": "string"}}, "required": ["seconds"]}}}, {"type": "function", "function": {"name": "create_event", "description": "Create a calendar event.", "parameters": {"type": "object", "properties": {"title": {"type": "string"}, "attendees": {"type": "array", "items": {"type": "string"}}, "duration_minutes": {"type": "integer"}, "all_day": {"type": "boolean"}, "reminder_minutes": {"type": ["integer", "null"]}}, "required": ["title"]}}}, {"type": "function", "function": {"name": "lookup_order", "description": "Look up an order by its id.", "parameters": {"type": "object", "properties": {"order_id": {"type": "string"}, "reference": {"type": "string"}}, "required": ["order_id"]}}}, {"type": "function", "function": {"name": "update_settings", "description": "Update user settings.", "parameters": {"type": "object", "properties": {"settings": {"type": "object"}, "dry_run": {"type": "boolean"}}, "required": ["settings"]}}}, {"type": "function", "function": {"name": "convert_units", "description": "Convert a value between units.", "parameters": {"type": "object", "properties": {"value": {"type": "number"}, "from_unit": {"type": "string"}, "to_unit": {"type": "string"}}, "required": ["value", "from_unit", "to_unit"]}}}], "raw_output": "<tool_call>get_weather<arg_key>city</arg_key><arg_value>Berlin</arg_value><arg_key>unit</arg_key><arg_value>celsius</arg_value>", "output_token_ids": [151352, 455, 68852, 151356, 8923, 151357, 151358, 93615, 151359, 151356, 3843, 151357, 151358, 66, 40026, 151359], "tokenizer": {"repo": "zai-org/GLM-4.7", "revision": "602d01efcdd332c5238ca4bcede555defbe83eb7", "mode": "hf"}, "generation_prompt": "<|assistant|></think>", "thinking": false, "expected_error": {"reason": "max_tokens hit after the last </arg_value>; </tool_call> is missing.", "accept": ["no_tool_calls", "content_passthrough", "exception"]}, "tags": ["truncated", "x-glm47"], "notes": "Token prefix of glm/glm47-thinking-disabled. A parser should not emit a call that never closed."}
Parser configuration
{
"chunking": "one llama-server event per token; Add(delta, false) per non-empty group, then Add('', true)",
"detokenizer": "llama-server common_token_to_piece(special = id in preserved_tokens)",
"eog_stop": "tokens after the first end-of-generation token are dropped (llama-server stops there)",
"has_thinking_support": true,
"legacy_template_parser": false,
"llama_cpp_build": "b11081",
"nonstream": "per-token events concatenated (routes.go writeChatResponse)",
"ollama_commit": "7af393188defd52d370464de0d2064649cab9b41",
"parser": "glm-4.7",
"parser_source": "Ollama library model config (registry.ollama.ai, fetched 2026-09-25): glm-4.7-flash; create/metadata.go glm4 -> glm-4.7",
"preserved_tokens": [
"<think>",
"</think>",
"<tool_call>",
"</tool_call>",
"<arg_key>",
"</arg_key>",
"<arg_value>",
"</arg_value>"
],
"think_effective": false,
"think_requested": false,
"tool_call_serialization": "openai.ToToolCalls",
"vocab_gguf": "zai-org--GLM-4.7.vocab.gguf",
"vocab_gguf_converter_llama_cpp_commit": "a25c9865fe03c954c93fd755b5d79ae86ba99750",
"vocab_gguf_revision": "602d01efcdd332c5238ca4bcede555defbe83eb7",
"vocab_gguf_revision_matches_tokenizer": true,
"vocab_gguf_sha256": "6b9f8ab9bceda63102fc1fc9775e79287dd4c921eaefa03a9170ab4a14ae6570"
}
Unsupported fixtures
The adapter declined these fixtures because this engine version has no parser for the family or model.
glm/glm45-call-order-vs-tool-order: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not coveredglm/glm45-content-before-call: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not coveredglm/glm45-empty-arguments: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not coveredglm/glm45-marker-in-arguments: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not coveredglm/glm45-nested-object: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not coveredglm/glm45-no-call: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not coveredglm/glm45-ollama-content-after-call: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not coveredglm/glm45-parallel-mixed-nested: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not coveredglm/glm45-parallel-same-tool: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not coveredglm/glm45-schema-coercion: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not coveredglm/glm45-single-call: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not coveredglm/glm45-thinking-disabled: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not coveredglm/glm45-truncated-after-arg-key: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not coveredglm/glm45-unicode-emoji: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not coveredglm/glm45-vllm-coerces-schema-types: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not coveredglm/glm45-vllm-newline-format-content-before: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not coveredglm/glm45-vllm-newline-format-two-calls: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not coveredglm/glm45-vllm-zero-arg-newline: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not covered
- pass strict match on every realistic strategy
- soft pass only whitespace differs (normalization
soft-v1) - fail a check failed
- error the harness failed, not the engine's parser
- unsupported the engine has no parser for this family or model