From 6fae219aba3536010136bb54963df3a04cc081d6 Mon Sep 17 00:00:00 2001 From: "@taltas" <6816042+taltas@users.noreply.github.com> Date: Wed, 12 Aug 2026 23:08:13 +0000 Subject: [PATCH 1/2] feat(providers): add DeepSeek V4 Pro 0813 --- .../types/src/__tests__/deepseek-v4-pro.test.ts | 14 ++++++++++++++ packages/types/src/providers/baseten.ts | 14 ++++++++++++++ packages/types/src/providers/deepseek.ts | 3 ++- packages/types/src/providers/fireworks.ts | 3 ++- packages/types/src/providers/opencode-go.ts | 3 ++- 5 files changed, 34 insertions(+), 3 deletions(-) create mode 100644 packages/types/src/__tests__/deepseek-v4-pro.test.ts diff --git a/packages/types/src/__tests__/deepseek-v4-pro.test.ts b/packages/types/src/__tests__/deepseek-v4-pro.test.ts new file mode 100644 index 0000000000..915a6d569a --- /dev/null +++ b/packages/types/src/__tests__/deepseek-v4-pro.test.ts @@ -0,0 +1,14 @@ +import { basetenModels, deepSeekModels, fireworksModels, opencodeGoModels } from "../providers/index.js" + +describe("DeepSeek V4 Pro 0813 provider catalogs", () => { + it.each([ + ["DeepSeek", deepSeekModels["deepseek-v4-pro"]], + ["Fireworks AI", fireworksModels["accounts/fireworks/models/deepseek-v4-pro"]], + ["OpenCode Go", opencodeGoModels["deepseek-v4-pro"]], + ["Baseten", basetenModels["deepseek-ai/DeepSeek-V4-Pro"]], + ])("exposes the release through %s", (_provider, model) => { + expect(model).toBeDefined() + expect(model?.displayName).toBe("DeepSeek V4 Pro 0813") + expect(model?.contextWindow).toBeGreaterThanOrEqual(1_000_000) + }) +}) diff --git a/packages/types/src/providers/baseten.ts b/packages/types/src/providers/baseten.ts index 27b8cbff4a..151657c9be 100644 --- a/packages/types/src/providers/baseten.ts +++ b/packages/types/src/providers/baseten.ts @@ -83,6 +83,20 @@ 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 0813", + maxTokens: 384_000, + contextWindow: 1_000_000, + supportsImages: false, + supportsPromptCache: true, + supportsMaxTokens: true, + inputPrice: 1.74, + outputPrice: 3.48, + cacheWritesPrice: 0, + cacheReadsPrice: 0.145, + description: + "DeepSeek V4 Pro 0813 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, diff --git a/packages/types/src/providers/deepseek.ts b/packages/types/src/providers/deepseek.ts index 9387d6a4ae..c7ddc44989 100644 --- a/packages/types/src/providers/deepseek.ts +++ b/packages/types/src/providers/deepseek.ts @@ -25,6 +25,7 @@ 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, @@ -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 diff --git a/packages/types/src/providers/fireworks.ts b/packages/types/src/providers/fireworks.ts index 3b18ad50b8..32c32befa7 100644 --- a/packages/types/src/providers/fireworks.ts +++ b/packages/types/src/providers/fireworks.ts @@ -256,6 +256,7 @@ export const fireworksModels = { "Kimi K2.6 is Moonshot AI's latest flagship agentic model, building on K2.5 with stronger long-horizon reasoning, multi-step tool use, and unified vision/text understanding.", }, "accounts/fireworks/models/deepseek-v4-pro": { + displayName: "DeepSeek V4 Pro 0813", maxTokens: 16384, contextWindow: 1048576, supportsImages: false, @@ -264,7 +265,7 @@ export const fireworksModels = { outputPrice: 3.48, cacheReadsPrice: 0.14, description: - "DeepSeek V4 Pro is the latest iteration of the DeepSeek model family, with improved reasoning, code generation, and instruction following over the V3 series.", + "DeepSeek V4 Pro 0813 is the latest iteration of the DeepSeek model family, with improved reasoning, code generation, and instruction following over the V3 series.", }, "accounts/fireworks/models/kimi-k2p7-code": { maxTokens: 16384, diff --git a/packages/types/src/providers/opencode-go.ts b/packages/types/src/providers/opencode-go.ts index bd60c4d349..eaf00769f3 100644 --- a/packages/types/src/providers/opencode-go.ts +++ b/packages/types/src/providers/opencode-go.ts @@ -295,6 +295,7 @@ export const opencodeGoModels: Record = { // --- DeepSeek --- "deepseek-v4-pro": { + displayName: "DeepSeek V4 Pro 0813", maxTokens: 384_000, contextWindow: 1_000_000, supportsImages: false, @@ -312,7 +313,7 @@ export const opencodeGoModels: Record = { outputPrice: 3.48, cacheReadsPrice: 0.0145, 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, From 498a89da28a8925f54a6feefac8f05c018ff767a Mon Sep 17 00:00:00 2001 From: "@taltas" <6816042+taltas@users.noreply.github.com> Date: Thu, 13 Aug 2026 00:42:48 +0000 Subject: [PATCH 2/2] fix(providers): distinguish DeepSeek V4 checkpoints --- .../src/__tests__/deepseek-v4-pro.test.ts | 29 +++++++++++++++++-- packages/types/src/providers/baseten.ts | 5 ++-- packages/types/src/providers/deepseek.ts | 2 +- packages/types/src/providers/fireworks.ts | 3 +- packages/types/src/providers/opencode-go.ts | 6 ++-- src/api/providers/__tests__/deepseek.spec.ts | 2 +- 6 files changed, 34 insertions(+), 13 deletions(-) diff --git a/packages/types/src/__tests__/deepseek-v4-pro.test.ts b/packages/types/src/__tests__/deepseek-v4-pro.test.ts index 915a6d569a..210519f3da 100644 --- a/packages/types/src/__tests__/deepseek-v4-pro.test.ts +++ b/packages/types/src/__tests__/deepseek-v4-pro.test.ts @@ -3,12 +3,35 @@ import { basetenModels, deepSeekModels, fireworksModels, opencodeGoModels } from describe("DeepSeek V4 Pro 0813 provider catalogs", () => { it.each([ ["DeepSeek", deepSeekModels["deepseek-v4-pro"]], - ["Fireworks AI", fireworksModels["accounts/fireworks/models/deepseek-v4-pro"]], ["OpenCode Go", opencodeGoModels["deepseek-v4-pro"]], - ["Baseten", basetenModels["deepseek-ai/DeepSeek-V4-Pro"]], - ])("exposes the release through %s", (_provider, model) => { + ])("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") + }) }) diff --git a/packages/types/src/providers/baseten.ts b/packages/types/src/providers/baseten.ts index 151657c9be..fd2a98fdd4 100644 --- a/packages/types/src/providers/baseten.ts +++ b/packages/types/src/providers/baseten.ts @@ -84,7 +84,7 @@ export const basetenModels = { "DeepSeek's hybrid reasoning model with efficient long context scaling with GPT-5 level performance", }, "deepseek-ai/DeepSeek-V4-Pro": { - displayName: "DeepSeek V4 Pro 0813", + displayName: "DeepSeek V4 Pro", maxTokens: 384_000, contextWindow: 1_000_000, supportsImages: false, @@ -92,10 +92,9 @@ export const basetenModels = { supportsMaxTokens: true, inputPrice: 1.74, outputPrice: 3.48, - cacheWritesPrice: 0, cacheReadsPrice: 0.145, description: - "DeepSeek V4 Pro 0813 is a 1.6T-parameter mixture-of-experts model with a 1M context window for advanced reasoning, coding, and agentic workloads.", + "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, diff --git a/packages/types/src/providers/deepseek.ts b/packages/types/src/providers/deepseek.ts index c7ddc44989..950e43e558 100644 --- a/packages/types/src/providers/deepseek.ts +++ b/packages/types/src/providers/deepseek.ts @@ -28,7 +28,7 @@ export const deepSeekModels = { 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, diff --git a/packages/types/src/providers/fireworks.ts b/packages/types/src/providers/fireworks.ts index 32c32befa7..3b18ad50b8 100644 --- a/packages/types/src/providers/fireworks.ts +++ b/packages/types/src/providers/fireworks.ts @@ -256,7 +256,6 @@ export const fireworksModels = { "Kimi K2.6 is Moonshot AI's latest flagship agentic model, building on K2.5 with stronger long-horizon reasoning, multi-step tool use, and unified vision/text understanding.", }, "accounts/fireworks/models/deepseek-v4-pro": { - displayName: "DeepSeek V4 Pro 0813", maxTokens: 16384, contextWindow: 1048576, supportsImages: false, @@ -265,7 +264,7 @@ export const fireworksModels = { outputPrice: 3.48, cacheReadsPrice: 0.14, description: - "DeepSeek V4 Pro 0813 is the latest iteration of the DeepSeek model family, with improved reasoning, code generation, and instruction following over the V3 series.", + "DeepSeek V4 Pro is the latest iteration of the DeepSeek model family, with improved reasoning, code generation, and instruction following over the V3 series.", }, "accounts/fireworks/models/kimi-k2p7-code": { maxTokens: 16384, diff --git a/packages/types/src/providers/opencode-go.ts b/packages/types/src/providers/opencode-go.ts index eaf00769f3..7381713349 100644 --- a/packages/types/src/providers/opencode-go.ts +++ b/packages/types/src/providers/opencode-go.ts @@ -309,9 +309,9 @@ export const opencodeGoModels: Record = { 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-0813 is DeepSeek's strongest V4 model for reasoning, coding, long-context, and agentic workloads. Available via the Opencode Go plan.", }, diff --git a/src/api/providers/__tests__/deepseek.spec.ts b/src/api/providers/__tests__/deepseek.spec.ts index 4f3cccdc08..f887cefeb1 100644 --- a/src/api/providers/__tests__/deepseek.spec.ts +++ b/src/api/providers/__tests__/deepseek.spec.ts @@ -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")