diff --git a/src/renderer/src/components/app/Sidebar.tsx b/src/renderer/src/components/app/Sidebar.tsx
index 37007636..ce57da52 100644
--- a/src/renderer/src/components/app/Sidebar.tsx
+++ b/src/renderer/src/components/app/Sidebar.tsx
@@ -12,7 +12,7 @@ const Sidebar: FC = () => {
return (
-
+
@@ -30,7 +30,7 @@ const Sidebar: FC = () => {
-
+
diff --git a/src/renderer/src/hooks/useProvider.ts b/src/renderer/src/hooks/useProvider.ts
index 50bb9587..38c33d28 100644
--- a/src/renderer/src/hooks/useProvider.ts
+++ b/src/renderer/src/hooks/useProvider.ts
@@ -8,7 +8,11 @@ import { Assistant, Model, Provider } from '@renderer/types'
import { useDefaultModel } from './useAssistant'
export function useProviders() {
- return useAppSelector((state) => state.llm.providers)
+ return useAppSelector((state) => state.llm.providers.filter((p) => p.enabled))
+}
+
+export function useSystemProviders() {
+ return useAppSelector((state) => state.llm.providers.filter((p) => p.isSystem))
}
export function useProvider(id: string) {
@@ -30,7 +34,3 @@ export function useProviderByAssistant(assistant: Assistant) {
const { provider } = useProvider(model.provider)
return provider
}
-
-export function useSystemProviders() {
- return useAppSelector((state) => state.llm.providers.filter((p) => p.isSystem))
-}
diff --git a/src/renderer/src/pages/settings/ProviderSettings.tsx b/src/renderer/src/pages/settings/ProviderSettings.tsx
index 5a84a48e..52b7618d 100644
--- a/src/renderer/src/pages/settings/ProviderSettings.tsx
+++ b/src/renderer/src/pages/settings/ProviderSettings.tsx
@@ -2,9 +2,9 @@ import { useSystemProviders } from '@renderer/hooks/useProvider'
import { Provider } from '@renderer/types'
import { FC, useState } from 'react'
import styled from 'styled-components'
-import { Avatar } from 'antd'
+import { Avatar, Tag } from 'antd'
import { getProviderLogo } from '@renderer/services/provider'
-import ProviderModels from './components/ProviderModels'
+import ProviderSetting from './components/ProviderSetting'
const ProviderSettings: FC = () => {
const providers = useSystemProviders()
@@ -20,10 +20,15 @@ const ProviderSettings: FC = () => {
onClick={() => setSelectedProvider(provider)}>
{provider.name}
+ {provider.enabled && (
+
+ ON
+
+ )}
))}
-
+
)
}
diff --git a/src/renderer/src/pages/settings/SettingsPage.tsx b/src/renderer/src/pages/settings/SettingsPage.tsx
index cb5c0308..0d0c0ca9 100644
--- a/src/renderer/src/pages/settings/SettingsPage.tsx
+++ b/src/renderer/src/pages/settings/SettingsPage.tsx
@@ -22,9 +22,6 @@ const SettingsPage: FC = () => {
-
-
-
@@ -34,16 +31,19 @@ const SettingsPage: FC = () => {
+
+
+
- } />
} />
} />
} />
+ } />
} />
diff --git a/src/renderer/src/pages/settings/components/ProviderModels.tsx b/src/renderer/src/pages/settings/components/ProviderSetting.tsx
similarity index 86%
rename from src/renderer/src/pages/settings/components/ProviderModels.tsx
rename to src/renderer/src/pages/settings/components/ProviderSetting.tsx
index fef0541b..b094f54b 100644
--- a/src/renderer/src/pages/settings/components/ProviderModels.tsx
+++ b/src/renderer/src/pages/settings/components/ProviderSetting.tsx
@@ -1,7 +1,7 @@
import { Provider } from '@renderer/types'
import { FC, useEffect, useState } from 'react'
import styled from 'styled-components'
-import { Avatar, Button, Card, Divider, Flex, Input } from 'antd'
+import { Avatar, Button, Card, Divider, Flex, Input, Switch } from 'antd'
import { useProvider } from '@renderer/hooks/useProvider'
import { groupBy } from 'lodash'
import { SettingContainer, SettingSubtitle, SettingTitle } from './SettingComponent'
@@ -14,7 +14,7 @@ interface Props {
provider: Provider
}
-const ProviderModels: FC = ({ provider }) => {
+const ProviderSetting: FC = ({ provider }) => {
const [apiKey, setApiKey] = useState(provider.apiKey)
const [apiHost, setApiHost] = useState(provider.apiHost)
const { updateProvider, models } = useProvider(provider.id)
@@ -44,7 +44,14 @@ const ProviderModels: FC = ({ provider }) => {
return (
- {provider.name}
+
+ {provider.name}
+ updateProvider({ ...provider, enabled })}
+ />
+
API Key
m.defaultEnabled),
isSystem: true,
- models: SYSTEM_MODELS.openai.filter((m) => m.defaultEnabled)
+ enabled: true
},
{
id: 'silicon',
name: 'Silicon',
apiKey: '',
apiHost: 'https://api.siliconflow.cn',
+ models: SYSTEM_MODELS.silicon.filter((m) => m.defaultEnabled),
isSystem: true,
- models: SYSTEM_MODELS.silicon.filter((m) => m.defaultEnabled)
+ enabled: false
},
{
id: 'deepseek',
name: 'deepseek',
apiKey: '',
apiHost: 'https://api.deepseek.com',
+ models: SYSTEM_MODELS.deepseek.filter((m) => m.defaultEnabled),
isSystem: true,
- models: SYSTEM_MODELS.deepseek.filter((m) => m.defaultEnabled)
+ enabled: false
},
{
id: 'yi',
name: 'Yi',
apiKey: '',
apiHost: 'https://api.lingyiwanwu.com',
+ models: SYSTEM_MODELS.yi.filter((m) => m.defaultEnabled),
isSystem: true,
- models: SYSTEM_MODELS.yi.filter((m) => m.defaultEnabled)
+ enabled: false
},
{
id: 'zhipu',
name: 'ZhiPu',
apiKey: '',
apiHost: 'https://open.bigmodel.cn/api/paas/v4/',
+ models: SYSTEM_MODELS.groq.filter((m) => m.defaultEnabled),
isSystem: true,
- models: SYSTEM_MODELS.groq.filter((m) => m.defaultEnabled)
+ enabled: false
},
{
id: 'groq',
name: 'Groq',
apiKey: '',
apiHost: 'https://api.groq.com/openai',
+ models: SYSTEM_MODELS.groq.filter((m) => m.defaultEnabled),
isSystem: true,
- models: SYSTEM_MODELS.groq.filter((m) => m.defaultEnabled)
+ enabled: false
},
{
id: 'ollama',
name: 'Ollama',
apiKey: '',
apiHost: 'http://localhost:11434/v1/',
+ models: [],
isSystem: true,
- models: []
+ enabled: false
}
]
}
diff --git a/src/renderer/src/types/index.ts b/src/renderer/src/types/index.ts
index c2788106..42ee5fbf 100644
--- a/src/renderer/src/types/index.ts
+++ b/src/renderer/src/types/index.ts
@@ -37,6 +37,7 @@ export type Provider = {
apiKey: string
apiHost: string
models: Model[]
+ enabled: boolean
isSystem?: boolean
}