Skip to content

Intermittent function calling failures with glm-4.7 / glm-5.1 #979

@zwen64657

Description

@zwen64657

Environment: Windows 11, Droid CLI v0.104.0, Zhipu official plan (glm-4.7 / glm-5.1)

Symptom A (glm-4.7)

When the model needs to call a tool, it fails to generate a structured tool_use JSON object. Instead, the tool call is leaked as plain text into the thinking field. The Droid framework receives a content
array with no executable tool calls, causing the task to hang. The user must manually send "continue" to resume.

Symptom B (glm-5.1)

The model outputs a text message saying it will continue the task, but does not include a tool_use. The task stops. The user must send "continue" to resume.

──────────────────────────────────────────

Error 1: glm-4.7 — TodoWrite call leaked into thinking

After creating a Python script to scan HTML files, the model intended to call TodoWrite but the call was leaked into thinking:

json
{"type":"message","role":"assistant","content":[
{"type":"thinking",
"thinking":"...Now I should run this script to analyze the files.\nTodoWrite\ntodos: ...\n"}
]}

Only thinking in content array. No tool_use, no text. Task hung.

User sent "继续啊" to resume.

──────────────────────────────────────────

Error 2: glm-4.7 — Read call leaked into thinking

Model said "I will translate 842 texts directly" and intended to call Read but the call was leaked into thinking:

json
{"type":"message","role":"assistant","content":[
{"type":"thinking",
"thinking":"...Let me read the full CSV file.\nRead\n{"file_path":"C:\Users\18773\Desktop\translation_template.csv"}\n"}
]}

Only thinking in content array. No tool_use, no text. Task hung.

User sent "继续你来完成" to resume, then switched to glm-5.1.

──────────────────────────────────────────

Error 3: glm-5.1 — Text without tool_use (output likely truncated)

After 3 parallel subtasks completed, the model said it would continue but stopped:

json
{"type":"message","role":"assistant","content":[
{"type":"text","text":"太好了!三批并行处理完成。继续处理剩余文件:"}
]}

Only text, no tool_use. The colon at the end suggests the output was truncated.

User sent "继续" to resume.

──────────────────────────────────────────

Summary

Model │ Total assistant messages │ Tool call leaked into thinking │ Text without tool_use │ Error rate
--------+--------------------------+--------------------------------+-----------------------+-----------
glm-4.7 │ 24 │ 2 times │ 0 │ 8.3%
glm-5.1 │ 56 │ 0 │ 1 time │ 1.8%

glm-5.1 is significantly more stable than glm-4.7, but the issue is not fully eliminated.

Key question

Could you check the raw GLM API response in Droid's logs:

  1. Is the tool_use / function_call already missing in the original model response?
  2. Or does GLM return it but Droid's parsing layer drops it?

This will help determine whether the issue is on the model side or Droid's parsing compatibility.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions