Reasoning field naming across servers
Parent: Mac local LLMs: Chat templates, reasoning and tool calling · Published reference · snapshot 2026-10-05
↓ Facts as markdownall context files
vLLM RFC #27755 (opened 2025-10-29 by hmellor) proposed removing `reasoning_content` completely after PR #27752 had already switched output to `reasoning` with backwards compatibility
These notes link each claim to its source. A source may be a research report hosted on this site rather than the primary document. A published reference means the content is available; it does not certify independent review or accuracy.Read the editorial policy and follow the sources before relying on a claim.
Facts
- vLLM RFC #27755 (opened 2025-10-29 by hmellor) proposed removing `reasoning_content` completely after PR #27752 had already switched output to `reasoning` with backwards compatibility [source]
- vLLM PR #33402 'Remove reasoning_content' was merged on 2026-01-30 (commit c5113f6) after months of deprecation with no objection on the RFC [source]
- The stated reason for the vLLM rename was OpenAI's guidance for gpt-oss: return CoT in a `reasoning` field on Chat Completions even though the official API has no such field [source]
- OpenAI's raw-CoT guide tells Chat Completions implementers to follow OpenRouter: `reasoning` on the message, `reasoning` on stream deltas, and omit it when the request sets `reasoning: {exclude: true}` [source]
- The same guide says previous reasoning should be accepted back on later requests as `reasoning` and handled per the Harmony replay rules [source]
- OpenRouter accepts `reasoning_content` as an input alias that behaves identically to `reasoning` [source]
- OpenRouter also defines `message.reasoning_details` (array, also in `delta.reasoning_details`) for encrypted or summarised reasoning types; it must be passed back unmodified, while models that return plain strings can use `reasoning` [source]
- A vLLM RFC participant (Riatre, 2025-10-31) pointed out that the OpenRouter convention OpenAI cites uses `reasoning_details` for replay, so a `reasoning`-only rename may need a second migration; the RFC left input-side replay out of scope (bbrowning, 2025-10-30) [source]
- llama.cpp discussion #15362 (aldehir, 2025-08-16) asked for a configurable reasoning field because several clients, including OpenAI's own gpt-oss test, expect `reasoning` while llama-server emits `reasoning_content` [source]
- In #15362 ggerganov suggested sending both `reasoning` and `reasoning_content` until the community converged; mostlygeek objected that two keys would confuse the API and proposed a flag such as `--reasoning-format openai` instead [source]
- Ollama's native API uses `message.thinking` (chat) and `thinking` (generate), and `think` accepts true, false, null or a model-defined level string taken from `/api/show` `thinking.values`; numbers are not supported [source]
- Inferred: a client written for the 2025 llama.cpp and vLLM convention (`reasoning_content`) now needs to read three keys (`reasoning_content`, `reasoning`, `thinking`) and write back the one each server's template reads; no server in the sources documents accepting all three on input. [source]
Children
- No children recorded.