fix: improved input validation and debouncing for assistant settings updates
This commit is contained in:
parent
2b4cfe7cb1
commit
56761d6f69
@ -6,6 +6,7 @@ import { DEFAULT_CONTEXTCOUNT, DEFAULT_TEMPERATURE } from '@renderer/config/cons
|
|||||||
import { SettingRow } from '@renderer/pages/settings'
|
import { SettingRow } from '@renderer/pages/settings'
|
||||||
import { Assistant, AssistantSettingCustomParameters, AssistantSettings } from '@renderer/types'
|
import { Assistant, AssistantSettingCustomParameters, AssistantSettings } from '@renderer/types'
|
||||||
import { Button, Col, Divider, Input, InputNumber, Row, Select, Slider, Switch, Tooltip } from 'antd'
|
import { Button, Col, Divider, Input, InputNumber, Row, Select, Slider, Switch, Tooltip } from 'antd'
|
||||||
|
import { isNull } from 'lodash'
|
||||||
import { FC, useEffect, useRef, useState } from 'react'
|
import { FC, useEffect, useRef, useState } from 'react'
|
||||||
import { useTranslation } from 'react-i18next'
|
import { useTranslation } from 'react-i18next'
|
||||||
import styled from 'styled-components'
|
import styled from 'styled-components'
|
||||||
@ -36,6 +37,7 @@ const AssistantModelSettings: FC<Props> = ({ assistant, updateAssistant, updateA
|
|||||||
const { t } = useTranslation()
|
const { t } = useTranslation()
|
||||||
|
|
||||||
const onTemperatureChange = (value) => {
|
const onTemperatureChange = (value) => {
|
||||||
|
console.debug('[onTemperatureChange]', value)
|
||||||
if (!isNaN(value as number)) {
|
if (!isNaN(value as number)) {
|
||||||
updateAssistantSettings({ temperature: value })
|
updateAssistantSettings({ temperature: value })
|
||||||
}
|
}
|
||||||
@ -206,7 +208,7 @@ const AssistantModelSettings: FC<Props> = ({ assistant, updateAssistant, updateA
|
|||||||
value={autoResetModel}
|
value={autoResetModel}
|
||||||
onChange={(checked) => {
|
onChange={(checked) => {
|
||||||
setAutoResetModel(checked)
|
setAutoResetModel(checked)
|
||||||
updateAssistantSettings({ autoResetModel: checked })
|
setTimeout(() => updateAssistantSettings({ autoResetModel: checked }), 500)
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</SettingRow>
|
</SettingRow>
|
||||||
@ -218,7 +220,7 @@ const AssistantModelSettings: FC<Props> = ({ assistant, updateAssistant, updateA
|
|||||||
</Tooltip>
|
</Tooltip>
|
||||||
</Row>
|
</Row>
|
||||||
<Row align="middle" gutter={20}>
|
<Row align="middle" gutter={20}>
|
||||||
<Col span={21}>
|
<Col span={20}>
|
||||||
<Slider
|
<Slider
|
||||||
min={0}
|
min={0}
|
||||||
max={2}
|
max={2}
|
||||||
@ -229,13 +231,19 @@ const AssistantModelSettings: FC<Props> = ({ assistant, updateAssistant, updateA
|
|||||||
step={0.01}
|
step={0.01}
|
||||||
/>
|
/>
|
||||||
</Col>
|
</Col>
|
||||||
<Col span={3}>
|
<Col span={4}>
|
||||||
<InputNumber
|
<InputNumber
|
||||||
min={0}
|
min={0}
|
||||||
max={2}
|
max={2}
|
||||||
step={0.01}
|
step={0.01}
|
||||||
value={temperature}
|
value={temperature}
|
||||||
onChange={onTemperatureChange}
|
changeOnBlur
|
||||||
|
onChange={(value) => {
|
||||||
|
if (!isNull(value)) {
|
||||||
|
setTemperature(value)
|
||||||
|
setTimeout(() => updateAssistantSettings({ temperature: value }), 500)
|
||||||
|
}
|
||||||
|
}}
|
||||||
style={{ width: '100%' }}
|
style={{ width: '100%' }}
|
||||||
/>
|
/>
|
||||||
</Col>
|
</Col>
|
||||||
@ -247,7 +255,7 @@ const AssistantModelSettings: FC<Props> = ({ assistant, updateAssistant, updateA
|
|||||||
</Tooltip>
|
</Tooltip>
|
||||||
</Row>
|
</Row>
|
||||||
<Row align="middle" gutter={20}>
|
<Row align="middle" gutter={20}>
|
||||||
<Col span={21}>
|
<Col span={20}>
|
||||||
<Slider
|
<Slider
|
||||||
min={0}
|
min={0}
|
||||||
max={1}
|
max={1}
|
||||||
@ -258,8 +266,21 @@ const AssistantModelSettings: FC<Props> = ({ assistant, updateAssistant, updateA
|
|||||||
step={0.01}
|
step={0.01}
|
||||||
/>
|
/>
|
||||||
</Col>
|
</Col>
|
||||||
<Col span={3}>
|
<Col span={4}>
|
||||||
<InputNumber min={0} max={1} step={0.01} value={topP} onChange={onTopPChange} style={{ width: '100%' }} />
|
<InputNumber
|
||||||
|
min={0}
|
||||||
|
max={1}
|
||||||
|
step={0.01}
|
||||||
|
value={topP}
|
||||||
|
changeOnBlur
|
||||||
|
onChange={(value) => {
|
||||||
|
if (!isNull(value)) {
|
||||||
|
setTopP(value)
|
||||||
|
setTimeout(() => updateAssistantSettings({ topP: value }), 500)
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
style={{ width: '100%' }}
|
||||||
|
/>
|
||||||
</Col>
|
</Col>
|
||||||
</Row>
|
</Row>
|
||||||
<Row align="middle">
|
<Row align="middle">
|
||||||
@ -271,7 +292,7 @@ const AssistantModelSettings: FC<Props> = ({ assistant, updateAssistant, updateA
|
|||||||
</Label>
|
</Label>
|
||||||
</Row>
|
</Row>
|
||||||
<Row align="middle" gutter={20}>
|
<Row align="middle" gutter={20}>
|
||||||
<Col span={21}>
|
<Col span={20}>
|
||||||
<Slider
|
<Slider
|
||||||
min={0}
|
min={0}
|
||||||
max={20}
|
max={20}
|
||||||
@ -282,13 +303,19 @@ const AssistantModelSettings: FC<Props> = ({ assistant, updateAssistant, updateA
|
|||||||
step={1}
|
step={1}
|
||||||
/>
|
/>
|
||||||
</Col>
|
</Col>
|
||||||
<Col span={3}>
|
<Col span={4}>
|
||||||
<InputNumber
|
<InputNumber
|
||||||
min={0}
|
min={0}
|
||||||
max={20}
|
max={20}
|
||||||
step={1}
|
step={1}
|
||||||
value={contextCount}
|
value={contextCount}
|
||||||
onChange={onContextCountChange}
|
changeOnBlur
|
||||||
|
onChange={(value) => {
|
||||||
|
if (!isNull(value)) {
|
||||||
|
setContextCount(value)
|
||||||
|
setTimeout(() => updateAssistantSettings({ contextCount: value }), 500)
|
||||||
|
}
|
||||||
|
}}
|
||||||
style={{ width: '100%' }}
|
style={{ width: '100%' }}
|
||||||
/>
|
/>
|
||||||
</Col>
|
</Col>
|
||||||
@ -311,7 +338,7 @@ const AssistantModelSettings: FC<Props> = ({ assistant, updateAssistant, updateA
|
|||||||
</SettingRow>
|
</SettingRow>
|
||||||
{enableMaxTokens && (
|
{enableMaxTokens && (
|
||||||
<Row align="middle" gutter={20}>
|
<Row align="middle" gutter={20}>
|
||||||
<Col span={21}>
|
<Col span={20}>
|
||||||
<Slider
|
<Slider
|
||||||
disabled={!enableMaxTokens}
|
disabled={!enableMaxTokens}
|
||||||
min={0}
|
min={0}
|
||||||
@ -319,21 +346,27 @@ const AssistantModelSettings: FC<Props> = ({ assistant, updateAssistant, updateA
|
|||||||
onChange={setMaxTokens}
|
onChange={setMaxTokens}
|
||||||
onChangeComplete={onMaxTokensChange}
|
onChangeComplete={onMaxTokensChange}
|
||||||
value={typeof maxTokens === 'number' ? maxTokens : 0}
|
value={typeof maxTokens === 'number' ? maxTokens : 0}
|
||||||
step={100}
|
step={50}
|
||||||
marks={{
|
marks={{
|
||||||
0: '0',
|
0: '0',
|
||||||
32000: t('chat.settings.max')
|
32000: t('chat.settings.max')
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</Col>
|
</Col>
|
||||||
<Col span={3}>
|
<Col span={4}>
|
||||||
<InputNumber
|
<InputNumber
|
||||||
disabled={!enableMaxTokens}
|
disabled={!enableMaxTokens}
|
||||||
min={0}
|
min={0}
|
||||||
max={32000}
|
max={32000}
|
||||||
step={100}
|
step={100}
|
||||||
value={maxTokens}
|
value={maxTokens}
|
||||||
onChange={onMaxTokensChange}
|
changeOnBlur
|
||||||
|
onChange={(value) => {
|
||||||
|
if (!isNull(value)) {
|
||||||
|
setMaxTokens(value)
|
||||||
|
setTimeout(() => updateAssistantSettings({ maxTokens: value }), 1000)
|
||||||
|
}
|
||||||
|
}}
|
||||||
style={{ width: '100%' }}
|
style={{ width: '100%' }}
|
||||||
/>
|
/>
|
||||||
</Col>
|
</Col>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user