import { useState } from 'react' import useSWR from 'swr' import { LockClosedIcon } from '@heroicons/react/24/solid' import { useTranslation } from 'react-i18next' import Link from 'next/link' import ProviderItem from './provider-item' import OpenaiHostedProvider from './openai-hosted-provider' import AnthropicHostedProvider from './anthropic-hosted-provider' import type { ProviderHosted } from '@/models/common' import { fetchProviders } from '@/service/common' import { IS_CE_EDITION } from '@/config' const providersMap: { [k: string]: any } = { 'openai-custom': { icon: 'openai', name: 'OpenAI', }, 'azure_openai-custom': { icon: 'azure', name: 'Azure OpenAI Service', }, 'anthropic-custom': { icon: 'anthropic', name: 'Anthropic', }, } // const providersList = [ // { // id: 'openai', // name: 'OpenAI', // providerKey: '1', // status: '', // child: // }, // { // id: 'azure', // name: 'Azure OpenAI Service', // providerKey: '1', // status: 'error', // child: // }, // { // id: 'anthropic', // name: 'Anthropic', // providerKey: '', // status: '', // child:
placeholder
// }, // { // id: 'hugging-face', // name: 'Hugging Face Hub', // providerKey: '', // comingSoon: true, // status: '', // child:
placeholder
// } // ] const ProviderPage = () => { const { t } = useTranslation() const [activeProviderId, setActiveProviderId] = useState('') const { data, mutate } = useSWR({ url: '/workspaces/current/providers' }, fetchProviders) const providers = data?.filter(provider => providersMap[`${provider.provider_name}-${provider.provider_type}`])?.map((provider) => { const providerKey = `${provider.provider_name}-${provider.provider_type}` return { provider, icon: providersMap[providerKey].icon, name: providersMap[providerKey].name, } }) const providerHosted = data?.filter(provider => provider.provider_name === 'openai' && provider.provider_type === 'system')?.[0] const anthropicHosted = data?.filter(provider => provider.provider_name === 'anthropic' && provider.provider_type === 'system')?.[0] const providedOpenaiProvider = data?.find(provider => provider.is_enabled && (provider.provider_name === 'openai' || provider.provider_name === 'azure_openai')) return (
{ providerHosted && !IS_CE_EDITION && ( <>
) } { anthropicHosted && !IS_CE_EDITION && ( <>
) }
{ providers?.map(providerItem => ( setActiveProviderId(aid)} onSave={() => mutate()} providedOpenaiProvider={providedOpenaiProvider} /> )) }
{t('common.provider.encrypted.front')} PKCS1_OAEP {t('common.provider.encrypted.back')}
) } export default ProviderPage