From f65e4f51a24ba9e27fe85ed6eafc423d72ff777f Mon Sep 17 00:00:00 2001 From: Andrew Pareles Date: Mon, 12 May 2025 19:40:39 -0700 Subject: [PATCH] misc --- .../contrib/void/common/modelCapabilities.ts | 11 ++++++--- .../llmMessage/sendLLMMessage.impl.ts | 23 +++++++++++-------- 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/src/vs/workbench/contrib/void/common/modelCapabilities.ts b/src/vs/workbench/contrib/void/common/modelCapabilities.ts index 4a1750e3..52cc3947 100644 --- a/src/vs/workbench/contrib/void/common/modelCapabilities.ts +++ b/src/vs/workbench/contrib/void/common/modelCapabilities.ts @@ -153,8 +153,7 @@ export type VoidStaticModelInfo = { // not stateful specialToolFormat?: 'openai-style' | 'anthropic-style' | 'gemini-style', // typically you should use 'openai-style'. null means "can't call tools by default", and asks the LLM to output XML in agent mode supportsFIM: boolean; // whether the model was specifically designed for autocomplete or "FIM" ("fill-in-middle" format) - // do we need any additional information? - additionalConfig?: { [key: string]: string } // additional info for openAI requests + additionalOpenAIPayload?: { [key: string]: string } // additional info for openAI requests // reasoning options reasoningCapabilities: false | { @@ -189,7 +188,13 @@ export type VoidStaticModelInfo = { // not stateful export type ModelOverrides = Pick 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 007b4413..c58daeb7 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 @@ -68,11 +68,10 @@ const parseHeadersJSON = (s: string | undefined): Record { +const newOpenAICompatibleSDK = async ({ settingsOfProvider, providerName, includeInPayload }: { settingsOfProvider: SettingsOfProvider, providerName: ProviderName, includeInPayload?: { [s: string]: any } }) => { const commonPayloadOpts: ClientOptions = { dangerouslyAllowBrowser: true, ...includeInPayload, - ...additionalOpenAIPayload } if (providerName === 'openAI') { const thisConfig = settingsOfProvider[providerName] @@ -148,7 +147,12 @@ const newOpenAICompatibleSDK = async ({ settingsOfProvider, providerName, includ const _sendOpenAICompatibleFIM = async ({ messages: { prefix, suffix, stopTokens }, onFinalMessage, onError, settingsOfProvider, modelName: modelName_, _setAborter, providerName, overridesOfModel }: SendFIMParams_Internal) => { - const { modelName, supportsFIM } = getModelCapabilities(providerName, modelName_, overridesOfModel) + const { + modelName, + supportsFIM, + additionalOpenAIPayload, + } = getModelCapabilities(providerName, modelName_, overridesOfModel) + if (!supportsFIM) { if (modelName === modelName_) onError({ message: `Model ${modelName} does not support FIM.`, fullError: null }) @@ -157,7 +161,7 @@ const _sendOpenAICompatibleFIM = async ({ messages: { prefix, suffix, stopTokens return } - const openai = await newOpenAICompatibleSDK({ providerName, settingsOfProvider }) + const openai = await newOpenAICompatibleSDK({ providerName, settingsOfProvider, includeInPayload: additionalOpenAIPayload }) openai.completions .create({ model: modelName, @@ -237,7 +241,7 @@ const _sendOpenAICompatibleChat = async ({ messages, onText, onFinalMessage, onE modelName, specialToolFormat, reasoningCapabilities, - additionalConfig + additionalOpenAIPayload, } = getModelCapabilities(providerName, modelName_, overridesOfModel) const { providerReasoningIOSettings } = getProviderCapabilities(providerName) @@ -245,10 +249,11 @@ const _sendOpenAICompatibleChat = async ({ messages, onText, onFinalMessage, onE // reasoning const { canIOReasoning, openSourceThinkTags } = reasoningCapabilities || {} const reasoningInfo = getSendableReasoningInfo('Chat', providerName, modelName_, modelSelectionOptions, overridesOfModel) // user's modelName_ here - const includeInPayload = providerReasoningIOSettings?.input?.includeInPayload?.(reasoningInfo) || {} - - const additionalOpenAIPayload = additionalConfig || {} + const includeInPayload = { + ...providerReasoningIOSettings?.input?.includeInPayload?.(reasoningInfo), + ...additionalOpenAIPayload + } // tools const potentialTools = chatMode !== null ? openAITools(chatMode) : null @@ -257,7 +262,7 @@ const _sendOpenAICompatibleChat = async ({ messages, onText, onFinalMessage, onE : {} // instance - const openai: OpenAI = await newOpenAICompatibleSDK({ providerName, settingsOfProvider, includeInPayload, additionalOpenAIPayload }) + const openai: OpenAI = await newOpenAICompatibleSDK({ providerName, settingsOfProvider, includeInPayload }) const options: OpenAI.Chat.Completions.ChatCompletionCreateParamsStreaming = { model: modelName, messages: messages as any,