I am setting up an OVMS for Linux, OpenCode and Gemma 4 E4B.
And I see that tools call request has some another tool call format:
Expected:
{ "tool_calls": [ { "type": "function", "function": { "name": "write", "arguments": "{"content": "TEXT", "filePath": "/absolute/path/file.txt"}" } } ] }
Got:
User
Try to save some small file first
Assistant (Build · ovms.gemma-4-e4b (local) · 7.1s)
{
"tool_calls": [
{
"name": "write",
"arguments": {
"filePath": "small_file.txt",
"content": "This is a small test file."
}
}
]
}
As you can see there are some differences in JSON. Is there a way to change/customize this without code change?
How do I run ovms:
ovms --model_name gemma-4-e4b
--model_path ./gemma-4-e4b-ov-int4
--target_device $DEVICE
--port 9080
--rest_port 8080
--cache_dir ./gemma-4-e4b-ov-int4/npu_cache
--log_level $LOG_LEVEL
--tool_parser gemma4
My config:
Ubuntu 24.04.5 LTS
6.17.0-1032-oem
Intel© Core™ Ultra 7 265H × 16
OpenVINO Model Server 2026.3.0.6f3df706b
I am setting up an OVMS for Linux, OpenCode and Gemma 4 E4B.
And I see that tools call request has some another tool call format:
Expected:
{ "tool_calls": [ { "type": "function", "function": { "name": "write", "arguments": "{"content": "TEXT", "filePath": "/absolute/path/file.txt"}" } } ] }
Got:
User
Try to save some small file first
Assistant (Build · ovms.gemma-4-e4b (local) · 7.1s)
{
"tool_calls": [
{
"name": "write",
"arguments": {
"filePath": "small_file.txt",
"content": "This is a small test file."
}
}
]
}
As you can see there are some differences in JSON. Is there a way to change/customize this without code change?
How do I run ovms:
ovms --model_name gemma-4-e4b
--model_path ./gemma-4-e4b-ov-int4
--target_device $DEVICE
--port 9080
--rest_port 8080
--cache_dir ./gemma-4-e4b-ov-int4/npu_cache
--log_level $LOG_LEVEL
--tool_parser gemma4
My config:
Ubuntu 24.04.5 LTS
6.17.0-1032-oem
Intel© Core™ Ultra 7 265H × 16
OpenVINO Model Server 2026.3.0.6f3df706b