Summary
When calling Laguna S 2.1 through the OpenAI-compatible endpoint (https://inference.poolside.ai/v1) from a third-party client (opencode 1.18.19 using @ai-sdk/openai-compatible), some responses carry the model's chain-of-thought inline in content, delimited by <think>...</think> tags, instead of populating the separate reasoning_content field.
The client-side model definition declares interleaved reasoning via interleaved: { field: "reasoning_content" }, and many requests do honor it. But intermittently, a response arrives as a single content string containing:
<long reasoning monologue ...></think><final answer>
For those messages the reported reasoning token count is 0 at the message level, even though a full reasoning trace is present in the text.
Expected behavior
Consistent transport of reasoning across all requests — either always via the dedicated reasoning_content field, or (if inline tags are part of the wire format) documented so clients can parse it deterministically.
Steps to reproduce
Use any OpenAI-compatible client against inference.poolside.ai/v1 with model poolside/laguna-s-2.1, send a multi-step coding task requiring tool calls, and inspect raw streamed deltas across several turns. Some turns will show <think> blocks inside content deltas rather than reasoning_content deltas.
Impact
- Third-party UIs render the chain-of-thought as final assistant output (users see raw English monologue text).
- Usage/billing attribution is skewed: reasoning tokens are counted as regular output tokens on affected messages.
- Clients cannot reliably separate "thinking" from "answer" without ad-hoc parsing.
Request
Please either fix the inconsistency (always emit reasoning_content) or document the inline <think> convention officially so client integrations can handle it robustly.
Summary
When calling Laguna S 2.1 through the OpenAI-compatible endpoint (
https://inference.poolside.ai/v1) from a third-party client (opencode 1.18.19 using@ai-sdk/openai-compatible), some responses carry the model's chain-of-thought inline incontent, delimited by<think>...</think>tags, instead of populating the separatereasoning_contentfield.The client-side model definition declares interleaved reasoning via
interleaved: { field: "reasoning_content" }, and many requests do honor it. But intermittently, a response arrives as a singlecontentstring containing:For those messages the reported reasoning token count is
0at the message level, even though a full reasoning trace is present in the text.Expected behavior
Consistent transport of reasoning across all requests — either always via the dedicated
reasoning_contentfield, or (if inline tags are part of the wire format) documented so clients can parse it deterministically.Steps to reproduce
Use any OpenAI-compatible client against
inference.poolside.ai/v1with modelpoolside/laguna-s-2.1, send a multi-step coding task requiring tool calls, and inspect raw streamed deltas across several turns. Some turns will show<think>blocks insidecontentdeltas rather thanreasoning_contentdeltas.Impact
Request
Please either fix the inconsistency (always emit
reasoning_content) or document the inline<think>convention officially so client integrations can handle it robustly.