Skip to main content

Reasoning strength and visible output are separate

Reasoning models may perform additional computation before answering. Reasoning strength, returned summaries, and final-answer length are separate controls. No visible reasoning text does not prove that no reasoning occurred. A public summary is not the model’s complete internal reasoning trace. The converter recognizes none, minimal, low, medium, high, xhigh, and max; this is not an allowed-value list for every model. Some native paths preserve upstream fields, while conversion paths normalize or reject them. Model-name modifiers can override request settings, with mapped-name modifiers taking precedence over public-name modifiers. Use deployment-published IDs without inventing suffixes. Chat’s nested reasoning can express enabled, effort, max_tokens, and exclude. exclude controls reasoning visibility rather than disabling reasoning. The object is converted according to the channel dialect; exact field passthrough is not guaranteed. Responses reasoning uses a different structure.

Budgets, streams, and failures

Reserve sufficient input and output capacity for the model. Some models count reasoning and visible output within the generation budget. Avoid combining max_tokens, max_completion_tokens, or unsupported sampling settings. finish_reason=length, Responses status=incomplete, or reasoning without final text is not a completed answer. Handle reasoning, tool arguments, summaries, and text events separately in streams; do not treat reasoning deltas as the final reply. Tool calls require a complete loop; see streaming tools. Applications must not decrypt encrypted_content or rewrite Claude signatures.

Runnable: single-turn Chat or stateless Responses continuation

Use the REST runtime, keeping examples/reasoning.mjs and http-client.mjs together. Default Responses mode sends two requests with store: false, replaying all first-turn output in order. This mode requires a model and native path supporting replayable reasoning items. If a reasoning item lacks usable encrypted state, the example stops instead of silently discarding it. Completed text without any reasoning items is also accepted.
After selecting a Chat-capable model, switch to single-turn mode:
The script does not set reasoning budgets or model-specific sampling parameters. Each request has a 60-second timeout and 1 MiB response limit, without automatic retries. Answers are printed only after all requests complete. It preserves phase and unknown metadata without printing reasoning text, summaries, or ciphertext. include is a compatibility request, not a guarantee that every channel returns encrypted state; store: false does not guarantee deployment-wide zero retention.

Acceptance sequence

Verify supported effort values and actual outgoing parameters first, then completion status, tool loops, and second-turn state replay. Distinguish missing reasoning-token usage from zero; it is not answer length and cannot alone establish quality or cost. Revalidate replayability after model switching, protocol conversion, or compaction. Sources: revision 30a6d88a4, request DTOs, relaykit/relayconvert/reasoning/intent.go, relay/channel/openai/adaptor.go, and relay/helper/reasoning_suffix.go. References: OpenRouter reasoning topic and OpenAI reasoning documentation. Chat API · Responses API · Context management 阅读中文