Tool-calling instruction is not consistently followed

#37
by xuzhanxin - opened

Summary

In an IM agent workflow, the system prompt explicitly requires the model to call send_text, send_voice, or send_sticker for every user-visible reply, and forbids direct assistant text.

The request included the tools and used tool_choice=auto. With deepseek-v4-flash, the model returned a normal assistant message (output.type=message, phase=final_answer) with no tool call. After the application added a protocol error instructing it to call a tool, the model returned ordinary text again. Only on the third attempt did it emit a send_text function call.

The same workflow works correctly with mimo-v2.5.

Expected behavior

When the system prompt requires a tool call, the model should emit a function/tool call instead of a plain text final answer.

Actual behavior

The model ignored the tool-calling instruction twice and produced plain text with tool_calls=[]. Because plain assistant text is not delivered by the application, this causes retries and delayed or missing user messages.

Additional comparison: qwen3.7-flash also follows the tool-calling instruction correctly in the same workflow. In our tests, the issue is reproducible consistently only with the DeepSeek model.

I have to disable --speculative-config DSpark k=7/greedy

Sign up or log in to comment