Models

Explore supported DeepSeek model identifiers, configure the default model, enable R1 thinking mode, and handle unknown models in `@orcushq/deepseek`.

The following model identifiers are supported by @orcushq/deepseek. You can select a model using its identifier, configure a default model for your client, or override the model for an individual request. The available configuration options are described below.

Available Models

DeepSeek V3

The default model used when no other model is specified. It is suitable for general-purpose conversations, answering questions, explaining concepts, and coding assistance.

text
deepseek-v3

DeepSeek R1

A reasoning-oriented model configuration. You can select R1 directly or use its supported thinking suffix to configure the thinking mode.

text
deepseek-r1

DeepSeek V4

An expert-routing model configuration.

text
deepseek-v4

DeepSeek R4

An expert-routing reasoning configuration.

text
deepseek-r4

Configure model selection

Set the model option when creating DeepSeekWeb to choose the default model for requests made through that client. If you omit it, the SDK uses deepseek-v3. You can also override the default for a single request by passing model to invoke().

src/model-selection.ts
const standard = new DeepSeekWeb({  dsSessionId,  authorization,  model: 'deepseek-v3',}) // Use R1 with thinking mode enabled.const reasoning = new DeepSeekWeb({  dsSessionId,  authorization,  model: 'deepseek-r1@think=1',}) // Override the client's default model for one request.const response = await standard.invoke(  'Explain closures in one sentence.',  { model: 'deepseek-r1' },)

Configure R1 thinking mode

For DeepSeek R1, the thinking mode is configured through a suffix appended to the model identifier. Add @think=1 to enable thinking mode, or use @think=0 to disable it. Keep the suffix as part of the model string; it is not a separate client option.

  • `deepseek-r1` - Selects R1 without an explicit thinking suffix.
  • `deepseek-r1@think=1` - Selects R1 with thinking mode enabled.
  • `deepseek-r1@think=0` - Selects R1 with thinking mode disabled.

Only the documented suffix values 0 and 1 are supported. Values such as @think=2 are invalid. You can set the suffixed identifier as the client default or pass it through the per-call model option.

src/thinking-mode.ts
const thinkingModel = new DeepSeekWeb({  dsSessionId,  authorization,  model: 'deepseek-r1@think=1',}) const response = await thinkingModel.invoke(  'Compare recursion and iteration.',) // Thinking mode can also be selected for one request.const anotherResponse = await standard.invoke(  'Solve this reasoning problem.',  { model: 'deepseek-r1@think=1' },)

Handle unknown models

The constructor-only unknownModel option controls what happens when you provide a model identifier that the SDK does not recognize.

  • `fallback` - Default. Uses deepseek-v3 when the model identifier is unrecognized. The response metadata reports that a fallback occurred, including modelFellBack, fallbackReason, and fallbackNotice.
  • `throw`. Throws DeepSeekConfigurationError instead of falling back to deepseek-v3.
src/strict-model.ts
const strictModel = new DeepSeekWeb({  dsSessionId,  authorization,  unknownModel: 'throw',})

Use unknownModel: "throw" when you want unsupported identifiers to fail explicitly instead of silently selecting the SDK fallback. This checks the identifier against the SDK registry; it does not guarantee that the upstream service currently provides access to that model.