Skip to main content

DeepSeek logoDeepSeek

Access 4 DeepSeek models through Mastra's model router. Authentication is handled automatically using the DEEPSEEK_API_KEY environment variable.

Learn more in the DeepSeek documentation.

.env
DEEPSEEK_API_KEY=your-api-key
src/mastra/agents/my-agent.ts
import { Agent } from "@mastra/core/agent";

const agent = new Agent({
id: "my-agent",
name: "My Agent",
instructions: "You are a helpful assistant",
model: "deepseek/deepseek-flash"
});

// Generate a response
const response = await agent.generate("Hello!");

// Stream a response
const stream = await agent.stream("Tell me a story");
for await (const chunk of stream) {
console.log(chunk);
}

Models
Direct link to Models

ModelContextToolsReasoningImageAudioVideoInput $/1MOutput $/1M
deepseek/deepseek-flash1.0M$0.15$0.60
deepseek/deepseek-v4-pro1.0M$0.66$2
2 available models

Model availability, capabilities, context windows, and pricing are sourced from models.dev and may change.

Advanced configuration
Direct link to Advanced configuration

Custom headers
Direct link to Custom headers

src/mastra/agents/my-agent.ts
const agent = new Agent({
id: "custom-agent",
name: "custom-agent",
model: {
url: "https://api.deepseek.com",
id: "deepseek/deepseek-flash",
apiKey: process.env.DEEPSEEK_API_KEY,
headers: {
"X-Custom-Header": "value"
}
}
});

Dynamic model selection
Direct link to Dynamic model selection

src/mastra/agents/my-agent.ts
const agent = new Agent({
id: "dynamic-agent",
name: "Dynamic Agent",
model: ({ requestContext }) => {
const useAdvanced = requestContext.task === "complex";
return useAdvanced
? "deepseek/deepseek-v4-pro"
: "deepseek/deepseek-flash";
}
});

Provider Options
Direct link to Provider Options

DeepSeek supports the following provider-specific options via the providerOptions parameter:

const response = await agent.generate("Hello!", {
providerOptions: {
deepseek: {
// See available options in the table below
}
}
});

Available Options
Direct link to Available Options

logprobs?:

boolean | undefined
Whether to return log probabilities for generated tokens.

topLogprobs?:

number | undefined
Number of most likely tokens to return at each token position. Setting this option automatically enables logprobs.

userId?:

string | undefined
An opaque identifier for the end user. DeepSeek uses this identifier for content-safety tracing and request isolation. Must contain only ASCII letters, numbers, underscores, and hyphens, and must be at most 512 characters long.

strictJsonSchema?:

boolean | undefined
Whether to use strict JSON schema validation for structured outputs. Only applies when the serving endpoint supports JSON schema response formats (e.g. Azure). Defaults to true.

thinking?:

{ type?: "enabled" | "disabled" | "adaptive" | undefined; } | undefined

reasoningEffort?:

"low" | "high" | "max" | "medium" | "xhigh" | undefined