From 5f76fa8d7dca5243259eecb7a9c61c293911979f Mon Sep 17 00:00:00 2001 From: Andrew Pareles Date: Sun, 6 Apr 2025 17:49:32 -0700 Subject: [PATCH] turn off reasoning for everything except chat by default --- .../browser/react/src/sidebar-tsx/SidebarChat.tsx | 9 +++++---- .../contrib/void/common/modelCapabilities.ts | 14 +++++++++----- .../llmMessage/sendLLMMessage.impl.ts | 4 ++-- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/src/vs/workbench/contrib/void/browser/react/src/sidebar-tsx/SidebarChat.tsx b/src/vs/workbench/contrib/void/browser/react/src/sidebar-tsx/SidebarChat.tsx index 9c31e142..efc3bd45 100644 --- a/src/vs/workbench/contrib/void/browser/react/src/sidebar-tsx/SidebarChat.tsx +++ b/src/vs/workbench/contrib/void/browser/react/src/sidebar-tsx/SidebarChat.tsx @@ -20,7 +20,7 @@ import { VOID_CTRL_L_ACTION_ID } from '../../../actionIDs.js'; import { VOID_OPEN_SETTINGS_ACTION_ID } from '../../../voidSettingsPane.js'; import { ChatMode, FeatureName, isFeatureNameDisabled } from '../../../../../../../workbench/contrib/void/common/voidSettingsTypes.js'; import { WarningBox } from '../void-settings-tsx/WarningBox.js'; -import { getModelCapabilities, getIsResoningEnabledState } from '../../../../common/modelCapabilities.js'; +import { getModelCapabilities, getIsReasoningEnabledState } from '../../../../common/modelCapabilities.js'; import { AlertTriangle, Ban, ChevronRight, Dot, Pencil, Undo, Undo2, X } from 'lucide-react'; import { ChatMessage, CheckpointEntry, StagingSelectionItem, ToolMessage, ToolRequestApproval } from '../../../../common/chatThreadServiceTypes.js'; import { ToolCallParams, ToolName, toolNames, ToolNameWithApproval } from '../../../../common/toolsServiceTypes.js'; @@ -158,7 +158,7 @@ const ReasoningOptionSlider = ({ featureName }: { featureName: FeatureName }) => const { canTurnOffReasoning, reasoningBudgetSlider } = reasoningCapabilities || {} const modelSelectionOptions = voidSettingsState.optionsOfModelSelection[featureName][providerName]?.[modelName] - const isReasoningEnabled = getIsResoningEnabledState(providerName, modelName, modelSelectionOptions) + const isReasoningEnabled = getIsReasoningEnabledState(featureName, providerName, modelName, modelSelectionOptions) if (canTurnOffReasoning && !reasoningBudgetSlider) { // if it's just a on/off toggle without a power slider (no models right now) return null // unused right now // return
@@ -174,12 +174,13 @@ const ReasoningOptionSlider = ({ featureName }: { featureName: FeatureName }) => if (reasoningBudgetSlider?.type === 'slider') { // if it's a slider const { min: min_, max, default: defaultVal } = reasoningBudgetSlider - const value = voidSettingsState.optionsOfModelSelection[featureName][modelSelection.providerName]?.[modelSelection.modelName]?.reasoningBudget ?? defaultVal - const nSteps = 8 // only used in calculating stepSize, stepSize is what actually matters const stepSize = Math.round((max - min_) / nSteps) const min = canTurnOffReasoning ? min_ - stepSize : min_ + const value = isReasoningEnabled ? min_ - stepSize + : voidSettingsState.optionsOfModelSelection[featureName][modelSelection.providerName]?.[modelSelection.modelName]?.reasoningBudget ?? defaultVal + return
Thinking { - const { supportsReasoning } = getModelCapabilities(providerName, modelName).reasoningCapabilities || {} + const { supportsReasoning, canTurnOffReasoning } = getModelCapabilities(providerName, modelName).reasoningCapabilities || {} if (!supportsReasoning) return false - const defaultEnabledVal = true // if can't toggle reasoning, then this must be true. just true as default + // default to enabled if can't turn off, or if the featureName is Chat. + const defaultEnabledVal = featureName === 'Chat' || !canTurnOffReasoning + const isReasoningEnabled = modelSelectionOptions?.reasoningEnabled ?? defaultEnabledVal return isReasoningEnabled } @@ -823,6 +826,7 @@ export const getIsResoningEnabledState = ( // used to force reasoning state (complex) into something simple we can just read from when sending a message export const getSendableReasoningInfo = ( + featureName: FeatureName, providerName: ProviderName, modelName: string, modelSelectionOptions: ModelSelectionOptions | undefined, @@ -830,7 +834,7 @@ export const getSendableReasoningInfo = ( const { canIOReasoning, reasoningBudgetSlider } = getModelCapabilities(providerName, modelName).reasoningCapabilities || {} if (!canIOReasoning) return null - const isReasoningEnabled = getIsResoningEnabledState(providerName, modelName, modelSelectionOptions) + const isReasoningEnabled = getIsReasoningEnabledState(featureName, providerName, modelName, modelSelectionOptions) if (!isReasoningEnabled) return null // check for reasoning budget diff --git a/src/vs/workbench/contrib/void/electron-main/llmMessage/sendLLMMessage.impl.ts b/src/vs/workbench/contrib/void/electron-main/llmMessage/sendLLMMessage.impl.ts index 1d61af41..a4bce5b9 100644 --- a/src/vs/workbench/contrib/void/electron-main/llmMessage/sendLLMMessage.impl.ts +++ b/src/vs/workbench/contrib/void/electron-main/llmMessage/sendLLMMessage.impl.ts @@ -165,7 +165,7 @@ const _sendOpenAICompatibleChat = ({ messages: messages_, onText, onFinalMessage // reasoning const { canIOReasoning, openSourceThinkTags, } = reasoningCapabilities || {} - const reasoningInfo = getSendableReasoningInfo(providerName, modelName_, modelSelectionOptions) // user's modelName_ here + const reasoningInfo = getSendableReasoningInfo('Chat', providerName, modelName_, modelSelectionOptions) // user's modelName_ here const includeInPayload = providerReasoningIOSettings?.input?.includeInPayload?.(reasoningInfo) || {} // tools @@ -325,7 +325,7 @@ const sendAnthropicChat = ({ messages: messages_, providerName, onText, onFinalM const { providerReasoningIOSettings } = getProviderCapabilities(providerName) // reasoning - const reasoningInfo = getSendableReasoningInfo(providerName, modelName_, modelSelectionOptions) // user's modelName_ here + const reasoningInfo = getSendableReasoningInfo('Chat', providerName, modelName_, modelSelectionOptions) // user's modelName_ here const includeInPayload = providerReasoningIOSettings?.input?.includeInPayload?.(reasoningInfo) || {} // tools