mirror of
https://github.com/infiniflow/ragflow.git
synced 2025-12-25 16:26:51 +08:00
Feat: The agent's external page should be able to fill in the begin parameter after being reset in task mode #9745 (#9982)
### What problem does this PR solve? Feat: The agent's external page should be able to fill in the begin parameter after being reset in task mode #9745 ### Type of change - [x] New Feature (non-breaking change which adds functionality)
This commit is contained in:
@ -1,13 +1,16 @@
|
||||
import { SharedFrom } from '@/constants/chat';
|
||||
import { useSetModalState } from '@/hooks/common-hooks';
|
||||
import { useFetchExternalAgentInputs } from '@/hooks/use-agent-request';
|
||||
import { IEventList } from '@/hooks/use-send-message';
|
||||
import {
|
||||
buildRequestBody,
|
||||
useSendAgentMessage,
|
||||
} from '@/pages/agent/chat/use-send-agent-message';
|
||||
import { isEmpty } from 'lodash';
|
||||
import trim from 'lodash/trim';
|
||||
import { useCallback, useState } from 'react';
|
||||
import { useCallback, useEffect, useRef, useState } from 'react';
|
||||
import { useSearchParams } from 'umi';
|
||||
import { AgentDialogueMode } from '../constant';
|
||||
|
||||
export const useSendButtonDisabled = (value: string) => {
|
||||
return trim(value) === '';
|
||||
@ -35,12 +38,15 @@ export const useGetSharedChatSearchParams = () => {
|
||||
|
||||
export const useSendNextSharedMessage = (
|
||||
addEventList: (data: IEventList, messageId: string) => void,
|
||||
isTaskMode: boolean,
|
||||
) => {
|
||||
const { from, sharedId: conversationId } = useGetSharedChatSearchParams();
|
||||
const url = `/api/v1/${from === SharedFrom.Agent ? 'agentbots' : 'chatbots'}/${conversationId}/completions`;
|
||||
const { data: inputsData } = useFetchExternalAgentInputs();
|
||||
|
||||
const [params, setParams] = useState<any[]>([]);
|
||||
const sendedTaskMessage = useRef<boolean>(false);
|
||||
|
||||
const isTaskMode = inputsData.mode === AgentDialogueMode.Task;
|
||||
|
||||
const {
|
||||
visible: parameterDialogVisible,
|
||||
@ -73,10 +79,27 @@ export const useSendNextSharedMessage = (
|
||||
[hideParameterDialog, isTaskMode, ret],
|
||||
);
|
||||
|
||||
const runTask = useCallback(() => {
|
||||
if (
|
||||
isTaskMode &&
|
||||
isEmpty(inputsData?.inputs) &&
|
||||
!sendedTaskMessage.current
|
||||
) {
|
||||
ok([]);
|
||||
sendedTaskMessage.current = true;
|
||||
}
|
||||
}, [inputsData?.inputs, isTaskMode, ok]);
|
||||
|
||||
useEffect(() => {
|
||||
runTask();
|
||||
}, [runTask]);
|
||||
|
||||
return {
|
||||
...ret,
|
||||
hasError: false,
|
||||
parameterDialogVisible,
|
||||
inputsData,
|
||||
isTaskMode,
|
||||
hideParameterDialog,
|
||||
showParameterDialog,
|
||||
ok,
|
||||
|
||||
@ -5,10 +5,7 @@ import MessageItem from '@/components/next-message-item';
|
||||
import PdfDrawer from '@/components/pdf-drawer';
|
||||
import { useClickDrawer } from '@/components/pdf-drawer/hooks';
|
||||
import { MessageType } from '@/constants/chat';
|
||||
import {
|
||||
useFetchExternalAgentInputs,
|
||||
useUploadCanvasFileWithProgress,
|
||||
} from '@/hooks/use-agent-request';
|
||||
import { useUploadCanvasFileWithProgress } from '@/hooks/use-agent-request';
|
||||
import { cn } from '@/lib/utils';
|
||||
import i18n from '@/locales/config';
|
||||
import DebugContent from '@/pages/agent/debug-content';
|
||||
@ -18,7 +15,6 @@ import { useSendButtonDisabled } from '@/pages/chat/hooks';
|
||||
import { buildMessageUuidWithRole } from '@/utils/chat';
|
||||
import { isEmpty } from 'lodash';
|
||||
import React, { forwardRef, useCallback } from 'react';
|
||||
import { AgentDialogueMode } from '../constant';
|
||||
import {
|
||||
useGetSharedChatSearchParams,
|
||||
useSendNextSharedMessage,
|
||||
@ -43,9 +39,6 @@ const ChatContainer = () => {
|
||||
clearEventList,
|
||||
} = useCacheChatLog();
|
||||
|
||||
const { data: inputsData } = useFetchExternalAgentInputs();
|
||||
const isTaskMode = inputsData.mode === AgentDialogueMode.Task;
|
||||
|
||||
const {
|
||||
handlePressEnter,
|
||||
handleInputChange,
|
||||
@ -55,6 +48,8 @@ const ChatContainer = () => {
|
||||
messageContainerRef,
|
||||
derivedMessages,
|
||||
hasError,
|
||||
inputsData,
|
||||
isTaskMode,
|
||||
stopOutputMessage,
|
||||
findReferenceByMessageId,
|
||||
appendUploadResponseList,
|
||||
@ -64,7 +59,8 @@ const ChatContainer = () => {
|
||||
addNewestOneAnswer,
|
||||
ok,
|
||||
resetSession,
|
||||
} = useSendNextSharedMessage(addEventList, isTaskMode);
|
||||
} = useSendNextSharedMessage(addEventList);
|
||||
|
||||
const { buildInputList, handleOk, isWaitting } = useAwaitCompentData({
|
||||
derivedMessages,
|
||||
sendFormMessage,
|
||||
@ -72,6 +68,12 @@ const ChatContainer = () => {
|
||||
});
|
||||
const sendDisabled = useSendButtonDisabled(value);
|
||||
|
||||
const showBeginParameterDialog = useCallback(() => {
|
||||
if (inputsData && inputsData.inputs && !isEmpty(inputsData.inputs)) {
|
||||
showParameterDialog();
|
||||
}
|
||||
}, [inputsData, showParameterDialog]);
|
||||
|
||||
const handleUploadFile: NonNullable<FileUploadProps['onUpload']> =
|
||||
useCallback(
|
||||
async (files, options) => {
|
||||
@ -96,10 +98,8 @@ const ChatContainer = () => {
|
||||
}, [inputsData.prologue, addNewestOneAnswer, isTaskMode]);
|
||||
|
||||
React.useEffect(() => {
|
||||
if (inputsData && inputsData.inputs && !isEmpty(inputsData.inputs)) {
|
||||
showParameterDialog();
|
||||
}
|
||||
}, [inputsData, showParameterDialog]);
|
||||
showBeginParameterDialog();
|
||||
}, [showBeginParameterDialog]);
|
||||
|
||||
const handleInputsModalOk = (params: any[]) => {
|
||||
ok(params);
|
||||
@ -107,10 +107,14 @@ const ChatContainer = () => {
|
||||
const handleReset = () => {
|
||||
resetSession();
|
||||
clearEventList();
|
||||
if (isTaskMode) {
|
||||
showBeginParameterDialog();
|
||||
}
|
||||
};
|
||||
if (!conversationId) {
|
||||
return <div>empty</div>;
|
||||
}
|
||||
|
||||
return (
|
||||
<>
|
||||
<EmbedContainer
|
||||
|
||||
Reference in New Issue
Block a user