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

* feat: plugin support upload files (#2716) * feat: plugin support file upload * file history * fix history & chattest * chore: code * plugin config icon & file preview padding * perf: undefined fn * fix: plugin file numbers & plugin template add config (#2743) * perf: run plugin without human message (#2749) * perf: run plugin without human message * fix build * fix build * rename node * perf: ui * perf: plugin rerun with last params & plugin log add file (#2755) * perf: plugin run with last params & plugin log add file * delete console * perf: plugin refresh code * fix: ts --------- Co-authored-by: heheer <heheer@sealos.io>
35 lines
1.2 KiB
TypeScript
35 lines
1.2 KiB
TypeScript
import { SearchDataResponseItemType } from '@fastgpt/global/core/dataset/type';
|
|
import { countPromptTokens } from '../../common/string/tiktoken/index';
|
|
import { getNanoid } from '@fastgpt/global/common/string/tools';
|
|
import { ChatRoleEnum } from '@fastgpt/global/core/chat/constants';
|
|
import {
|
|
getPluginInputsFromStoreNodes,
|
|
getPluginRunContent
|
|
} from '@fastgpt/global/core/app/plugin/utils';
|
|
import { StoreNodeItemType } from '@fastgpt/global/core/workflow/type/node';
|
|
import { RuntimeUserPromptType, UserChatItemType } from '@fastgpt/global/core/chat/type';
|
|
import { runtimePrompt2ChatsValue } from '@fastgpt/global/core/chat/adapt';
|
|
|
|
/* filter search result */
|
|
export const filterSearchResultsByMaxChars = async (
|
|
list: SearchDataResponseItemType[],
|
|
maxTokens: number
|
|
) => {
|
|
const results: SearchDataResponseItemType[] = [];
|
|
let totalTokens = 0;
|
|
|
|
for (let i = 0; i < list.length; i++) {
|
|
const item = list[i];
|
|
totalTokens += await countPromptTokens(item.q + item.a);
|
|
if (totalTokens > maxTokens + 500) {
|
|
break;
|
|
}
|
|
results.push(item);
|
|
if (totalTokens > maxTokens) {
|
|
break;
|
|
}
|
|
}
|
|
|
|
return results.length === 0 ? list.slice(0, 1) : results;
|
|
};
|