mirror of
https://github.com/labring/FastGPT.git
synced 2025-10-16 08:01:18 +00:00
configmap
This commit is contained in:
@@ -1,26 +0,0 @@
|
|||||||
{
|
|
||||||
"FastAI-4k": {
|
|
||||||
"model": "gpt-3.5-turbo",
|
|
||||||
"name": "FastAI-4k",
|
|
||||||
"contextMaxToken": 4000,
|
|
||||||
"systemMaxToken": 2400,
|
|
||||||
"maxTemperature": 1.2,
|
|
||||||
"price": 1.5
|
|
||||||
},
|
|
||||||
"FastAI-16k": {
|
|
||||||
"model": "gpt-3.5-turbo-16k",
|
|
||||||
"name": "FastAI-16k",
|
|
||||||
"contextMaxToken": 16000,
|
|
||||||
"systemMaxToken": 8000,
|
|
||||||
"maxTemperature": 1.2,
|
|
||||||
"price": 3
|
|
||||||
},
|
|
||||||
"FastAI-Plus": {
|
|
||||||
"model": "gpt-4",
|
|
||||||
"name": "FastAI-Plus",
|
|
||||||
"contextMaxToken": 8000,
|
|
||||||
"systemMaxToken": 4000,
|
|
||||||
"maxTemperature": 1.2,
|
|
||||||
"price": 45
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,9 +0,0 @@
|
|||||||
{
|
|
||||||
"show_emptyChat": true,
|
|
||||||
"show_register": true,
|
|
||||||
"show_appStore": true,
|
|
||||||
"show_userDetail": true,
|
|
||||||
"show_git": true,
|
|
||||||
"systemTitle": "FastAI",
|
|
||||||
"authorText": "Made by FastAI Team."
|
|
||||||
}
|
|
@@ -1,8 +0,0 @@
|
|||||||
{
|
|
||||||
"FastAI-16k": {
|
|
||||||
"model": "gpt-3.5-turbo-16k",
|
|
||||||
"name": "FastAI-16k",
|
|
||||||
"maxToken": 16000,
|
|
||||||
"price": 3
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,6 +0,0 @@
|
|||||||
{
|
|
||||||
"vectorMaxProcess": 15,
|
|
||||||
"qaMaxProcess": 15,
|
|
||||||
"pgIvfflatProbe": 20,
|
|
||||||
"sensitiveCheck": false
|
|
||||||
}
|
|
@@ -1,7 +0,0 @@
|
|||||||
{
|
|
||||||
"text-embedding-ada-002": {
|
|
||||||
"model": "text-embedding-ada-002",
|
|
||||||
"name": "Embedding-2",
|
|
||||||
"price": 0.2
|
|
||||||
}
|
|
||||||
}
|
|
61
client/data/config.json
Normal file
61
client/data/config.json
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
{
|
||||||
|
"FeConfig": {
|
||||||
|
"show_emptyChat": true,
|
||||||
|
"show_register": true,
|
||||||
|
"show_appStore": true,
|
||||||
|
"show_userDetail": true,
|
||||||
|
"show_git": true,
|
||||||
|
"systemTitle": "FastAI",
|
||||||
|
"authorText": "Made by FastAI Team."
|
||||||
|
},
|
||||||
|
"SystemParams": {
|
||||||
|
"beianText": "",
|
||||||
|
"googleVerKey": "",
|
||||||
|
"baiduTongji": "",
|
||||||
|
"vectorMaxProcess": 15,
|
||||||
|
"qaMaxProcess": 15,
|
||||||
|
"pgIvfflatProbe": 20,
|
||||||
|
"sensitiveCheck": false
|
||||||
|
},
|
||||||
|
"ChatModels": [
|
||||||
|
{
|
||||||
|
"model": "gpt-3.5-turbo",
|
||||||
|
"name": "FastAI-4k",
|
||||||
|
"contextMaxToken": 4000,
|
||||||
|
"systemMaxToken": 2400,
|
||||||
|
"maxTemperature": 1.2,
|
||||||
|
"price": 1.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model": "gpt-3.5-turbo-16k",
|
||||||
|
"name": "FastAI-16k",
|
||||||
|
"contextMaxToken": 16000,
|
||||||
|
"systemMaxToken": 8000,
|
||||||
|
"maxTemperature": 1.2,
|
||||||
|
"price": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model": "gpt-4",
|
||||||
|
"name": "FastAI-Plus",
|
||||||
|
"contextMaxToken": 8000,
|
||||||
|
"systemMaxToken": 4000,
|
||||||
|
"maxTemperature": 1.2,
|
||||||
|
"price": 45
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"QAModels": [
|
||||||
|
{
|
||||||
|
"model": "gpt-3.5-turbo-16k",
|
||||||
|
"name": "FastAI-16k",
|
||||||
|
"maxToken": 16000,
|
||||||
|
"price": 3
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"VectorModels": [
|
||||||
|
{
|
||||||
|
"model": "text-embedding-ada-002",
|
||||||
|
"name": "Embedding-2",
|
||||||
|
"price": 0.2
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@@ -19,8 +19,7 @@ const Navbar = ({ unread }: { unread: number }) => {
|
|||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const { userInfo } = useUserStore();
|
const { userInfo } = useUserStore();
|
||||||
const { lastChatAppId, lastChatId } = useChatStore();
|
const { lastChatAppId, lastChatId } = useChatStore();
|
||||||
const navbarList = useMemo(
|
const navbarList = [
|
||||||
() => [
|
|
||||||
{
|
{
|
||||||
label: '聊天',
|
label: '聊天',
|
||||||
icon: 'chatLight',
|
icon: 'chatLight',
|
||||||
@@ -60,9 +59,7 @@ const Navbar = ({ unread }: { unread: number }) => {
|
|||||||
link: '/number',
|
link: '/number',
|
||||||
activeLink: ['/number']
|
activeLink: ['/number']
|
||||||
}
|
}
|
||||||
],
|
];
|
||||||
[lastChatId, lastChatAppId]
|
|
||||||
);
|
|
||||||
|
|
||||||
const itemStyles: any = {
|
const itemStyles: any = {
|
||||||
my: 3,
|
my: 3,
|
||||||
|
@@ -41,7 +41,9 @@ function App({ Component, pageProps, isPc }: AppProps & { isPc?: boolean; respon
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
(async () => {
|
(async () => {
|
||||||
const { googleVerKey, baiduTongji } = await clientInitData();
|
const {
|
||||||
|
systemEnv: { googleVerKey, baiduTongji }
|
||||||
|
} = await clientInitData();
|
||||||
setGoogleVerKey(googleVerKey);
|
setGoogleVerKey(googleVerKey);
|
||||||
setBaiduTongji(baiduTongji);
|
setBaiduTongji(baiduTongji);
|
||||||
})();
|
})();
|
||||||
|
@@ -1,37 +1,44 @@
|
|||||||
// Next.js API route support: https://nextjs.org/docs/api-routes/introduction
|
import type { FeConfigsType, SystemEnvType } from '@/types';
|
||||||
import type { NextApiRequest, NextApiResponse } from 'next';
|
import type { NextApiRequest, NextApiResponse } from 'next';
|
||||||
import { jsonRes } from '@/service/response';
|
import { jsonRes } from '@/service/response';
|
||||||
|
import { readFileSync } from 'fs';
|
||||||
import {
|
import {
|
||||||
type QAModelItemType,
|
type QAModelItemType,
|
||||||
type ChatModelItemType,
|
type ChatModelItemType,
|
||||||
type VectorModelItemType
|
type VectorModelItemType
|
||||||
} from '@/types/model';
|
} from '@/types/model';
|
||||||
import type { FeConfigsType } from '@/types';
|
|
||||||
|
|
||||||
export type InitDateResponse = {
|
export type InitDateResponse = {
|
||||||
beianText: string;
|
|
||||||
googleVerKey: string;
|
|
||||||
baiduTongji: string;
|
|
||||||
chatModels: ChatModelItemType[];
|
chatModels: ChatModelItemType[];
|
||||||
qaModels: QAModelItemType[];
|
qaModels: QAModelItemType[];
|
||||||
vectorModels: VectorModelItemType[];
|
vectorModels: VectorModelItemType[];
|
||||||
|
systemEnv: SystemEnvType;
|
||||||
feConfigs: FeConfigsType;
|
feConfigs: FeConfigsType;
|
||||||
};
|
};
|
||||||
|
|
||||||
export default async function handler(req: NextApiRequest, res: NextApiResponse) {
|
export default async function handler(req: NextApiRequest, res: NextApiResponse) {
|
||||||
const envs = {
|
|
||||||
beianText: process.env.SAFE_BEIAN_TEXT || '',
|
|
||||||
googleVerKey: process.env.CLIENT_GOOGLE_VER_TOKEN || '',
|
|
||||||
baiduTongji: process.env.BAIDU_TONGJI || ''
|
|
||||||
};
|
|
||||||
|
|
||||||
jsonRes<InitDateResponse>(res, {
|
jsonRes<InitDateResponse>(res, {
|
||||||
data: {
|
data: {
|
||||||
...envs,
|
systemEnv: global.systemEnv,
|
||||||
|
feConfigs: global.feConfigs,
|
||||||
chatModels: global.chatModels,
|
chatModels: global.chatModels,
|
||||||
qaModels: global.qaModels,
|
qaModels: global.qaModels,
|
||||||
vectorModels: global.vectorModels,
|
vectorModels: global.vectorModels
|
||||||
feConfigs: global.feConfigs
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function getInitConfig() {
|
||||||
|
try {
|
||||||
|
const res = JSON.parse(readFileSync('data/config.json', 'utf-8'));
|
||||||
|
console.log(res);
|
||||||
|
|
||||||
|
global.systemEnv = res.SystemParams;
|
||||||
|
global.feConfigs = res.FeConfig;
|
||||||
|
global.chatModels = res.ChatModels;
|
||||||
|
global.qaModels = res.QAModels;
|
||||||
|
global.vectorModels = res.VectorModels;
|
||||||
|
} catch (error) {
|
||||||
|
console.log('get init config error');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -1,123 +0,0 @@
|
|||||||
import type { NextApiRequest, NextApiResponse } from 'next';
|
|
||||||
import { jsonRes } from '@/service/response';
|
|
||||||
import { authUser } from '@/service/utils/auth';
|
|
||||||
import { readFileSync } from 'fs';
|
|
||||||
import {
|
|
||||||
type QAModelItemType,
|
|
||||||
type ChatModelItemType,
|
|
||||||
type VectorModelItemType
|
|
||||||
} from '@/types/model';
|
|
||||||
|
|
||||||
export default async function handler(req: NextApiRequest, res: NextApiResponse) {
|
|
||||||
await authUser({ req, authRoot: true });
|
|
||||||
updateSystemEnv();
|
|
||||||
jsonRes(res);
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function updateSystemEnv() {
|
|
||||||
try {
|
|
||||||
const res = JSON.parse(readFileSync('data/SystemParams.json', 'utf-8'));
|
|
||||||
|
|
||||||
global.systemEnv = {
|
|
||||||
...global.systemEnv,
|
|
||||||
...res
|
|
||||||
};
|
|
||||||
console.log(global.systemEnv);
|
|
||||||
} catch (error) {
|
|
||||||
console.log('update system env error');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const defaultmodels = {
|
|
||||||
'FastAI-4k': {
|
|
||||||
model: 'gpt-3.5-turbo',
|
|
||||||
name: 'FastAI-4k',
|
|
||||||
contextMaxToken: 4000,
|
|
||||||
systemMaxToken: 2400,
|
|
||||||
maxTemperature: 1.2,
|
|
||||||
price: 1.5
|
|
||||||
},
|
|
||||||
'FastAI-16k': {
|
|
||||||
model: 'gpt-3.5-turbo',
|
|
||||||
name: 'FastAI-16k',
|
|
||||||
contextMaxToken: 16000,
|
|
||||||
systemMaxToken: 8000,
|
|
||||||
maxTemperature: 1.2,
|
|
||||||
price: 3
|
|
||||||
},
|
|
||||||
'FastAI-Plus': {
|
|
||||||
model: 'gpt-4',
|
|
||||||
name: 'FastAI-Plus',
|
|
||||||
contextMaxToken: 8000,
|
|
||||||
systemMaxToken: 4000,
|
|
||||||
maxTemperature: 1.2,
|
|
||||||
price: 45
|
|
||||||
}
|
|
||||||
};
|
|
||||||
const defaultQaModels = {
|
|
||||||
'FastAI-16k': {
|
|
||||||
model: 'gpt-3.5-turbo',
|
|
||||||
name: 'FastAI-16k',
|
|
||||||
maxToken: 16000,
|
|
||||||
price: 3
|
|
||||||
}
|
|
||||||
};
|
|
||||||
const defaultVectorModels = {
|
|
||||||
'text-embedding-ada-002': {
|
|
||||||
model: 'text-embedding-ada-002',
|
|
||||||
name: 'Embedding-2',
|
|
||||||
price: 0.2
|
|
||||||
}
|
|
||||||
};
|
|
||||||
export function initSystemModels() {
|
|
||||||
const { chatModels, qaModels, vectorModels } = (() => {
|
|
||||||
try {
|
|
||||||
const chatModels = Object.values(JSON.parse(readFileSync('data/ChatModels.json', 'utf-8')));
|
|
||||||
const qaModels = Object.values(JSON.parse(readFileSync('data/QAModels.json', 'utf-8')));
|
|
||||||
const vectorModels = Object.values(
|
|
||||||
JSON.parse(readFileSync('data/VectorModels.json', 'utf-8'))
|
|
||||||
);
|
|
||||||
|
|
||||||
return {
|
|
||||||
chatModels,
|
|
||||||
qaModels,
|
|
||||||
vectorModels
|
|
||||||
};
|
|
||||||
} catch (error) {
|
|
||||||
console.log(error);
|
|
||||||
|
|
||||||
return {
|
|
||||||
chatModels: Object.values(defaultmodels),
|
|
||||||
qaModels: Object.values(defaultQaModels),
|
|
||||||
vectorModels: Object.values(defaultVectorModels)
|
|
||||||
};
|
|
||||||
}
|
|
||||||
})() as {
|
|
||||||
chatModels: ChatModelItemType[];
|
|
||||||
qaModels: QAModelItemType[];
|
|
||||||
vectorModels: VectorModelItemType[];
|
|
||||||
};
|
|
||||||
global.chatModels = chatModels;
|
|
||||||
global.qaModels = qaModels;
|
|
||||||
global.vectorModels = vectorModels;
|
|
||||||
console.log({
|
|
||||||
chatModels,
|
|
||||||
qaModels,
|
|
||||||
vectorModels
|
|
||||||
});
|
|
||||||
|
|
||||||
return {
|
|
||||||
chatModels,
|
|
||||||
qaModels,
|
|
||||||
vectorModels
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
export function initFeConfig() {
|
|
||||||
const feConfig = JSON.parse(readFileSync('data/FeConfig.json', 'utf-8'));
|
|
||||||
|
|
||||||
global.feConfigs = feConfig;
|
|
||||||
console.log(feConfig);
|
|
||||||
|
|
||||||
return feConfig;
|
|
||||||
}
|
|
@@ -147,7 +147,7 @@ const NumberSetting = ({ tableType }: { tableType: `${TableEnum}` }) => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<Box h={'100%'} overflow={'overlay'}>
|
||||||
<Box py={[5, 10]} px={'5vw'}>
|
<Box py={[5, 10]} px={'5vw'}>
|
||||||
<Grid gridTemplateColumns={['1fr', '3fr 300px']} gridGap={4}>
|
<Grid gridTemplateColumns={['1fr', '3fr 300px']} gridGap={4}>
|
||||||
<Card px={6} py={4}>
|
<Card px={6} py={4}>
|
||||||
@@ -257,7 +257,7 @@ const NumberSetting = ({ tableType }: { tableType: `${TableEnum}` }) => {
|
|||||||
{isOpenPayModal && <PayModal onClose={onClosePayModal} />}
|
{isOpenPayModal && <PayModal onClose={onClosePayModal} />}
|
||||||
{isOpenWxConcat && <WxConcat onClose={onCloseWxConcat} />}
|
{isOpenWxConcat && <WxConcat onClose={onCloseWxConcat} />}
|
||||||
<File onSelect={onSelectFile} />
|
<File onSelect={onSelectFile} />
|
||||||
</>
|
</Box>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
import mongoose from 'mongoose';
|
import mongoose from 'mongoose';
|
||||||
import tunnel from 'tunnel';
|
import tunnel from 'tunnel';
|
||||||
import { startQueue } from './utils/tools';
|
import { startQueue } from './utils/tools';
|
||||||
import { updateSystemEnv, initSystemModels, initFeConfig } from '@/pages/api/system/updateEnv';
|
import { getInitConfig } from '@/pages/api/system/getInitData';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 连接 MongoDB 数据库
|
* 连接 MongoDB 数据库
|
||||||
@@ -23,7 +23,6 @@ export async function connectToDatabase(): Promise<void> {
|
|||||||
};
|
};
|
||||||
global.sendInformQueue = [];
|
global.sendInformQueue = [];
|
||||||
global.sendInformQueueLen = 0;
|
global.sendInformQueueLen = 0;
|
||||||
global.feConfigs = {};
|
|
||||||
// proxy obj
|
// proxy obj
|
||||||
if (process.env.AXIOS_PROXY_HOST && process.env.AXIOS_PROXY_PORT) {
|
if (process.env.AXIOS_PROXY_HOST && process.env.AXIOS_PROXY_PORT) {
|
||||||
global.httpsAgent = tunnel.httpsOverHttp({
|
global.httpsAgent = tunnel.httpsOverHttp({
|
||||||
@@ -35,9 +34,7 @@ export async function connectToDatabase(): Promise<void> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// init function
|
// init function
|
||||||
initSystemModels();
|
getInitConfig();
|
||||||
initFeConfig();
|
|
||||||
updateSystemEnv();
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
mongoose.set('strictQuery', true);
|
mongoose.set('strictQuery', true);
|
||||||
|
@@ -8,9 +8,9 @@ import { getInitData } from '@/api/system';
|
|||||||
import { delay } from '@/utils/tools';
|
import { delay } from '@/utils/tools';
|
||||||
import { FeConfigsType } from '@/types';
|
import { FeConfigsType } from '@/types';
|
||||||
|
|
||||||
export let beianText = '';
|
export let beianText: string | undefined;
|
||||||
export let googleVerKey = '';
|
export let googleVerKey: string | undefined;
|
||||||
export let baiduTongji = '';
|
export let baiduTongji: string | undefined;
|
||||||
export let chatModelList: ChatModelItemType[] = [];
|
export let chatModelList: ChatModelItemType[] = [];
|
||||||
export let qaModelList: QAModelItemType[] = [];
|
export let qaModelList: QAModelItemType[] = [];
|
||||||
export let vectorModelList: VectorModelItemType[] = [];
|
export let vectorModelList: VectorModelItemType[] = [];
|
||||||
@@ -26,9 +26,10 @@ export const clientInitData = async (): Promise<InitDateResponse> => {
|
|||||||
qaModelList = res.qaModels;
|
qaModelList = res.qaModels;
|
||||||
vectorModelList = res.vectorModels;
|
vectorModelList = res.vectorModels;
|
||||||
feConfigs = res.feConfigs;
|
feConfigs = res.feConfigs;
|
||||||
beianText = res.beianText;
|
beianText = res.systemEnv.beianText;
|
||||||
googleVerKey = res.googleVerKey;
|
googleVerKey = res.systemEnv.googleVerKey;
|
||||||
baiduTongji = res.baiduTongji;
|
baiduTongji = res.systemEnv.baiduTongji;
|
||||||
|
console.log(res);
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
16
client/src/types/index.d.ts
vendored
16
client/src/types/index.d.ts
vendored
@@ -22,6 +22,15 @@ export type FeConfigsType = {
|
|||||||
systemTitle?: string;
|
systemTitle?: string;
|
||||||
authorText?: string;
|
authorText?: string;
|
||||||
};
|
};
|
||||||
|
export type SystemEnvType = {
|
||||||
|
beianText?: string;
|
||||||
|
googleVerKey?: string;
|
||||||
|
baiduTongji?: string;
|
||||||
|
vectorMaxProcess: number;
|
||||||
|
qaMaxProcess: number;
|
||||||
|
pgIvfflatProbe: number;
|
||||||
|
sensitiveCheck: boolean;
|
||||||
|
};
|
||||||
|
|
||||||
declare global {
|
declare global {
|
||||||
var mongodb: Mongoose | string | null;
|
var mongodb: Mongoose | string | null;
|
||||||
@@ -32,12 +41,7 @@ declare global {
|
|||||||
var OpenAiEncMap: Tiktoken;
|
var OpenAiEncMap: Tiktoken;
|
||||||
var sendInformQueue: (() => Promise<void>)[];
|
var sendInformQueue: (() => Promise<void>)[];
|
||||||
var sendInformQueueLen: number;
|
var sendInformQueueLen: number;
|
||||||
var systemEnv: {
|
var systemEnv: SystemEnvType;
|
||||||
vectorMaxProcess: number;
|
|
||||||
qaMaxProcess: number;
|
|
||||||
pgIvfflatProbe: number;
|
|
||||||
sensitiveCheck: boolean;
|
|
||||||
};
|
|
||||||
var chatModels: ChatModelItemType[];
|
var chatModels: ChatModelItemType[];
|
||||||
var qaModels: QAModelItemType[];
|
var qaModels: QAModelItemType[];
|
||||||
var vectorModels: VectorModelItemType[];
|
var vectorModels: VectorModelItemType[];
|
||||||
|
Reference in New Issue
Block a user