This commit is contained in:
Mathew Pareles 2025-01-24 03:18:36 -08:00
parent 52b6c81507
commit 02894c12de
5 changed files with 822 additions and 718 deletions

View file

@ -115,8 +115,13 @@ class VoidSettingsService extends Disposable implements IVoidSettingsService {
this.waitForInitState = new Promise((res, rej) => resolver = res)
// read and update the actual state immediately
this._readState().then(s => {
this.state = s
this._readState().then(readS => {
// THIS IS A HACK BECAUSE WE ADDED DEEPSEEK
const deepseekAdd = { deepseek: defaultSettingsOfProvider['deepseek'] }
readS = { ...readS, settingsOfProvider: { ...deepseekAdd, ...readS.settingsOfProvider, } }
this.state = readS
resolver()
this._onDidChangeState.fire('all')
})

View file

@ -77,6 +77,11 @@ export const defaultOpenAIModels = modelInfoOfDefaultNames([
// 'gpt-3.5-turbo-1106',
])
// https://platform.openai.com/docs/models/gp
export const defaultDeepseekModels = modelInfoOfDefaultNames([
'deepseek-chat',
'deepseek-reasoner',
])
// https://console.groq.com/docs/models
@ -130,6 +135,9 @@ export const defaultProviderSettings = {
openAI: {
apiKey: '',
},
deepseek: {
apiKey: '',
},
ollama: {
endpoint: 'http://127.0.0.1:11434',
},
@ -198,6 +206,11 @@ export const displayInfoOfProviderName = (providerName: ProviderName): DisplayIn
title: 'OpenAI',
}
}
else if (providerName === 'deepseek') {
return {
title: 'DeepSeek',
}
}
else if (providerName === 'openRouter') {
return {
title: 'OpenRouter',
@ -239,19 +252,21 @@ export const displayInfoOfSettingName = (providerName: ProviderName, settingName
title: 'API Key',
placeholder: providerName === 'anthropic' ? 'sk-ant-key...' : // sk-ant-api03-key
providerName === 'openAI' ? 'sk-proj-key...' :
providerName === 'openRouter' ? 'sk-or-key...' : // sk-or-v1-key
providerName === 'gemini' ? 'key...' :
providerName === 'groq' ? 'gsk_key...' :
providerName === 'openAICompatible' ? 'sk-key...' :
'(never)',
providerName === 'deepseek' ? 'sk-...' :
providerName === 'openRouter' ? 'sk-or-key...' : // sk-or-v1-key
providerName === 'gemini' ? 'key...' :
providerName === 'groq' ? 'gsk_key...' :
providerName === 'openAICompatible' ? 'sk-key...' :
'',
subTextMd: providerName === 'anthropic' ? 'Get your [API Key here](https://console.anthropic.com/settings/keys).' :
providerName === 'openAI' ? 'Get your [API Key here](https://platform.openai.com/api-keys).' :
providerName === 'openRouter' ? 'Get your [API Key here](https://openrouter.ai/settings/keys).' :
providerName === 'gemini' ? 'Get your [API Key here](https://aistudio.google.com/apikey).' :
providerName === 'groq' ? 'Get your [API Key here](https://console.groq.com/keys).' :
providerName === 'openAICompatible' ? 'Add any OpenAI-Compatible endpoint.' :
undefined,
providerName === 'deepseek' ? 'Get your [API Key here](https://platform.deepseek.com/api_keys).' :
providerName === 'openRouter' ? 'Get your [API Key here](https://openrouter.ai/settings/keys).' :
providerName === 'gemini' ? 'Get your [API Key here](https://aistudio.google.com/apikey).' :
providerName === 'groq' ? 'Get your [API Key here](https://console.groq.com/keys).' :
providerName === 'openAICompatible' ? 'Add any OpenAI-Compatible endpoint.' :
'',
}
}
else if (settingName === 'endpoint') {
@ -300,6 +315,9 @@ export const voidInitModelOptions = {
openAI: {
models: defaultOpenAIModels,
},
deepseek: {
models: defaultDeepseekModels,
},
ollama: {
models: [],
},
@ -332,6 +350,12 @@ export const defaultSettingsOfProvider: SettingsOfProvider = {
...defaultProviderSettings.openAI,
...voidInitModelOptions.openAI,
},
deepseek: {
...defaultCustomSettings,
...defaultProviderSettings.deepseek,
...voidInitModelOptions.deepseek,
_enabled: undefined,
},
gemini: {
...defaultCustomSettings,
...defaultProviderSettings.gemini,

View file

@ -69,6 +69,14 @@ export const sendOpenAIMsg: _InternalSendLLMMessageFnType = ({ messages, onText,
});
options = { model: modelName, messages: messages, stream: true, /*max_completion_tokens: parseMaxTokensStr(thisConfig.maxTokens)*/ }
}
else if (providerName === 'deepseek') {
const thisConfig = settingsOfProvider.deepseek
openai = new OpenAI({
baseURL: 'https://api.deepseek.com/v1', apiKey: thisConfig.apiKey, dangerouslyAllowBrowser: true,
});
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 })

View file

@ -119,6 +119,7 @@ export const sendLLMMessage = ({
break;
case 'openAI':
case 'openRouter':
case 'deepseek':
case 'openAICompatible':
sendOpenAIMsg({ messages, onText, onFinalMessage, onError, settingsOfProvider, modelName, _setAborter, providerName });
break;

File diff suppressed because it is too large Load diff