fix: auto update assistant model

This commit is contained in:
kangfenmao 2024-11-25 12:49:47 +08:00
parent e765bf9828
commit 603b867a5f
2 changed files with 21 additions and 4 deletions

View File

@ -149,9 +149,9 @@ const Assistants: FC<Props> = ({
<AssistantItem onClick={() => onSwitchAssistant(assistant)} className={isCurrent ? 'active' : ''}> <AssistantItem onClick={() => onSwitchAssistant(assistant)} className={isCurrent ? 'active' : ''}>
<AssistantName className="name">{assistant.name || t('chat.default.name')}</AssistantName> <AssistantName className="name">{assistant.name || t('chat.default.name')}</AssistantName>
{isCurrent && ( {isCurrent && (
<ArrowRightButton onClick={() => EventEmitter.emit(EVENT_NAMES.SWITCH_TOPIC_SIDEBAR)}> <MenuButton onClick={() => EventEmitter.emit(EVENT_NAMES.SWITCH_TOPIC_SIDEBAR)}>
<TopicCount className="topics-count">{assistant.topics.length}</TopicCount> <TopicCount className="topics-count">{assistant.topics.length}</TopicCount>
</ArrowRightButton> </MenuButton>
)} )}
</AssistantItem> </AssistantItem>
</Dropdown> </Dropdown>
@ -213,12 +213,12 @@ const AssistantName = styled.div`
font-size: 13px; font-size: 13px;
` `
const ArrowRightButton = styled.div` const MenuButton = styled.div`
display: flex; display: flex;
flex-direction: row; flex-direction: row;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
width: 22px; min-width: 22px;
height: 22px; height: 22px;
min-width: 22px; min-width: 22px;
min-height: 22px; min-height: 22px;

View File

@ -11,10 +11,13 @@ import VisionIcon from '@renderer/components/Icons/VisionIcon'
import { getModelLogo, isVisionModel, VISION_REGEX } from '@renderer/config/models' import { getModelLogo, isVisionModel, VISION_REGEX } from '@renderer/config/models'
import { PROVIDER_CONFIG } from '@renderer/config/providers' import { PROVIDER_CONFIG } from '@renderer/config/providers'
import { useTheme } from '@renderer/context/ThemeProvider' import { useTheme } from '@renderer/context/ThemeProvider'
import { useAssistants } from '@renderer/hooks/useAssistant'
import { useProvider } from '@renderer/hooks/useProvider' import { useProvider } from '@renderer/hooks/useProvider'
import i18n from '@renderer/i18n' import i18n from '@renderer/i18n'
import { isOpenAIProvider } from '@renderer/providers/ProviderFactory' import { isOpenAIProvider } from '@renderer/providers/ProviderFactory'
import { checkApi } from '@renderer/services/ApiService' import { checkApi } from '@renderer/services/ApiService'
import { useAppDispatch } from '@renderer/store'
import { setModel } from '@renderer/store/assistants'
import { Model, ModelType, Provider } from '@renderer/types' import { Model, ModelType, Provider } from '@renderer/types'
import { Avatar, Button, Card, Checkbox, Divider, Flex, Input, Popover, Space, Switch } from 'antd' import { Avatar, Button, Card, Checkbox, Divider, Flex, Input, Popover, Space, Switch } from 'antd'
import Link from 'antd/es/typography/Link' import Link from 'antd/es/typography/Link'
@ -49,8 +52,10 @@ const ProviderSetting: FC<Props> = ({ provider: _provider }) => {
const [apiValid, setApiValid] = useState(false) const [apiValid, setApiValid] = useState(false)
const [apiChecking, setApiChecking] = useState(false) const [apiChecking, setApiChecking] = useState(false)
const { updateProvider, models, removeModel } = useProvider(provider.id) const { updateProvider, models, removeModel } = useProvider(provider.id)
const { assistants } = useAssistants()
const { t } = useTranslation() const { t } = useTranslation()
const { theme } = useTheme() const { theme } = useTheme()
const dispatch = useAppDispatch()
const modelGroups = groupBy(models, 'group') const modelGroups = groupBy(models, 'group')
@ -133,7 +138,19 @@ const ProviderSetting: FC<Props> = ({ provider: _provider }) => {
} }
return m return m
}) })
updateProvider({ ...provider, models: updatedModels }) updateProvider({ ...provider, models: updatedModels })
assistants.forEach((assistant) => {
if (assistant?.model?.id === model.id && assistant.model.provider === provider.id) {
dispatch(
setModel({
assistantId: assistant.id,
model: { ...model, type: types }
})
)
}
})
} }
const modelTypeContent = (model: Model) => ( const modelTypeContent = (model: Model) => (