This commit is contained in:
Archer
2025-04-07 10:55:53 +08:00
committed by GitHub
parent 4207ecaaaa
commit 7ee616515d
7 changed files with 39 additions and 25 deletions

View File

@@ -18,6 +18,7 @@ import { ChatItemContext } from '@/web/core/chat/context/chatItemContext';
import { ChatRecordContext } from '@/web/core/chat/context/chatRecordContext';
import { AppFileSelectConfigType } from '@fastgpt/global/core/app/type';
import { defaultAppSelectFileConfig } from '@fastgpt/global/core/app/constants';
import { mergeChatResponseData } from '@fastgpt/global/core/chat/utils';
type PluginRunContextType = PluginRunBoxProps & {
isChatting: boolean;
@@ -46,11 +47,12 @@ const PluginRunContextProvider = ({
const pluginInputs = useContextSelector(ChatItemContext, (v) => v.chatBoxData?.app?.pluginInputs);
const setTab = useContextSelector(ChatItemContext, (v) => v.setPluginRunTab);
const variablesForm = useContextSelector(ChatItemContext, (v) => v.variablesForm);
const chatConfig = useContextSelector(ChatItemContext, (v) => v.chatBoxData?.app?.chatConfig);
const setChatRecords = useContextSelector(ChatRecordContext, (v) => v.setChatRecords);
const chatRecords = useContextSelector(ChatRecordContext, (v) => v.chatRecords);
const chatConfig = useContextSelector(ChatItemContext, (v) => v.chatBoxData?.app?.chatConfig);
const { instruction = '', fileSelectConfig = defaultAppSelectFileConfig } = useMemo(
() => chatConfig || {},
[chatConfig]
@@ -65,7 +67,7 @@ const PluginRunContextProvider = ({
}, []);
const generatingMessage = useCallback(
({ event, text = '', status, name, tool }: generatingMessageProps) => {
({ event, text = '', status, name, tool, nodeResponse, variables }: generatingMessageProps) => {
setChatRecords((state) =>
state.map((item, index) => {
if (index !== state.length - 1 || item.obj !== ChatRoleEnum.AI) return item;
@@ -74,7 +76,14 @@ const PluginRunContextProvider = ({
JSON.stringify(item.value[item.value.length - 1])
);
if (event === SseResponseEventEnum.flowNodeStatus && status) {
if (event === SseResponseEventEnum.flowNodeResponse && nodeResponse) {
return {
...item,
responseData: item.responseData
? [...item.responseData, nodeResponse]
: [nodeResponse]
};
} else if (event === SseResponseEventEnum.flowNodeStatus && status) {
return {
...item,
status,
@@ -144,13 +153,15 @@ const PluginRunContextProvider = ({
return val;
})
};
} else if (event === SseResponseEventEnum.updateVariables && variables) {
variablesForm.setValue('variables', variables);
}
return item;
})
);
},
[setChatRecords]
[setChatRecords, variablesForm]
);
const isChatting = useMemo(
@@ -226,7 +237,7 @@ const PluginRunContextProvider = ({
}
}
const { responseData } = await onStartChat({
await onStartChat({
messages,
controller: chatController.current,
generatingMessage,
@@ -235,16 +246,20 @@ const PluginRunContextProvider = ({
...formatVariables
}
});
if (responseData?.[responseData.length - 1]?.error) {
toast({
title: responseData[responseData.length - 1].error?.message,
status: 'error'
});
}
setChatRecords((state) =>
state.map((item, index) => {
if (index !== state.length - 1) return item;
// Check node response error
const responseData = mergeChatResponseData(item.responseData || []);
if (responseData[responseData.length - 1]?.error) {
toast({
title: t(responseData[responseData.length - 1].error?.message),
status: 'error'
});
}
return {
...item,
status: 'finish',

View File

@@ -48,7 +48,7 @@ export const useChatTest = ({
const histories = messages.slice(-1);
// 流请求,获取数据
const { responseText, responseData } = await streamFetch({
const { responseText } = await streamFetch({
url: '/api/core/chat/chatTest',
data: {
// Send histories and user messages
@@ -66,7 +66,7 @@ export const useChatTest = ({
abortCtrl: controller
});
return { responseText, responseData };
return { responseText };
}
);

View File

@@ -115,7 +115,7 @@ const Chat = ({ myApps }: { myApps: AppListItemType[] }) => {
}: StartChatFnProps) => {
// Just send a user prompt
const histories = messages.slice(-1);
const { responseText, responseData } = await streamFetch({
const { responseText } = await streamFetch({
data: {
messages: histories,
variables,
@@ -137,7 +137,7 @@ const Chat = ({ myApps }: { myApps: AppListItemType[] }) => {
title: newTitle
}));
return { responseText, responseData, isNewChat: forbidLoadChat.current };
return { responseText, isNewChat: forbidLoadChat.current };
},
[appId, chatId, onUpdateHistoryTitle, setChatBoxData, forbidLoadChat]
);

View File

@@ -151,7 +151,7 @@ const OutLink = (props: Props) => {
'*'
);
const { responseText, responseData } = await streamFetch({
const { responseText } = await streamFetch({
data: {
messages: histories,
variables: {
@@ -192,7 +192,7 @@ const OutLink = (props: Props) => {
'*'
);
return { responseText, responseData, isNewChat: forbidLoadChat.current };
return { responseText, isNewChat: forbidLoadChat.current };
},
[
chatId,

View File

@@ -112,7 +112,7 @@ const Chat = ({ myApps }: { myApps: AppListItemType[] }) => {
// Just send a user prompt
const histories = messages.slice(-1);
const { responseText, responseData } = await streamFetch({
const { responseText } = await streamFetch({
data: {
messages: histories,
variables: {
@@ -144,7 +144,7 @@ const Chat = ({ myApps }: { myApps: AppListItemType[] }) => {
title: newTitle
}));
return { responseText, responseData, isNewChat: forbidLoadChat.current };
return { responseText, isNewChat: forbidLoadChat.current };
},
[
chatId,