Issues / #754

#754 Anthropic API: tool calls intermittently emitted inside `thinking` and returned as `end_turn`

closed · @JakeCow · 1 コメント · GitHub で見る

Setup & installServer & APIAMD / HIPNVIDIA / CUDAModels & quants

本文

**AI disclosure:** This issue was created with the assistance of AI based on captured Pi session logs and raw SSE traffic. Im not a dev :)

[strata-failing-sse.txt](https://github.com/user-attachments/files/33023543/strata-failing-sse.txt)

## System

- OS: Ubuntu 26.04.1 LTS
- Kernel: 7.0.0-34-generic
- CPU: AMD Ryzen 7 9800X3D
- RAM: 32 GB DDR5-6000
- GPU: NVIDIA GeForce RTX 3090 24 GB
- NVIDIA driver: 595.91.07
- CUDA: 13.2
- Strata: Docker, v0.1.38
- Model: `qwen3.8-flash-next-coder-iq1_m`
- Context: 262144
- API: Anthropic-compatible `/v1/messages`
- Client: Pi 1.0.2
- Pi thinking mode: `low` (`budget_tokens: 2048`)

**Setup**
- Strata: current Docker build / v0.1.38-era code
- Model: `qwen3.8-flash-next-coder-iq1_m`
- API: `/v1/messages`
- Client: Pi 1.0.2
- Pi thinking: `low`
- Request thinking budget: `2048`
- Context: well below 262K

With thinking enabled, Strata intermittently emits a complete intended tool call inside the Anthropic `thinking` block instead of producing a structured `tool_use`.

Raw SSE from a failing request:

```text
event: content_block_delta
data: {"type":"content_block_delta","index":0,
       "delta":{"type":"thinking_delta","thinking":"<tool_call>"}}

...

event: content_block_delta
data: {"type":"content_block_delta","index":0,
       "delta":{"type":"thinking_delta","thinking":"</tool_call>"}}
```

Immediately afterwards:

```text
event: content_block_stop
data: {"type":"content_block_stop","index":0}

event: message_delta
data: {"type":"message_delta",
       "delta":{"stop_reason":"end_turn","stop_sequence":null},
       "usage":{"input_tokens":243,
                "cache_read_input_tokens":28792,
                "output_tokens":79}}

event: message_stop
data: {"type":"message_stop"}
```

There is no Anthropic `tool_use` content block in the failed turn.

Successful turns in the same session correctly produce:

```text
event: content_block_start
data: {"type":"content_block_start","index":2,
       "content_block":{"type":"tool_use", ...}}

event: message_delta
data: {"type":"message_delta",
       "delta":{"stop_reason":"tool_use", ...}}
```

### Reproduction

Using the same multi-step tool workload:

```text
thinking low: C1 FAIL / C2 FAIL / C3 FAIL
thinking off: C4 PASS
```

Failures occurred at different context sizes (~21K–34K), so this does not appear to be a context-limit or timeout issue.

### Expected

When the model transitions from reasoning to a tool call, Strata should emit a structured Anthropic `tool_use` block and `stop_reason: "tool_use"`.

### Actual

The intended tool call is sometimes streamed as `thinking_delta`, followed by a clean `end_turn`, causing the client agent loop to stop.

関連リンク

インストール・モデル・リリースへの站内リンク。