From dba1f76db7def45bf24cfa4b15cd9f7d58cf9c8c Mon Sep 17 00:00:00 2001 From: kangfenmao Date: Thu, 2 Jan 2025 17:21:33 +0800 Subject: [PATCH] feat: update assistantmodelsettings to persist custom parameters --- .../AssistantModelSettings.tsx | 24 +++++++++++-------- src/renderer/src/types/index.ts | 12 ++++++---- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/src/renderer/src/pages/settings/AssistantSettings/AssistantModelSettings.tsx b/src/renderer/src/pages/settings/AssistantSettings/AssistantModelSettings.tsx index fcaef439..d03835f4 100644 --- a/src/renderer/src/pages/settings/AssistantSettings/AssistantModelSettings.tsx +++ b/src/renderer/src/pages/settings/AssistantSettings/AssistantModelSettings.tsx @@ -4,9 +4,9 @@ import { HStack } from '@renderer/components/Layout' import SelectModelPopup from '@renderer/components/Popups/SelectModelPopup' import { DEFAULT_CONTEXTCOUNT, DEFAULT_TEMPERATURE } from '@renderer/config/constant' import { SettingRow } from '@renderer/pages/settings' -import { Assistant, 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 { FC, useState } from 'react' +import { FC, useEffect, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' @@ -25,13 +25,14 @@ const AssistantModelSettings: FC = ({ assistant, updateAssistant, updateA const [streamOutput, setStreamOutput] = useState(assistant?.settings?.streamOutput ?? true) const [defaultModel, setDefaultModel] = useState(assistant?.defaultModel) const [topP, setTopP] = useState(assistant?.settings?.topP ?? 1) - const [customParameters, setCustomParameters] = useState< - Array<{ - name: string - value: string | number | boolean | object - type: 'string' | 'number' | 'boolean' | 'json' - }> - >(assistant?.settings?.customParameters ?? []) + const [customParameters, setCustomParameters] = useState( + assistant?.settings?.customParameters ?? [] + ) + + const customParametersRef = useRef(customParameters) + + customParametersRef.current = customParameters + const { t } = useTranslation() const onTemperatureChange = (value) => { @@ -95,7 +96,6 @@ const AssistantModelSettings: FC = ({ assistant, updateAssistant, updateA newParams[index] = { ...newParams[index], [field]: value } } setCustomParameters(newParams) - updateAssistantSettings({ customParameters: newParams }) } const renderParameterValueInput = (param: (typeof customParameters)[0], index: number) => { @@ -176,6 +176,10 @@ const AssistantModelSettings: FC = ({ assistant, updateAssistant, updateA } } + useEffect(() => { + return () => updateAssistantSettings({ customParameters: customParametersRef.current }) + }, []) + return ( diff --git a/src/renderer/src/types/index.ts b/src/renderer/src/types/index.ts index 75bc0125..8b4ed9a7 100644 --- a/src/renderer/src/types/index.ts +++ b/src/renderer/src/types/index.ts @@ -21,6 +21,12 @@ export type AssistantMessage = { content: string } +export type AssistantSettingCustomParameters = { + name: string + value: string | number | boolean | object + type: 'string' | 'number' | 'boolean' | 'json' +} + export type AssistantSettings = { contextCount: number temperature: number @@ -30,11 +36,7 @@ export type AssistantSettings = { streamOutput: boolean hideMessages: boolean autoResetModel: boolean - customParameters?: { - name: string - value: string | number | boolean | object - type: 'string' | 'number' | 'boolean' | 'json' - }[] + customParameters?: AssistantSettingCustomParameters[] } export type Agent = Omit