From 0589a2a5ece6d88c4c891251d244c3172bc898b0 Mon Sep 17 00:00:00 2001 From: Andrew Pareles Date: Sun, 15 Dec 2024 01:11:07 -0800 Subject: [PATCH] remove maxtokens --- .../void/common/voidConfigModelDefaults.ts | 58 ------------ .../platform/void/common/voidConfigTypes.ts | 94 +++++++++++++++---- .../electron-main/llmMessage/anthropic.ts | 7 +- .../void/electron-main/llmMessage/groq.ts | 3 +- .../void/electron-main/llmMessage/ollama.ts | 3 +- .../void/electron-main/llmMessage/openai.ts | 8 +- .../void/electron-main/llmMessage/util.ts | 14 --- .../ModelSelectionSettings.tsx | 2 +- 8 files changed, 88 insertions(+), 101 deletions(-) delete mode 100644 src/vs/platform/void/common/voidConfigModelDefaults.ts delete mode 100644 src/vs/platform/void/electron-main/llmMessage/util.ts diff --git a/src/vs/platform/void/common/voidConfigModelDefaults.ts b/src/vs/platform/void/common/voidConfigModelDefaults.ts deleted file mode 100644 index 8d2fc0f2..00000000 --- a/src/vs/platform/void/common/voidConfigModelDefaults.ts +++ /dev/null @@ -1,58 +0,0 @@ - - -export const defaultAnthropicModels = [ - 'claude-3-5-sonnet-20240620', - // 'claude-3-opus-20240229', - // 'claude-3-sonnet-20240229', - // 'claude-3-haiku-20240307' -] - - -export const defaultOpenAIModels = [ - 'o1-preview', - 'o1-mini', - 'gpt-4o', - 'gpt-4o-mini', - // 'gpt-4o-2024-05-13', - // 'gpt-4o-2024-08-06', - // 'gpt-4o-mini-2024-07-18', - // 'gpt-4-turbo', - // 'gpt-4-turbo-2024-04-09', - // 'gpt-4-turbo-preview', - // 'gpt-4-0125-preview', - // 'gpt-4-1106-preview', - // 'gpt-4', - // 'gpt-4-0613', - // 'gpt-3.5-turbo-0125', - // 'gpt-3.5-turbo', - // 'gpt-3.5-turbo-1106', -] - - - -export const defaultGroqModels = [ - "mixtral-8x7b-32768", - "llama2-70b-4096", - "gemma-7b-it" -] - - -export const defaultGeminiModels = [ - 'gemini-1.5-flash', - 'gemini-1.5-pro', - 'gemini-1.5-flash-8b', - 'gemini-1.0-pro' -] - - - - - -export const dummyModelData = { - anthropic: ['claude 3.5'], - openAI: ['gpt 4o'], - ollama: ['llama 3.2', 'codestral'], - openRouter: ['qwen 2.5'], -} - - diff --git a/src/vs/platform/void/common/voidConfigTypes.ts b/src/vs/platform/void/common/voidConfigTypes.ts index cdd3e18f..5415af4b 100644 --- a/src/vs/platform/void/common/voidConfigTypes.ts +++ b/src/vs/platform/void/common/voidConfigTypes.ts @@ -4,7 +4,84 @@ * Void Editor additions licensed under the AGPL 3.0 License. *--------------------------------------------------------------------------------------------*/ -import { defaultAnthropicModels, defaultGeminiModels, defaultGroqModels, defaultOpenAIModels } from './voidConfigModelDefaults.js' + +// https://docs.anthropic.com/en/docs/about-claude/models +export const defaultAnthropicModels = [ + 'claude-3-5-sonnet-20241022', + 'claude-3-5-haiku-20241022', + 'claude-3-opus-20240229', + 'claude-3-sonnet-20240229', + // 'claude-3-haiku-20240307', +] + + +export const defaultOpenAIModels = [ + 'o1-preview', + 'o1-mini', + 'gpt-4o', + 'gpt-4o-mini', + // 'gpt-4o-2024-05-13', + // 'gpt-4o-2024-08-06', + // 'gpt-4o-mini-2024-07-18', + // 'gpt-4-turbo', + // 'gpt-4-turbo-2024-04-09', + // 'gpt-4-turbo-preview', + // 'gpt-4-0125-preview', + // 'gpt-4-1106-preview', + // 'gpt-4', + // 'gpt-4-0613', + // 'gpt-3.5-turbo-0125', + // 'gpt-3.5-turbo', + // 'gpt-3.5-turbo-1106', +] + + + +export const defaultGroqModels = [ + "mixtral-8x7b-32768", + "llama2-70b-4096", + "gemma-7b-it" +] + + +export const defaultGeminiModels = [ + 'gemini-1.5-flash', + 'gemini-1.5-pro', + 'gemini-1.5-flash-8b', + 'gemini-1.0-pro' +] + + + +// export const parseMaxTokensStr = (maxTokensStr: string) => { +// // parse the string but only if the full string is a valid number, eg parseInt('100abc') should return NaN +// const int = isNaN(Number(maxTokensStr)) ? undefined : parseInt(maxTokensStr) +// if (Number.isNaN(int)) +// return undefined +// return int +// } + + + + +export const anthropicMaxPossibleTokens = (modelName: string) => { + if (modelName === 'claude-3-5-sonnet-20241022' + || modelName === 'claude-3-5-haiku-20241022') + return 8192 + if (modelName === 'claude-3-opus-20240229' + || modelName === 'claude-3-sonnet-20240229' + || modelName === 'claude-3-haiku-20240307') + return 4096 + return 1024 // return a reasonably small number if they're using a different model +} + + +export const dummyModelData = { + anthropic: ['claude 3.5'], + openAI: ['gpt 4o'], + ollama: ['llama 3.2', 'codestral'], + openRouter: ['qwen 2.5'], +} @@ -74,7 +151,6 @@ export type SettingsOfProvider = { & { enabled: string, // 'true' | 'false' - maxTokens: string, models: string[], // if null, user can type in any string as a model }) @@ -137,13 +213,6 @@ export const displayInfoOfSettingName = (providerName: ProviderName, settingName : '(never)', } } - else if (settingName === 'maxTokens') { - return { - title: 'Max Tokens', - type: 'number', - placeholder: '1024', - } - } else if (settingName === 'enabled') { return { title: 'Enabled?', @@ -170,43 +239,36 @@ export const defaultVoidProviderState: SettingsOfProvider = { ...voidProviderDefaults.anthropic, ...voidInitModelOptions.anthropic, enabled: 'false', - maxTokens: '', }, openAI: { ...voidProviderDefaults.openAI, ...voidInitModelOptions.openAI, enabled: 'false', - maxTokens: '', }, ollama: { ...voidProviderDefaults.ollama, ...voidInitModelOptions.ollama, enabled: 'false', - maxTokens: '', }, openRouter: { ...voidProviderDefaults.openRouter, ...voidInitModelOptions.openRouter, enabled: 'false', - maxTokens: '', }, openAICompatible: { ...voidProviderDefaults.openAICompatible, ...voidInitModelOptions.openAICompatible, enabled: 'false', - maxTokens: '', }, gemini: { ...voidProviderDefaults.gemini, ...voidInitModelOptions.gemini, enabled: 'false', - maxTokens: '', }, groq: { ...voidProviderDefaults.groq, ...voidInitModelOptions.groq, enabled: 'false', - maxTokens: '', } } diff --git a/src/vs/platform/void/electron-main/llmMessage/anthropic.ts b/src/vs/platform/void/electron-main/llmMessage/anthropic.ts index 86282282..964047b2 100644 --- a/src/vs/platform/void/electron-main/llmMessage/anthropic.ts +++ b/src/vs/platform/void/electron-main/llmMessage/anthropic.ts @@ -4,9 +4,8 @@ *--------------------------------------------------------------------------------------------*/ import Anthropic from '@anthropic-ai/sdk'; -import { parseMaxTokensStr } from './util.js'; import { _InternalSendLLMMessageFnType } from '../../common/llmMessageTypes.js'; -import { displayInfoOfSettingName } from '../../common/voidConfigTypes.js'; +import { anthropicMaxPossibleTokens } from '../../common/voidConfigTypes.js'; // Anthropic type LLMMessageAnthropic = { @@ -17,9 +16,9 @@ export const sendAnthropicMsg: _InternalSendLLMMessageFnType = ({ messages, onTe const thisConfig = settingsOfProvider.anthropic - const maxTokens = parseMaxTokensStr(thisConfig.maxTokens) + const maxTokens = anthropicMaxPossibleTokens(modelName) if (maxTokens === undefined) { - onError({ message: `Please set a value for ${displayInfoOfSettingName('anthropic', 'maxTokens').title}.`, fullError: null }) + onError({ message: `Please set a value for Max Tokens.`, fullError: null }) return } diff --git a/src/vs/platform/void/electron-main/llmMessage/groq.ts b/src/vs/platform/void/electron-main/llmMessage/groq.ts index 5ab59211..1b5918a7 100644 --- a/src/vs/platform/void/electron-main/llmMessage/groq.ts +++ b/src/vs/platform/void/electron-main/llmMessage/groq.ts @@ -5,7 +5,6 @@ import Groq from 'groq-sdk'; import { _InternalSendLLMMessageFnType } from '../../common/llmMessageTypes.js'; -import { parseMaxTokensStr } from './util.js'; // Groq export const sendGroqMsg: _InternalSendLLMMessageFnType = async ({ messages, onText, onFinalMessage, onError, settingsOfProvider, modelName, _setAborter }) => { @@ -24,7 +23,7 @@ export const sendGroqMsg: _InternalSendLLMMessageFnType = async ({ messages, onT model: modelName, stream: true, temperature: 0.7, - max_tokens: parseMaxTokensStr(thisConfig.maxTokens), + // max_tokens: parseMaxTokensStr(thisConfig.maxTokens), }) .then(async response => { _setAborter(() => response.controller.abort()) diff --git a/src/vs/platform/void/electron-main/llmMessage/ollama.ts b/src/vs/platform/void/electron-main/llmMessage/ollama.ts index ba04e117..03cf29dc 100644 --- a/src/vs/platform/void/electron-main/llmMessage/ollama.ts +++ b/src/vs/platform/void/electron-main/llmMessage/ollama.ts @@ -5,7 +5,6 @@ import { Ollama } from 'ollama'; import { _InternalOllamaListFnType, _InternalSendLLMMessageFnType, ModelResponse } from '../../common/llmMessageTypes.js'; -import { parseMaxTokensStr } from './util.js'; export const ollamaList: _InternalOllamaListFnType = async ({ onSuccess: onSuccess_, onError: onError_, settingsOfProvider }) => { @@ -49,7 +48,7 @@ export const sendOllamaMsg: _InternalSendLLMMessageFnType = ({ messages, onText, model: modelName, messages: messages, stream: true, - options: { num_predict: parseMaxTokensStr(thisConfig.maxTokens) } // this is max_tokens + // options: { num_predict: parseMaxTokensStr(thisConfig.maxTokens) } // this is max_tokens }) .then(async stream => { _setAborter(() => stream.abort()) diff --git a/src/vs/platform/void/electron-main/llmMessage/openai.ts b/src/vs/platform/void/electron-main/llmMessage/openai.ts index 3b8c3645..03eb7761 100644 --- a/src/vs/platform/void/electron-main/llmMessage/openai.ts +++ b/src/vs/platform/void/electron-main/llmMessage/openai.ts @@ -5,7 +5,7 @@ import OpenAI from 'openai'; import { _InternalSendLLMMessageFnType } from '../../common/llmMessageTypes.js'; -import { parseMaxTokensStr } from './util.js'; +// import { parseMaxTokensStr } from './util.js'; // OpenAI, OpenRouter, OpenAICompatible @@ -20,7 +20,7 @@ export const sendOpenAIMsg: _InternalSendLLMMessageFnType = ({ messages, onText, if (providerName === 'openAI') { const thisConfig = settingsOfProvider.openAI openai = new OpenAI({ apiKey: thisConfig.apiKey, dangerouslyAllowBrowser: true }); - options = { model: modelName, messages: messages, stream: true, max_completion_tokens: parseMaxTokensStr(thisConfig.maxTokens) } + options = { model: modelName, messages: messages, stream: true, /*max_completion_tokens: parseMaxTokensStr(thisConfig.maxTokens)*/ } } else if (providerName === 'openRouter') { const thisConfig = settingsOfProvider.openRouter @@ -31,12 +31,12 @@ export const sendOpenAIMsg: _InternalSendLLMMessageFnType = ({ messages, onText, 'X-Title': 'Void Editor', // Optional. Shows in rankings on openrouter.ai. }, }); - options = { model: modelName, messages: messages, stream: true, max_completion_tokens: parseMaxTokensStr(thisConfig.maxTokens) } + options = { model: modelName, messages: messages, stream: true, /*max_completion_tokens: parseMaxTokensStr(thisConfig.maxTokens)*/ } } else if (providerName === 'openAICompatible') { const thisConfig = settingsOfProvider.openAICompatible openai = new OpenAI({ baseURL: thisConfig.endpoint, apiKey: thisConfig.apiKey, dangerouslyAllowBrowser: true }) - options = { model: modelName, messages: messages, stream: true, max_completion_tokens: parseMaxTokensStr(thisConfig.maxTokens) } + options = { model: modelName, messages: messages, stream: true, /*max_completion_tokens: parseMaxTokensStr(thisConfig.maxTokens)*/ } } else { console.error(`sendOpenAIMsg: invalid providerName: ${providerName}`) diff --git a/src/vs/platform/void/electron-main/llmMessage/util.ts b/src/vs/platform/void/electron-main/llmMessage/util.ts deleted file mode 100644 index 988e4706..00000000 --- a/src/vs/platform/void/electron-main/llmMessage/util.ts +++ /dev/null @@ -1,14 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Glass Devtools, Inc. All rights reserved. - * Void Editor additions licensed under the AGPL 3.0 License. - *--------------------------------------------------------------------------------------------*/ - -export const parseMaxTokensStr = (maxTokensStr: string) => { - // parse the string but only if the full string is a valid number, eg parseInt('100abc') should return NaN - const int = isNaN(Number(maxTokensStr)) ? undefined : parseInt(maxTokensStr) - if (Number.isNaN(int)) - return undefined - return int -} - - diff --git a/src/vs/workbench/contrib/void/browser/react/src/void-settings-tsx/ModelSelectionSettings.tsx b/src/vs/workbench/contrib/void/browser/react/src/void-settings-tsx/ModelSelectionSettings.tsx index e13f0aea..2e95d1ed 100644 --- a/src/vs/workbench/contrib/void/browser/react/src/void-settings-tsx/ModelSelectionSettings.tsx +++ b/src/vs/workbench/contrib/void/browser/react/src/void-settings-tsx/ModelSelectionSettings.tsx @@ -5,7 +5,7 @@ import { useCallback, useEffect, useRef, useState } from 'react' import { FeatureName, featureNames, ProviderName, providerNames } from '../../../../../../../platform/void/common/voidConfigTypes.js' -import { dummyModelData } from '../../../../../../../platform/void/common/voidConfigModelDefaults.js' +import { dummyModelData } from '../../../../../../../platform/void/common/voidConfigTypes.js' import { useConfigState, useRefreshModelState, useService } from '../util/services.js' import { VoidSelectBox } from '../sidebar-tsx/inputs.js' import { SelectBox } from '../../../../../../../base/browser/ui/selectBox/selectBox.js'