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 combiningmax_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, keepingexamples/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.
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: revision30a6d88a4, 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
阅读中文