From fd76989c7e1b86e663e08b5f7fcf712fb790229d Mon Sep 17 00:00:00 2001 From: kangfenmao Date: Thu, 15 May 2025 20:56:00 +0800 Subject: [PATCH] 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. --- src/renderer/src/config/constant.ts | 2 - src/renderer/src/i18n/locales/en-us.json | 1 - src/renderer/src/i18n/locales/ja-jp.json | 1 - src/renderer/src/i18n/locales/ru-ru.json | 1 - src/renderer/src/i18n/locales/zh-cn.json | 1 - src/renderer/src/i18n/locales/zh-tw.json | 1 - .../src/pages/home/Inputbar/TokenCount.tsx | 14 ++++- .../src/pages/home/Tabs/SettingsTab.tsx | 60 ++----------------- .../AssistantModelSettings.tsx | 58 +++--------------- src/renderer/src/services/AssistantService.ts | 3 +- src/renderer/src/services/EventService.ts | 3 +- src/renderer/src/services/MessagesService.ts | 2 +- src/renderer/src/types/index.ts | 1 - 13 files changed, 29 insertions(+), 119 deletions(-) diff --git a/src/renderer/src/config/constant.ts b/src/renderer/src/config/constant.ts index 0240cac126..5d2376d12f 100644 --- a/src/renderer/src/config/constant.ts +++ b/src/renderer/src/config/constant.ts @@ -1,7 +1,5 @@ export const DEFAULT_TEMPERATURE = 1.0 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_KNOWLEDGE_DOCUMENT_COUNT = 6 export const DEFAULT_KNOWLEDGE_THRESHOLD = 0.0 diff --git a/src/renderer/src/i18n/locales/en-us.json b/src/renderer/src/i18n/locales/en-us.json index 4b3d496a95..a6f6e2f490 100644 --- a/src/renderer/src/i18n/locales/en-us.json +++ b/src/renderer/src/i18n/locales/en-us.json @@ -208,7 +208,6 @@ "settings.context_count": "Context", "settings.context_count.tip": "The number of previous messages to keep in the context.", "settings.max": "Max", - "settings.max_contexts": "More Contexts Length", "settings.max_tokens": "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", diff --git a/src/renderer/src/i18n/locales/ja-jp.json b/src/renderer/src/i18n/locales/ja-jp.json index e8c2108ba7..c6d533ff7e 100644 --- a/src/renderer/src/i18n/locales/ja-jp.json +++ b/src/renderer/src/i18n/locales/ja-jp.json @@ -208,7 +208,6 @@ "settings.context_count": "コンテキスト", "settings.context_count.tip": "コンテキストに保持する以前のメッセージの数", "settings.max": "最大", - "settings.max_contexts": "より長いコンテキスト制限", "settings.max_tokens": "最大トークン制限を有効にする", "settings.max_tokens.confirm": "最大トークン制限を有効にする", "settings.max_tokens.confirm_content": "最大トークン制限を有効にすると、モデルが生成できる最大トークン数が制限されます。これにより、返される結果の長さに影響が出る可能性があります。モデルのコンテキスト制限に基づいて設定する必要があります。そうしないとエラーが発生します", diff --git a/src/renderer/src/i18n/locales/ru-ru.json b/src/renderer/src/i18n/locales/ru-ru.json index 433c2047b5..a0499603d5 100644 --- a/src/renderer/src/i18n/locales/ru-ru.json +++ b/src/renderer/src/i18n/locales/ru-ru.json @@ -208,7 +208,6 @@ "settings.context_count": "Контекст", "settings.context_count.tip": "Количество предыдущих сообщений, которые нужно сохранить в контексте.", "settings.max": "Максимум", - "settings.max_contexts": "Более длительные ограничения контекста", "settings.max_tokens": "Включить лимит максимальных токенов", "settings.max_tokens.confirm": "Включить лимит максимальных токенов", "settings.max_tokens.confirm_content": "Включить лимит максимальных токенов, влияет на длину результата. Нужно учитывать контекст модели, иначе будет ошибка", diff --git a/src/renderer/src/i18n/locales/zh-cn.json b/src/renderer/src/i18n/locales/zh-cn.json index 9fc89be591..9e6db07041 100644 --- a/src/renderer/src/i18n/locales/zh-cn.json +++ b/src/renderer/src/i18n/locales/zh-cn.json @@ -222,7 +222,6 @@ "settings.context_count": "上下文数", "settings.context_count.tip": "要保留在上下文中的消息数量,数值越大,上下文越长,消耗的 token 越多。普通聊天建议 5-10", "settings.max": "不限", - "settings.max_contexts": "更多上下文长度限制", "settings.max_tokens": "开启消息长度限制", "settings.max_tokens.confirm": "开启消息长度限制", "settings.max_tokens.confirm_content": "开启消息长度限制后,单次交互所用的最大 Token 数, 会影响返回结果的长度。要根据模型上下文限制来设置,否则会报错", diff --git a/src/renderer/src/i18n/locales/zh-tw.json b/src/renderer/src/i18n/locales/zh-tw.json index fbfebd7266..16facb9ae0 100644 --- a/src/renderer/src/i18n/locales/zh-tw.json +++ b/src/renderer/src/i18n/locales/zh-tw.json @@ -208,7 +208,6 @@ "settings.context_count": "上下文", "settings.context_count.tip": "在上下文中保留的前幾則訊息。", "settings.max": "最大", - "settings.max_contexts": "更多上下文長度限制", "settings.max_tokens": "啟用最大 Token 限制", "settings.max_tokens.confirm": "啟用訊息長度限制", "settings.max_tokens.confirm_content": "啟用訊息長度限制後,單次互動所用的最大 Token 數,會影響返回結果的長度。要根據模型上下文限制來設定,否則會發生錯誤。", diff --git a/src/renderer/src/pages/home/Inputbar/TokenCount.tsx b/src/renderer/src/pages/home/Inputbar/TokenCount.tsx index b7ca3b351b..c2a0ee5068 100644 --- a/src/renderer/src/pages/home/Inputbar/TokenCount.tsx +++ b/src/renderer/src/pages/home/Inputbar/TokenCount.tsx @@ -22,6 +22,18 @@ const TokenCount: FC = ({ estimateTokenCount, inputTokenCount, contextCou } const formatMaxCount = (max: number) => { + if (max == 100) { + return ( + + ∞ + + ) + } return max.toString() } @@ -31,7 +43,7 @@ const TokenCount: FC = ({ estimateTokenCount, inputTokenCount, contextCou {t('chat.input.context_count.tip')} - {contextCount.current} / {contextCount.max} + {contextCount.current} / {contextCount.max == 20 ? '∞' : contextCount.max} diff --git a/src/renderer/src/pages/home/Tabs/SettingsTab.tsx b/src/renderer/src/pages/home/Tabs/SettingsTab.tsx index 6125f93b1a..b78135cf1c 100644 --- a/src/renderer/src/pages/home/Tabs/SettingsTab.tsx +++ b/src/renderer/src/pages/home/Tabs/SettingsTab.tsx @@ -5,8 +5,6 @@ import { DEFAULT_CONTEXTCOUNT, DEFAULT_MAX_TOKENS, DEFAULT_TEMPERATURE, - EXTENDED_CONTEXT_LIMIT, - EXTENDED_CONTEXT_STEP, isMac, isWindows } from '@renderer/config/constant' @@ -15,7 +13,6 @@ import { useAssistant } from '@renderer/hooks/useAssistant' import { useSettings } from '@renderer/hooks/useSettings' import { SettingDivider, SettingRow, SettingRowTitle, SettingSubtitle } from '@renderer/pages/settings' import AssistantSettingsPopup from '@renderer/pages/settings/AssistantSettings' -import { EVENT_NAMES, EventEmitter } from '@renderer/services/EventService' import { useAppDispatch } from '@renderer/store' import { SendMessageShortcut, @@ -54,7 +51,7 @@ import { TranslateLanguageVarious } from '@renderer/types' 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 { FC, useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' @@ -70,7 +67,6 @@ const SettingsTab: FC = (props) => { const [temperature, setTemperature] = useState(assistant?.settings?.temperature ?? DEFAULT_TEMPERATURE) 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 [maxTokens, setMaxTokens] = useState(assistant?.settings?.maxTokens ?? 0) const [fontSizeValue, setFontSizeValue] = useState(fontSize) @@ -157,20 +153,7 @@ const SettingsTab: FC = (props) => { setStreamOutput(assistant?.settings?.streamOutput ?? true) }, [assistant]) - const formatSliderTooltip = (value?: number) => { - 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 = ( + return ( @@ -216,31 +199,14 @@ const SettingsTab: FC = (props) => { - - {t('chat.settings.max_contexts')} - { - setEnableMaxContexts(checked) - updateAssistantSettings({ enableMaxContexts: checked }) - if (!checked && contextCount > 10) { - setContextCount(10) - onUpdateAssistantSettings({ contextCount: 10 }) - } - }} - /> - - {t('models.stream_output')} = (props) => { ) - 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)` diff --git a/src/renderer/src/pages/settings/AssistantSettings/AssistantModelSettings.tsx b/src/renderer/src/pages/settings/AssistantSettings/AssistantModelSettings.tsx index 5f33f4c164..63021e6083 100644 --- a/src/renderer/src/pages/settings/AssistantSettings/AssistantModelSettings.tsx +++ b/src/renderer/src/pages/settings/AssistantSettings/AssistantModelSettings.tsx @@ -2,14 +2,8 @@ import { DeleteOutlined, PlusOutlined, QuestionCircleOutlined } from '@ant-desig import ModelAvatar from '@renderer/components/Avatar/ModelAvatar' import { HStack } from '@renderer/components/Layout' import SelectModelPopup from '@renderer/components/Popups/SelectModelPopup' -import { - DEFAULT_CONTEXTCOUNT, - DEFAULT_TEMPERATURE, - EXTENDED_CONTEXT_LIMIT, - EXTENDED_CONTEXT_STEP -} from '@renderer/config/constant' +import { DEFAULT_CONTEXTCOUNT, DEFAULT_TEMPERATURE } from '@renderer/config/constant' import { SettingRow } from '@renderer/pages/settings' -import { EVENT_NAMES, EventEmitter } from '@renderer/services/EventService' import { Assistant, AssistantSettingCustomParameters, AssistantSettings } from '@renderer/types' import { modalConfirm } from '@renderer/utils' import { Button, Col, Divider, Input, InputNumber, Row, Select, Slider, Switch, Tooltip } from 'antd' @@ -27,7 +21,6 @@ interface Props { const AssistantModelSettings: FC = ({ assistant, updateAssistant, updateAssistantSettings }) => { const [temperature, setTemperature] = useState(assistant?.settings?.temperature ?? DEFAULT_TEMPERATURE) 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 [maxTokens, setMaxTokens] = useState(assistant?.settings?.maxTokens ?? 0) const [streamOutput, setStreamOutput] = useState(assistant?.settings?.streamOutput ?? true) @@ -38,10 +31,6 @@ const AssistantModelSettings: FC = ({ assistant, updateAssistant, updateA assistant?.settings?.customParameters ?? [] ) - const onUpdateAssistantSettings = (settings: Partial) => { - updateAssistantSettings(settings) - } - const customParametersRef = useRef(customParameters) customParametersRef.current = customParameters @@ -195,14 +184,6 @@ const AssistantModelSettings: FC = ({ assistant, updateAssistant, updateA 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 ( @@ -311,28 +292,26 @@ const AssistantModelSettings: FC = ({ assistant, updateAssistant, updateA { if (!isNull(value)) { setContextCount(value) - setTimeout(() => { - updateAssistantSettings({ contextCount: value }) - onUpdateAssistantSettings({ contextCount: value }) - }, 500) + setTimeout(() => updateAssistantSettings({ contextCount: value }), 500) } }} style={{ width: '100%' }} @@ -340,27 +319,6 @@ const AssistantModelSettings: FC = ({ assistant, updateAssistant, updateA - - - - - { - 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 - }) - }} - /> - - diff --git a/src/renderer/src/services/AssistantService.ts b/src/renderer/src/services/AssistantService.ts index eb843ed8ff..41e899abd9 100644 --- a/src/renderer/src/services/AssistantService.ts +++ b/src/renderer/src/services/AssistantService.ts @@ -102,8 +102,7 @@ export const getAssistantSettings = (assistant: Assistant): AssistantSettings => } return { - enableMaxContexts: assistant?.settings?.enableMaxContexts ?? false, - contextCount: contextCount, + contextCount: contextCount === 100 ? 100000 : contextCount, temperature: assistant?.settings?.temperature ?? DEFAULT_TEMPERATURE, topP: assistant?.settings?.topP ?? 1, enableMaxTokens: assistant?.settings?.enableMaxTokens ?? false, diff --git a/src/renderer/src/services/EventService.ts b/src/renderer/src/services/EventService.ts index 110e763177..309947c9bb 100644 --- a/src/renderer/src/services/EventService.ts +++ b/src/renderer/src/services/EventService.ts @@ -26,6 +26,5 @@ export const EVENT_NAMES = { ADD_NEW_TOPIC: 'ADD_NEW_TOPIC', RESEND_MESSAGE: 'RESEND_MESSAGE', SHOW_MODEL_SELECTOR: 'SHOW_MODEL_SELECTOR', - QUOTE_TEXT: 'QUOTE_TEXT', - MAX_CONTEXTS_CHANGED: 'MAX_CONTEXTS_CHANGED' + QUOTE_TEXT: 'QUOTE_TEXT' } diff --git a/src/renderer/src/services/MessagesService.ts b/src/renderer/src/services/MessagesService.ts index e8371b3108..91a676e7a1 100644 --- a/src/renderer/src/services/MessagesService.ts +++ b/src/renderer/src/services/MessagesService.ts @@ -41,7 +41,7 @@ export { export function getContextCount(assistant: Assistant, messages: Message[]) { const rawContextCount = assistant?.settings?.contextCount ?? DEFAULT_CONTEXTCOUNT - const maxContextCount = rawContextCount + const maxContextCount = rawContextCount === 100 ? 100000 : rawContextCount const _messages = takeRight(messages, maxContextCount) diff --git a/src/renderer/src/types/index.ts b/src/renderer/src/types/index.ts index 5b732847ba..e66e629043 100644 --- a/src/renderer/src/types/index.ts +++ b/src/renderer/src/types/index.ts @@ -51,7 +51,6 @@ export const EFFORT_RATIO: EffortRatio = { export type AssistantSettings = { contextCount: number - enableMaxContexts: boolean temperature: number topP: number maxTokens: number | undefined