mirror of
https://github.com/labring/FastGPT.git
synced 2025-07-27 08:25:07 +00:00
perf: qa
This commit is contained in:
@@ -10,8 +10,9 @@
|
||||
},
|
||||
"SystemParams": {
|
||||
"beianText": "",
|
||||
"googleVerKey": "",
|
||||
"baiduTongji": "",
|
||||
"googleClientVerKey": "",
|
||||
"googleServiceVerKey": "",
|
||||
"vectorMaxProcess": 15,
|
||||
"qaMaxProcess": 15,
|
||||
"pgIvfflatProbe": 20,
|
||||
|
@@ -4,7 +4,7 @@ import { UserAuthTypeEnum } from '@/constants/common';
|
||||
let timer: any;
|
||||
import { useToast } from './useToast';
|
||||
import { getClientToken } from '@/utils/plugin/google';
|
||||
import { googleVerKey } from '@/store/static';
|
||||
import { googleClientVerKey } from '@/store/static';
|
||||
|
||||
export const useSendCode = () => {
|
||||
const { toast } = useToast();
|
||||
@@ -27,7 +27,7 @@ export const useSendCode = () => {
|
||||
await sendAuthCode({
|
||||
username,
|
||||
type,
|
||||
googleToken: await getClientToken(googleVerKey)
|
||||
googleToken: await getClientToken(googleClientVerKey)
|
||||
});
|
||||
setCodeCountDown(60);
|
||||
timer = setInterval(() => {
|
||||
|
@@ -31,7 +31,7 @@ const queryClient = new QueryClient({
|
||||
});
|
||||
|
||||
function App({ Component, pageProps, isPc }: AppProps & { isPc?: boolean; response: any }) {
|
||||
const [googleVerKey, setGoogleVerKey] = useState<string>();
|
||||
const [googleClientVerKey, setGoogleVerKey] = useState<string>();
|
||||
const [baiduTongji, setBaiduTongji] = useState<string>();
|
||||
const { initIsPc } = useGlobalStore();
|
||||
|
||||
@@ -42,9 +42,9 @@ function App({ Component, pageProps, isPc }: AppProps & { isPc?: boolean; respon
|
||||
useEffect(() => {
|
||||
(async () => {
|
||||
const {
|
||||
systemEnv: { googleVerKey, baiduTongji }
|
||||
systemEnv: { googleClientVerKey, baiduTongji }
|
||||
} = await clientInitData();
|
||||
setGoogleVerKey(googleVerKey);
|
||||
setGoogleVerKey(googleClientVerKey);
|
||||
setBaiduTongji(baiduTongji);
|
||||
})();
|
||||
}, []);
|
||||
@@ -65,10 +65,10 @@ function App({ Component, pageProps, isPc }: AppProps & { isPc?: boolean; respon
|
||||
<Script src="/js/pdf.js" strategy="lazyOnload"></Script>
|
||||
<Script src="/js/html2pdf.bundle.min.js" strategy="lazyOnload"></Script>
|
||||
{baiduTongji && <Script src={baiduTongji} strategy="lazyOnload"></Script>}
|
||||
{googleVerKey && (
|
||||
{googleClientVerKey && (
|
||||
<>
|
||||
<Script
|
||||
src={`https://www.recaptcha.net/recaptcha/api.js?render=${googleVerKey}`}
|
||||
src={`https://www.recaptcha.net/recaptcha/api.js?render=${googleClientVerKey}`}
|
||||
strategy="afterInteractive"
|
||||
></Script>
|
||||
</>
|
||||
|
@@ -23,9 +23,9 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
|
||||
}
|
||||
|
||||
// google auth
|
||||
process.env.SERVICE_GOOGLE_VER_TOKEN &&
|
||||
global.systemEnv.googleServiceVerKey &&
|
||||
(await authGoogleToken({
|
||||
secret: process.env.SERVICE_GOOGLE_VER_TOKEN,
|
||||
secret: global.systemEnv.googleServiceVerKey,
|
||||
response: googleToken,
|
||||
remoteip: requestIp.getClientIp(req) || undefined
|
||||
}));
|
||||
|
@@ -7,6 +7,8 @@ import { sendInform } from '@/pages/api/user/inform/send';
|
||||
import { authBalanceByUid } from '../utils/auth';
|
||||
import { axiosConfig, getOpenAIApi } from '../ai/openai';
|
||||
import { ChatCompletionRequestMessage } from 'openai';
|
||||
import { modelToolMap } from '@/utils/plugin';
|
||||
import { gptMessage2ChatType } from '@/utils/adapt';
|
||||
|
||||
const reduceQueue = () => {
|
||||
global.qaQueueLen = global.qaQueueLen > 0 ? global.qaQueueLen - 1 : 0;
|
||||
@@ -58,6 +60,8 @@ export async function generateQA(): Promise<any> {
|
||||
// 请求 chatgpt 获取回答
|
||||
const response = await Promise.all(
|
||||
[data.q].map((text) => {
|
||||
const modelTokenLimit =
|
||||
chatModels.find((item) => item.model === data.model)?.contextMaxToken || 16000;
|
||||
const messages: ChatCompletionRequestMessage[] = [
|
||||
{
|
||||
role: 'system',
|
||||
@@ -74,13 +78,20 @@ A2:
|
||||
content: text
|
||||
}
|
||||
];
|
||||
|
||||
const promptsToken = modelToolMap.countTokens({
|
||||
messages: gptMessage2ChatType(messages)
|
||||
});
|
||||
const maxToken = modelTokenLimit - promptsToken;
|
||||
|
||||
return chatAPI
|
||||
.createChatCompletion(
|
||||
{
|
||||
model: data.model,
|
||||
temperature: 0.8,
|
||||
messages,
|
||||
stream: false
|
||||
stream: false,
|
||||
max_tokens: maxToken
|
||||
},
|
||||
{
|
||||
timeout: 480000,
|
||||
|
@@ -9,7 +9,7 @@ import { delay } from '@/utils/tools';
|
||||
import { FeConfigsType } from '@/types';
|
||||
|
||||
export let beianText: string | undefined;
|
||||
export let googleVerKey: string | undefined;
|
||||
export let googleClientVerKey: string | undefined;
|
||||
export let baiduTongji: string | undefined;
|
||||
export let chatModelList: ChatModelItemType[] = [];
|
||||
export let qaModelList: QAModelItemType[] = [];
|
||||
@@ -26,10 +26,9 @@ export const clientInitData = async (): Promise<InitDateResponse> => {
|
||||
qaModelList = res.qaModels;
|
||||
vectorModelList = res.vectorModels;
|
||||
feConfigs = res.feConfigs;
|
||||
beianText = res.systemEnv.beianText;
|
||||
googleVerKey = res.systemEnv.googleVerKey;
|
||||
baiduTongji = res.systemEnv.baiduTongji;
|
||||
console.log(res);
|
||||
beianText = res.systemEnv?.beianText;
|
||||
googleClientVerKey = res.systemEnv?.googleClientVerKey;
|
||||
baiduTongji = res.systemEnv?.baiduTongji;
|
||||
|
||||
return res;
|
||||
} catch (error) {
|
||||
|
3
client/src/types/index.d.ts
vendored
3
client/src/types/index.d.ts
vendored
@@ -24,7 +24,8 @@ export type FeConfigsType = {
|
||||
};
|
||||
export type SystemEnvType = {
|
||||
beianText?: string;
|
||||
googleVerKey?: string;
|
||||
googleClientVerKey?: string;
|
||||
googleServiceVerKey?: string;
|
||||
baiduTongji?: string;
|
||||
vectorMaxProcess: number;
|
||||
qaMaxProcess: number;
|
||||
|
@@ -1,12 +1,13 @@
|
||||
import axios from 'axios';
|
||||
import { Obj2Query } from '../tools';
|
||||
|
||||
export const getClientToken = (googleVerKey: string) => {
|
||||
if (typeof window.grecaptcha === 'undefined' || !window.grecaptcha?.ready) return '';
|
||||
export const getClientToken = (googleClientVerKey?: string) => {
|
||||
if (!googleClientVerKey || typeof window.grecaptcha === 'undefined' || !window.grecaptcha?.ready)
|
||||
return '';
|
||||
return new Promise<string>((resolve, reject) => {
|
||||
window.grecaptcha.ready(async () => {
|
||||
try {
|
||||
const token = await window.grecaptcha.execute(googleVerKey, {
|
||||
const token = await window.grecaptcha.execute(googleClientVerKey, {
|
||||
action: 'submit'
|
||||
});
|
||||
resolve(token);
|
||||
|
Reference in New Issue
Block a user