From 740c580c16045f750505f273d3d2b3ae29772e61 Mon Sep 17 00:00:00 2001 From: Roo Code Date: Tue, 15 Jul 2025 09:17:25 +0000 Subject: [PATCH 1/2] fix: resolve moonshotai/kimi-k2-instruct max_tokens limit issue - Update moonshotai/kimi-k2-instruct maxTokens from 8192 to 16384 to match API limit - Add validation in BaseOpenAiCompatibleProvider to ensure max_tokens never exceeds model limits - Prevent 400 error when users set modelMaxTokens above API constraints Fixes #5729 --- packages/types/src/providers/groq.ts | 2 +- src/api/providers/base-openai-compatible-provider.ts | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/types/src/providers/groq.ts b/packages/types/src/providers/groq.ts index 99bf4be3d01..2eac1f954a3 100644 --- a/packages/types/src/providers/groq.ts +++ b/packages/types/src/providers/groq.ts @@ -89,7 +89,7 @@ export const groqModels = { description: "DeepSeek R1 Distill Llama 70B model, 128K context.", }, "moonshotai/kimi-k2-instruct": { - maxTokens: 8192, + maxTokens: 16384, contextWindow: 131072, supportsImages: false, supportsPromptCache: false, diff --git a/src/api/providers/base-openai-compatible-provider.ts b/src/api/providers/base-openai-compatible-provider.ts index f196b5f309b..6b472dae635 100644 --- a/src/api/providers/base-openai-compatible-provider.ts +++ b/src/api/providers/base-openai-compatible-provider.ts @@ -69,11 +69,16 @@ export abstract class BaseOpenAiCompatibleProvider ): ApiStream { const { id: model, - info: { maxTokens: max_tokens }, + info: { maxTokens: modelMaxTokens }, } = this.getModel() const temperature = this.options.modelTemperature ?? this.defaultTemperature + // Ensure max_tokens doesn't exceed the model's configured limit + // Users can override with modelMaxTokens, but it should not exceed the model's actual API limit + const userMaxTokens = this.options.modelMaxTokens + const max_tokens = userMaxTokens ? Math.min(userMaxTokens, modelMaxTokens) : modelMaxTokens + const params: OpenAI.Chat.Completions.ChatCompletionCreateParamsStreaming = { model, max_tokens, From ebd6aeca5f2bb5aca0287b37eace3ad910d62254 Mon Sep 17 00:00:00 2001 From: Roo Code Date: Tue, 15 Jul 2025 09:19:31 +0000 Subject: [PATCH 2/2] fix: resolve TypeScript error in BaseOpenAiCompatibleProvider - Add proper type checking for modelMaxTokens to handle nullish values - Ensure Math.min only receives number types --- src/api/providers/base-openai-compatible-provider.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/api/providers/base-openai-compatible-provider.ts b/src/api/providers/base-openai-compatible-provider.ts index 6b472dae635..49c53e32632 100644 --- a/src/api/providers/base-openai-compatible-provider.ts +++ b/src/api/providers/base-openai-compatible-provider.ts @@ -73,12 +73,13 @@ export abstract class BaseOpenAiCompatibleProvider } = this.getModel() const temperature = this.options.modelTemperature ?? this.defaultTemperature - // Ensure max_tokens doesn't exceed the model's configured limit // Users can override with modelMaxTokens, but it should not exceed the model's actual API limit const userMaxTokens = this.options.modelMaxTokens - const max_tokens = userMaxTokens ? Math.min(userMaxTokens, modelMaxTokens) : modelMaxTokens - + const max_tokens = + typeof userMaxTokens === "number" && userMaxTokens > 0 && typeof modelMaxTokens === "number" + ? Math.min(userMaxTokens, modelMaxTokens) + : modelMaxTokens const params: OpenAI.Chat.Completions.ChatCompletionCreateParamsStreaming = { model, max_tokens,