mirror of
https://github.com/infiniflow/ragflow.git
synced 2025-12-08 20:42:30 +08:00
### What problem does this PR solve? The agent directly outputs the results under the task model #9745 ### Type of change - [x] New Feature (non-breaking change which adds functionality)
This commit is contained in:
@ -18,13 +18,23 @@ import i18n from '@/locales/config';
|
||||
import api from '@/utils/api';
|
||||
import { get } from 'lodash';
|
||||
import trim from 'lodash/trim';
|
||||
import { useCallback, useContext, useEffect, useMemo, useState } from 'react';
|
||||
import {
|
||||
useCallback,
|
||||
useContext,
|
||||
useEffect,
|
||||
useMemo,
|
||||
useRef,
|
||||
useState,
|
||||
} from 'react';
|
||||
import { useParams } from 'umi';
|
||||
import { v4 as uuid } from 'uuid';
|
||||
import { BeginId } from '../constant';
|
||||
import { AgentChatLogContext } from '../context';
|
||||
import { transferInputsArrayToObject } from '../form/begin-form/use-watch-change';
|
||||
import { useSelectBeginNodeDataInputs } from '../hooks/use-get-begin-query';
|
||||
import {
|
||||
useIsTaskMode,
|
||||
useSelectBeginNodeDataInputs,
|
||||
} from '../hooks/use-get-begin-query';
|
||||
import { BeginQuery } from '../interface';
|
||||
import useGraphStore from '../store';
|
||||
import { receiveMessageError } from '../utils';
|
||||
@ -173,10 +183,22 @@ export function useSetUploadResponseData() {
|
||||
};
|
||||
}
|
||||
|
||||
export const buildRequestBody = (value: string = '') => {
|
||||
const id = uuid();
|
||||
const msgBody = {
|
||||
id,
|
||||
content: value.trim(),
|
||||
role: MessageType.User,
|
||||
};
|
||||
|
||||
return msgBody;
|
||||
};
|
||||
|
||||
export const useSendAgentMessage = (
|
||||
url?: string,
|
||||
addEventList?: (data: IEventList, messageId: string) => void,
|
||||
beginParams?: any[],
|
||||
isShared?: boolean,
|
||||
) => {
|
||||
const { id: agentId } = useParams();
|
||||
const { handleInputChange, value, setValue } = useHandleMessageInputChange();
|
||||
@ -188,7 +210,9 @@ export const useSendAgentMessage = (
|
||||
return answerList[0]?.message_id;
|
||||
}, [answerList]);
|
||||
|
||||
// const { refetch } = useFetchAgent();
|
||||
const isTaskMode = useIsTaskMode();
|
||||
|
||||
// const { refetch } = useFetchAgent(); // This will cause the shared page to also send a request
|
||||
|
||||
const { findReferenceByMessageId } = useFindMessageReference(answerList);
|
||||
const prologue = useGetBeginNodePrologue();
|
||||
@ -212,7 +236,14 @@ export const useSendAgentMessage = (
|
||||
} = useSetUploadResponseData();
|
||||
|
||||
const sendMessage = useCallback(
|
||||
async ({ message }: { message: Message; messages?: Message[] }) => {
|
||||
async ({
|
||||
message,
|
||||
beginInputs,
|
||||
}: {
|
||||
message: Message;
|
||||
messages?: Message[];
|
||||
beginInputs?: BeginQuery[];
|
||||
}) => {
|
||||
const params: Record<string, unknown> = {
|
||||
id: agentId,
|
||||
};
|
||||
@ -220,13 +251,13 @@ export const useSendAgentMessage = (
|
||||
params.running_hint_text = i18n.t('flow.runningHintText', {
|
||||
defaultValue: 'is running...🕞',
|
||||
});
|
||||
if (message.content) {
|
||||
if (typeof message.content === 'string') {
|
||||
const query = inputs;
|
||||
|
||||
params.query = message.content;
|
||||
// params.message_id = message.id;
|
||||
params.inputs = transferInputsArrayToObject(
|
||||
beginParams ? beginParams : query,
|
||||
beginInputs || beginParams || query,
|
||||
); // begin operator inputs
|
||||
|
||||
params.files = uploadResponseList;
|
||||
@ -289,12 +320,7 @@ export const useSendAgentMessage = (
|
||||
|
||||
const handlePressEnter = useCallback(() => {
|
||||
if (trim(value) === '') return;
|
||||
const id = uuid();
|
||||
const msgBody = {
|
||||
id,
|
||||
content: value.trim(),
|
||||
role: MessageType.User,
|
||||
};
|
||||
const msgBody = buildRequestBody(value);
|
||||
if (done) {
|
||||
setValue('');
|
||||
sendMessage({
|
||||
@ -315,6 +341,24 @@ export const useSendAgentMessage = (
|
||||
scrollToBottom,
|
||||
]);
|
||||
|
||||
const sendedTaskMessage = useRef<boolean>(false);
|
||||
|
||||
const sendMessageInTaskMode = useCallback(() => {
|
||||
if (isShared || !isTaskMode || sendedTaskMessage.current) {
|
||||
return;
|
||||
}
|
||||
const msgBody = buildRequestBody('');
|
||||
|
||||
sendMessage({
|
||||
message: msgBody,
|
||||
});
|
||||
sendedTaskMessage.current = true;
|
||||
}, [isShared, isTaskMode, sendMessage]);
|
||||
|
||||
useEffect(() => {
|
||||
sendMessageInTaskMode();
|
||||
}, [sendMessageInTaskMode]);
|
||||
|
||||
useEffect(() => {
|
||||
const { content, id } = findMessageFromList(answerList);
|
||||
const inputAnswer = findInputFromList(answerList);
|
||||
@ -328,12 +372,22 @@ export const useSendAgentMessage = (
|
||||
}, [answerList, addNewestOneAnswer]);
|
||||
|
||||
useEffect(() => {
|
||||
if (isTaskMode) {
|
||||
return;
|
||||
}
|
||||
if (prologue) {
|
||||
addNewestOneAnswer({
|
||||
answer: prologue,
|
||||
});
|
||||
}
|
||||
}, [addNewestOneAnswer, agentId, prologue, send, sendFormMessage]);
|
||||
}, [
|
||||
addNewestOneAnswer,
|
||||
agentId,
|
||||
isTaskMode,
|
||||
prologue,
|
||||
send,
|
||||
sendFormMessage,
|
||||
]);
|
||||
|
||||
useEffect(() => {
|
||||
if (typeof addEventList === 'function') {
|
||||
@ -365,5 +419,6 @@ export const useSendAgentMessage = (
|
||||
findReferenceByMessageId,
|
||||
appendUploadResponseList,
|
||||
addNewestOneAnswer,
|
||||
sendMessage,
|
||||
};
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user