Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions packages/types/src/__tests__/deepseek-v4-pro.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import { basetenModels, deepSeekModels, fireworksModels, opencodeGoModels } from "../providers/index.js"

describe("DeepSeek V4 Pro 0813 provider catalogs", () => {
it.each([
["DeepSeek", deepSeekModels["deepseek-v4-pro"]],
["OpenCode Go", opencodeGoModels["deepseek-v4-pro"]],
])("labels the first-party API checkpoint through %s", (_provider, model) => {
expect(model).toBeDefined()
expect(model?.displayName).toBe("DeepSeek V4 Pro 0813")
expect(model?.contextWindow).toBeGreaterThanOrEqual(1_000_000)
})

it("uses first-party capabilities and OpenCode Go pricing", () => {
expect(deepSeekModels["deepseek-v4-pro"].supportsImages).toBe(false)
expect(opencodeGoModels["deepseek-v4-pro"]).toMatchObject({
inputPrice: 0.435,
outputPrice: 0.87,
cacheReadsPrice: 0.003625,
})
})

// Self-hosted providers serve the published preview weights, not the checkpoint behind DeepSeek's API alias.
it.each([
["Fireworks AI", fireworksModels["accounts/fireworks/models/deepseek-v4-pro"]],
["Baseten", basetenModels["deepseek-ai/DeepSeek-V4-Pro"]],
])("does not apply the API checkpoint label to %s", (_provider, model) => {
expect(model).toBeDefined()
expect("displayName" in model && typeof model.displayName === "string" ? model.displayName : "").not.toContain(
"0813",
)
expect(model?.contextWindow).toBeGreaterThanOrEqual(1_000_000)
})

it("does not infer an unverified Baseten cache-write price", () => {
expect(basetenModels["deepseek-ai/DeepSeek-V4-Pro"]).not.toHaveProperty("cacheWritesPrice")
})
})
13 changes: 13 additions & 0 deletions packages/types/src/providers/baseten.ts
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,19 @@ export const basetenModels = {
description:
"DeepSeek's hybrid reasoning model with efficient long context scaling with GPT-5 level performance",
},
"deepseek-ai/DeepSeek-V4-Pro": {
displayName: "DeepSeek V4 Pro",
maxTokens: 384_000,
contextWindow: 1_000_000,
supportsImages: false,
supportsPromptCache: true,
supportsMaxTokens: true,
inputPrice: 1.74,
outputPrice: 3.48,
cacheReadsPrice: 0.145,
description:
"DeepSeek V4 Pro is a 1.6T-parameter mixture-of-experts model with a 1M context window for advanced reasoning, coding, and agentic workloads.",
},
"openai/gpt-oss-120b": {
maxTokens: 16_384,
contextWindow: 128_072,
Expand Down
5 changes: 3 additions & 2 deletions packages/types/src/providers/deepseek.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,10 @@ export const deepSeekModels = {
description: `DeepSeek-V4-Flash is DeepSeek's fast, cost-efficient V4 model. It supports thinking and non-thinking modes, JSON output, tool calls, chat prefix completion (beta), and FIM completion (beta) in non-thinking mode.`,
},
"deepseek-v4-pro": {
displayName: "DeepSeek V4 Pro 0813",
maxTokens: 384_000,
contextWindow: 1_000_000,
supportsImages: true,
supportsImages: false,
supportsPromptCache: true,
supportsReasoningEffort: ["disable", "high", "max"], // Updated 2026-08-01
preserveReasoning: true,
Expand All @@ -37,7 +38,7 @@ export const deepSeekModels = {
outputPrice: 0.87, // $0.87 per million tokens - Updated 2026-08-01
cacheWritesPrice: 0.435, // $0.435 per million tokens (cache miss) - Updated 2026-08-01
cacheReadsPrice: 0.003625, // $0.003625 per million tokens (cache hit) - Updated 2026-08-01
description: `DeepSeek-V4-Pro is DeepSeek's strongest V4 model for reasoning, coding, long-context, and agentic workloads. It supports thinking and non-thinking modes, JSON output, tool calls, chat prefix completion (beta), and FIM completion (beta) in non-thinking mode.`,
description: `DeepSeek-V4-Pro-0813 is DeepSeek's strongest V4 model for reasoning, coding, long-context, and agentic workloads. It supports thinking and non-thinking modes, JSON output, tool calls, chat prefix completion (beta), and FIM completion (beta) in non-thinking mode.`,
},
} as const satisfies Record<string, ModelInfo>

Expand Down
9 changes: 5 additions & 4 deletions packages/types/src/providers/opencode-go.ts
Original file line number Diff line number Diff line change
Expand Up @@ -295,6 +295,7 @@ export const opencodeGoModels: Record<string, ModelInfo> = {

// --- DeepSeek ---
"deepseek-v4-pro": {
displayName: "DeepSeek V4 Pro 0813",
maxTokens: 384_000,
contextWindow: 1_000_000,
supportsImages: false,
Expand All @@ -308,11 +309,11 @@ export const opencodeGoModels: Record<string, ModelInfo> = {
supportsReasoningEffort: ["disable", "low", "medium", "high", "xhigh"],
preserveReasoning: true,
reasoningEffort: "high",
inputPrice: 1.74,
outputPrice: 3.48,
cacheReadsPrice: 0.0145,
inputPrice: 0.435,
outputPrice: 0.87,
cacheReadsPrice: 0.003625,
description:
"DeepSeek-V4-Pro is DeepSeek's strongest V4 model for reasoning, coding, long-context, and agentic workloads. Available via the Opencode Go plan.",
"DeepSeek-V4-Pro-0813 is DeepSeek's strongest V4 model for reasoning, coding, long-context, and agentic workloads. Available via the Opencode Go plan.",
},
"deepseek-v4-flash": {
maxTokens: 384_000,
Expand Down
2 changes: 1 addition & 1 deletion src/api/providers/__tests__/deepseek.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -243,7 +243,7 @@ describe("DeepSeekHandler", () => {
expect(model.info).toBeDefined()
expect(model.info.maxTokens).toBe(384_000)
expect(model.info.contextWindow).toBe(1_000_000)
expect(model.info.supportsImages).toBe(true)
expect(model.info.supportsImages).toBe(false)
expect(model.info.supportsPromptCache).toBe(true)
expect((model.info as ModelInfo).preserveReasoning).toBe(true)
expect((model.info as ModelInfo).reasoningEffort).toBe("high")
Expand Down
Loading