mirror of
https://github.com/labring/FastGPT.git
synced 2025-07-29 01:40:51 +00:00
fix: sensitive check
This commit is contained in:
@@ -10,7 +10,7 @@ import { resStreamResponse } from '@/service/utils/chat';
|
|||||||
import { appKbSearch } from '../openapi/kb/appKbSearch';
|
import { appKbSearch } from '../openapi/kb/appKbSearch';
|
||||||
import { ChatRoleEnum, QUOTE_LEN_HEADER, GUIDE_PROMPT_HEADER } from '@/constants/chat';
|
import { ChatRoleEnum, QUOTE_LEN_HEADER, GUIDE_PROMPT_HEADER } from '@/constants/chat';
|
||||||
import { BillTypeEnum } from '@/constants/user';
|
import { BillTypeEnum } from '@/constants/user';
|
||||||
import { sensitiveCheck } from '@/service/api/text';
|
import { sensitiveCheck } from '../openapi/text/sensitiveCheck';
|
||||||
import { NEW_CHATID_HEADER } from '@/constants/chat';
|
import { NEW_CHATID_HEADER } from '@/constants/chat';
|
||||||
import { saveChat } from './saveChat';
|
import { saveChat } from './saveChat';
|
||||||
import { Types } from 'mongoose';
|
import { Types } from 'mongoose';
|
||||||
|
@@ -9,7 +9,7 @@ import { pushChatBill, updateShareChatBill } from '@/service/events/pushBill';
|
|||||||
import { resStreamResponse } from '@/service/utils/chat';
|
import { resStreamResponse } from '@/service/utils/chat';
|
||||||
import { ChatRoleEnum } from '@/constants/chat';
|
import { ChatRoleEnum } from '@/constants/chat';
|
||||||
import { BillTypeEnum } from '@/constants/user';
|
import { BillTypeEnum } from '@/constants/user';
|
||||||
import { sensitiveCheck } from '@/service/api/text';
|
import { sensitiveCheck } from '../../openapi/text/sensitiveCheck';
|
||||||
import { appKbSearch } from '../../openapi/kb/appKbSearch';
|
import { appKbSearch } from '../../openapi/kb/appKbSearch';
|
||||||
|
|
||||||
/* 发送提示词 */
|
/* 发送提示词 */
|
||||||
|
@@ -9,7 +9,7 @@ import { pushChatBill } from '@/service/events/pushBill';
|
|||||||
import { ChatRoleEnum } from '@/constants/chat';
|
import { ChatRoleEnum } from '@/constants/chat';
|
||||||
import { withNextCors } from '@/service/utils/tools';
|
import { withNextCors } from '@/service/utils/tools';
|
||||||
import { BillTypeEnum } from '@/constants/user';
|
import { BillTypeEnum } from '@/constants/user';
|
||||||
import { sensitiveCheck } from '@/service/api/text';
|
import { sensitiveCheck } from '../../openapi/text/sensitiveCheck';
|
||||||
import { NEW_CHATID_HEADER } from '@/constants/chat';
|
import { NEW_CHATID_HEADER } from '@/constants/chat';
|
||||||
import { Types } from 'mongoose';
|
import { Types } from 'mongoose';
|
||||||
import { appKbSearch } from '../kb/appKbSearch';
|
import { appKbSearch } from '../kb/appKbSearch';
|
||||||
|
@@ -2,43 +2,23 @@
|
|||||||
import type { NextApiRequest, NextApiResponse } from 'next';
|
import type { NextApiRequest, NextApiResponse } from 'next';
|
||||||
import { jsonRes } from '@/service/response';
|
import { jsonRes } from '@/service/response';
|
||||||
import { authUser, getSystemOpenAiKey } from '@/service/utils/auth';
|
import { authUser, getSystemOpenAiKey } from '@/service/utils/auth';
|
||||||
import type { TextPluginRequestParams } from '@/types/plugin';
|
|
||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
import { axiosConfig } from '@/service/utils/tools';
|
import { axiosConfig } from '@/service/utils/tools';
|
||||||
|
|
||||||
|
export type Props = {
|
||||||
|
input: string;
|
||||||
|
};
|
||||||
|
|
||||||
export default async function handler(req: NextApiRequest, res: NextApiResponse) {
|
export default async function handler(req: NextApiRequest, res: NextApiResponse) {
|
||||||
try {
|
try {
|
||||||
if (!global.systemEnv.sensitiveCheck) {
|
|
||||||
return jsonRes(res);
|
|
||||||
}
|
|
||||||
|
|
||||||
await authUser({ req });
|
await authUser({ req });
|
||||||
|
|
||||||
const { input } = req.body as TextPluginRequestParams;
|
const result = await sensitiveCheck(req.body);
|
||||||
|
|
||||||
const response = await axios({
|
jsonRes(res, {
|
||||||
...axiosConfig(getSystemOpenAiKey('chat')),
|
data: result,
|
||||||
method: 'POST',
|
message: result
|
||||||
url: `/moderations`,
|
|
||||||
data: {
|
|
||||||
input
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
const data = (response.data.results?.[0]?.category_scores as Record<string, number>) || {};
|
|
||||||
|
|
||||||
const values = Object.values(data);
|
|
||||||
|
|
||||||
for (const val of values) {
|
|
||||||
if (val > 0.2) {
|
|
||||||
return jsonRes(res, {
|
|
||||||
code: 500,
|
|
||||||
message: '您的内容不合规'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
jsonRes(res);
|
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
jsonRes(res, {
|
jsonRes(res, {
|
||||||
code: 500,
|
code: 500,
|
||||||
@@ -46,3 +26,30 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function sensitiveCheck({ input }: Props) {
|
||||||
|
if (!global.systemEnv.sensitiveCheck) {
|
||||||
|
return Promise.resolve('');
|
||||||
|
}
|
||||||
|
|
||||||
|
const response = await axios({
|
||||||
|
...axiosConfig(getSystemOpenAiKey('chat')),
|
||||||
|
method: 'POST',
|
||||||
|
url: `/moderations`,
|
||||||
|
data: {
|
||||||
|
input
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const data = (response.data.results?.[0]?.category_scores as Record<string, number>) || {};
|
||||||
|
|
||||||
|
const values = Object.values(data);
|
||||||
|
|
||||||
|
for (const val of values) {
|
||||||
|
if (val > 0.2) {
|
||||||
|
return Promise.reject('您的内容不合规');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
@@ -1,5 +0,0 @@
|
|||||||
import { POST } from './request';
|
|
||||||
import type { TextPluginRequestParams } from '@/types/plugin';
|
|
||||||
|
|
||||||
export const sensitiveCheck = (data: TextPluginRequestParams) =>
|
|
||||||
POST('/openapi/text/sensitiveCheck', data);
|
|
4
client/src/types/plugin.d.ts
vendored
4
client/src/types/plugin.d.ts
vendored
@@ -19,7 +19,3 @@ export type KbTestItemType = {
|
|||||||
time: Date;
|
time: Date;
|
||||||
results: (KbDataItemType & { score: number })[];
|
results: (KbDataItemType & { score: number })[];
|
||||||
};
|
};
|
||||||
|
|
||||||
export type TextPluginRequestParams = {
|
|
||||||
input: string;
|
|
||||||
};
|
|
||||||
|
Reference in New Issue
Block a user