Fix: Newly added models to OpenAI-API-Compatible are not displayed in the LLM dropdown menu in a timely manner. #11774 (#11775)

### What problem does this PR solve?

Fix: Newly added models to OpenAI-API-Compatible are not displayed in
the LLM dropdown menu in a timely manner. #11774

### Type of change

- [x] Bug Fix (non-breaking change which fixes an issue)
This commit is contained in:
balibabu
2025-12-05 18:04:49 +08:00
committed by GitHub
parent ea38e12d42
commit 5b5f19cbc1

View File

@ -24,6 +24,15 @@ import { buildLlmUuid } from '@/utils/llm-util';
export const enum LLMApiAction { export const enum LLMApiAction {
LlmList = 'llmList', LlmList = 'llmList',
MyLlmList = 'myLlmList',
MyLlmListDetailed = 'myLlmListDetailed',
FactoryList = 'factoryList',
SaveApiKey = 'saveApiKey',
SaveTenantInfo = 'saveTenantInfo',
AddLlm = 'addLlm',
DeleteLlm = 'deleteLlm',
EnableLlm = 'enableLlm',
DeleteFactory = 'deleteFactory',
} }
export const useFetchLlmList = (modelType?: LlmModelType) => { export const useFetchLlmList = (modelType?: LlmModelType) => {
@ -177,7 +186,7 @@ export const useComposeLlmOptionsByModelTypes = (
export const useFetchLlmFactoryList = (): ResponseGetType<IFactory[]> => { export const useFetchLlmFactoryList = (): ResponseGetType<IFactory[]> => {
const { data, isFetching: loading } = useQuery({ const { data, isFetching: loading } = useQuery({
queryKey: ['factoryList'], queryKey: [LLMApiAction.FactoryList],
initialData: [], initialData: [],
gcTime: 0, gcTime: 0,
queryFn: async () => { queryFn: async () => {
@ -196,7 +205,7 @@ export const useFetchMyLlmList = (): ResponseGetType<
Record<string, IMyLlmValue> Record<string, IMyLlmValue>
> => { > => {
const { data, isFetching: loading } = useQuery({ const { data, isFetching: loading } = useQuery({
queryKey: ['myLlmList'], queryKey: [LLMApiAction.MyLlmList],
initialData: {}, initialData: {},
gcTime: 0, gcTime: 0,
queryFn: async () => { queryFn: async () => {
@ -213,7 +222,7 @@ export const useFetchMyLlmListDetailed = (): ResponseGetType<
Record<string, any> Record<string, any>
> => { > => {
const { data, isFetching: loading } = useQuery({ const { data, isFetching: loading } = useQuery({
queryKey: ['myLlmListDetailed'], queryKey: [LLMApiAction.MyLlmListDetailed],
initialData: {}, initialData: {},
gcTime: 0, gcTime: 0,
queryFn: async () => { queryFn: async () => {
@ -271,14 +280,16 @@ export const useSaveApiKey = () => {
isPending: loading, isPending: loading,
mutateAsync, mutateAsync,
} = useMutation({ } = useMutation({
mutationKey: ['saveApiKey'], mutationKey: [LLMApiAction.SaveApiKey],
mutationFn: async (params: IApiKeySavingParams) => { mutationFn: async (params: IApiKeySavingParams) => {
const { data } = await userService.set_api_key(params); const { data } = await userService.set_api_key(params);
if (data.code === 0) { if (data.code === 0) {
message.success(t('message.modified')); message.success(t('message.modified'));
queryClient.invalidateQueries({ queryKey: ['myLlmList'] }); queryClient.invalidateQueries({ queryKey: [LLMApiAction.MyLlmList] });
queryClient.invalidateQueries({ queryKey: ['myLlmListDetailed'] }); queryClient.invalidateQueries({
queryClient.invalidateQueries({ queryKey: ['factoryList'] }); queryKey: [LLMApiAction.MyLlmListDetailed],
});
queryClient.invalidateQueries({ queryKey: [LLMApiAction.FactoryList] });
} }
return data.code; return data.code;
}, },
@ -303,7 +314,7 @@ export const useSaveTenantInfo = () => {
isPending: loading, isPending: loading,
mutateAsync, mutateAsync,
} = useMutation({ } = useMutation({
mutationKey: ['saveTenantInfo'], mutationKey: [LLMApiAction.SaveTenantInfo],
mutationFn: async (params: ISystemModelSettingSavingParams) => { mutationFn: async (params: ISystemModelSettingSavingParams) => {
const { data } = await userService.set_tenant_info(params); const { data } = await userService.set_tenant_info(params);
if (data.code === 0) { if (data.code === 0) {
@ -324,13 +335,16 @@ export const useAddLlm = () => {
isPending: loading, isPending: loading,
mutateAsync, mutateAsync,
} = useMutation({ } = useMutation({
mutationKey: ['addLlm'], mutationKey: [LLMApiAction.AddLlm],
mutationFn: async (params: IAddLlmRequestBody) => { mutationFn: async (params: IAddLlmRequestBody) => {
const { data } = await userService.add_llm(params); const { data } = await userService.add_llm(params);
if (data.code === 0) { if (data.code === 0) {
queryClient.invalidateQueries({ queryKey: ['myLlmList'] }); queryClient.invalidateQueries({ queryKey: [LLMApiAction.MyLlmList] });
queryClient.invalidateQueries({ queryKey: ['myLlmListDetailed'] }); queryClient.invalidateQueries({
queryClient.invalidateQueries({ queryKey: ['factoryList'] }); queryKey: [LLMApiAction.MyLlmListDetailed],
});
queryClient.invalidateQueries({ queryKey: [LLMApiAction.FactoryList] });
queryClient.invalidateQueries({ queryKey: [LLMApiAction.LlmList] });
message.success(t('message.modified')); message.success(t('message.modified'));
} }
return data.code; return data.code;
@ -348,13 +362,15 @@ export const useDeleteLlm = () => {
isPending: loading, isPending: loading,
mutateAsync, mutateAsync,
} = useMutation({ } = useMutation({
mutationKey: ['deleteLlm'], mutationKey: [LLMApiAction.DeleteLlm],
mutationFn: async (params: IDeleteLlmRequestBody) => { mutationFn: async (params: IDeleteLlmRequestBody) => {
const { data } = await userService.delete_llm(params); const { data } = await userService.delete_llm(params);
if (data.code === 0) { if (data.code === 0) {
queryClient.invalidateQueries({ queryKey: ['myLlmList'] }); queryClient.invalidateQueries({ queryKey: [LLMApiAction.MyLlmList] });
queryClient.invalidateQueries({ queryKey: ['myLlmListDetailed'] }); queryClient.invalidateQueries({
queryClient.invalidateQueries({ queryKey: ['factoryList'] }); queryKey: [LLMApiAction.MyLlmListDetailed],
});
queryClient.invalidateQueries({ queryKey: [LLMApiAction.FactoryList] });
message.success(t('message.deleted')); message.success(t('message.deleted'));
} }
return data.code; return data.code;
@ -372,7 +388,7 @@ export const useEnableLlm = () => {
isPending: loading, isPending: loading,
mutateAsync, mutateAsync,
} = useMutation({ } = useMutation({
mutationKey: ['enableLlm'], mutationKey: [LLMApiAction.EnableLlm],
mutationFn: async (params: IDeleteLlmRequestBody & { enable: boolean }) => { mutationFn: async (params: IDeleteLlmRequestBody & { enable: boolean }) => {
const reqParam: IDeleteLlmRequestBody & { const reqParam: IDeleteLlmRequestBody & {
enable?: boolean; enable?: boolean;
@ -381,9 +397,11 @@ export const useEnableLlm = () => {
delete reqParam.enable; delete reqParam.enable;
const { data } = await userService.enable_llm(reqParam); const { data } = await userService.enable_llm(reqParam);
if (data.code === 0) { if (data.code === 0) {
queryClient.invalidateQueries({ queryKey: ['myLlmList'] }); queryClient.invalidateQueries({ queryKey: [LLMApiAction.MyLlmList] });
queryClient.invalidateQueries({ queryKey: ['myLlmListDetailed'] }); queryClient.invalidateQueries({
queryClient.invalidateQueries({ queryKey: ['factoryList'] }); queryKey: [LLMApiAction.MyLlmListDetailed],
});
queryClient.invalidateQueries({ queryKey: [LLMApiAction.FactoryList] });
message.success(t('message.modified')); message.success(t('message.modified'));
} }
return data.code; return data.code;
@ -401,14 +419,16 @@ export const useDeleteFactory = () => {
isPending: loading, isPending: loading,
mutateAsync, mutateAsync,
} = useMutation({ } = useMutation({
mutationKey: ['deleteFactory'], mutationKey: [LLMApiAction.DeleteFactory],
mutationFn: async (params: IDeleteLlmRequestBody) => { mutationFn: async (params: IDeleteLlmRequestBody) => {
const { data } = await userService.deleteFactory(params); const { data } = await userService.deleteFactory(params);
if (data.code === 0) { if (data.code === 0) {
queryClient.invalidateQueries({ queryKey: ['myLlmList'] }); queryClient.invalidateQueries({ queryKey: [LLMApiAction.MyLlmList] });
queryClient.invalidateQueries({ queryKey: ['myLlmListDetailed'] }); queryClient.invalidateQueries({
queryClient.invalidateQueries({ queryKey: ['factoryList'] }); queryKey: [LLMApiAction.MyLlmListDetailed],
queryClient.invalidateQueries({ queryKey: ['llmList'] }); });
queryClient.invalidateQueries({ queryKey: [LLMApiAction.FactoryList] });
queryClient.invalidateQueries({ queryKey: [LLMApiAction.LlmList] });
message.success(t('message.deleted')); message.success(t('message.deleted'));
} }
return data.code; return data.code;