import Spotlight from '@/components/spotlight'; import { LLMFactory } from '@/constants/llm'; import { LlmItem, useFetchMyLlmListDetailed } from '@/hooks/use-llm-request'; import { useCallback, useMemo } from 'react'; import { isLocalLlmFactory } from '../utils'; import SystemSetting from './components/system-setting'; import { AvailableModels } from './components/un-add-model'; import { UsedModel } from './components/used-model'; import { useSubmitApiKey, useSubmitAzure, useSubmitBedrock, useSubmitFishAudio, useSubmitGoogle, useSubmitHunyuan, useSubmitMinerU, useSubmitOllama, useSubmitSpark, useSubmitSystemModelSetting, useSubmitTencentCloud, useSubmitVolcEngine, useSubmityiyan, } from './hooks'; import ApiKeyModal from './modal/api-key-modal'; import AzureOpenAIModal from './modal/azure-openai-modal'; import BedrockModal from './modal/bedrock-modal'; import FishAudioModal from './modal/fish-audio-modal'; import GoogleModal from './modal/google-modal'; import HunyuanModal from './modal/hunyuan-modal'; import MinerUModal from './modal/mineru-modal'; import TencentCloudModal from './modal/next-tencent-modal'; import OllamaModal from './modal/ollama-modal'; import SparkModal from './modal/spark-modal'; import VolcEngineModal from './modal/volcengine-modal'; import YiyanModal from './modal/yiyan-modal'; const ModelProviders = () => { const { saveSystemModelSettingLoading, onSystemSettingSavingOk } = useSubmitSystemModelSetting(); const { data: detailedLlmList } = useFetchMyLlmListDetailed(); const { saveApiKeyLoading, initialApiKey, llmFactory, editMode, onApiKeySavingOk, apiKeyVisible, hideApiKeyModal, showApiKeyModal, } = useSubmitApiKey(); const { llmAddingVisible, hideLlmAddingModal, showLlmAddingModal, onLlmAddingOk, llmAddingLoading, editMode: llmEditMode, initialValues: llmInitialValues, selectedLlmFactory, } = useSubmitOllama(); const { volcAddingVisible, hideVolcAddingModal, showVolcAddingModal, onVolcAddingOk, volcAddingLoading, } = useSubmitVolcEngine(); const { HunyuanAddingVisible, hideHunyuanAddingModal, showHunyuanAddingModal, onHunyuanAddingOk, HunyuanAddingLoading, } = useSubmitHunyuan(); const { GoogleAddingVisible, hideGoogleAddingModal, showGoogleAddingModal, onGoogleAddingOk, GoogleAddingLoading, } = useSubmitGoogle(); const { TencentCloudAddingVisible, hideTencentCloudAddingModal, showTencentCloudAddingModal, onTencentCloudAddingOk, TencentCloudAddingLoading, } = useSubmitTencentCloud(); const { SparkAddingVisible, hideSparkAddingModal, showSparkAddingModal, onSparkAddingOk, SparkAddingLoading, } = useSubmitSpark(); const { yiyanAddingVisible, hideyiyanAddingModal, showyiyanAddingModal, onyiyanAddingOk, yiyanAddingLoading, } = useSubmityiyan(); const { FishAudioAddingVisible, hideFishAudioAddingModal, showFishAudioAddingModal, onFishAudioAddingOk, FishAudioAddingLoading, } = useSubmitFishAudio(); const { bedrockAddingLoading, onBedrockAddingOk, bedrockAddingVisible, hideBedrockAddingModal, showBedrockAddingModal, } = useSubmitBedrock(); const { AzureAddingVisible, hideAzureAddingModal, showAzureAddingModal, onAzureAddingOk, AzureAddingLoading, } = useSubmitAzure(); const { mineruVisible, hideMineruModal, showMineruModal, onMineruOk, mineruLoading, } = useSubmitMinerU(); const ModalMap = useMemo( () => ({ [LLMFactory.Bedrock]: showBedrockAddingModal, [LLMFactory.VolcEngine]: showVolcAddingModal, [LLMFactory.TencentHunYuan]: showHunyuanAddingModal, [LLMFactory.XunFeiSpark]: showSparkAddingModal, [LLMFactory.BaiduYiYan]: showyiyanAddingModal, [LLMFactory.FishAudio]: showFishAudioAddingModal, [LLMFactory.TencentCloud]: showTencentCloudAddingModal, [LLMFactory.GoogleCloud]: showGoogleAddingModal, [LLMFactory.AzureOpenAI]: showAzureAddingModal, [LLMFactory.MinerU]: showMineruModal, }), [ showBedrockAddingModal, showVolcAddingModal, showHunyuanAddingModal, showSparkAddingModal, showyiyanAddingModal, showFishAudioAddingModal, showTencentCloudAddingModal, showGoogleAddingModal, showAzureAddingModal, showMineruModal, ], ); const handleAddModel = useCallback( (llmFactory: string) => { console.log('handleAddModel', llmFactory); if (isLocalLlmFactory(llmFactory)) { showLlmAddingModal(llmFactory); } else if (llmFactory in ModalMap) { ModalMap[llmFactory as keyof typeof ModalMap](); } else { showApiKeyModal({ llm_factory: llmFactory }); } }, [showApiKeyModal, showLlmAddingModal, ModalMap], ); const handleEditModel = useCallback( (model: any, factory: LlmItem) => { if (factory) { const detailedFactory = detailedLlmList[factory.name]; const detailedModel = detailedFactory?.llm?.find( (m: any) => m.name === model.name, ); const editData = { llm_factory: factory.name, llm_name: model.name, model_type: model.type, }; if (isLocalLlmFactory(factory.name)) { showLlmAddingModal(factory.name, true, editData, detailedModel); } else if (factory.name in ModalMap) { ModalMap[factory.name as keyof typeof ModalMap](); } else { showApiKeyModal(editData, true); } } }, [showApiKeyModal, showLlmAddingModal, ModalMap, detailedLlmList], ); return (
{llmAddingVisible && ( )}
); }; export default ModelProviders;