`ai/functiongemma` tool calls are not parsed into `tool_calls`
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 651
- Forks
- 155
- PR merge metrics
- No merged PRs in 30d
Description
Summary
ai/functiongemma emits well-formed tool-call tokens in its own format, but Docker Model Runner does not parse them:
tool_callsstaysnulland the raw<start_function_call>…<end_function_call>text is returned inmessage.content;<end_function_call>is not treated as a stop token, so the call repeats untilmax_tokensandfinish_reasonis"length".
There is no error. To a client, the response looks like the model simply did not use the tool.
Steps to reproduce
docker model pull ai/functiongemma
curl -s http://localhost:12434/engines/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "ai/functiongemma",
"max_tokens": 400,
"messages": [{"role":"user","content":"What is the current time? Use the get_time tool."}],
"tools": [{"type":"function","function":{
"name":"get_time","description":"Get the current time",
"parameters":{"type":"object","properties":{}}}}]
}' | jq '.choices[0]'
Actual
tool_calls : null
finish_reason : "length"
content : "<start_function_call>call:get_time{}<end_function_call>call:get_time{}<end_function_call>call:get_ti…"
Expected
tool_calls populated, finish_reason: "tool_calls", and no call tokens in content. For comparison, an equivalent request to Ollama returns:
{"tool_calls": [{"id": "call_o3fkhnnc", "function": {"name": "get_time", "arguments": {}}}]}
with content empty.
Suggested resolution
Parse the <start_function_call>…<end_function_call> format into tool_calls and treat <end_function_call> as a stop token.
Related: #1046. /api/show exposes no capabilities, so a client also cannot check for tool support before making the request.
Environment
- Model Runner client
v1.2.6, Docker Desktop engine29.7.2 - Backend
llama.cpp b9879-metal, macOS, Apple Silicon - Model:
ai/functiongemma
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by running the provided curl request against the OpenAI-compatible chat completions endpoint, then trace the response parsing and stop-token handling for ai/functiongemma. Implement support for its function-call delimiters and verify that tool_calls is populated, content is empty, and finish_reason is tool_calls instead of length.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- docker, go
- Domain
- ai, api
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100