Hello,
I am currently integrating Gemma 4 (via vLLM) with Hermes Agent and encountering issues with tool calling parsing.
Context
Setup:
-
Model: google/gemma-4-E4B-it
-
Runtime: vLLM (vllm-openai:gemma4)
-
Flags:
--tool-call-parser gemma4
--enable-auto-tool-choice
-
Hermes Agent (latest version)
Observed behavior
Gemma 4 produces tool calls in the following format:
<|tool_call>call:search_files{pattern:<|"|>/var/log<|"|>,target:<|"|>files<|"|>}<tool_call|>
However:
- The
tool_calls field is empty
- The tool call remains embedded in
message.content
- Hermes does not execute the tool, as it relies on
message.tool_calls
This results in a silent failure of tool execution.
This behavior appears consistent with other reports where:
- Gemma outputs valid tool calls
- but parsers fail to extract them into structured fields ([GitHub]1)
Questions
-
Does Hermes Agent currently support a native Gemma parser?
- I could not find any
gemma parser in environments/tool_call_parsers
- Is this planned or already available under another name?
-
Is there a recommended parser for Gemma 4?
pythonic seems partially compatible with call:func{...} formats
- but Gemma 4 uses
<|tool_call> ... <tool_call|> tokens
-
Is a custom chat_template required for Gemma?
- vLLM documentation suggests that only some models have built-in tool templates
- Gemma appears to require explicit formatting ([vLLM]2)
-
Is Hermes expected to handle raw tool call text as fallback?
- Currently Hermes only checks
message.tool_calls
- Would a fallback parsing mechanism (from
content) be considered?
Goal
Clarify the recommended way to use Gemma 4 + vLLM with Hermes, and whether first-class support is planned.
Thanks!
Hello,
I am currently integrating Gemma 4 (via vLLM) with Hermes Agent and encountering issues with tool calling parsing.
Context
Setup:
Model:
google/gemma-4-E4B-itRuntime: vLLM (
vllm-openai:gemma4)Flags:
--tool-call-parser gemma4--enable-auto-tool-choiceHermes Agent (latest version)
Observed behavior
Gemma 4 produces tool calls in the following format:
However:
tool_callsfield is emptymessage.contentmessage.tool_callsThis results in a silent failure of tool execution.
This behavior appears consistent with other reports where:
Questions
Does Hermes Agent currently support a native Gemma parser?
gemmaparser inenvironments/tool_call_parsersIs there a recommended parser for Gemma 4?
pythonicseems partially compatible withcall:func{...}formats<|tool_call> ... <tool_call|>tokensIs a custom chat_template required for Gemma?
Is Hermes expected to handle raw tool call text as fallback?
message.tool_callscontent) be considered?Goal
Clarify the recommended way to use Gemma 4 + vLLM with Hermes, and whether first-class support is planned.
Thanks!