diff --git a/src/renderer/src/components/AssistantSettings/AssistantModelSettings.tsx b/src/renderer/src/components/AssistantSettings/AssistantModelSettings.tsx index 73fcc4b694..a073aae77b 100644 --- a/src/renderer/src/components/AssistantSettings/AssistantModelSettings.tsx +++ b/src/renderer/src/components/AssistantSettings/AssistantModelSettings.tsx @@ -3,7 +3,7 @@ import { HStack } from '@renderer/components/Layout' import { DEFAULT_CONTEXTCOUNT, DEFAULT_TEMPERATURE } from '@renderer/config/constant' import { SettingRow } from '@renderer/pages/settings' import { Assistant, AssistantSettings } from '@renderer/types' -import { Button, Col, Divider, Row, Slider, Switch, Tooltip } from 'antd' +import { Button, Col, Divider, InputNumber, Row, Slider, Switch, Tooltip } from 'antd' import { FC, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' @@ -25,6 +25,7 @@ const AssistantModelSettings: FC = ({ assistant, updateAssistant, updateA const [autoResetModel, setAutoResetModel] = useState(assistant?.settings?.autoResetModel ?? false) const [streamOutput, setStreamOutput] = useState(assistant?.settings?.streamOutput ?? true) const [defaultModel, setDefaultModel] = useState(assistant?.defaultModel) + const [topP, setTopP] = useState(assistant?.settings?.topP ?? 1) const { t } = useTranslation() const onTemperatureChange = (value) => { @@ -45,18 +46,26 @@ const AssistantModelSettings: FC = ({ assistant, updateAssistant, updateA } } + const onTopPChange = (value) => { + if (!isNaN(value as number)) { + updateAssistantSettings({ topP: value }) + } + } + const onReset = () => { setTemperature(DEFAULT_TEMPERATURE) setContextCount(DEFAULT_CONTEXTCOUNT) setEnableMaxTokens(false) setMaxTokens(0) setStreamOutput(true) + setTopP(1) updateAssistantSettings({ temperature: DEFAULT_TEMPERATURE, contextCount: DEFAULT_CONTEXTCOUNT, enableMaxTokens: false, maxTokens: 0, - streamOutput: true + streamOutput: true, + topP: 1 }) } @@ -108,17 +117,50 @@ const AssistantModelSettings: FC = ({ assistant, updateAssistant, updateA - - + + + + + + + + + + + + + + + + + + + - - + + + + + - + + @@ -154,21 +208,39 @@ const AssistantModelSettings: FC = ({ assistant, updateAssistant, updateA updateAssistantSettings({ enableMaxTokens: enabled }) }} /> - - - - - - - + + {enableMaxTokens && ( + + + + + + + + + )} + + { const { defaultAssistant, updateDefaultAssistant } = useDefaultAssistant() @@ -19,6 +19,7 @@ const AssistantSettings: FC = () => { const [contextCount, setContextCount] = useState(defaultAssistant.settings?.contextCount ?? DEFAULT_CONTEXTCOUNT) const [enableMaxTokens, setEnableMaxTokens] = useState(defaultAssistant?.settings?.enableMaxTokens ?? false) const [maxTokens, setMaxTokens] = useState(defaultAssistant?.settings?.maxTokens ?? 0) + const [topP, setTopP] = useState(defaultAssistant.settings?.topP ?? 1) const { theme } = useTheme() const { t } = useTranslation() @@ -32,7 +33,8 @@ const AssistantSettings: FC = () => { contextCount: settings.contextCount ?? contextCount, enableMaxTokens: settings.enableMaxTokens ?? enableMaxTokens, maxTokens: settings.maxTokens ?? maxTokens, - streamOutput: settings.streamOutput ?? true + streamOutput: settings.streamOutput ?? true, + topP: settings.topP ?? topP } }) } @@ -49,12 +51,14 @@ const AssistantSettings: FC = () => { onUpdateAssistantSettings({ contextCount: value }) ) const onMaxTokensChange = handleChange(setMaxTokens, (value) => onUpdateAssistantSettings({ maxTokens: value })) + const onTopPChange = handleChange(setTopP, (value) => onUpdateAssistantSettings({ topP: value })) const onReset = () => { setTemperature(DEFAULT_TEMPERATURE) setContextCount(DEFAULT_CONTEXTCOUNT) setEnableMaxTokens(false) setMaxTokens(0) + setTopP(1) updateDefaultAssistant({ ...defaultAssistant, settings: { @@ -63,7 +67,8 @@ const AssistantSettings: FC = () => { contextCount: DEFAULT_CONTEXTCOUNT, enableMaxTokens: false, maxTokens: DEFAULT_MAX_TOKENS, - streamOutput: true + streamOutput: true, + topP: 1 } }) } @@ -125,6 +130,28 @@ const AssistantSettings: FC = () => { /> + + + + + + + + + + + + + + @@ -223,6 +250,8 @@ const PopupContainer: React.FC = ({ resolve }) => { resolve({}) } + DefaultAssistantSettingsPopup.hide = onCancel + return ( = ({ resolve }) => { ) } -export default class AssistantSettingsPopup { +const TopViewKey = 'DefaultAssistantSettingsPopup' + +export default class DefaultAssistantSettingsPopup { static topviewId = 0 static hide() { - TopView.hide('AssistantSettingsPopup') + TopView.hide(TopViewKey) } static show() { return new Promise((resolve) => { @@ -249,10 +280,10 @@ export default class AssistantSettingsPopup { { resolve(v) - this.hide() + TopView.hide(TopViewKey) }} />, - 'AssistantSettingsPopup' + TopViewKey ) }) } diff --git a/src/renderer/src/pages/settings/ModalSettings/ModelSettings.tsx b/src/renderer/src/pages/settings/ModalSettings/ModelSettings.tsx index e197f9e3f6..f9792ba0a0 100644 --- a/src/renderer/src/pages/settings/ModalSettings/ModelSettings.tsx +++ b/src/renderer/src/pages/settings/ModalSettings/ModelSettings.tsx @@ -16,7 +16,7 @@ import { FC, useMemo } from 'react' import { useTranslation } from 'react-i18next' import { SettingContainer, SettingDescription, SettingGroup, SettingTitle } from '..' -import AssistantSettingsPopup from '../AssistantSettings' +import DefaultAssistantSettings from './DefaultAssistantSettings' import TopicNamingModalPopup from './TopicNamingModalPopup' const ModelSettings: FC = () => { @@ -93,7 +93,7 @@ const ModelSettings: FC = () => { showSearch placeholder={t('settings.models.empty')} /> -