mirror of
https://github.com/labring/FastGPT.git
synced 2025-07-23 13:03:50 +00:00

* fix if-else find variables (#92) * fix if-else find variables * change workflow output type * fix tooltip style * fix * 4.8 (#93) * api middleware * perf: app version histories * faq * perf: value type show * fix: ts * fix: Run the same node multiple times * feat: auto save workflow * perf: auto save workflow --------- Co-authored-by: heheer <71265218+newfish-cmyk@users.noreply.github.com>
66 lines
1.6 KiB
TypeScript
66 lines
1.6 KiB
TypeScript
import { AppSchema } from '@fastgpt/global/core/app/type';
|
|
import { NodeInputKeyEnum } from '@fastgpt/global/core/workflow/constants';
|
|
import { FlowNodeTypeEnum } from '@fastgpt/global/core/workflow/node/constant';
|
|
import { getLLMModel } from '../ai/model';
|
|
import { MongoAppVersion } from './versionSchema';
|
|
|
|
export const beforeUpdateAppFormat = <T extends AppSchema['modules'] | undefined>({
|
|
nodes
|
|
}: {
|
|
nodes: T;
|
|
}) => {
|
|
if (nodes) {
|
|
let maxTokens = 3000;
|
|
|
|
nodes.forEach((item) => {
|
|
if (
|
|
item.flowNodeType === FlowNodeTypeEnum.chatNode ||
|
|
item.flowNodeType === FlowNodeTypeEnum.tools
|
|
) {
|
|
const model =
|
|
item.inputs.find((item) => item.key === NodeInputKeyEnum.aiModel)?.value || '';
|
|
const chatModel = getLLMModel(model);
|
|
const quoteMaxToken = chatModel.quoteMaxToken || 3000;
|
|
|
|
maxTokens = Math.max(maxTokens, quoteMaxToken);
|
|
}
|
|
});
|
|
|
|
nodes.forEach((item) => {
|
|
if (item.flowNodeType === FlowNodeTypeEnum.datasetSearchNode) {
|
|
item.inputs.forEach((input) => {
|
|
if (input.key === NodeInputKeyEnum.datasetMaxTokens) {
|
|
const val = input.value as number;
|
|
if (val > maxTokens) {
|
|
input.value = maxTokens;
|
|
}
|
|
}
|
|
});
|
|
}
|
|
});
|
|
}
|
|
|
|
return {
|
|
nodes
|
|
};
|
|
};
|
|
|
|
export const getAppLatestVersion = async (appId: string, app?: AppSchema) => {
|
|
const version = await MongoAppVersion.findOne({
|
|
appId
|
|
}).sort({
|
|
time: -1
|
|
});
|
|
|
|
if (version) {
|
|
return {
|
|
nodes: version.nodes,
|
|
edges: version.edges
|
|
};
|
|
}
|
|
return {
|
|
nodes: app?.modules || [],
|
|
edges: app?.edges || []
|
|
};
|
|
};
|