perf: http body parse (#3357)

* perf: http body parse

* perf: http body parse
This commit is contained in:
Archer
2024-12-10 11:19:46 +08:00
committed by GitHub
parent fd47f73086
commit 5cea6015c0
15 changed files with 88 additions and 61 deletions

View File

@@ -42,7 +42,8 @@ import {
filterWorkflowEdges,
checkNodeRunStatus,
textAdaptGptResponse,
replaceEditorVariable
replaceEditorVariable,
formatVariableValByType
} from '@fastgpt/global/core/workflow/runtime/utils';
import { ChatNodeUsageType } from '@fastgpt/global/support/wallet/bill/type';
import { dispatchRunTools } from './agent/runTool/index';
@@ -72,6 +73,7 @@ import { dispatchLoopEnd } from './loop/runLoopEnd';
import { dispatchLoopStart } from './loop/runLoopStart';
import { dispatchFormInput } from './interactive/formInput';
import { dispatchToolParams } from './agent/runTool/toolParams';
import { AppChatConfigType } from '@fastgpt/global/core/app/type';
const callbackMap: Record<FlowNodeTypeEnum, Function> = {
[FlowNodeTypeEnum.workflowStart]: dispatchWorkflowStart,
@@ -685,7 +687,7 @@ export async function dispatchWorkFlow(data: Props): Promise<DispatchFlowRespons
}
/* get system variable */
export function getSystemVariable({
const getSystemVariable = ({
user,
runningAppInfo,
chatId,
@@ -693,7 +695,7 @@ export function getSystemVariable({
histories = [],
uid,
chatConfig
}: Props): SystemVariablesType {
}: Props): SystemVariablesType => {
const variables = chatConfig?.variables || [];
const variablesMap = variables.reduce<Record<string, any>>((acc, item) => {
acc[item.key] = valueTypeFormat(item.defaultValue, item.valueType);
@@ -709,10 +711,10 @@ export function getSystemVariable({
histories,
cTime: getSystemTime(user.timezone)
};
}
};
/* Merge consecutive text messages into one */
export const mergeAssistantResponseAnswerText = (response: AIChatItemValueItemType[]) => {
const mergeAssistantResponseAnswerText = (response: AIChatItemValueItemType[]) => {
const result: AIChatItemValueItemType[] = [];
// 合并连续的text
for (let i = 0; i < response.length; i++) {

View File

@@ -24,6 +24,7 @@ import { ReadFileBaseUrl } from '@fastgpt/global/common/file/constants';
import { createFileToken } from '../../../../support/permission/controller';
import { JSONPath } from 'jsonpath-plus';
import type { SystemPluginSpecialResponse } from '../../../../../plugins/type';
import json5 from 'json5';
type PropsArrType = {
key: string;
@@ -103,8 +104,6 @@ export const dispatchHttp468Request = async (props: HttpRequestProps): Promise<H
[NodeInputKeyEnum.addInputParam]: concatVariables,
...concatVariables
};
httpReqUrl = replaceVariable(httpReqUrl, allVariables);
const replaceStringVariables = (text: string) => {
return replaceVariable(
replaceEditorVariable({
@@ -116,6 +115,8 @@ export const dispatchHttp468Request = async (props: HttpRequestProps): Promise<H
);
};
httpReqUrl = replaceStringVariables(httpReqUrl);
// parse header
const headers = await (() => {
try {
@@ -175,9 +176,11 @@ export const dispatchHttp468Request = async (props: HttpRequestProps): Promise<H
}
if (!httpJsonBody) return {};
if (httpContentType === ContentTypes.json) {
httpJsonBody = replaceVariable(httpJsonBody, allVariables);
httpJsonBody = replaceStringVariables(httpJsonBody);
// Json body, parse and return
const jsonParse = JSON.parse(httpJsonBody);
const jsonParse = json5.parse(
httpJsonBody.replace(/(".*?")\s*:\s*undefined\b/g, '$1: null')
);
const removeSignJson = removeUndefinedSign(jsonParse);
return removeSignJson;
}
@@ -195,7 +198,7 @@ export const dispatchHttp468Request = async (props: HttpRequestProps): Promise<H
return Object.fromEntries(requestBody);
} else if (typeof requestBody === 'string') {
try {
return JSON.parse(requestBody);
return json5.parse(requestBody);
} catch {
return { content: requestBody };
}