From 47509bc4864fc8a0ea5ef1c61f9db8f797232754 Mon Sep 17 00:00:00 2001 From: Roo Code Date: Mon, 8 Sep 2025 02:14:49 +0000 Subject: [PATCH] feat: add deepseek-coder model to DeepSeek provider - Added deepseek-coder model configuration with 8K max output tokens - Added test coverage for the new model - Fixes issue where users could not select deepseek-coder model Fixes #7773 --- packages/types/src/providers/deepseek.ts | 11 +++++++++++ src/api/providers/__tests__/deepseek.spec.ts | 14 ++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/packages/types/src/providers/deepseek.ts b/packages/types/src/providers/deepseek.ts index f916557235..96a6799fb8 100644 --- a/packages/types/src/providers/deepseek.ts +++ b/packages/types/src/providers/deepseek.ts @@ -17,6 +17,17 @@ export const deepSeekModels = { cacheReadsPrice: 0.07, // $0.07 per million tokens (cache hit) - Updated Sept 5, 2025 description: `DeepSeek-V3 achieves a significant breakthrough in inference speed over previous models. It tops the leaderboard among open-source models and rivals the most advanced closed-source models globally.`, }, + "deepseek-coder": { + maxTokens: 8192, // 8K max output + contextWindow: 128_000, + supportsImages: false, + supportsPromptCache: true, + inputPrice: 0.56, // $0.56 per million tokens (cache miss) - Updated Sept 5, 2025 + outputPrice: 1.68, // $1.68 per million tokens - Updated Sept 5, 2025 + cacheWritesPrice: 0.56, // $0.56 per million tokens (cache miss) - Updated Sept 5, 2025 + cacheReadsPrice: 0.07, // $0.07 per million tokens (cache hit) - Updated Sept 5, 2025 + description: `DeepSeek-Coder-V3 is specifically optimized for code generation, completion, and understanding tasks. It excels at programming challenges across multiple languages.`, + }, "deepseek-reasoner": { maxTokens: 65536, // 64K max output for reasoning mode contextWindow: 128_000, diff --git a/src/api/providers/__tests__/deepseek.spec.ts b/src/api/providers/__tests__/deepseek.spec.ts index 50cabfa922..2c027ec6db 100644 --- a/src/api/providers/__tests__/deepseek.spec.ts +++ b/src/api/providers/__tests__/deepseek.spec.ts @@ -160,6 +160,20 @@ describe("DeepSeekHandler", () => { expect(model.info.supportsPromptCache).toBe(true) // Should be true now }) + it("should return correct model info for deepseek-coder", () => { + const handlerWithCoder = new DeepSeekHandler({ + ...mockOptions, + apiModelId: "deepseek-coder", + }) + const model = handlerWithCoder.getModel() + expect(model.id).toBe("deepseek-coder") + expect(model.info).toBeDefined() + expect(model.info.maxTokens).toBe(8192) // deepseek-coder has 8K max + expect(model.info.contextWindow).toBe(128_000) + expect(model.info.supportsImages).toBe(false) + expect(model.info.supportsPromptCache).toBe(true) + }) + it("should return correct model info for deepseek-reasoner", () => { const handlerWithReasoner = new DeepSeekHandler({ ...mockOptions,