mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2026-01-03 19:30:04 +08:00
refactor: remove extended context settings and related logic
* Removed EXTENDED_CONTEXT_LIMIT and EXTENDED_CONTEXT_STEP constants from the configuration. * Eliminated enableMaxContexts state and associated logic from settings components. * Updated contextCount handling to accommodate a maximum of 100, with a special case for 100 to represent an unlimited context. * Cleaned up related translations for max contexts in multiple languages.
This commit is contained in:
parent
1577dbefae
commit
fd76989c7e
@ -1,7 +1,5 @@
|
|||||||
export const DEFAULT_TEMPERATURE = 1.0
|
export const DEFAULT_TEMPERATURE = 1.0
|
||||||
export const DEFAULT_CONTEXTCOUNT = 5
|
export const DEFAULT_CONTEXTCOUNT = 5
|
||||||
export const EXTENDED_CONTEXT_LIMIT = 100
|
|
||||||
export const EXTENDED_CONTEXT_STEP = 1
|
|
||||||
export const DEFAULT_MAX_TOKENS = 4096
|
export const DEFAULT_MAX_TOKENS = 4096
|
||||||
export const DEFAULT_KNOWLEDGE_DOCUMENT_COUNT = 6
|
export const DEFAULT_KNOWLEDGE_DOCUMENT_COUNT = 6
|
||||||
export const DEFAULT_KNOWLEDGE_THRESHOLD = 0.0
|
export const DEFAULT_KNOWLEDGE_THRESHOLD = 0.0
|
||||||
|
|||||||
@ -208,7 +208,6 @@
|
|||||||
"settings.context_count": "Context",
|
"settings.context_count": "Context",
|
||||||
"settings.context_count.tip": "The number of previous messages to keep in the context.",
|
"settings.context_count.tip": "The number of previous messages to keep in the context.",
|
||||||
"settings.max": "Max",
|
"settings.max": "Max",
|
||||||
"settings.max_contexts": "More Contexts Length",
|
|
||||||
"settings.max_tokens": "Enable max tokens limit",
|
"settings.max_tokens": "Enable max tokens limit",
|
||||||
"settings.max_tokens.confirm": "Enable max tokens limit",
|
"settings.max_tokens.confirm": "Enable max tokens limit",
|
||||||
"settings.max_tokens.confirm_content": "Enable max tokens limit, affects the length of the result. Need to consider the context limit of the model, otherwise an error will be reported",
|
"settings.max_tokens.confirm_content": "Enable max tokens limit, affects the length of the result. Need to consider the context limit of the model, otherwise an error will be reported",
|
||||||
|
|||||||
@ -208,7 +208,6 @@
|
|||||||
"settings.context_count": "コンテキスト",
|
"settings.context_count": "コンテキスト",
|
||||||
"settings.context_count.tip": "コンテキストに保持する以前のメッセージの数",
|
"settings.context_count.tip": "コンテキストに保持する以前のメッセージの数",
|
||||||
"settings.max": "最大",
|
"settings.max": "最大",
|
||||||
"settings.max_contexts": "より長いコンテキスト制限",
|
|
||||||
"settings.max_tokens": "最大トークン制限を有効にする",
|
"settings.max_tokens": "最大トークン制限を有効にする",
|
||||||
"settings.max_tokens.confirm": "最大トークン制限を有効にする",
|
"settings.max_tokens.confirm": "最大トークン制限を有効にする",
|
||||||
"settings.max_tokens.confirm_content": "最大トークン制限を有効にすると、モデルが生成できる最大トークン数が制限されます。これにより、返される結果の長さに影響が出る可能性があります。モデルのコンテキスト制限に基づいて設定する必要があります。そうしないとエラーが発生します",
|
"settings.max_tokens.confirm_content": "最大トークン制限を有効にすると、モデルが生成できる最大トークン数が制限されます。これにより、返される結果の長さに影響が出る可能性があります。モデルのコンテキスト制限に基づいて設定する必要があります。そうしないとエラーが発生します",
|
||||||
|
|||||||
@ -208,7 +208,6 @@
|
|||||||
"settings.context_count": "Контекст",
|
"settings.context_count": "Контекст",
|
||||||
"settings.context_count.tip": "Количество предыдущих сообщений, которые нужно сохранить в контексте.",
|
"settings.context_count.tip": "Количество предыдущих сообщений, которые нужно сохранить в контексте.",
|
||||||
"settings.max": "Максимум",
|
"settings.max": "Максимум",
|
||||||
"settings.max_contexts": "Более длительные ограничения контекста",
|
|
||||||
"settings.max_tokens": "Включить лимит максимальных токенов",
|
"settings.max_tokens": "Включить лимит максимальных токенов",
|
||||||
"settings.max_tokens.confirm": "Включить лимит максимальных токенов",
|
"settings.max_tokens.confirm": "Включить лимит максимальных токенов",
|
||||||
"settings.max_tokens.confirm_content": "Включить лимит максимальных токенов, влияет на длину результата. Нужно учитывать контекст модели, иначе будет ошибка",
|
"settings.max_tokens.confirm_content": "Включить лимит максимальных токенов, влияет на длину результата. Нужно учитывать контекст модели, иначе будет ошибка",
|
||||||
|
|||||||
@ -222,7 +222,6 @@
|
|||||||
"settings.context_count": "上下文数",
|
"settings.context_count": "上下文数",
|
||||||
"settings.context_count.tip": "要保留在上下文中的消息数量,数值越大,上下文越长,消耗的 token 越多。普通聊天建议 5-10",
|
"settings.context_count.tip": "要保留在上下文中的消息数量,数值越大,上下文越长,消耗的 token 越多。普通聊天建议 5-10",
|
||||||
"settings.max": "不限",
|
"settings.max": "不限",
|
||||||
"settings.max_contexts": "更多上下文长度限制",
|
|
||||||
"settings.max_tokens": "开启消息长度限制",
|
"settings.max_tokens": "开启消息长度限制",
|
||||||
"settings.max_tokens.confirm": "开启消息长度限制",
|
"settings.max_tokens.confirm": "开启消息长度限制",
|
||||||
"settings.max_tokens.confirm_content": "开启消息长度限制后,单次交互所用的最大 Token 数, 会影响返回结果的长度。要根据模型上下文限制来设置,否则会报错",
|
"settings.max_tokens.confirm_content": "开启消息长度限制后,单次交互所用的最大 Token 数, 会影响返回结果的长度。要根据模型上下文限制来设置,否则会报错",
|
||||||
|
|||||||
@ -208,7 +208,6 @@
|
|||||||
"settings.context_count": "上下文",
|
"settings.context_count": "上下文",
|
||||||
"settings.context_count.tip": "在上下文中保留的前幾則訊息。",
|
"settings.context_count.tip": "在上下文中保留的前幾則訊息。",
|
||||||
"settings.max": "最大",
|
"settings.max": "最大",
|
||||||
"settings.max_contexts": "更多上下文長度限制",
|
|
||||||
"settings.max_tokens": "啟用最大 Token 限制",
|
"settings.max_tokens": "啟用最大 Token 限制",
|
||||||
"settings.max_tokens.confirm": "啟用訊息長度限制",
|
"settings.max_tokens.confirm": "啟用訊息長度限制",
|
||||||
"settings.max_tokens.confirm_content": "啟用訊息長度限制後,單次互動所用的最大 Token 數,會影響返回結果的長度。要根據模型上下文限制來設定,否則會發生錯誤。",
|
"settings.max_tokens.confirm_content": "啟用訊息長度限制後,單次互動所用的最大 Token 數,會影響返回結果的長度。要根據模型上下文限制來設定,否則會發生錯誤。",
|
||||||
|
|||||||
@ -22,6 +22,18 @@ const TokenCount: FC<Props> = ({ estimateTokenCount, inputTokenCount, contextCou
|
|||||||
}
|
}
|
||||||
|
|
||||||
const formatMaxCount = (max: number) => {
|
const formatMaxCount = (max: number) => {
|
||||||
|
if (max == 100) {
|
||||||
|
return (
|
||||||
|
<span
|
||||||
|
style={{
|
||||||
|
fontSize: '16px',
|
||||||
|
position: 'relative',
|
||||||
|
top: '1px'
|
||||||
|
}}>
|
||||||
|
∞
|
||||||
|
</span>
|
||||||
|
)
|
||||||
|
}
|
||||||
return max.toString()
|
return max.toString()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -31,7 +43,7 @@ const TokenCount: FC<Props> = ({ estimateTokenCount, inputTokenCount, contextCou
|
|||||||
<HStack justifyContent="space-between" w="100%">
|
<HStack justifyContent="space-between" w="100%">
|
||||||
<Text>{t('chat.input.context_count.tip')}</Text>
|
<Text>{t('chat.input.context_count.tip')}</Text>
|
||||||
<Text>
|
<Text>
|
||||||
{contextCount.current} / {contextCount.max}
|
{contextCount.current} / {contextCount.max == 20 ? '∞' : contextCount.max}
|
||||||
</Text>
|
</Text>
|
||||||
</HStack>
|
</HStack>
|
||||||
<Divider style={{ margin: '5px 0' }} />
|
<Divider style={{ margin: '5px 0' }} />
|
||||||
|
|||||||
@ -5,8 +5,6 @@ import {
|
|||||||
DEFAULT_CONTEXTCOUNT,
|
DEFAULT_CONTEXTCOUNT,
|
||||||
DEFAULT_MAX_TOKENS,
|
DEFAULT_MAX_TOKENS,
|
||||||
DEFAULT_TEMPERATURE,
|
DEFAULT_TEMPERATURE,
|
||||||
EXTENDED_CONTEXT_LIMIT,
|
|
||||||
EXTENDED_CONTEXT_STEP,
|
|
||||||
isMac,
|
isMac,
|
||||||
isWindows
|
isWindows
|
||||||
} from '@renderer/config/constant'
|
} from '@renderer/config/constant'
|
||||||
@ -15,7 +13,6 @@ import { useAssistant } from '@renderer/hooks/useAssistant'
|
|||||||
import { useSettings } from '@renderer/hooks/useSettings'
|
import { useSettings } from '@renderer/hooks/useSettings'
|
||||||
import { SettingDivider, SettingRow, SettingRowTitle, SettingSubtitle } from '@renderer/pages/settings'
|
import { SettingDivider, SettingRow, SettingRowTitle, SettingSubtitle } from '@renderer/pages/settings'
|
||||||
import AssistantSettingsPopup from '@renderer/pages/settings/AssistantSettings'
|
import AssistantSettingsPopup from '@renderer/pages/settings/AssistantSettings'
|
||||||
import { EVENT_NAMES, EventEmitter } from '@renderer/services/EventService'
|
|
||||||
import { useAppDispatch } from '@renderer/store'
|
import { useAppDispatch } from '@renderer/store'
|
||||||
import {
|
import {
|
||||||
SendMessageShortcut,
|
SendMessageShortcut,
|
||||||
@ -54,7 +51,7 @@ import {
|
|||||||
TranslateLanguageVarious
|
TranslateLanguageVarious
|
||||||
} from '@renderer/types'
|
} from '@renderer/types'
|
||||||
import { modalConfirm } from '@renderer/utils'
|
import { modalConfirm } from '@renderer/utils'
|
||||||
import { Button, Col, Divider, InputNumber, Row, Select, Slider, Switch, Tooltip } from 'antd'
|
import { Button, Col, InputNumber, Row, Select, Slider, Switch, Tooltip } from 'antd'
|
||||||
import { CircleHelp, RotateCcw, Settings2 } from 'lucide-react'
|
import { CircleHelp, RotateCcw, Settings2 } from 'lucide-react'
|
||||||
import { FC, useEffect, useState } from 'react'
|
import { FC, useEffect, useState } from 'react'
|
||||||
import { useTranslation } from 'react-i18next'
|
import { useTranslation } from 'react-i18next'
|
||||||
@ -70,7 +67,6 @@ const SettingsTab: FC<Props> = (props) => {
|
|||||||
|
|
||||||
const [temperature, setTemperature] = useState(assistant?.settings?.temperature ?? DEFAULT_TEMPERATURE)
|
const [temperature, setTemperature] = useState(assistant?.settings?.temperature ?? DEFAULT_TEMPERATURE)
|
||||||
const [contextCount, setContextCount] = useState(assistant?.settings?.contextCount ?? DEFAULT_CONTEXTCOUNT)
|
const [contextCount, setContextCount] = useState(assistant?.settings?.contextCount ?? DEFAULT_CONTEXTCOUNT)
|
||||||
const [enableMaxContexts, setEnableMaxContexts] = useState(assistant?.settings?.enableMaxContexts ?? false)
|
|
||||||
const [enableMaxTokens, setEnableMaxTokens] = useState(assistant?.settings?.enableMaxTokens ?? false)
|
const [enableMaxTokens, setEnableMaxTokens] = useState(assistant?.settings?.enableMaxTokens ?? false)
|
||||||
const [maxTokens, setMaxTokens] = useState(assistant?.settings?.maxTokens ?? 0)
|
const [maxTokens, setMaxTokens] = useState(assistant?.settings?.maxTokens ?? 0)
|
||||||
const [fontSizeValue, setFontSizeValue] = useState(fontSize)
|
const [fontSizeValue, setFontSizeValue] = useState(fontSize)
|
||||||
@ -157,20 +153,7 @@ const SettingsTab: FC<Props> = (props) => {
|
|||||||
setStreamOutput(assistant?.settings?.streamOutput ?? true)
|
setStreamOutput(assistant?.settings?.streamOutput ?? true)
|
||||||
}, [assistant])
|
}, [assistant])
|
||||||
|
|
||||||
const formatSliderTooltip = (value?: number) => {
|
return (
|
||||||
if (value === undefined) return ''
|
|
||||||
return value.toString()
|
|
||||||
}
|
|
||||||
|
|
||||||
const validAndChangeContextCount = (contextCount, enableMaxContexts, EXTENDED_CONTEXT_LIMIT) => {
|
|
||||||
if ((typeof contextCount === 'number' ? contextCount : 0) > (enableMaxContexts ? EXTENDED_CONTEXT_LIMIT : 10)) {
|
|
||||||
return enableMaxContexts ? EXTENDED_CONTEXT_LIMIT : 10
|
|
||||||
} else {
|
|
||||||
return typeof contextCount === 'number' ? contextCount : 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const container = (
|
|
||||||
<Container className="settings-tab">
|
<Container className="settings-tab">
|
||||||
<SettingGroup style={{ marginTop: 10 }}>
|
<SettingGroup style={{ marginTop: 10 }}>
|
||||||
<SettingSubtitle style={{ marginTop: 0, display: 'flex', justifyContent: 'space-between' }}>
|
<SettingSubtitle style={{ marginTop: 0, display: 'flex', justifyContent: 'space-between' }}>
|
||||||
@ -216,31 +199,14 @@ const SettingsTab: FC<Props> = (props) => {
|
|||||||
<Col span={24}>
|
<Col span={24}>
|
||||||
<Slider
|
<Slider
|
||||||
min={0}
|
min={0}
|
||||||
max={!enableMaxContexts ? 10 : EXTENDED_CONTEXT_LIMIT}
|
max={20}
|
||||||
onChange={setContextCount}
|
onChange={setContextCount}
|
||||||
onChangeComplete={onContextCountChange}
|
onChangeComplete={onContextCountChange}
|
||||||
value={validAndChangeContextCount(contextCount, enableMaxContexts, EXTENDED_CONTEXT_LIMIT)}
|
value={typeof contextCount === 'number' ? contextCount : 0}
|
||||||
step={!enableMaxContexts ? 1 : EXTENDED_CONTEXT_STEP}
|
step={1}
|
||||||
tooltip={{ formatter: formatSliderTooltip }}
|
|
||||||
/>
|
/>
|
||||||
</Col>
|
</Col>
|
||||||
</Row>
|
</Row>
|
||||||
<SettingRow>
|
|
||||||
<SettingRowTitleSmall>{t('chat.settings.max_contexts')}</SettingRowTitleSmall>
|
|
||||||
<Switch
|
|
||||||
size="small"
|
|
||||||
checked={enableMaxContexts}
|
|
||||||
onChange={(checked) => {
|
|
||||||
setEnableMaxContexts(checked)
|
|
||||||
updateAssistantSettings({ enableMaxContexts: checked })
|
|
||||||
if (!checked && contextCount > 10) {
|
|
||||||
setContextCount(10)
|
|
||||||
onUpdateAssistantSettings({ contextCount: 10 })
|
|
||||||
}
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
</SettingRow>
|
|
||||||
<Divider style={{ margin: '10px 0' }} />
|
|
||||||
<SettingRow>
|
<SettingRow>
|
||||||
<SettingRowTitleSmall>{t('models.stream_output')}</SettingRowTitleSmall>
|
<SettingRowTitleSmall>{t('models.stream_output')}</SettingRowTitleSmall>
|
||||||
<Switch
|
<Switch
|
||||||
@ -655,22 +621,6 @@ const SettingsTab: FC<Props> = (props) => {
|
|||||||
</SettingGroup>
|
</SettingGroup>
|
||||||
</Container>
|
</Container>
|
||||||
)
|
)
|
||||||
EventEmitter.on(EVENT_NAMES.MAX_CONTEXTS_CHANGED, ({ check, context }): any => {
|
|
||||||
setEnableMaxContexts(check)
|
|
||||||
updateAssistantSettings({ enableMaxContexts: check })
|
|
||||||
|
|
||||||
// Ensure contextCount is within the new valid range
|
|
||||||
let newContextCount = context
|
|
||||||
if (!check && newContextCount > 10) {
|
|
||||||
newContextCount = 10
|
|
||||||
} else if (check && newContextCount > EXTENDED_CONTEXT_LIMIT) {
|
|
||||||
newContextCount = EXTENDED_CONTEXT_LIMIT
|
|
||||||
}
|
|
||||||
|
|
||||||
setContextCount(newContextCount)
|
|
||||||
onUpdateAssistantSettings({ contextCount: newContextCount })
|
|
||||||
})
|
|
||||||
return container
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const Container = styled(Scrollbar)`
|
const Container = styled(Scrollbar)`
|
||||||
|
|||||||
@ -2,14 +2,8 @@ import { DeleteOutlined, PlusOutlined, QuestionCircleOutlined } from '@ant-desig
|
|||||||
import ModelAvatar from '@renderer/components/Avatar/ModelAvatar'
|
import ModelAvatar from '@renderer/components/Avatar/ModelAvatar'
|
||||||
import { HStack } from '@renderer/components/Layout'
|
import { HStack } from '@renderer/components/Layout'
|
||||||
import SelectModelPopup from '@renderer/components/Popups/SelectModelPopup'
|
import SelectModelPopup from '@renderer/components/Popups/SelectModelPopup'
|
||||||
import {
|
import { DEFAULT_CONTEXTCOUNT, DEFAULT_TEMPERATURE } from '@renderer/config/constant'
|
||||||
DEFAULT_CONTEXTCOUNT,
|
|
||||||
DEFAULT_TEMPERATURE,
|
|
||||||
EXTENDED_CONTEXT_LIMIT,
|
|
||||||
EXTENDED_CONTEXT_STEP
|
|
||||||
} from '@renderer/config/constant'
|
|
||||||
import { SettingRow } from '@renderer/pages/settings'
|
import { SettingRow } from '@renderer/pages/settings'
|
||||||
import { EVENT_NAMES, EventEmitter } from '@renderer/services/EventService'
|
|
||||||
import { Assistant, AssistantSettingCustomParameters, AssistantSettings } from '@renderer/types'
|
import { Assistant, AssistantSettingCustomParameters, AssistantSettings } from '@renderer/types'
|
||||||
import { modalConfirm } from '@renderer/utils'
|
import { modalConfirm } from '@renderer/utils'
|
||||||
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'
|
||||||
@ -27,7 +21,6 @@ interface Props {
|
|||||||
const AssistantModelSettings: FC<Props> = ({ assistant, updateAssistant, updateAssistantSettings }) => {
|
const AssistantModelSettings: FC<Props> = ({ assistant, updateAssistant, updateAssistantSettings }) => {
|
||||||
const [temperature, setTemperature] = useState(assistant?.settings?.temperature ?? DEFAULT_TEMPERATURE)
|
const [temperature, setTemperature] = useState(assistant?.settings?.temperature ?? DEFAULT_TEMPERATURE)
|
||||||
const [contextCount, setContextCount] = useState(assistant?.settings?.contextCount ?? DEFAULT_CONTEXTCOUNT)
|
const [contextCount, setContextCount] = useState(assistant?.settings?.contextCount ?? DEFAULT_CONTEXTCOUNT)
|
||||||
const [enableMaxContexts, setEnableMaxContexts] = useState(assistant?.settings?.enableMaxContexts ?? false)
|
|
||||||
const [enableMaxTokens, setEnableMaxTokens] = useState(assistant?.settings?.enableMaxTokens ?? false)
|
const [enableMaxTokens, setEnableMaxTokens] = useState(assistant?.settings?.enableMaxTokens ?? false)
|
||||||
const [maxTokens, setMaxTokens] = useState(assistant?.settings?.maxTokens ?? 0)
|
const [maxTokens, setMaxTokens] = useState(assistant?.settings?.maxTokens ?? 0)
|
||||||
const [streamOutput, setStreamOutput] = useState(assistant?.settings?.streamOutput ?? true)
|
const [streamOutput, setStreamOutput] = useState(assistant?.settings?.streamOutput ?? true)
|
||||||
@ -38,10 +31,6 @@ const AssistantModelSettings: FC<Props> = ({ assistant, updateAssistant, updateA
|
|||||||
assistant?.settings?.customParameters ?? []
|
assistant?.settings?.customParameters ?? []
|
||||||
)
|
)
|
||||||
|
|
||||||
const onUpdateAssistantSettings = (settings: Partial<AssistantSettings>) => {
|
|
||||||
updateAssistantSettings(settings)
|
|
||||||
}
|
|
||||||
|
|
||||||
const customParametersRef = useRef(customParameters)
|
const customParametersRef = useRef(customParameters)
|
||||||
|
|
||||||
customParametersRef.current = customParameters
|
customParametersRef.current = customParameters
|
||||||
@ -195,14 +184,6 @@ const AssistantModelSettings: FC<Props> = ({ assistant, updateAssistant, updateA
|
|||||||
return value.toString()
|
return value.toString()
|
||||||
}
|
}
|
||||||
|
|
||||||
const validAndChangeContextCount = (contextCount, enableMaxContexts, EXTENDED_CONTEXT_LIMIT) => {
|
|
||||||
if ((typeof contextCount === 'number' ? contextCount : 0) > (enableMaxContexts ? EXTENDED_CONTEXT_LIMIT : 10)) {
|
|
||||||
return enableMaxContexts ? EXTENDED_CONTEXT_LIMIT : 10
|
|
||||||
} else {
|
|
||||||
return typeof contextCount === 'number' ? contextCount : 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Container>
|
<Container>
|
||||||
<Row align="middle" style={{ marginBottom: 10 }}>
|
<Row align="middle" style={{ marginBottom: 10 }}>
|
||||||
@ -311,28 +292,26 @@ const AssistantModelSettings: FC<Props> = ({ assistant, updateAssistant, updateA
|
|||||||
<Col span={20}>
|
<Col span={20}>
|
||||||
<Slider
|
<Slider
|
||||||
min={0}
|
min={0}
|
||||||
max={!enableMaxContexts ? 10 : EXTENDED_CONTEXT_LIMIT}
|
max={100}
|
||||||
onChange={setContextCount}
|
onChange={setContextCount}
|
||||||
onChangeComplete={onContextCountChange}
|
onChangeComplete={onContextCountChange}
|
||||||
value={validAndChangeContextCount(contextCount, enableMaxContexts, EXTENDED_CONTEXT_LIMIT)}
|
value={typeof contextCount === 'number' ? contextCount : 0}
|
||||||
step={!enableMaxContexts ? 1 : EXTENDED_CONTEXT_STEP}
|
marks={{ 0: '0', 25: '25', 50: '50', 75: '75', 100: t('chat.settings.max') }}
|
||||||
|
step={1}
|
||||||
tooltip={{ formatter: formatSliderTooltip }}
|
tooltip={{ formatter: formatSliderTooltip }}
|
||||||
/>
|
/>
|
||||||
</Col>
|
</Col>
|
||||||
<Col span={4}>
|
<Col span={4}>
|
||||||
<InputNumber
|
<InputNumber
|
||||||
min={0}
|
min={0}
|
||||||
max={!enableMaxContexts ? 10 : EXTENDED_CONTEXT_LIMIT}
|
max={20}
|
||||||
step={!enableMaxContexts ? 1 : EXTENDED_CONTEXT_STEP}
|
step={1}
|
||||||
value={contextCount}
|
value={contextCount}
|
||||||
changeOnBlur
|
changeOnBlur
|
||||||
onChange={(value) => {
|
onChange={(value) => {
|
||||||
if (!isNull(value)) {
|
if (!isNull(value)) {
|
||||||
setContextCount(value)
|
setContextCount(value)
|
||||||
setTimeout(() => {
|
setTimeout(() => updateAssistantSettings({ contextCount: value }), 500)
|
||||||
updateAssistantSettings({ contextCount: value })
|
|
||||||
onUpdateAssistantSettings({ contextCount: value })
|
|
||||||
}, 500)
|
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
style={{ width: '100%' }}
|
style={{ width: '100%' }}
|
||||||
@ -340,27 +319,6 @@ const AssistantModelSettings: FC<Props> = ({ assistant, updateAssistant, updateA
|
|||||||
</Col>
|
</Col>
|
||||||
</Row>
|
</Row>
|
||||||
<Divider style={{ margin: '10px 0' }} />
|
<Divider style={{ margin: '10px 0' }} />
|
||||||
<SettingRow style={{ minHeight: 30 }}>
|
|
||||||
<HStack alignItems="center">
|
|
||||||
<Label>{t('chat.settings.max_contexts')}</Label>
|
|
||||||
</HStack>
|
|
||||||
<Switch
|
|
||||||
checked={enableMaxContexts}
|
|
||||||
onChange={(checked) => {
|
|
||||||
setEnableMaxContexts(checked)
|
|
||||||
updateAssistantSettings({ enableMaxContexts: checked })
|
|
||||||
if (!checked && contextCount > 10) {
|
|
||||||
setContextCount(10)
|
|
||||||
onUpdateAssistantSettings({ contextCount: 10 })
|
|
||||||
}
|
|
||||||
EventEmitter.emit(EVENT_NAMES.MAX_CONTEXTS_CHANGED, {
|
|
||||||
check: checked,
|
|
||||||
context: contextCount
|
|
||||||
})
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
</SettingRow>
|
|
||||||
<Divider style={{ margin: '10px 0' }} />
|
|
||||||
<SettingRow style={{ minHeight: 30 }}>
|
<SettingRow style={{ minHeight: 30 }}>
|
||||||
<HStack alignItems="center">
|
<HStack alignItems="center">
|
||||||
<Label>{t('chat.settings.max_tokens')}</Label>
|
<Label>{t('chat.settings.max_tokens')}</Label>
|
||||||
|
|||||||
@ -102,8 +102,7 @@ export const getAssistantSettings = (assistant: Assistant): AssistantSettings =>
|
|||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
enableMaxContexts: assistant?.settings?.enableMaxContexts ?? false,
|
contextCount: contextCount === 100 ? 100000 : contextCount,
|
||||||
contextCount: contextCount,
|
|
||||||
temperature: assistant?.settings?.temperature ?? DEFAULT_TEMPERATURE,
|
temperature: assistant?.settings?.temperature ?? DEFAULT_TEMPERATURE,
|
||||||
topP: assistant?.settings?.topP ?? 1,
|
topP: assistant?.settings?.topP ?? 1,
|
||||||
enableMaxTokens: assistant?.settings?.enableMaxTokens ?? false,
|
enableMaxTokens: assistant?.settings?.enableMaxTokens ?? false,
|
||||||
|
|||||||
@ -26,6 +26,5 @@ export const EVENT_NAMES = {
|
|||||||
ADD_NEW_TOPIC: 'ADD_NEW_TOPIC',
|
ADD_NEW_TOPIC: 'ADD_NEW_TOPIC',
|
||||||
RESEND_MESSAGE: 'RESEND_MESSAGE',
|
RESEND_MESSAGE: 'RESEND_MESSAGE',
|
||||||
SHOW_MODEL_SELECTOR: 'SHOW_MODEL_SELECTOR',
|
SHOW_MODEL_SELECTOR: 'SHOW_MODEL_SELECTOR',
|
||||||
QUOTE_TEXT: 'QUOTE_TEXT',
|
QUOTE_TEXT: 'QUOTE_TEXT'
|
||||||
MAX_CONTEXTS_CHANGED: 'MAX_CONTEXTS_CHANGED'
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -41,7 +41,7 @@ export {
|
|||||||
|
|
||||||
export function getContextCount(assistant: Assistant, messages: Message[]) {
|
export function getContextCount(assistant: Assistant, messages: Message[]) {
|
||||||
const rawContextCount = assistant?.settings?.contextCount ?? DEFAULT_CONTEXTCOUNT
|
const rawContextCount = assistant?.settings?.contextCount ?? DEFAULT_CONTEXTCOUNT
|
||||||
const maxContextCount = rawContextCount
|
const maxContextCount = rawContextCount === 100 ? 100000 : rawContextCount
|
||||||
|
|
||||||
const _messages = takeRight(messages, maxContextCount)
|
const _messages = takeRight(messages, maxContextCount)
|
||||||
|
|
||||||
|
|||||||
@ -51,7 +51,6 @@ export const EFFORT_RATIO: EffortRatio = {
|
|||||||
|
|
||||||
export type AssistantSettings = {
|
export type AssistantSettings = {
|
||||||
contextCount: number
|
contextCount: number
|
||||||
enableMaxContexts: boolean
|
|
||||||
temperature: number
|
temperature: number
|
||||||
topP: number
|
topP: number
|
||||||
maxTokens: number | undefined
|
maxTokens: number | undefined
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user