diff --git a/packages/service/common/api/type.d.ts b/packages/service/common/api/type.d.ts new file mode 100644 index 000000000000..1e233c6fb3b8 --- /dev/null +++ b/packages/service/common/api/type.d.ts @@ -0,0 +1,24 @@ +import { FeishuServer, YuqueServer } from '@fastgpt/global/core/dataset/apiDataset'; +import { + DeepRagSearchProps, + SearchDatasetDataResponse +} from '../../core/dataset/search/controller'; +import { AuthOpenApiLimitProps } from '../../support/openapi/auth'; +import { CreateUsageProps, ConcatUsageProps } from '@fastgpt/global/support/wallet/usage/api'; + +declare global { + var systemApiDatasetHandler: (params: { + type: 'content'; + feishuServer?: FeishuServer; + yuqueServer?: YuqueServer; + apiFileId: string; + }) => Promise<{ + title?: string; + rawText: string; + }>; + var textCensorHandler: (params: { text: string }) => Promise<{ code?: number; message: string }>; + var deepRagHandler: (data: DeepRagSearchProps) => Promise; + var authOpenApiHandler: (data: AuthOpenApiLimitProps) => Promise; + var createUsageHandler: (data: CreateUsageProps) => Promise; + var concatUsageHandler: (data: ConcatUsageProps) => Promise; +} diff --git a/packages/service/common/api/requestPlusApi.ts b/packages/service/core/chat/postTextCensor.ts similarity index 73% rename from packages/service/common/api/requestPlusApi.ts rename to packages/service/core/chat/postTextCensor.ts index 100d6cd56a78..3d44ed4d4412 100644 --- a/packages/service/common/api/requestPlusApi.ts +++ b/packages/service/core/chat/postTextCensor.ts @@ -1,7 +1,6 @@ -import { POST } from './plusRequest'; - export const postTextCensor = (data: { text: string }) => - POST<{ code?: number; message: string }>('/common/censor/check', data) + global + .textCensorHandler(data) .then((res) => { if (res?.code === 5000) { return Promise.reject(res); diff --git a/packages/service/core/dataset/read.ts b/packages/service/core/dataset/read.ts index 448396cc3098..e310f1480857 100644 --- a/packages/service/core/dataset/read.ts +++ b/packages/service/core/dataset/read.ts @@ -9,7 +9,6 @@ import { readRawContentByFileBuffer } from '../../common/file/read/utils'; import { parseFileExtensionFromUrl } from '@fastgpt/global/common/string/tools'; import { APIFileServer, FeishuServer, YuqueServer } from '@fastgpt/global/core/dataset/apiDataset'; import { useApiDatasetRequest } from './apiDataset/api'; -import { POST } from '../../common/api/plusRequest'; export const readFileRawTextByUrl = async ({ teamId, @@ -168,10 +167,7 @@ export const readApiServerFileContent = async ({ } if (feishuServer || yuqueServer) { - return POST<{ - title?: string; - rawText: string; - }>(`/core/dataset/systemApiDataset`, { + return global.systemApiDatasetHandler({ type: 'content', feishuServer, yuqueServer, diff --git a/packages/service/core/dataset/search/controller.ts b/packages/service/core/dataset/search/controller.ts index 9f59aba8d9c7..1b13db59211a 100644 --- a/packages/service/core/dataset/search/controller.ts +++ b/packages/service/core/dataset/search/controller.ts @@ -24,7 +24,6 @@ import { MongoDatasetCollectionTags } from '../tag/schema'; import { readFromSecondary } from '../../../common/mongo/utils'; import { MongoDatasetDataText } from '../data/dataTextSchema'; import { ChatItemType } from '@fastgpt/global/core/chat/type'; -import { POST } from '../../../common/api/plusRequest'; import { NodeInputKeyEnum } from '@fastgpt/global/core/workflow/constants'; import { datasetSearchQueryExtension } from './utils'; import type { RerankModelItemType } from '@fastgpt/global/core/ai/model.d'; @@ -850,5 +849,4 @@ export type DeepRagSearchProps = SearchDatasetDataProps & { [NodeInputKeyEnum.datasetDeepSearchMaxTimes]?: number; [NodeInputKeyEnum.datasetDeepSearchBg]?: string; }; -export const deepRagSearch = (data: DeepRagSearchProps) => - POST('/core/dataset/deepRag', data); +export const deepRagSearch = (data: DeepRagSearchProps) => global.deepRagHandler(data); diff --git a/packages/service/core/workflow/dispatch/agent/runTool/index.ts b/packages/service/core/workflow/dispatch/agent/runTool/index.ts index 08c9ff85bbdc..cfcd70aeade8 100644 --- a/packages/service/core/workflow/dispatch/agent/runTool/index.ts +++ b/packages/service/core/workflow/dispatch/agent/runTool/index.ts @@ -29,9 +29,9 @@ import { InteractiveNodeResponseType } from '@fastgpt/global/core/workflow/templ import { getFileContentFromLinks, getHistoryFileLinks } from '../../tools/readFiles'; import { parseUrlToFileType } from '@fastgpt/global/common/file/tools'; import { FlowNodeTypeEnum } from '@fastgpt/global/core/workflow/node/constant'; -import { postTextCensor } from '../../../../../common/api/requestPlusApi'; import { ModelTypeEnum } from '@fastgpt/global/core/ai/model'; import { getDocumentQuotePrompt } from '@fastgpt/global/core/ai/prompt/AIChat'; +import { postTextCensor } from '../../../../../core/chat/postTextCensor'; type Response = DispatchNodeResultType<{ [NodeOutputKeyEnum.answerText]: string; diff --git a/packages/service/core/workflow/dispatch/chat/oneapi.ts b/packages/service/core/workflow/dispatch/chat/oneapi.ts index 1e60ec388146..babbae42e777 100644 --- a/packages/service/core/workflow/dispatch/chat/oneapi.ts +++ b/packages/service/core/workflow/dispatch/chat/oneapi.ts @@ -13,7 +13,6 @@ import type { } from '@fastgpt/global/core/ai/type.d'; import { formatModelChars2Points } from '../../../../support/wallet/usage/utils'; import type { LLMModelItemType } from '@fastgpt/global/core/ai/model.d'; -import { postTextCensor } from '../../../../common/api/requestPlusApi'; import { ChatCompletionRequestMessageRoleEnum } from '@fastgpt/global/core/ai/constants'; import type { ChatDispatchProps, @@ -51,6 +50,7 @@ import { getFileContentFromLinks, getHistoryFileLinks } from '../tools/readFiles import { parseUrlToFileType } from '@fastgpt/global/common/file/tools'; import { i18nT } from '../../../../../web/i18n/utils'; import { ModelTypeEnum } from '@fastgpt/global/core/ai/model'; +import { postTextCensor } from '../../../chat/postTextCensor'; export type ChatProps = ModuleDispatchProps< AIChatNodeProps & { diff --git a/packages/service/support/openapi/auth.ts b/packages/service/support/openapi/auth.ts index 88f90f5913fb..80352a3a3b8e 100644 --- a/packages/service/support/openapi/auth.ts +++ b/packages/service/support/openapi/auth.ts @@ -1,7 +1,6 @@ import { ERROR_ENUM } from '@fastgpt/global/common/error/errorCode'; import { updateApiKeyUsedTime } from './tools'; import { MongoOpenApi } from './schema'; -import { POST } from '../../common/api/plusRequest'; import type { OpenApiSchema } from '@fastgpt/global/support/openapi/type'; export type AuthOpenApiLimitProps = { openApi: OpenApiSchema }; @@ -17,9 +16,8 @@ export async function authOpenApiKey({ apikey }: { apikey: string }) { } // auth limit - // @ts-ignore if (global.feConfigs?.isPlus) { - await POST('/support/openapi/authLimit', { + await global.authOpenApiHandler({ openApi } as AuthOpenApiLimitProps); } diff --git a/packages/service/support/wallet/usage/controller.ts b/packages/service/support/wallet/usage/controller.ts index b9b6dcd1bba6..fce7f17fe8d7 100644 --- a/packages/service/support/wallet/usage/controller.ts +++ b/packages/service/support/wallet/usage/controller.ts @@ -7,14 +7,13 @@ import { ConcatUsageProps, CreateUsageProps } from '@fastgpt/global/support/wall import { i18nT } from '../../../../web/i18n/utils'; import { pushConcatBillTask, pushReduceTeamAiPointsTask } from './utils'; -import { POST } from '../../../common/api/plusRequest'; import { isFastGPTMainService } from '../../../common/system/constants'; export async function createUsage(data: CreateUsageProps) { try { // In FastGPT server if (isFastGPTMainService) { - await POST('/support/wallet/usage/createUsage', data); + await global.createUsageHandler(data); } else if (global.reduceAiPointsQueue) { // In FastGPT pro server await MongoUsage.create(data); @@ -32,7 +31,7 @@ export async function concatUsage(data: ConcatUsageProps) { try { // In FastGPT server if (isFastGPTMainService) { - await POST('/support/wallet/usage/concatUsage', data); + await global.concatUsageHandler(data); } else if (global.reduceAiPointsQueue) { const { teamId, diff --git a/projects/app/src/service/common/system/index.ts b/projects/app/src/service/common/system/index.ts index cb5c2de89381..fdca4ab0b2c8 100644 --- a/projects/app/src/service/common/system/index.ts +++ b/projects/app/src/service/common/system/index.ts @@ -11,6 +11,14 @@ import { defaultGroup, defaultTemplateTypes } from '@fastgpt/web/core/workflow/c import { MongoPluginGroups } from '@fastgpt/service/core/app/plugin/pluginGroupSchema'; import { MongoTemplateTypes } from '@fastgpt/service/core/app/templates/templateTypeSchema'; import { loadSystemModels } from '@fastgpt/service/core/ai/config/utils'; +import { FeishuServer, YuqueServer } from '@fastgpt/global/core/dataset/apiDataset'; +import { POST } from '@fastgpt/service/common/api/plusRequest'; +import { + DeepRagSearchProps, + SearchDatasetDataResponse +} from '@fastgpt/service/core/dataset/search/controller'; +import { AuthOpenApiLimitProps } from '@fastgpt/service/support/openapi/auth'; +import { ConcatUsageProps, CreateUsageProps } from '@fastgpt/global/support/wallet/usage/api'; export const readConfigData = async (name: string) => { const splitName = name.split('.'); @@ -42,6 +50,58 @@ export function initGlobalVariables() { global.qaQueueLen = global.qaQueueLen ?? 0; global.vectorQueueLen = global.vectorQueueLen ?? 0; initHttpAgent(); + initPlusRequest(); +} + +function initPlusRequest() { + function systemApiDatasetHandler({ + type, + feishuServer, + yuqueServer, + apiFileId + }: { + type: 'content'; + feishuServer?: FeishuServer; + yuqueServer?: YuqueServer; + apiFileId: string; + }) { + return POST<{ + title?: string; + rawText: string; + }>(`/core/dataset/systemApiDataset`, { + type, + feishuServer, + yuqueServer, + apiFileId + }); + } + + function textCensorHandler({ text }: { text: string }) { + return POST<{ code?: number; message: string }>('/common/censor/check', { text }); + } + + function deepRagHandler(data: DeepRagSearchProps) { + return POST('/core/dataset/deepRag', data); + } + + function authOpenApiHandler(data: AuthOpenApiLimitProps) { + return POST('/support/openapi/auth', data); + } + + function createUsageHandler(data: CreateUsageProps) { + return POST('/support/wallet/usage/createUsage', data); + } + + function concatUsageHandler(data: ConcatUsageProps) { + return POST('/support/wallet/usage/concatUsage', data); + } + + global.systemApiDatasetHandler = systemApiDatasetHandler; + global.textCensorHandler = textCensorHandler; + global.deepRagHandler = deepRagHandler; + global.authOpenApiHandler = authOpenApiHandler; + global.createUsageHandler = createUsageHandler; + global.concatUsageHandler = concatUsageHandler; } /* Init system data(Need to connected db). It only needs to run once */