From 15e0df0e34c31d3a9603001b1a88fefa05e2ac1e Mon Sep 17 00:00:00 2001 From: injurka <102309602+injurka@users.noreply.github.com> Date: Thu, 7 Nov 2024 18:13:47 +0400 Subject: [PATCH] fix: when changing the values in the inputs in the tab Default Assisting, they do not change (#305) * added locale for context-menu * fix: when changing the values in the inputs in the tab Default Assisting, they do not change --------- Co-authored-by: injurka --- .../AssistantModelSettings.tsx | 18 +++---- src/renderer/src/config/constant.ts | 2 +- src/renderer/src/i18n/locales/en-us.json | 4 +- src/renderer/src/i18n/locales/zh-cn.json | 4 +- src/renderer/src/i18n/locales/zh-tw.json | 4 +- src/renderer/src/pages/home/Tabs/Settings.tsx | 20 ++++---- .../src/pages/settings/AssistantSettings.tsx | 48 +++++++++---------- src/renderer/src/services/AssistantService.ts | 4 +- src/renderer/src/services/MessagesService.ts | 4 +- src/renderer/src/store/agents.ts | 4 +- src/renderer/src/store/assistants.ts | 4 +- 11 files changed, 56 insertions(+), 60 deletions(-) diff --git a/src/renderer/src/components/AssistantSettings/AssistantModelSettings.tsx b/src/renderer/src/components/AssistantSettings/AssistantModelSettings.tsx index c69b78eb24..73fcc4b694 100644 --- a/src/renderer/src/components/AssistantSettings/AssistantModelSettings.tsx +++ b/src/renderer/src/components/AssistantSettings/AssistantModelSettings.tsx @@ -1,6 +1,6 @@ import { PlusOutlined, QuestionCircleOutlined } from '@ant-design/icons' import { HStack } from '@renderer/components/Layout' -import { DEFAULT_CONEXTCOUNT, DEFAULT_TEMPERATURE } from '@renderer/config/constant' +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' @@ -19,7 +19,7 @@ interface Props { const AssistantModelSettings: FC = ({ assistant, updateAssistant, updateAssistantSettings }) => { const [temperature, setTemperature] = useState(assistant?.settings?.temperature ?? DEFAULT_TEMPERATURE) - const [contextCount, setConextCount] = useState(assistant?.settings?.contextCount ?? DEFAULT_CONEXTCOUNT) + const [contextCount, setContextCount] = useState(assistant?.settings?.contextCount ?? DEFAULT_CONTEXTCOUNT) const [enableMaxTokens, setEnableMaxTokens] = useState(assistant?.settings?.enableMaxTokens ?? false) const [maxTokens, setMaxTokens] = useState(assistant?.settings?.maxTokens ?? 0) const [autoResetModel, setAutoResetModel] = useState(assistant?.settings?.autoResetModel ?? false) @@ -33,7 +33,7 @@ const AssistantModelSettings: FC = ({ assistant, updateAssistant, updateA } } - const onConextCountChange = (value) => { + const onContextCountChange = (value) => { if (!isNaN(value as number)) { updateAssistantSettings({ contextCount: value }) } @@ -47,13 +47,13 @@ const AssistantModelSettings: FC = ({ assistant, updateAssistant, updateA const onReset = () => { setTemperature(DEFAULT_TEMPERATURE) - setConextCount(DEFAULT_CONEXTCOUNT) + setContextCount(DEFAULT_CONTEXTCOUNT) setEnableMaxTokens(false) setMaxTokens(0) setStreamOutput(true) updateAssistantSettings({ temperature: DEFAULT_TEMPERATURE, - contextCount: DEFAULT_CONEXTCOUNT, + contextCount: DEFAULT_CONTEXTCOUNT, enableMaxTokens: false, maxTokens: 0, streamOutput: true @@ -122,8 +122,8 @@ const AssistantModelSettings: FC = ({ assistant, updateAssistant, updateA @@ -133,8 +133,8 @@ const AssistantModelSettings: FC = ({ assistant, updateAssistant, updateA diff --git a/src/renderer/src/config/constant.ts b/src/renderer/src/config/constant.ts index 742333a001..3bb9e07f83 100644 --- a/src/renderer/src/config/constant.ts +++ b/src/renderer/src/config/constant.ts @@ -1,5 +1,5 @@ export const DEFAULT_TEMPERATURE = 0.7 -export const DEFAULT_CONEXTCOUNT = 5 +export const DEFAULT_CONTEXTCOUNT = 5 export const DEFAULT_MAX_TOKENS = 4096 export const FONT_FAMILY = "Ubuntu, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif" diff --git a/src/renderer/src/i18n/locales/en-us.json b/src/renderer/src/i18n/locales/en-us.json index cb143b71bf..af60a1ffd5 100644 --- a/src/renderer/src/i18n/locales/en-us.json +++ b/src/renderer/src/i18n/locales/en-us.json @@ -104,8 +104,8 @@ "input.estimated_tokens.tip": "Estimated tokens", "settings.temperature": "Temperature", "settings.temperature.tip": "Lower values make the model more creative and unpredictable, while higher values make it more deterministic and precise.", - "settings.conext_count": "Context", - "settings.conext_count.tip": "The number of previous messages to keep in the context.", + "settings.context_count": "Context", + "settings.context_count.tip": "The number of previous messages to keep in the context.", "settings.max_tokens": "Enable Max Tokens Limit", "settings.max_tokens.tip": "The maximum number of tokens the model can generate. Normal chat suggests 500-800. Short text generation suggests 800-2000. Code generation suggests 2000-3600. Long text generation suggests above 4000.", "settings.reset": "Reset", diff --git a/src/renderer/src/i18n/locales/zh-cn.json b/src/renderer/src/i18n/locales/zh-cn.json index f9a83cb8de..5756bb440b 100644 --- a/src/renderer/src/i18n/locales/zh-cn.json +++ b/src/renderer/src/i18n/locales/zh-cn.json @@ -104,8 +104,8 @@ "input.estimated_tokens.tip": "预估 token 数", "settings.temperature": "模型温度", "settings.temperature.tip": "模型生成文本的随机程度。值越大,回复内容越赋有多样性、创造性、随机性;设为 0 根据事实回答。日常聊天建议设置为 0.7", - "settings.conext_count": "上下文数", - "settings.conext_count.tip": "要保留在上下文中的消息数量,数值越大,上下文越长,消耗的 token 越多。普通聊天建议 5-10", + "settings.context_count": "上下文数", + "settings.context_count.tip": "要保留在上下文中的消息数量,数值越大,上下文越长,消耗的 token 越多。普通聊天建议 5-10", "settings.max_tokens": "开启消息长度限制", "settings.max_tokens.tip": "单次交互所用的最大 Token 数, 会影响返回结果的长度。普通聊天建议 500-800;短文生成建议 800-2000;代码生成建议 2000-3600;长文生成建议切换模型到 4000 左右", "settings.reset": "重置", diff --git a/src/renderer/src/i18n/locales/zh-tw.json b/src/renderer/src/i18n/locales/zh-tw.json index 7027a4ca2f..94cfd83a4b 100644 --- a/src/renderer/src/i18n/locales/zh-tw.json +++ b/src/renderer/src/i18n/locales/zh-tw.json @@ -104,8 +104,8 @@ "input.estimated_tokens.tip": "預估 Token 數", "settings.temperature": "溫度", "settings.temperature.tip": "較低的值使模型更具創造性和不可預測性,較高的值則使其更具確定性和精確性。", - "settings.conext_count": "上下文", - "settings.conext_count.tip": "在上下文中保留的前幾則訊息。", + "settings.context_count": "上下文", + "settings.context_count.tip": "在上下文中保留的前幾則訊息。", "settings.max_tokens": "啟用最大 Token 限制", "settings.max_tokens.tip": "模型可以生成的最大 Token 數。普通聊天建議 500-800。短文生成建議 800-2000。代碼生成建議 2000-3600。長文生成建議超過 4000。", "settings.reset": "重置", diff --git a/src/renderer/src/pages/home/Tabs/Settings.tsx b/src/renderer/src/pages/home/Tabs/Settings.tsx index 7ccb1ba468..3d9b2b1f04 100644 --- a/src/renderer/src/pages/home/Tabs/Settings.tsx +++ b/src/renderer/src/pages/home/Tabs/Settings.tsx @@ -1,7 +1,7 @@ import { CheckOutlined, QuestionCircleOutlined, ReloadOutlined } from '@ant-design/icons' import { HStack } from '@renderer/components/Layout' import Scrollbar from '@renderer/components/Scrollbar' -import { DEFAULT_CONEXTCOUNT, DEFAULT_MAX_TOKENS, DEFAULT_TEMPERATURE } from '@renderer/config/constant' +import { DEFAULT_CONTEXTCOUNT, DEFAULT_MAX_TOKENS, DEFAULT_TEMPERATURE } from '@renderer/config/constant' import { useAssistant } from '@renderer/hooks/useAssistant' import { useSettings } from '@renderer/hooks/useSettings' import { SettingDivider, SettingRow, SettingRowTitle, SettingSubtitle } from '@renderer/pages/settings' @@ -31,7 +31,7 @@ const SettingsTab: FC = (props) => { const { assistant, updateAssistantSettings, updateAssistant } = useAssistant(props.assistant.id) const { fontSize } = useSettings() const [temperature, setTemperature] = useState(assistant?.settings?.temperature ?? DEFAULT_TEMPERATURE) - const [contextCount, setConextCount] = useState(assistant?.settings?.contextCount ?? DEFAULT_CONEXTCOUNT) + const [contextCount, setContextCount] = useState(assistant?.settings?.contextCount ?? DEFAULT_CONTEXTCOUNT) const [enableMaxTokens, setEnableMaxTokens] = useState(assistant?.settings?.enableMaxTokens ?? false) const [maxTokens, setMaxTokens] = useState(assistant?.settings?.maxTokens ?? 0) const [streamOutput, setStreamOutput] = useState(assistant?.settings?.streamOutput ?? true) @@ -63,7 +63,7 @@ const SettingsTab: FC = (props) => { } } - const onConextCountChange = (value) => { + const onContextCountChange = (value) => { if (!isNaN(value as number)) { onUpdateAssistantSettings({ contextCount: value }) } @@ -77,13 +77,13 @@ const SettingsTab: FC = (props) => { const onReset = () => { setTemperature(DEFAULT_TEMPERATURE) - setConextCount(DEFAULT_CONEXTCOUNT) + setContextCount(DEFAULT_CONTEXTCOUNT) updateAssistant({ ...assistant, settings: { ...assistant.settings, temperature: DEFAULT_TEMPERATURE, - contextCount: DEFAULT_CONEXTCOUNT, + contextCount: DEFAULT_CONTEXTCOUNT, enableMaxTokens: false, maxTokens: DEFAULT_MAX_TOKENS, streamOutput: true, @@ -95,7 +95,7 @@ const SettingsTab: FC = (props) => { useEffect(() => { setTemperature(assistant?.settings?.temperature ?? DEFAULT_TEMPERATURE) - setConextCount(assistant?.settings?.contextCount ?? DEFAULT_CONEXTCOUNT) + setContextCount(assistant?.settings?.contextCount ?? DEFAULT_CONTEXTCOUNT) setEnableMaxTokens(assistant?.settings?.enableMaxTokens ?? false) setMaxTokens(assistant?.settings?.maxTokens ?? DEFAULT_MAX_TOKENS) setStreamOutput(assistant?.settings?.streamOutput ?? true) @@ -129,8 +129,8 @@ const SettingsTab: FC = (props) => { - - + + @@ -139,8 +139,8 @@ const SettingsTab: FC = (props) => { diff --git a/src/renderer/src/pages/settings/AssistantSettings.tsx b/src/renderer/src/pages/settings/AssistantSettings.tsx index b724019be7..f2f3b1896f 100644 --- a/src/renderer/src/pages/settings/AssistantSettings.tsx +++ b/src/renderer/src/pages/settings/AssistantSettings.tsx @@ -1,11 +1,11 @@ import { QuestionCircleOutlined } from '@ant-design/icons' import { HStack } from '@renderer/components/Layout' -import { DEFAULT_CONEXTCOUNT, DEFAULT_MAX_TOKENS, DEFAULT_TEMPERATURE } from '@renderer/config/constant' +import { DEFAULT_CONTEXTCOUNT, DEFAULT_MAX_TOKENS, DEFAULT_TEMPERATURE } from '@renderer/config/constant' import { useDefaultAssistant } from '@renderer/hooks/useAssistant' import { AssistantSettings as AssistantSettingsType } from '@renderer/types' import { Button, Col, Input, InputNumber, Row, Slider, Switch, Tooltip } from 'antd' import TextArea from 'antd/es/input/TextArea' -import { FC, useState } from 'react' +import { Dispatch, FC, SetStateAction, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' @@ -14,7 +14,7 @@ import { SettingContainer, SettingDivider, SettingSubtitle, SettingTitle } from const AssistantSettings: FC = () => { const { defaultAssistant, updateDefaultAssistant } = useDefaultAssistant() const [temperature, setTemperature] = useState(defaultAssistant.settings?.temperature ?? DEFAULT_TEMPERATURE) - const [contextCount, setConextCount] = useState(defaultAssistant.settings?.contextCount ?? DEFAULT_CONEXTCOUNT) + 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) @@ -34,27 +34,22 @@ const AssistantSettings: FC = () => { }) } - const onTemperatureChange = (value) => { - if (!isNaN(value as number)) { - onUpdateAssistantSettings({ temperature: value }) + const handleChange = + (setter: Dispatch>, updater: (value: number) => void) => (value: number | null) => { + if (!!value && !isNaN(value)) { + setter(value) + updater(value) + } } - } - - const onConextCountChange = (value) => { - if (!isNaN(value as number)) { - onUpdateAssistantSettings({ contextCount: value }) - } - } - - const onMaxTokensChange = (value) => { - if (!isNaN(value as number)) { - onUpdateAssistantSettings({ maxTokens: value }) - } - } + const onTemperatureChange = handleChange(setTemperature, (value) => onUpdateAssistantSettings({ temperature: value })) + const onContextCountChange = handleChange(setContextCount, (value) => + onUpdateAssistantSettings({ contextCount: value }) + ) + const onMaxTokensChange = handleChange(setMaxTokens, (value) => onUpdateAssistantSettings({ maxTokens: value })) const onReset = () => { setTemperature(DEFAULT_TEMPERATURE) - setConextCount(DEFAULT_CONEXTCOUNT) + setContextCount(DEFAULT_CONTEXTCOUNT) setEnableMaxTokens(false) setMaxTokens(0) updateDefaultAssistant({ @@ -62,7 +57,7 @@ const AssistantSettings: FC = () => { settings: { ...defaultAssistant.settings, temperature: DEFAULT_TEMPERATURE, - contextCount: DEFAULT_CONEXTCOUNT, + contextCount: DEFAULT_CONTEXTCOUNT, enableMaxTokens: false, maxTokens: DEFAULT_MAX_TOKENS, streamOutput: true @@ -130,8 +125,8 @@ const AssistantSettings: FC = () => { - - + + @@ -141,8 +136,8 @@ const AssistantSettings: FC = () => { min={0} max={20} marks={{ 0: '0', 5: '5', 10: '10', 15: '15', 20: t('chat.settings.max') }} - onChange={setConextCount} - onChangeComplete={onConextCountChange} + onChange={setContextCount} + onChangeComplete={onContextCountChange} value={typeof contextCount === 'number' ? contextCount : 0} step={1} /> @@ -153,7 +148,7 @@ const AssistantSettings: FC = () => { max={20} step={1} value={contextCount} - onChange={onConextCountChange} + onChange={onContextCountChange} style={{ width: '100%' }} /> @@ -192,6 +187,7 @@ const AssistantSettings: FC = () => { { - const contextCount = assistant?.settings?.contextCount ?? DEFAULT_CONEXTCOUNT + const contextCount = assistant?.settings?.contextCount ?? DEFAULT_CONTEXTCOUNT const getAssistantMaxTokens = () => { if (assistant.settings?.enableMaxTokens) { const maxTokens = assistant.settings.maxTokens diff --git a/src/renderer/src/services/MessagesService.ts b/src/renderer/src/services/MessagesService.ts index 4553a14123..0fe7351b89 100644 --- a/src/renderer/src/services/MessagesService.ts +++ b/src/renderer/src/services/MessagesService.ts @@ -1,4 +1,4 @@ -import { DEFAULT_CONEXTCOUNT } from '@renderer/config/constant' +import { DEFAULT_CONTEXTCOUNT } from '@renderer/config/constant' import { getTopicById } from '@renderer/hooks/useTopic' import { Assistant, Message, Topic } from '@renderer/types' import { uuid } from '@renderer/utils' @@ -26,7 +26,7 @@ export function filterContextMessages(messages: Message[]): Message[] { } export function getContextCount(assistant: Assistant, messages: Message[]) { - const contextCount = assistant?.settings?.contextCount ?? DEFAULT_CONEXTCOUNT + const contextCount = assistant?.settings?.contextCount ?? DEFAULT_CONTEXTCOUNT const _messages = takeRight(messages, contextCount) const clearIndex = _messages.findLastIndex((message) => message.type === 'clear') const messagesCount = _messages.length diff --git a/src/renderer/src/store/agents.ts b/src/renderer/src/store/agents.ts index d60650286f..48e0c4d732 100644 --- a/src/renderer/src/store/agents.ts +++ b/src/renderer/src/store/agents.ts @@ -1,5 +1,5 @@ import { createSlice, PayloadAction } from '@reduxjs/toolkit' -import { DEFAULT_CONEXTCOUNT, DEFAULT_TEMPERATURE } from '@renderer/config/constant' +import { DEFAULT_CONTEXTCOUNT, DEFAULT_TEMPERATURE } from '@renderer/config/constant' import { Agent, AssistantSettings } from '@renderer/types' export interface AgentsState { @@ -37,7 +37,7 @@ const assistantsSlice = createSlice({ if (!agent.settings) { agent.settings = { temperature: DEFAULT_TEMPERATURE, - contextCount: DEFAULT_CONEXTCOUNT, + contextCount: DEFAULT_CONTEXTCOUNT, enableMaxTokens: false, maxTokens: 0, streamOutput: true, diff --git a/src/renderer/src/store/assistants.ts b/src/renderer/src/store/assistants.ts index 4800a03062..a8cf3f8ae4 100644 --- a/src/renderer/src/store/assistants.ts +++ b/src/renderer/src/store/assistants.ts @@ -1,5 +1,5 @@ import { createSlice, PayloadAction } from '@reduxjs/toolkit' -import { DEFAULT_CONEXTCOUNT, DEFAULT_TEMPERATURE } from '@renderer/config/constant' +import { DEFAULT_CONTEXTCOUNT, DEFAULT_TEMPERATURE } from '@renderer/config/constant' import { TopicManager } from '@renderer/hooks/useTopic' import { getDefaultAssistant, getDefaultTopic } from '@renderer/services/AssistantService' import { Assistant, AssistantSettings, Model, Topic } from '@renderer/types' @@ -45,7 +45,7 @@ const assistantsSlice = createSlice({ if (!assistant.settings) { assistant.settings = { temperature: DEFAULT_TEMPERATURE, - contextCount: DEFAULT_CONEXTCOUNT, + contextCount: DEFAULT_CONTEXTCOUNT, enableMaxTokens: false, maxTokens: 0, streamOutput: true,