mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2026-01-03 19:30:04 +08:00
feat: 添加条件渲染以隐藏假助手的设置组,优化用户界面
This commit is contained in:
parent
da18ff3d48
commit
53a6c70eca
@ -181,128 +181,130 @@ const SettingsTab: FC<Props> = (props) => {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<Container className="settings-tab">
|
<Container className="settings-tab">
|
||||||
<CollapsibleSettingGroup
|
{props.assistant.id !== 'fake' && (
|
||||||
title={t('assistants.settings.title')}
|
<CollapsibleSettingGroup
|
||||||
defaultExpanded={true}
|
title={t('assistants.settings.title')}
|
||||||
extra={
|
defaultExpanded={true}
|
||||||
<HStack alignItems="center" gap={2}>
|
extra={
|
||||||
<Button
|
<HStack alignItems="center" gap={2}>
|
||||||
type="text"
|
<Button
|
||||||
size="small"
|
type="text"
|
||||||
icon={<Settings2 size={16} />}
|
size="small"
|
||||||
onClick={() => AssistantSettingsPopup.show({ assistant, tab: 'model' })}
|
icon={<Settings2 size={16} />}
|
||||||
/>
|
onClick={() => AssistantSettingsPopup.show({ assistant, tab: 'model' })}
|
||||||
</HStack>
|
/>
|
||||||
}>
|
</HStack>
|
||||||
<SettingGroup style={{ marginTop: 5 }}>
|
}>
|
||||||
<Row align="middle">
|
<SettingGroup style={{ marginTop: 5 }}>
|
||||||
<SettingRowTitleSmall>
|
<Row align="middle">
|
||||||
{t('chat.settings.temperature.label')}
|
<SettingRowTitleSmall>
|
||||||
<HelpTooltip title={t('chat.settings.temperature.tip')} />
|
{t('chat.settings.temperature.label')}
|
||||||
</SettingRowTitleSmall>
|
<HelpTooltip title={t('chat.settings.temperature.tip')} />
|
||||||
<Switch
|
</SettingRowTitleSmall>
|
||||||
size="small"
|
<Switch
|
||||||
style={{ marginLeft: 'auto' }}
|
size="small"
|
||||||
checked={enableTemperature}
|
style={{ marginLeft: 'auto' }}
|
||||||
onChange={(enabled) => {
|
checked={enableTemperature}
|
||||||
setEnableTemperature(enabled)
|
onChange={(enabled) => {
|
||||||
onUpdateAssistantSettings({ enableTemperature: enabled })
|
setEnableTemperature(enabled)
|
||||||
}}
|
onUpdateAssistantSettings({ enableTemperature: enabled })
|
||||||
/>
|
}}
|
||||||
</Row>
|
/>
|
||||||
{enableTemperature ? (
|
</Row>
|
||||||
|
{enableTemperature ? (
|
||||||
|
<Row align="middle" gutter={10}>
|
||||||
|
<Col span={23}>
|
||||||
|
<Slider
|
||||||
|
min={0}
|
||||||
|
max={2}
|
||||||
|
onChange={setTemperature}
|
||||||
|
onChangeComplete={onTemperatureChange}
|
||||||
|
value={typeof temperature === 'number' ? temperature : 0}
|
||||||
|
step={0.1}
|
||||||
|
/>
|
||||||
|
</Col>
|
||||||
|
</Row>
|
||||||
|
) : (
|
||||||
|
<SettingDivider />
|
||||||
|
)}
|
||||||
|
<Row align="middle">
|
||||||
|
<SettingRowTitleSmall>
|
||||||
|
{t('chat.settings.context_count.label')}
|
||||||
|
<HelpTooltip title={t('chat.settings.context_count.tip')} />
|
||||||
|
</SettingRowTitleSmall>
|
||||||
|
</Row>
|
||||||
<Row align="middle" gutter={10}>
|
<Row align="middle" gutter={10}>
|
||||||
<Col span={23}>
|
<Col span={23}>
|
||||||
<Slider
|
<Slider
|
||||||
min={0}
|
min={0}
|
||||||
max={2}
|
max={maxContextCount}
|
||||||
onChange={setTemperature}
|
onChange={setContextCount}
|
||||||
onChangeComplete={onTemperatureChange}
|
onChangeComplete={onContextCountChange}
|
||||||
value={typeof temperature === 'number' ? temperature : 0}
|
value={typeof contextCount === 'number' ? contextCount : 0}
|
||||||
step={0.1}
|
step={1}
|
||||||
/>
|
/>
|
||||||
</Col>
|
</Col>
|
||||||
</Row>
|
</Row>
|
||||||
) : (
|
|
||||||
<SettingDivider />
|
<SettingDivider />
|
||||||
)}
|
<SettingRow>
|
||||||
<Row align="middle">
|
<SettingRowTitleSmall>{t('models.stream_output')}</SettingRowTitleSmall>
|
||||||
<SettingRowTitleSmall>
|
<Switch
|
||||||
{t('chat.settings.context_count.label')}
|
size="small"
|
||||||
<HelpTooltip title={t('chat.settings.context_count.tip')} />
|
checked={streamOutput}
|
||||||
</SettingRowTitleSmall>
|
onChange={(checked) => {
|
||||||
</Row>
|
setStreamOutput(checked)
|
||||||
<Row align="middle" gutter={10}>
|
onUpdateAssistantSettings({ streamOutput: checked })
|
||||||
<Col span={23}>
|
}}
|
||||||
<Slider
|
|
||||||
min={0}
|
|
||||||
max={maxContextCount}
|
|
||||||
onChange={setContextCount}
|
|
||||||
onChangeComplete={onContextCountChange}
|
|
||||||
value={typeof contextCount === 'number' ? contextCount : 0}
|
|
||||||
step={1}
|
|
||||||
/>
|
/>
|
||||||
</Col>
|
</SettingRow>
|
||||||
</Row>
|
<SettingDivider />
|
||||||
<SettingDivider />
|
<SettingRow>
|
||||||
<SettingRow>
|
<Row align="middle">
|
||||||
<SettingRowTitleSmall>{t('models.stream_output')}</SettingRowTitleSmall>
|
<SettingRowTitleSmall>
|
||||||
<Switch
|
{t('chat.settings.max_tokens.label')}
|
||||||
size="small"
|
<HelpTooltip title={t('chat.settings.max_tokens.tip')} />
|
||||||
checked={streamOutput}
|
</SettingRowTitleSmall>
|
||||||
onChange={(checked) => {
|
</Row>
|
||||||
setStreamOutput(checked)
|
<Switch
|
||||||
onUpdateAssistantSettings({ streamOutput: checked })
|
size="small"
|
||||||
}}
|
checked={enableMaxTokens}
|
||||||
/>
|
onChange={async (enabled) => {
|
||||||
</SettingRow>
|
if (enabled) {
|
||||||
<SettingDivider />
|
const confirmed = await modalConfirm({
|
||||||
<SettingRow>
|
title: t('chat.settings.max_tokens.confirm'),
|
||||||
<Row align="middle">
|
content: t('chat.settings.max_tokens.confirm_content'),
|
||||||
<SettingRowTitleSmall>
|
okButtonProps: {
|
||||||
{t('chat.settings.max_tokens.label')}
|
danger: true
|
||||||
<HelpTooltip title={t('chat.settings.max_tokens.tip')} />
|
}
|
||||||
</SettingRowTitleSmall>
|
})
|
||||||
</Row>
|
if (!confirmed) return
|
||||||
<Switch
|
}
|
||||||
size="small"
|
setEnableMaxTokens(enabled)
|
||||||
checked={enableMaxTokens}
|
onUpdateAssistantSettings({ enableMaxTokens: enabled })
|
||||||
onChange={async (enabled) => {
|
}}
|
||||||
if (enabled) {
|
/>
|
||||||
const confirmed = await modalConfirm({
|
</SettingRow>
|
||||||
title: t('chat.settings.max_tokens.confirm'),
|
{enableMaxTokens && (
|
||||||
content: t('chat.settings.max_tokens.confirm_content'),
|
<Row align="middle" gutter={10} style={{ marginTop: 10 }}>
|
||||||
okButtonProps: {
|
<Col span={24}>
|
||||||
danger: true
|
<InputNumber
|
||||||
}
|
disabled={!enableMaxTokens}
|
||||||
})
|
min={0}
|
||||||
if (!confirmed) return
|
max={10000000}
|
||||||
}
|
step={100}
|
||||||
setEnableMaxTokens(enabled)
|
value={typeof maxTokens === 'number' ? maxTokens : 0}
|
||||||
onUpdateAssistantSettings({ enableMaxTokens: enabled })
|
changeOnBlur
|
||||||
}}
|
onChange={(value) => value && setMaxTokens(value)}
|
||||||
/>
|
onBlur={() => onMaxTokensChange(maxTokens)}
|
||||||
</SettingRow>
|
style={{ width: '100%' }}
|
||||||
{enableMaxTokens && (
|
/>
|
||||||
<Row align="middle" gutter={10} style={{ marginTop: 10 }}>
|
</Col>
|
||||||
<Col span={24}>
|
</Row>
|
||||||
<InputNumber
|
)}
|
||||||
disabled={!enableMaxTokens}
|
<SettingDivider />
|
||||||
min={0}
|
</SettingGroup>
|
||||||
max={10000000}
|
</CollapsibleSettingGroup>
|
||||||
step={100}
|
)}
|
||||||
value={typeof maxTokens === 'number' ? maxTokens : 0}
|
|
||||||
changeOnBlur
|
|
||||||
onChange={(value) => value && setMaxTokens(value)}
|
|
||||||
onBlur={() => onMaxTokensChange(maxTokens)}
|
|
||||||
style={{ width: '100%' }}
|
|
||||||
/>
|
|
||||||
</Col>
|
|
||||||
</Row>
|
|
||||||
)}
|
|
||||||
<SettingDivider />
|
|
||||||
</SettingGroup>
|
|
||||||
</CollapsibleSettingGroup>
|
|
||||||
{isOpenAI && (
|
{isOpenAI && (
|
||||||
<OpenAISettingsGroup
|
<OpenAISettingsGroup
|
||||||
model={model}
|
model={model}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user