mirror of
https://github.com/labring/FastGPT.git
synced 2026-05-07 01:02:55 +08:00
perf: variabel replace;Feat: prompt optimizer code (#5453)
* feat: add prompt optimizer (#5444) * feat: add prompt optimizer * fix * perf: variabel replace * perf: prompt optimizer code * feat: init charts shell * perf: user error remove --------- Co-authored-by: heheer <heheer@sealos.io>
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import React, { useEffect, useMemo, useTransition } from 'react';
|
||||
import React, { useCallback, useEffect, useMemo, useTransition } from 'react';
|
||||
import {
|
||||
Box,
|
||||
Flex,
|
||||
@@ -31,6 +31,8 @@ import FormLabel from '@fastgpt/web/components/common/MyBox/FormLabel';
|
||||
import VariableTip from '@/components/common/Textarea/MyTextarea/VariableTip';
|
||||
import { getWebLLMModel } from '@/web/common/system/utils';
|
||||
import ToolSelect from './components/ToolSelect';
|
||||
import { useSystemStore } from '@/web/common/system/useSystemStore';
|
||||
import OptimizerPopover from '@/components/common/PromptEditor/OptimizerPopover';
|
||||
|
||||
const DatasetSelectModal = dynamic(() => import('@/components/core/app/DatasetSelectModal'));
|
||||
const DatasetParamsModal = dynamic(() => import('@/components/core/app/DatasetParamsModal'));
|
||||
@@ -69,6 +71,7 @@ const EditForm = ({
|
||||
const { appDetail } = useContextSelector(AppContext, (v) => v);
|
||||
const selectDatasets = useMemo(() => appForm?.dataset?.datasets, [appForm]);
|
||||
const [, startTst] = useTransition();
|
||||
const { llmModelList, defaultModels } = useSystemStore();
|
||||
|
||||
const {
|
||||
isOpen: isOpenDatasetSelect,
|
||||
@@ -126,6 +129,27 @@ const EditForm = ({
|
||||
}
|
||||
}, [selectedModel, setAppForm]);
|
||||
|
||||
const OptimizerPopverComponent = useCallback(
|
||||
({ iconButtonStyle }: { iconButtonStyle: Record<string, any> }) => {
|
||||
return (
|
||||
<OptimizerPopover
|
||||
iconButtonStyle={iconButtonStyle}
|
||||
defaultPrompt={appForm.aiSettings.systemPrompt}
|
||||
onChangeText={(e) => {
|
||||
setAppForm((state) => ({
|
||||
...state,
|
||||
aiSettings: {
|
||||
...state.aiSettings,
|
||||
systemPrompt: e
|
||||
}
|
||||
}));
|
||||
}}
|
||||
/>
|
||||
);
|
||||
},
|
||||
[appForm.aiSettings.systemPrompt, setAppForm]
|
||||
);
|
||||
|
||||
return (
|
||||
<>
|
||||
<Box>
|
||||
@@ -196,6 +220,7 @@ const EditForm = ({
|
||||
variables={formatVariables}
|
||||
placeholder={t('common:core.app.tip.systemPromptTip')}
|
||||
title={t('common:core.ai.Prompt')}
|
||||
ExtensionPopover={[OptimizerPopverComponent]}
|
||||
/>
|
||||
</Box>
|
||||
</Box>
|
||||
|
||||
+19
@@ -13,6 +13,8 @@ import { getEditorVariables } from '@/pageComponents/app/detail/WorkflowComponen
|
||||
import { InputTypeEnum } from '@/components/core/app/formRender/constant';
|
||||
import { llmModelTypeFilterMap } from '@fastgpt/global/core/ai/constants';
|
||||
import { getWebDefaultLLMModel } from '@/web/common/system/utils';
|
||||
import { NodeInputKeyEnum } from '@fastgpt/global/core/workflow/constants';
|
||||
import OptimizerPopover from '@/components/common/PromptEditor/OptimizerPopover';
|
||||
|
||||
const CommonInputForm = ({ item, nodeId }: RenderInputProps) => {
|
||||
const { t } = useTranslation();
|
||||
@@ -80,6 +82,22 @@ const CommonInputForm = ({ item, nodeId }: RenderInputProps) => {
|
||||
return item.value;
|
||||
}, [inputType, item.value, defaultModel, handleChange]);
|
||||
|
||||
const canOptimizePrompt = item.key === NodeInputKeyEnum.aiSystemPrompt;
|
||||
const OptimizerPopverComponent = useCallback(
|
||||
({ iconButtonStyle }: { iconButtonStyle: Record<string, any> }) => {
|
||||
return (
|
||||
<OptimizerPopover
|
||||
iconButtonStyle={iconButtonStyle}
|
||||
defaultPrompt={item.value}
|
||||
onChangeText={(e) => {
|
||||
handleChange(e);
|
||||
}}
|
||||
/>
|
||||
);
|
||||
},
|
||||
[item.value, handleChange]
|
||||
);
|
||||
|
||||
return (
|
||||
<InputRender
|
||||
inputType={inputType}
|
||||
@@ -93,6 +111,7 @@ const CommonInputForm = ({ item, nodeId }: RenderInputProps) => {
|
||||
max={item.max}
|
||||
list={item.list}
|
||||
modelList={modelList}
|
||||
ExtensionPopover={canOptimizePrompt ? [OptimizerPopverComponent] : undefined}
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user