This commit is contained in:
archer
2023-07-20 10:01:45 +08:00
parent 62ee28b130
commit 75c8c42530
8 changed files with 33 additions and 20 deletions

View File

@@ -10,8 +10,9 @@
},
"SystemParams": {
"beianText": "",
"googleVerKey": "",
"baiduTongji": "",
"googleClientVerKey": "",
"googleServiceVerKey": "",
"vectorMaxProcess": 15,
"qaMaxProcess": 15,
"pgIvfflatProbe": 20,

View File

@@ -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(() => {

View File

@@ -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>
</>

View File

@@ -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
}));

View File

@@ -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,

View File

@@ -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) {

View File

@@ -24,7 +24,8 @@ export type FeConfigsType = {
};
export type SystemEnvType = {
beianText?: string;
googleVerKey?: string;
googleClientVerKey?: string;
googleServiceVerKey?: string;
baiduTongji?: string;
vectorMaxProcess: number;
qaMaxProcess: number;

View File

@@ -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);