diff --git a/client/src/pages/api/openapi/v1/chat/completions.ts b/client/src/pages/api/openapi/v1/chat/completions.ts index 48d82e73e..15480647c 100644 --- a/client/src/pages/api/openapi/v1/chat/completions.ts +++ b/client/src/pages/api/openapi/v1/chat/completions.ts @@ -414,13 +414,13 @@ function loadModules( }); } -function responseStatus({ +export function responseStatus({ res, status, name }: { res: NextApiResponse; - status: 'running' | 'finish'; + status?: 'running' | 'finish'; name?: string; }) { if (!name) return; @@ -428,7 +428,7 @@ function responseStatus({ res, event: sseResponseEventEnum.moduleStatus, data: JSON.stringify({ - status, + status: 'running', name }) }); diff --git a/client/src/service/api/plugins.ts b/client/src/service/api/plugins.ts index afb5dd325..e642732c5 100644 --- a/client/src/service/api/plugins.ts +++ b/client/src/service/api/plugins.ts @@ -3,3 +3,8 @@ import type { SendCodeBody, AuthCodeBody } from './plugins.d'; export const sendCode = (data: SendCodeBody) => POST(global.systemPlugins.authCode?.sendUrl, data); export const authCode = (data: AuthCodeBody) => POST(global.systemPlugins.authCode?.authUrl, data); + +export const textCensor = (data: { text: string }) => { + if (!global.systemPlugins.censor?.textUrl) return; + return POST(global.systemPlugins.censor?.textUrl, data); +}; diff --git a/client/src/service/api/request.ts b/client/src/service/api/request.ts index a7e5a2b0b..a57cbc8d1 100644 --- a/client/src/service/api/request.ts +++ b/client/src/service/api/request.ts @@ -109,21 +109,21 @@ function request(url: string, data: any, config: ConfigType, method: Method): an * @returns */ export function GET(url?: string, params = {}, config: ConfigType = {}): Promise { - if (!url) return Promise.reject('no url'); + if (!url) return Promise.reject('The Plugin is not installed'); return request(url, params, config, 'GET'); } export function POST(url?: string, data = {}, config: ConfigType = {}): Promise { - if (!url) return Promise.reject('no url'); + if (!url) return Promise.reject('The Plugin is not installed'); return request(url, data, config, 'POST'); } export function PUT(url?: string, data = {}, config: ConfigType = {}): Promise { - if (!url) return Promise.reject('no url'); + if (!url) return Promise.reject('The Plugin is not installed'); return request(url, data, config, 'PUT'); } export function DELETE(url?: string, data = {}, config: ConfigType = {}): Promise { - if (!url) return Promise.reject('no url'); + if (!url) return Promise.reject('The Plugin is not installed'); return request(url, data, config, 'DELETE'); } diff --git a/client/src/service/moduleDispatch/chat/oneapi.ts b/client/src/service/moduleDispatch/chat/oneapi.ts index a1f1b29e7..e0b72a998 100644 --- a/client/src/service/moduleDispatch/chat/oneapi.ts +++ b/client/src/service/moduleDispatch/chat/oneapi.ts @@ -15,6 +15,7 @@ import { getChatModel } from '@/service/utils/data'; import { countModelPrice } from '@/service/events/pushBill'; import { ChatModelItemType } from '@/types/model'; import { UserModelSchema } from '@/types/mongoSchema'; +import { textCensor } from '@/service/api/plugins'; export type ChatProps = { res: NextApiResponse; @@ -63,6 +64,14 @@ export const dispatchChatCompletion = async (props: Record): Promis model: modelConstantsData }); + await textCensor({ + text: `${systemPrompt} + ${quotePrompt} + ${limitPrompt} + ${userChatInput} + ` + }); + const { messages, filterMessages } = getChatMessages({ model: modelConstantsData, history, diff --git a/client/src/types/index.d.ts b/client/src/types/index.d.ts index 751951475..ace4beed2 100644 --- a/client/src/types/index.d.ts +++ b/client/src/types/index.d.ts @@ -37,8 +37,8 @@ export type PluginType = { sendUrl: string; authUrl: string; }; - moderationsCheck?: { - url: string; + censor?: { + textUrl?: string; }; };