Fix Finder / Troubleshooting
Qwen or llama.cpp returns an empty response? Check these fields
An empty message.content needs the rest of the response to explain it. Check finish_reason, reasoning_content and tool_calls before changing the model or prompt.
Kingy reproduced two different causes on a pinned llama.cpp and Qwen3-4B setup: the output cap ran out during reasoning, and a client stopped after receiving a tool call. The debugger below separates those conditions using your supplied response.
Check an empty response locally
Free browser-local debugger
Why did my AI response fail?
Check an empty answer, context overflow, or a schema sent to the wrong endpoint. Inspect a proposed change, then verify it against your original task.
Pasted data stays in this tab. This debugger makes no API calls, executes no tools, and saves no inputs. Diagnosis does not prove a correction works on your setup.
Try a retained example or paste your own JSON below.
Loading local debugger…
Evidence and supported scope
Rules reuse the ten completed pilot repairs listed below. Model tests used pinned llama.cpp 0.6.0 b11429 and Qwen3-4B Q4_K_M on one Mac. The first four have separate-agent reruns on that Mac; the remaining six have same-agent repeats. No second-machine, human reproduction, or universal compatibility is claimed. Example previews replay retained data; they run no new model inference.
Malformed JSON, conflicting schemas and unsupported response shapes remain unresolved. A parseable response can still contain wrong facts. Schema-envelope proposals preserve the supplied schema; they do not establish general schema support.
- llama.cpp rejects tool calls: tools param requires --jinja flag
- llama.cpp rejects a prompt that exceeds its allocated context
- Qwen3 returns reasoning but no visible answer when its output cap runs out
- Schema-constrained JSON omits a required action field
- Qwen3 schema request fails with an old assistant prefill
- Warm llama.cpp prompt cache leaves tool arguments incomplete at a fixed output cap
- Incomplete tool-call JSON makes the next llama.cpp turn fail
- Python splitlines breaks streamed AI answers containing Unicode separators
- llama.cpp returns a tool call but the client shows an empty answer
- Native llama.cpp completion ignores a Chat API schema envelope
Read the completion state first
| What you see | What to check next |
|---|---|
Empty content, nonempty reasoning, finish_reason: length | Inspect the output allowance and available context. The generation ended before a visible answer. |
Empty content, complete tool_calls, finish_reason: tool_calls | The client needs to validate the call, supply its result, and request the final answer. |
Empty content with finish_reason: stop | The cause remains unresolved. Keep the complete response and inspect stop settings, template and runtime logs. |
A streaming delta or several choices | Supply one assembled final response. The debugger does not assemble streams or select a choice for you. |
The output-cap repair that passed
For the fixed task 19 + 23, an 8-token cap returned reasoning and an empty visible answer. A proposed 512-token cap also failed in all three author checks. At 1,024, the same task returned exactly 42, finished normally, and used 698 total completion tokens. Thinking stayed enabled.
These measurements apply to this task and configuration. A 1,024-token cap is not a universal minimum. The precise reasoning-versus-answer token split was not recorded. Check the full context budget before raising the output allowance.
Inspect repair 003, including the failed 512-token proposal.
A tool call can have no final answer yet
In repair 009, the server returned a valid inventory lookup. The reference client displayed only message.content, so it showed an empty answer. Supplying the synthetic stock result with the returned call ID and making the next request completed the task.
For a real integration, validate the tool identity and arguments against your own contract, check permissions, and prevent duplicate execution. This debugger executes no tools. Incomplete arguments need a separate check before they enter conversation history.
Inspect the complete tool-result loop repair · Check incomplete tool history.
Verify the original task after a change
Keep the failed response and unchanged task. Repeat with one deliberate correction, require complete termination, and check the original expected values. A nonempty answer alone does not establish that the task succeeded.
An HTTP error belongs to a different path. An explicit --no-jinja setting rejected tool requests in repair 001. An obsolete manually appended assistant prefill caused a sampler error in repair 005. Neither case establishes the cause of an unrelated blank reply.
What this evidence covers
These model tests were qualified October 15–16, 2026, using llama.cpp 0.6.0 build 11429 and Qwen3-4B Q4_K_M on one M4 Pro Mac with 24 GiB unified memory. Repairs 001–004 have separate-agent reruns on that Mac. Repairs 005–010 have same-agent repeats in fresh server processes. No second-machine or human reproduction is claimed.
This guide reuses those retained results. Loading an example runs no model. The debugger performs local static checks and cannot verify a proposed correction on your setup. Each linked repair retains its exact artifacts, failed attempts and applicability limits.
Open the full Fix Finder debugger · Browse all tested repairs
Guide published October 16, 2026. Repair measurements remain dated October 15–16, 2026.