Skip to content

Commit

Permalink
4.8.12 test (#2936)
Browse files Browse the repository at this point in the history
* system config tip

* perf: prompt editor code

* perf: cookie tip
  • Loading branch information
c121914yu authored Oct 18, 2024
1 parent 4aaf9bf commit 40f527a
Show file tree
Hide file tree
Showing 9 changed files with 162 additions and 174 deletions.
7 changes: 4 additions & 3 deletions docSite/content/zh-cn/docs/development/upgrading/4812.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ weight: 812
4. 新增 - Debug 模式支持输入全局变量
5. 新增 - chat openapi 文档
6. 新增 - wiki 搜索插件
7. 修复 - 文件后缀判断,去除 query 影响。
8. 修复 - AI 响应为空时,会造成 LLM 历史记录合并。
9. 修复 - 用户交互节点未阻塞流程。
7. 新增 - Cookie 隐私协议提示
8. 修复 - 文件后缀判断,去除 query 影响。
9. 修复 - AI 响应为空时,会造成 LLM 历史记录合并。
10. 修复 - 用户交互节点未阻塞流程。
2 changes: 1 addition & 1 deletion packages/plugins/src/drawing/template.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"author": "",
"author": "silencezhang7",
"version": "486",
"name": "BI图表功能",
"avatar": "core/workflow/template/BI",
Expand Down
2 changes: 1 addition & 1 deletion packages/service/core/workflow/dispatch/agent/extract.ts
Original file line number Diff line number Diff line change
Expand Up @@ -243,7 +243,7 @@ const toolChoice = async (props: ActionProps) => {
const arg: Record<string, any> = (() => {
try {
return json5.parse(
response?.choices?.[0]?.message?.tool_calls?.[0]?.function?.arguments || '{}'
response?.choices?.[0]?.message?.tool_calls?.[0]?.function?.arguments || ''
);
} catch (error) {
console.log(agentFunction.parameters);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
*
*/

import { useState, useRef, useTransition, useCallback } from 'react';
import { useState, useTransition } from 'react';
import { LexicalComposer } from '@lexical/react/LexicalComposer';
import { PlainTextPlugin } from '@lexical/react/LexicalPlainTextPlugin';
import { ContentEditable } from '@lexical/react/LexicalContentEditable';
Expand Down
2 changes: 1 addition & 1 deletion projects/app/data/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
"usedInExtractFields": true, // 是否用于内容提取(务必保证至少有一个为true)
"usedInToolCall": true, // 是否用于工具调用(务必保证至少有一个为true)
"usedInQueryExtension": true, // 是否用于问题优化(务必保证至少有一个为true)
"toolChoice": true, // 是否支持工具选择(分类,内容提取,工具调用会用到。目前只有gpt支持
"toolChoice": true, // 是否支持工具选择(分类,内容提取,工具调用会用到。)
"functionCall": false, // 是否支持函数调用(分类,内容提取,工具调用会用到。会优先使用 toolChoice,如果为false,则使用 functionCall,如果仍为 false,则使用提示词模式)
"customCQPrompt": "", // 自定义文本分类提示词(不支持工具和函数调用的模型
"customExtractPrompt": "", // 自定义内容提取提示词
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import React, { useCallback, useEffect, useMemo, useState } from 'react';
import React, { useCallback, useMemo, useState } from 'react';
import type { RenderInputProps } from '../type';
import { Box, BoxProps, Button, Flex, ModalFooter, useDisclosure } from '@chakra-ui/react';
import MyModal from '@fastgpt/web/components/common/MyModal';
Expand Down Expand Up @@ -43,30 +43,22 @@ const selectTemplateBtn: BoxProps = {
cursor: 'pointer'
};

const SettingQuotePrompt = (props: RenderInputProps) => {
const EditModal = ({ onClose, ...props }: RenderInputProps & { onClose: () => void }) => {
const { inputs = [], nodeId } = props;
const { t } = useTranslation();
const { isOpen, onOpen, onClose } = useDisclosure();
const onChangeNode = useContextSelector(WorkflowContext, (v) => v.onChangeNode);
const nodeList = useContextSelector(WorkflowContext, (v) => v.nodeList);

const defaultValues = useMemo(() => {
return {
const { watch, setValue, handleSubmit } = useForm({
defaultValues: {
quoteTemplate:
inputs.find((input) => input.key === NodeInputKeyEnum.aiChatQuoteTemplate)?.value || '',
quotePrompt:
inputs.find((input) => input.key === NodeInputKeyEnum.aiChatQuotePrompt)?.value || '',
quoteRole: (inputs.find((input) => input.key === NodeInputKeyEnum.aiChatQuoteRole)?.value ||
'system') as AiChatQuoteRoleType
};
}, [inputs]);

const { watch, setValue, handleSubmit, reset } = useForm({ defaultValues });

useEffect(() => {
reset(defaultValues);
}, [defaultValues, reset]);

}
});
const aiChatQuoteTemplate = watch('quoteTemplate');
const aiChatQuotePrompt = watch('quotePrompt');
const aiChatQuoteRole = watch('quoteRole');
Expand Down Expand Up @@ -175,6 +167,137 @@ const SettingQuotePrompt = (props: RenderInputProps) => {
const quotePromptTemplates =
aiChatQuoteRole === 'user' ? Prompt_userQuotePromptList : Prompt_systemQuotePromptList;

return (
<>
<MyModal
isOpen
iconSrc={'modal/edit'}
title={t('workflow:Quote_prompt_setting')}
w={'100%'}
h={['90vh', '85vh']}
maxW={['90vw', '700px']}
isCentered
>
<ModalBody flex={'1 0 0'} overflow={'auto'}>
<Flex {...LabelStyles} alignItems={'center'}>
<FormLabel>{t('workflow:dataset_quote_role')}</FormLabel>
<QuestionTip label={t('workflow:dataset_quote_role_tip')} ml={1} mr={5} />
<MySelect<AiChatQuoteRoleType>
value={aiChatQuoteRole}
list={[
{
label: 'System',
value: 'system',
description: t('workflow:dataset_quote_role_system_option_desc')
},
{
label: 'User',
value: 'user',
description: t('workflow:dataset_quote_role_user_option_desc')
}
]}
onchange={(e) => {
setValue('quoteRole', e);
}}
/>
<Box ml={5}>
{aiChatQuoteRole === 'user' ? (
<LightTip text={t('workflow:quote_role_user_tip')} />
) : (
<LightTip text={t('workflow:quote_role_system_tip')} />
)}
</Box>
</Flex>
<Box mt={4}>
<Flex {...LabelStyles} mb={1}>
<FormLabel>{t('common:core.app.Quote templates')}</FormLabel>
<QuestionTip
ml={1}
label={t('workflow:quote_content_tip', {
default: Prompt_QuoteTemplateList[0].value
})}
></QuestionTip>
<Box flex={1} />
<Box
{...selectTemplateBtn}
fontSize={'sm'}
onClick={() =>
setSelectTemplateData({
title: t('common:core.app.Select quote template'),
templates: Prompt_QuoteTemplateList
})
}
>
{t('common:common.Select template')}
</Box>
</Flex>

<PromptEditor
variables={quoteTemplateVariables}
minH={160}
title={t('common:core.app.Quote templates')}
placeholder={t('workflow:quote_content_placeholder')}
value={aiChatQuoteTemplate}
onChange={(e) => {
setValue('quoteTemplate', e);
}}
/>
</Box>
<Box mt={4}>
<Flex {...LabelStyles} mb={1}>
<FormLabel>{t('common:core.app.Quote prompt')}</FormLabel>
<QuestionTip
ml={1}
label={t('workflow:quote_prompt_tip', {
default: quotePromptTemplates[0].value
})}
></QuestionTip>
</Flex>
<PromptEditor
variables={quotePromptVariables}
title={t('common:core.app.Quote prompt')}
minH={300}
placeholder={t('workflow:quote_prompt_tip', {
default: quotePromptTemplates[0].value
})}
value={aiChatQuotePrompt}
onChange={(e) => {
setValue('quotePrompt', e);
}}
/>
</Box>
</ModalBody>
<ModalFooter>
<Button variant={'whiteBase'} mr={2} onClick={onClose}>
{t('common:common.Close')}
</Button>
<Button onClick={handleSubmit(onSubmit)}>{t('common:common.Confirm')}</Button>
</ModalFooter>
</MyModal>
{/* Prompt template */}
{!!selectTemplateData && (
<PromptTemplate
title={selectTemplateData.title}
templates={selectTemplateData.templates}
onClose={() => setSelectTemplateData(undefined)}
onSuccess={(e) => {
const quoteVal = e.value;

const promptVal = quotePromptTemplates.find((item) => item.title === e.title)?.value;

setValue('quoteTemplate', quoteVal);
setValue('quotePrompt', promptVal);
}}
/>
)}
</>
);
};

const SettingQuotePrompt = (props: RenderInputProps) => {
const { t } = useTranslation();
const { isOpen, onOpen, onClose } = useDisclosure();

const Render = useMemo(() => {
return (
<>
Expand All @@ -201,146 +324,10 @@ const SettingQuotePrompt = (props: RenderInputProps) => {
<Reference {...props} />
</Box>

<MyModal
isOpen={isOpen}
iconSrc={'modal/edit'}
title={t('workflow:Quote_prompt_setting')}
w={'100%'}
h={['90vh', '85vh']}
maxW={['90vw', '700px']}
isCentered
>
<ModalBody flex={'1 0 0'} overflow={'auto'}>
<Flex {...LabelStyles} alignItems={'center'}>
<FormLabel>{t('workflow:dataset_quote_role')}</FormLabel>
<QuestionTip label={t('workflow:dataset_quote_role_tip')} ml={1} mr={5} />
<MySelect<AiChatQuoteRoleType>
value={aiChatQuoteRole}
list={[
{
label: 'System',
value: 'system',
description: t('workflow:dataset_quote_role_system_option_desc')
},
{
label: 'User',
value: 'user',
description: t('workflow:dataset_quote_role_user_option_desc')
}
]}
onchange={(e) => {
setValue('quoteRole', e);
}}
/>
<Box ml={5}>
{aiChatQuoteRole === 'user' ? (
<LightTip text={t('workflow:quote_role_user_tip')} />
) : (
<LightTip text={t('workflow:quote_role_system_tip')} />
)}
</Box>
</Flex>
<Box mt={4}>
<Flex {...LabelStyles} mb={1}>
<FormLabel>{t('common:core.app.Quote templates')}</FormLabel>
<QuestionTip
ml={1}
label={t('workflow:quote_content_tip', {
default: Prompt_QuoteTemplateList[0].value
})}
></QuestionTip>
<Box flex={1} />
<Box
{...selectTemplateBtn}
fontSize={'sm'}
onClick={() =>
setSelectTemplateData({
title: t('common:core.app.Select quote template'),
templates: Prompt_QuoteTemplateList
})
}
>
{t('common:common.Select template')}
</Box>
</Flex>

<PromptEditor
variables={quoteTemplateVariables}
minH={160}
title={t('common:core.app.Quote templates')}
placeholder={t('workflow:quote_content_placeholder')}
value={aiChatQuoteTemplate}
onChange={(e) => {
setValue('quoteTemplate', e);
}}
/>
</Box>
<Box mt={4}>
<Flex {...LabelStyles} mb={1}>
<FormLabel>{t('common:core.app.Quote prompt')}</FormLabel>
<QuestionTip
ml={1}
label={t('workflow:quote_prompt_tip', {
default: quotePromptTemplates[0].value
})}
></QuestionTip>
</Flex>
<PromptEditor
variables={quotePromptVariables}
title={t('common:core.app.Quote prompt')}
minH={300}
placeholder={t('workflow:quote_prompt_tip', {
default: quotePromptTemplates[0].value
})}
value={aiChatQuotePrompt}
onChange={(e) => {
setValue('quotePrompt', e);
}}
/>
</Box>
</ModalBody>
<ModalFooter>
<Button variant={'whiteBase'} mr={2} onClick={onClose}>
{t('common:common.Close')}
</Button>
<Button onClick={handleSubmit(onSubmit)}>{t('common:common.Confirm')}</Button>
</ModalFooter>
</MyModal>
{/* Prompt template */}
{!!selectTemplateData && (
<PromptTemplate
title={selectTemplateData.title}
templates={selectTemplateData.templates}
onClose={() => setSelectTemplateData(undefined)}
onSuccess={(e) => {
const quoteVal = e.value;

const promptVal = quotePromptTemplates.find((item) => item.title === e.title)?.value;

setValue('quoteTemplate', quoteVal);
setValue('quotePrompt', promptVal);
}}
/>
)}
{isOpen && <EditModal {...props} onClose={onClose} />}
</>
);
}, [
aiChatQuotePrompt,
aiChatQuoteRole,
aiChatQuoteTemplate,
handleSubmit,
isOpen,
onClose,
onOpen,
onSubmit,
props,
quotePromptTemplates,
quotePromptVariables,
quoteTemplateVariables,
selectTemplateData,
setValue,
t
]);
}, [isOpen, onClose, onOpen, t]);

return Render;
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,6 @@ export const getEditorVariables = ({
const sourceNodeVariables = !sourceNodes
? []
: sourceNodes
.reverse()
.map((node) => {
return node.outputs
.filter((output) => !!output.label)
Expand Down
Loading

0 comments on commit 40f527a

Please sign in to comment.