import { type SearchDataResponseItemType } from '@fastgpt/global/core/dataset/type'; import { countPromptTokens } from '../../common/string/tiktoken/index'; /* 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; };