mirror of
https://github.com/labring/FastGPT.git
synced 2025-08-01 20:27:45 +00:00

* feat: stop toolCall and rename some field. (#46) * perf: node delete tip;pay tip * fix: toolCall cannot save child answer * feat: stop tool * fix: team modal * fix feckbackMoal auth bug (#47) * 简单的支持提示词运行tool。优化workflow模板 (#49) * remove templates * fix: request body undefined * feat: prompt tool run * feat: workflow tamplates modal * perf: plugin start * 4.7 (#50) * fix docker-compose download url (#994) original code is a bad url with '404 NOT FOUND' return. fix docker-compose download url, add 'v' before docker-compose version * Update ai_settings.md (#1000) * Update configuration.md * Update configuration.md * Fix history in classifyQuestion and extract modules (#1012) * Fix history in classifyQuestion and extract modules * Add chatValue2RuntimePrompt import and update text formatting * flow controller to packages * fix: rerank select * modal ui * perf: modal code path * point not sufficient * feat: http url support variable * fix http key * perf: prompt * perf: ai setting modal * simple edit ui --------- Co-authored-by: entorick <entorick11@qq.com> Co-authored-by: liujianglc <liujianglc@163.com> Co-authored-by: Fengrui Liu <liufengrui.work@bytedance.com> * fix team share redirect to login (#51) * feat: support openapi import plugins (#48) * feat: support openapi import plugins * feat: import from url * fix: add body params parse * fix build * fix * fix * fix * tool box ui (#52) * fix: training queue * feat: simple edit tool select * perf: simple edit dataset prompt * fix: chatbox tool ux * feat: quote prompt module * perf: plugin tools sign * perf: model avatar * tool selector ui * feat: max histories * perf: http plugin import (#53) * perf: plugin http import * chatBox ui * perf: name * fix: Node template card (#54) * fix: ts * setting modal * package * package * feat: add plugins search (#57) * feat: add plugins search * perf: change http plugin header input * Yjl (#56) * perf: prompt tool call * perf: chat box ux * doc * doc * price tip * perf: tool selector * ui' * fix: vector queue * fix: empty tool and empty response * fix: empty msg * perf: pg index * perf: ui tip * doc * tool tip --------- Co-authored-by: yst <77910600+yu-and-liu@users.noreply.github.com> Co-authored-by: entorick <entorick11@qq.com> Co-authored-by: liujianglc <liujianglc@163.com> Co-authored-by: Fengrui Liu <liufengrui.work@bytedance.com> Co-authored-by: heheer <71265218+newfish-cmyk@users.noreply.github.com>
145 lines
4.2 KiB
TypeScript
145 lines
4.2 KiB
TypeScript
import { create } from 'zustand';
|
|
import { devtools, persist } from 'zustand/middleware';
|
|
import { immer } from 'zustand/middleware/immer';
|
|
import axios from 'axios';
|
|
import { OAuthEnum } from '@fastgpt/global/support/user/constant';
|
|
import type {
|
|
AudioSpeechModelType,
|
|
LLMModelItemType,
|
|
ReRankModelItemType,
|
|
VectorModelItemType,
|
|
WhisperModelType
|
|
} from '@fastgpt/global/core/ai/model.d';
|
|
import { InitDateResponse } from '@/global/common/api/systemRes';
|
|
import { FastGPTFeConfigsType } from '@fastgpt/global/common/system/types';
|
|
import { SubPlanType } from '@fastgpt/global/support/wallet/sub/type';
|
|
|
|
type LoginStoreType = { provider: `${OAuthEnum}`; lastRoute: string; state: string };
|
|
|
|
type State = {
|
|
initd: boolean;
|
|
setInitd: () => void;
|
|
lastRoute: string;
|
|
setLastRoute: (e: string) => void;
|
|
loginStore?: LoginStoreType;
|
|
setLoginStore: (e: LoginStoreType) => void;
|
|
loading: boolean;
|
|
setLoading: (val: boolean) => null;
|
|
screenWidth: number;
|
|
setScreenWidth: (val: number) => void;
|
|
isPc?: boolean;
|
|
initIsPc(val: boolean): void;
|
|
gitStar: number;
|
|
loadGitStar: () => Promise<void>;
|
|
|
|
isNotSufficientModal: boolean;
|
|
setIsNotSufficientModal: (val: boolean) => void;
|
|
|
|
feConfigs: FastGPTFeConfigsType;
|
|
subPlans?: SubPlanType;
|
|
systemVersion: string;
|
|
llmModelList: LLMModelItemType[];
|
|
datasetModelList: LLMModelItemType[];
|
|
vectorModelList: VectorModelItemType[];
|
|
audioSpeechModelList: AudioSpeechModelType[];
|
|
reRankModelList: ReRankModelItemType[];
|
|
whisperModel?: WhisperModelType;
|
|
initStaticData: (e: InitDateResponse) => void;
|
|
};
|
|
|
|
export const useSystemStore = create<State>()(
|
|
devtools(
|
|
persist(
|
|
immer((set, get) => ({
|
|
initd: false,
|
|
setInitd() {
|
|
set((state) => {
|
|
state.initd = true;
|
|
});
|
|
},
|
|
lastRoute: '/app/list',
|
|
setLastRoute(e) {
|
|
set((state) => {
|
|
state.lastRoute = e;
|
|
});
|
|
},
|
|
loginStore: undefined,
|
|
setLoginStore(e) {
|
|
set((state) => {
|
|
state.loginStore = e;
|
|
});
|
|
},
|
|
loading: false,
|
|
setLoading: (val: boolean) => {
|
|
set((state) => {
|
|
state.loading = val;
|
|
});
|
|
return null;
|
|
},
|
|
screenWidth: 600,
|
|
setScreenWidth(val: number) {
|
|
set((state) => {
|
|
state.screenWidth = val;
|
|
state.isPc = val < 900 ? false : true;
|
|
});
|
|
},
|
|
isPc: undefined,
|
|
initIsPc(val: boolean) {
|
|
if (get().isPc !== undefined) return;
|
|
|
|
set((state) => {
|
|
state.isPc = val;
|
|
});
|
|
},
|
|
gitStar: 9300,
|
|
async loadGitStar() {
|
|
try {
|
|
const { data: git } = await axios.get('https://api.github.com/repos/labring/FastGPT');
|
|
|
|
set((state) => {
|
|
state.gitStar = git.stargazers_count;
|
|
});
|
|
} catch (error) {}
|
|
},
|
|
|
|
isNotSufficientModal: false,
|
|
setIsNotSufficientModal(val: boolean) {
|
|
set((state) => {
|
|
state.isNotSufficientModal = val;
|
|
});
|
|
},
|
|
|
|
feConfigs: {},
|
|
subPlans: undefined,
|
|
systemVersion: '0.0.0',
|
|
llmModelList: [],
|
|
datasetModelList: [],
|
|
vectorModelList: [],
|
|
audioSpeechModelList: [],
|
|
reRankModelList: [],
|
|
whisperModel: undefined,
|
|
initStaticData(res) {
|
|
set((state) => {
|
|
state.feConfigs = res.feConfigs || {};
|
|
state.subPlans = res.subPlans;
|
|
state.systemVersion = res.systemVersion;
|
|
|
|
state.llmModelList = res.llmModels ?? state.llmModelList;
|
|
state.datasetModelList = state.llmModelList.filter((item) => item.datasetProcess);
|
|
state.vectorModelList = res.vectorModels ?? state.vectorModelList;
|
|
state.audioSpeechModelList = res.audioSpeechModels ?? state.audioSpeechModelList;
|
|
state.reRankModelList = res.reRankModels ?? state.reRankModelList;
|
|
state.whisperModel = res.whisperModel;
|
|
});
|
|
}
|
|
})),
|
|
{
|
|
name: 'globalStore',
|
|
partialize: (state) => ({
|
|
loginStore: state.loginStore
|
|
})
|
|
}
|
|
)
|
|
)
|
|
);
|