refactor: Improve provider settings and menu handling

This commit is contained in:
kangfenmao 2025-02-14 13:35:09 +08:00
parent 5a647b0d61
commit a07c6cdffb
6 changed files with 25 additions and 13 deletions

View File

@ -6,8 +6,6 @@ import AnthropicProviderLogo from '@renderer/assets/images/providers/anthropic.p
import BaichuanProviderLogo from '@renderer/assets/images/providers/baichuan.png'
import BaiduCloudProviderLogo from '@renderer/assets/images/providers/baidu-cloud.svg'
import BailianProviderLogo from '@renderer/assets/images/providers/bailian.png'
import ModelScopeProviderLogo from '@renderer/assets/images/providers/modelscope.png'
import BytedanceProviderLogo from '@renderer/assets/images/providers/bytedance.png'
import DeepSeekProviderLogo from '@renderer/assets/images/providers/deepseek.png'
import DmxapiProviderLogo from '@renderer/assets/images/providers/DMXAPI.png'
import FireworksProviderLogo from '@renderer/assets/images/providers/fireworks.png'
@ -20,13 +18,14 @@ import GroqProviderLogo from '@renderer/assets/images/providers/groq.png'
import HyperbolicProviderLogo from '@renderer/assets/images/providers/hyperbolic.png'
import InfiniProviderLogo from '@renderer/assets/images/providers/infini.png'
import JinaProviderLogo from '@renderer/assets/images/providers/jina.png'
import LMStudioProviderLogo from '@renderer/assets/images/providers/lmstudio.png'
import MinimaxProviderLogo from '@renderer/assets/images/providers/minimax.png'
import MistralProviderLogo from '@renderer/assets/images/providers/mistral.png'
import ModelScopeProviderLogo from '@renderer/assets/images/providers/modelscope.png'
import MoonshotProviderLogo from '@renderer/assets/images/providers/moonshot.png'
import NvidiaProviderLogo from '@renderer/assets/images/providers/nvidia.png'
import OcoolAiProviderLogo from '@renderer/assets/images/providers/ocoolai.png'
import OllamaProviderLogo from '@renderer/assets/images/providers/ollama.png'
import LMStudioProviderLogo from '@renderer/assets/images/providers/lmstudio.png'
import OpenAiProviderLogo from '@renderer/assets/images/providers/openai.png'
import OpenRouterProviderLogo from '@renderer/assets/images/providers/openrouter.png'
import PerplexityProviderLogo from '@renderer/assets/images/providers/perplexity.png'

View File

@ -42,8 +42,8 @@ import AddModelPopup from './AddModelPopup'
import ApiCheckPopup from './ApiCheckPopup'
import EditModelsPopup from './EditModelsPopup'
import GraphRAGSettings from './GraphRAGSettings'
import OllamSettings from './OllamaSettings'
import LMStudioSettings from './LMStudioSettings'
import OllamSettings from './OllamaSettings'
import SelectProviderModelPopup from './SelectProviderModelPopup'
interface Props {

View File

@ -53,7 +53,7 @@ const ProvidersList: FC = () => {
}
const getDropdownMenus = (provider: Provider): MenuProps['items'] => {
return [
const menus = [
{
label: t('common.edit'),
key: 'edit',
@ -83,6 +83,16 @@ const ProvidersList: FC = () => {
}
}
]
if (providers.filter((p) => p.id === provider.id).length > 1) {
return menus
}
if (provider.isSystem) {
return []
}
return menus
}
return (
@ -102,9 +112,7 @@ const ProvidersList: FC = () => {
{...provided.draggableProps}
{...provided.dragHandleProps}
style={{ ...provided.draggableProps.style, marginBottom: 5 }}>
<Dropdown
menu={{ items: provider.isSystem ? [] : getDropdownMenus(provider) }}
trigger={['contextMenu']}>
<Dropdown menu={{ items: getDropdownMenus(provider) }} trigger={['contextMenu']}>
<ProviderListItem
key={JSON.stringify(provider)}
className={provider.id === selectedProvider?.id ? 'active' : ''}

View File

@ -1,6 +1,6 @@
import { REFERENCE_PROMPT } from '@renderer/config/prompts'
import { getOllamaKeepAliveTime } from '@renderer/hooks/useOllama'
import { getLMStudioKeepAliveTime } from '@renderer/hooks/useLMStudio'
import { getOllamaKeepAliveTime } from '@renderer/hooks/useOllama'
import { getKnowledgeReferences } from '@renderer/services/KnowledgeService'
import store from '@renderer/store'
import { Assistant, GenerateImageParams, Message, Model, Provider, Suggestion } from '@renderer/types'
@ -64,7 +64,11 @@ export default abstract class BaseProvider {
}
public get keepAliveTime() {
return this.provider.id === 'ollama' ? getOllamaKeepAliveTime() : this.provider.id === 'lmstudio' ? getLMStudioKeepAliveTime() : undefined
return this.provider.id === 'ollama'
? getOllamaKeepAliveTime()
: this.provider.id === 'lmstudio'
? getLMStudioKeepAliveTime()
: undefined
}
public async fakeCompletions({ onChunk }: CompletionsParams) {

View File

@ -288,7 +288,7 @@ export default class OpenAIProvider extends BaseProvider {
const defaultModel = getDefaultModel()
const model = assistant.model || defaultModel
if (!message.content) {
message.content = ' '
message.content = ' '
}
const messages = [
{ role: 'system', content: assistant.prompt },
@ -418,7 +418,6 @@ export default class OpenAIProvider extends BaseProvider {
const body = {
model: model.id,
messages: [{ role: 'user', content: 'hi' }],
max_tokens: 100,
stream: false
}

View File

@ -50,6 +50,8 @@ const HomeWindow: FC = () => {
const onCloseWindow = () => window.api.miniWindow.hide()
const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {
const isEnterPressed = e.keyCode == 13
if (e.key === 'Escape') {
setText('')
setRoute('home')
@ -57,7 +59,7 @@ const HomeWindow: FC = () => {
return
}
if (e.key === 'Enter') {
if (isEnterPressed) {
e.preventDefault()
if (content) {
setRoute('chat')