diff --git a/packages/types/src/model.ts b/packages/types/src/model.ts index 993ac4e8b3da..748acb285800 100644 --- a/packages/types/src/model.ts +++ b/packages/types/src/model.ts @@ -65,6 +65,7 @@ export const modelInfoSchema = z.object({ supportsReasoningBinary: z.boolean().optional(), // Capability flag to indicate whether the model supports temperature parameter supportsTemperature: z.boolean().optional(), + defaultTemperature: z.number().optional(), requiredReasoningBudget: z.boolean().optional(), supportsReasoningEffort: z.boolean().optional(), requiredReasoningEffort: z.boolean().optional(), diff --git a/packages/types/src/providers/moonshot.ts b/packages/types/src/providers/moonshot.ts index 218e0708ce02..7ddafab76b7b 100644 --- a/packages/types/src/providers/moonshot.ts +++ b/packages/types/src/providers/moonshot.ts @@ -39,6 +39,20 @@ export const moonshotModels = { cacheReadsPrice: 0.6, // $0.60 per million tokens (cache hit) description: `Kimi K2 Turbo is a high-speed version of the state-of-the-art Kimi K2 mixture-of-experts (MoE) language model, with the same 32 billion activated parameters and 1 trillion total parameters, optimized for output speeds of up to 60 tokens per second, peaking at 100 tokens per second.`, }, + "kimi-k2-thinking": { + maxTokens: 16_000, // Recommended ≥ 16,000 + contextWindow: 262_144, // 262,144 tokens + supportsImages: false, // Text-only (no image/vision support) + supportsPromptCache: true, + inputPrice: 0.6, // $0.60 per million tokens (cache miss) + outputPrice: 2.5, // $2.50 per million tokens + cacheWritesPrice: 0, // $0 per million tokens (cache miss) + cacheReadsPrice: 0.15, // $0.15 per million tokens (cache hit) + supportsTemperature: true, // Default temperature: 1.0 + preserveReasoning: true, + defaultTemperature: 1.0, + description: `The kimi-k2-thinking model is a general-purpose agentic reasoning model developed by Moonshot AI. Thanks to its strength in deep reasoning and multi-turn tool use, it can solve even the hardest problems.`, + }, } as const satisfies Record export const MOONSHOT_DEFAULT_TEMPERATURE = 0.6 diff --git a/webview-ui/src/components/settings/ApiOptions.tsx b/webview-ui/src/components/settings/ApiOptions.tsx index e2e7ba561573..45dbd4b46dda 100644 --- a/webview-ui/src/components/settings/ApiOptions.tsx +++ b/webview-ui/src/components/settings/ApiOptions.tsx @@ -807,6 +807,7 @@ const ApiOptions = ({ value={apiConfiguration.modelTemperature} onChange={handleInputChange("modelTemperature", noTransform)} maxValue={2} + defaultValue={selectedModelInfo?.defaultTemperature} /> )} void maxValue?: number // Some providers like OpenAI use 0-2 range. + defaultValue?: number // Default temperature from model configuration } -export const TemperatureControl = ({ value, onChange, maxValue = 1 }: TemperatureControlProps) => { +export const TemperatureControl = ({ value, onChange, maxValue = 1, defaultValue }: TemperatureControlProps) => { const { t } = useAppTranslation() const [isCustomTemperature, setIsCustomTemperature] = useState(value !== undefined) const [inputValue, setInputValue] = useState(value) @@ -37,7 +38,8 @@ export const TemperatureControl = ({ value, onChange, maxValue = 1 }: Temperatur if (!isChecked) { setInputValue(null) // Unset the temperature, note that undefined is unserializable. } else { - setInputValue(value ?? 0) // Use the value from apiConfiguration, if set. + // Use the value from apiConfiguration, or fallback to model's defaultTemperature, or finally to 0 + setInputValue(value ?? defaultValue ?? 0) } }}>