From 00b6000b76dd347118b6fa6c29e1294b73cd0728 Mon Sep 17 00:00:00 2001
From: balibabu
Date: Tue, 12 Nov 2024 12:47:36 +0800
Subject: [PATCH] feat: Disable automatic saving of agent during running agent
#3349 (#3350)
### What problem does this PR solve?
feat: Disable automatic saving of agent during running agent #3349
### Type of change
- [x] New Feature (non-breaking change which adds functionality)
---
.../components/knowledge-setting/utils.ts | 108 ------------------
web/src/pages/flow/chat/drawer.tsx | 3 +-
web/src/pages/flow/flow-drawer/index.tsx | 3 +-
.../pages/flow/form/generate-form/index.tsx | 2 +-
web/src/pages/flow/header/index.tsx | 5 +-
web/src/pages/flow/hooks.ts | 10 +-
web/src/pages/flow/index.tsx | 5 +-
web/src/pages/flow/utils.ts | 4 +
8 files changed, 22 insertions(+), 118 deletions(-)
diff --git a/web/src/pages/add-knowledge/components/knowledge-setting/utils.ts b/web/src/pages/add-knowledge/components/knowledge-setting/utils.ts
index 3c4f94f43..ceb9cc97e 100644
--- a/web/src/pages/add-knowledge/components/knowledge-setting/utils.ts
+++ b/web/src/pages/add-knowledge/components/knowledge-setting/utils.ts
@@ -17,111 +17,3 @@ export const ImageMap = {
one: getImageName('one', 2),
knowledge_graph: getImageName('knowledge-graph', 2),
};
-
-export const TextMap = {
- book: {
- title: '',
- description: `Supported file formats are DOCX, PDF, TXT.
- Since a book is long and not all the parts are useful, if it's a PDF,
- please setup the page ranges for every book in order eliminate negative effects and save computing time for analyzing.
`,
- },
- laws: {
- title: '',
- description: `Supported file formats are DOCX, PDF, TXT.
- Legal documents have a very rigorous writing format. We use text feature to detect split point.
-
- The chunk granularity is consistent with 'ARTICLE', and all the upper level text will be included in the chunk.
-
`,
- },
- manual: {
- title: '',
- description: `Only PDF is supported.
- We assume manual has hierarchical section structure. We use the lowest section titles as pivots to slice documents.
- So, the figures and tables in the same section will not be sliced apart, and chunk size might be large.
-
`,
- },
- naive: {
- title: '',
- description: `Supported file formats are DOCX, EXCEL, PPT, IMAGE, PDF, TXT.
- This method apply the naive ways to chunk files:
-
-
Successive text will be sliced into pieces using vision detection model.
- Next, these successive pieces are merge into chunks whose token number is no more than 'Token number'.
`,
- },
- paper: {
- title: '',
- description: `Only PDF file is supported.
- If our model works well, the paper will be sliced by it's sections, like abstract, 1.1, 1.2, etc.
- The benefit of doing this is that LLM can better summarize the content of relevant sections in the paper,
- resulting in more comprehensive answers that help readers better understand the paper.
- The downside is that it increases the context of the LLM conversation and adds computational cost,
- so during the conversation, you can consider reducing the ‘topN’ setting.
`,
- },
- presentation: {
- title: '',
- description: `The supported file formats are PDF, PPTX.
- Every page will be treated as a chunk. And the thumbnail of every page will be stored.
- All the PPT files you uploaded will be chunked by using this method automatically, setting-up for every PPT file is not necessary.
`,
- },
- qa: {
- title: '',
- description: `EXCEL and CSV/TXT files are supported.
- If the file is in excel format, there should be 2 columns question and answer without header.
- And question column is ahead of answer column.
- And it's O.K if it has multiple sheets as long as the columns are rightly composed.
-
- If it's in csv format, it should be UTF-8 encoded. Use TAB as delimiter to separate question and answer.
-
- All the deformed lines will be ignored.
- Every pair of Q&A will be treated as a chunk.
`,
- },
- resume: {
- title: '',
- description: `The supported file formats are DOCX, PDF, TXT.
-
- The résumé comes in a variety of formats, just like a person’s personality, but we often have to organize them into structured data that makes it easy to search.
-
- Instead of chunking the résumé, we parse the résumé into structured data. As a HR, you can dump all the résumé you have,
- the you can list all the candidates that match the qualifications just by talk with 'RAGFlow'.
-
- `,
- },
- table: {
- title: '',
- description: `EXCEL and CSV/TXT format files are supported.
- Here're some tips:
-
`,
- },
- picture: {
- title: '',
- description: `
- Image files are supported. Video is coming soon.
- If the picture has text in it, OCR is applied to extract the text as its text description.
-
- If the text extracted by OCR is not enough, visual LLM is used to get the descriptions.
-
`,
- },
- one: {
- title: '',
- description: `
- Supported file formats are DOCX, EXCEL, PDF, TXT.
-
- For a document, it will be treated as an entire chunk, no split at all.
-
- If you want to summarize something that needs all the context of an article and the selected LLM's context length covers the document length, you can try this method.
-
`,
- },
-};
diff --git a/web/src/pages/flow/chat/drawer.tsx b/web/src/pages/flow/chat/drawer.tsx
index baeec8a6f..190fda553 100644
--- a/web/src/pages/flow/chat/drawer.tsx
+++ b/web/src/pages/flow/chat/drawer.tsx
@@ -1,6 +1,7 @@
import { useFetchFlow } from '@/hooks/flow-hooks';
import { IModalProps } from '@/interfaces/common';
import { Drawer } from 'antd';
+import { getDrawerWidth } from '../utils';
import FlowChatBox from './box';
const ChatDrawer = ({ visible, hideModal }: IModalProps) => {
@@ -13,7 +14,7 @@ const ChatDrawer = ({ visible, hideModal }: IModalProps) => {
onClose={hideModal}
open={visible}
getContainer={false}
- width={window.innerWidth > 1278 ? '40%' : 470}
+ width={getDrawerWidth()}
mask={false}
// zIndex={10000}
>
diff --git a/web/src/pages/flow/flow-drawer/index.tsx b/web/src/pages/flow/flow-drawer/index.tsx
index 4304146f2..fe5c7c642 100644
--- a/web/src/pages/flow/flow-drawer/index.tsx
+++ b/web/src/pages/flow/flow-drawer/index.tsx
@@ -39,6 +39,7 @@ import OperatorIcon from '../operator-icon';
import { CloseOutlined } from '@ant-design/icons';
import { lowerFirst } from 'lodash';
+import { getDrawerWidth } from '../utils';
import styles from './index.less';
interface IProps {
@@ -135,7 +136,7 @@ const FlowDrawer = ({
open={visible}
getContainer={false}
mask={false}
- width={500}
+ width={getDrawerWidth()}
closeIcon={null}
>
diff --git a/web/src/pages/flow/form/generate-form/index.tsx b/web/src/pages/flow/form/generate-form/index.tsx
index f286169a7..84676e83b 100644
--- a/web/src/pages/flow/form/generate-form/index.tsx
+++ b/web/src/pages/flow/form/generate-form/index.tsx
@@ -28,7 +28,7 @@ const GenerateForm = ({ onValuesChange, form, node }: IOperatorForm) => {
{
+const FlowHeader = ({ showChatDrawer, chatDrawerVisible }: IProps) => {
const { saveGraph } = useSaveGraph();
const handleRun = useSaveGraphBeforeOpeningDebugDrawer(showChatDrawer);
const { data } = useFetchFlow();
@@ -28,7 +29,7 @@ const FlowHeader = ({ showChatDrawer }: IProps) => {
} = useSetModalState();
const { visible, hideModal, showModal } = useSetModalState();
const { id } = useParams();
- const time = useWatchAgentChange();
+ const time = useWatchAgentChange(chatDrawerVisible);
return (
<>
diff --git a/web/src/pages/flow/hooks.ts b/web/src/pages/flow/hooks.ts
index 8a004e413..aa89832af 100644
--- a/web/src/pages/flow/hooks.ts
+++ b/web/src/pages/flow/hooks.ts
@@ -681,7 +681,7 @@ export const useCopyPaste = () => {
}, [onPasteCapture]);
};
-export const useWatchAgentChange = () => {
+export const useWatchAgentChange = (chatDrawerVisible: boolean) => {
const [time, setTime] = useState();
const nodes = useGraphStore((state) => state.nodes);
const edges = useGraphStore((state) => state.edges);
@@ -697,9 +697,11 @@ export const useWatchAgentChange = () => {
}, [flowDetail, setSaveTime]);
const saveAgent = useCallback(async () => {
- const ret = await saveGraph();
- setSaveTime(ret.data.update_time);
- }, [saveGraph, setSaveTime]);
+ if (!chatDrawerVisible) {
+ const ret = await saveGraph();
+ setSaveTime(ret.data.update_time);
+ }
+ }, [chatDrawerVisible, saveGraph, setSaveTime]);
useDebounceEffect(
() => {
diff --git a/web/src/pages/flow/index.tsx b/web/src/pages/flow/index.tsx
index 980c08b01..c73dcdbff 100644
--- a/web/src/pages/flow/index.tsx
+++ b/web/src/pages/flow/index.tsx
@@ -25,7 +25,10 @@ function RagFlow() {
-
+
{
form,
};
};
+
+export const getDrawerWidth = () => {
+ return window.innerWidth > 1278 ? '40%' : 470;
+};