From 852de40d18d0878cd6099dc8a35a179650524de0 Mon Sep 17 00:00:00 2001 From: Arvin Xu Date: Thu, 13 Feb 2025 09:53:08 +0000 Subject: [PATCH 1/3] support check models --- .../settings/provider/(detail)/azure/page.tsx | 12 ++-- .../features/ProviderConfig/Checker.tsx | 65 +++++++++++++------ .../features/ProviderConfig/index.tsx | 6 +- src/store/aiInfra/slices/aiModel/selectors.ts | 3 + 4 files changed, 56 insertions(+), 30 deletions(-) diff --git a/src/app/[variants]/(main)/settings/provider/(detail)/azure/page.tsx b/src/app/[variants]/(main)/settings/provider/(detail)/azure/page.tsx index 88e0e791d51bc..a8eb53df5f391 100644 --- a/src/app/[variants]/(main)/settings/provider/(detail)/azure/page.tsx +++ b/src/app/[variants]/(main)/settings/provider/(detail)/azure/page.tsx @@ -77,15 +77,11 @@ const useProviderCard = (): ProviderItem => { ) : ( ({ label: i, value: i }))} placeholder={'20XX-XX-XX'} /> diff --git a/src/app/[variants]/(main)/settings/provider/features/ProviderConfig/Checker.tsx b/src/app/[variants]/(main)/settings/provider/features/ProviderConfig/Checker.tsx index af93819c382c0..4e31a6f754b0f 100644 --- a/src/app/[variants]/(main)/settings/provider/features/ProviderConfig/Checker.tsx +++ b/src/app/[variants]/(main)/settings/provider/features/ProviderConfig/Checker.tsx @@ -1,9 +1,11 @@ 'use client'; import { CheckCircleFilled } from '@ant-design/icons'; -import { Alert, Highlighter } from '@lobehub/ui'; -import { Button } from 'antd'; +import { ModelIcon } from '@lobehub/icons'; +import { Alert, Highlighter, Icon } from '@lobehub/ui'; +import { AutoComplete, Button, Space } from 'antd'; import { useTheme } from 'antd-style'; +import { Loader2Icon } from 'lucide-react'; import { ReactNode, memo, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { Flexbox } from 'react-layout-kit'; @@ -12,7 +14,7 @@ import { TraceNameMap } from '@/const/trace'; import { useIsMobile } from '@/hooks/useIsMobile'; import { useProviderName } from '@/hooks/useProviderName'; import { chatService } from '@/services/chat'; -import { aiProviderSelectors, useAiInfraStore } from '@/store/aiInfra'; +import { aiModelSelectors, aiProviderSelectors, useAiInfraStore } from '@/store/aiInfra'; import { ChatMessageError } from '@/types/message'; const Error = memo<{ error: ChatMessageError }>(({ error }) => { @@ -54,10 +56,15 @@ const Checker = memo( ({ model, provider, checkErrorRender: CheckErrorRender }) => { const { t } = useTranslation('setting'); - const disabled = useAiInfraStore(aiProviderSelectors.isProviderConfigUpdating(provider)); + const isProviderConfigUpdating = useAiInfraStore( + aiProviderSelectors.isProviderConfigUpdating(provider), + ); + const totalModels = useAiInfraStore(aiModelSelectors.aiProviderChatModelListIds); + const updateAiProviderConfig = useAiInfraStore((s) => s.updateAiProviderConfig); const [loading, setLoading] = useState(false); const [pass, setPass] = useState(false); + const [checkModel, setCheckModel] = useState(model); const theme = useTheme(); const [error, setError] = useState(); @@ -116,25 +123,41 @@ const Checker = memo( return ( - - {pass && ( - - - {t('llm.checker.pass')} - - )} - - + + + {pass && ( + + + {t('llm.checker.pass')} + + )} {error && errorContent} ); diff --git a/src/app/[variants]/(main)/settings/provider/features/ProviderConfig/index.tsx b/src/app/[variants]/(main)/settings/provider/features/ProviderConfig/index.tsx index 619ed173f12b1..4bd253b3ceed0 100644 --- a/src/app/[variants]/(main)/settings/provider/features/ProviderConfig/index.tsx +++ b/src/app/[variants]/(main)/settings/provider/features/ProviderConfig/index.tsx @@ -275,7 +275,11 @@ const ProviderConfig = memo( children: isLoading ? ( ) : ( - + ), desc: t('providerModels.config.checker.desc'), label: t('providerModels.config.checker.title'), diff --git a/src/store/aiInfra/slices/aiModel/selectors.ts b/src/store/aiInfra/slices/aiModel/selectors.ts index 9c9915a393b4a..02f9d7440e79e 100644 --- a/src/store/aiInfra/slices/aiModel/selectors.ts +++ b/src/store/aiInfra/slices/aiModel/selectors.ts @@ -1,6 +1,8 @@ import { AIProviderStoreState } from '@/store/aiInfra/initialState'; import { AiModelSourceEnum } from '@/types/aiModel'; +const aiProviderChatModelListIds = (s: AIProviderStoreState) => + s.aiProviderModelList.filter((item) => item.type === 'chat').map((item) => item.id); // List const enabledAiProviderModelList = (s: AIProviderStoreState) => s.aiProviderModelList.filter((item) => item.enabled); @@ -68,6 +70,7 @@ const modelContextWindowTokens = (id: string, provider: string) => (s: AIProvide }; export const aiModelSelectors = { + aiProviderChatModelListIds, disabledAiProviderModelList, enabledAiProviderModelList, filteredAiProviderModelList, From d1871ebf38e713746694a88542ca2f210bc660cb Mon Sep 17 00:00:00 2001 From: Arvin Xu Date: Thu, 13 Feb 2025 09:56:08 +0000 Subject: [PATCH 2/3] use select not auto complete --- .../settings/provider/features/ProviderConfig/Checker.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/app/[variants]/(main)/settings/provider/features/ProviderConfig/Checker.tsx b/src/app/[variants]/(main)/settings/provider/features/ProviderConfig/Checker.tsx index 4e31a6f754b0f..8439dbefbbe0c 100644 --- a/src/app/[variants]/(main)/settings/provider/features/ProviderConfig/Checker.tsx +++ b/src/app/[variants]/(main)/settings/provider/features/ProviderConfig/Checker.tsx @@ -3,7 +3,7 @@ import { CheckCircleFilled } from '@ant-design/icons'; import { ModelIcon } from '@lobehub/icons'; import { Alert, Highlighter, Icon } from '@lobehub/ui'; -import { AutoComplete, Button, Space } from 'antd'; +import { Button, Select, Space } from 'antd'; import { useTheme } from 'antd-style'; import { Loader2Icon } from 'lucide-react'; import { ReactNode, memo, useState } from 'react'; @@ -124,7 +124,7 @@ const Checker = memo( return ( - { setCheckModel(value); From 7ce8f0e3f771fdf61a4df63c2cf23611f919aa7a Mon Sep 17 00:00:00 2001 From: Arvin Xu Date: Thu, 13 Feb 2025 10:34:45 +0000 Subject: [PATCH 3/3] fix style --- .../settings/provider/features/ProviderConfig/Checker.tsx | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/app/[variants]/(main)/settings/provider/features/ProviderConfig/Checker.tsx b/src/app/[variants]/(main)/settings/provider/features/ProviderConfig/Checker.tsx index 8439dbefbbe0c..06b63a31c9ef7 100644 --- a/src/app/[variants]/(main)/settings/provider/features/ProviderConfig/Checker.tsx +++ b/src/app/[variants]/(main)/settings/provider/features/ProviderConfig/Checker.tsx @@ -11,7 +11,6 @@ import { useTranslation } from 'react-i18next'; import { Flexbox } from 'react-layout-kit'; import { TraceNameMap } from '@/const/trace'; -import { useIsMobile } from '@/hooks/useIsMobile'; import { useProviderName } from '@/hooks/useProviderName'; import { chatService } from '@/services/chat'; import { aiModelSelectors, aiProviderSelectors, useAiInfraStore } from '@/store/aiInfra'; @@ -22,9 +21,8 @@ const Error = memo<{ error: ChatMessageError }>(({ error }) => { const providerName = useProviderName(error.body?.provider); return ( - + @@ -78,6 +76,7 @@ const Checker = memo( setPass(false); isError = true; }, + onFinish: async (value) => { if (!isError && value) { setError(undefined); @@ -111,7 +110,6 @@ const Checker = memo( }, }); }; - const isMobile = useIsMobile(); const defaultError = error ? : null; @@ -122,7 +120,7 @@ const Checker = memo( ); return ( - +