chore: obsolete info api use new api (#954)

This commit is contained in:
Joel 2023-08-22 16:59:57 +08:00 committed by GitHub
parent e67a1413b6
commit 4db35fa375
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 28 deletions

View File

@ -16,22 +16,21 @@ import ConfigModel from '@/app/components/app/configuration/config-model'
import Config from '@/app/components/app/configuration/config' import Config from '@/app/components/app/configuration/config'
import Debug from '@/app/components/app/configuration/debug' import Debug from '@/app/components/app/configuration/debug'
import Confirm from '@/app/components/base/confirm' import Confirm from '@/app/components/base/confirm'
import { ProviderType } from '@/types/app' import { ProviderEnum } from '@/app/components/header/account-setting/model-page/declarations'
import type { AppDetailResponse } from '@/models/app' import type { AppDetailResponse } from '@/models/app'
import { ToastContext } from '@/app/components/base/toast' import { ToastContext } from '@/app/components/base/toast'
import { fetchTenantInfo } from '@/service/common'
import { fetchAppDetail, updateAppModelConfig } from '@/service/apps' import { fetchAppDetail, updateAppModelConfig } from '@/service/apps'
import { promptVariablesToUserInputsForm, userInputsFormToPromptVariables } from '@/utils/model-config' import { promptVariablesToUserInputsForm, userInputsFormToPromptVariables } from '@/utils/model-config'
import { fetchDatasets } from '@/service/datasets' import { fetchDatasets } from '@/service/datasets'
import AccountSetting from '@/app/components/header/account-setting' import AccountSetting from '@/app/components/header/account-setting'
import { useProviderContext } from '@/context/provider-context'
const Configuration: FC = () => { const Configuration: FC = () => {
const { t } = useTranslation() const { t } = useTranslation()
const { notify } = useContext(ToastContext) const { notify } = useContext(ToastContext)
const [hasFetchedDetail, setHasFetchedDetail] = useState(false) const [hasFetchedDetail, setHasFetchedDetail] = useState(false)
const [hasFetchedKey, setHasFetchedKey] = useState(false) const isLoading = !hasFetchedDetail
const isLoading = !hasFetchedDetail || !hasFetchedKey
const pathname = usePathname() const pathname = usePathname()
const matched = pathname.match(/\/app\/([^/]+)/) const matched = pathname.match(/\/app\/([^/]+)/)
const appId = (matched?.length && matched[1]) ? matched[1] : '' const appId = (matched?.length && matched[1]) ? matched[1] : ''
@ -68,7 +67,7 @@ const Configuration: FC = () => {
frequency_penalty: 1, // -2-2 frequency_penalty: 1, // -2-2
}) })
const [modelConfig, doSetModelConfig] = useState<ModelConfig>({ const [modelConfig, doSetModelConfig] = useState<ModelConfig>({
provider: ProviderType.openai, provider: ProviderEnum.openai,
model_id: 'gpt-3.5-turbo', model_id: 'gpt-3.5-turbo',
configs: { configs: {
prompt_template: '', prompt_template: '',
@ -85,7 +84,7 @@ const Configuration: FC = () => {
doSetModelConfig(newModelConfig) doSetModelConfig(newModelConfig)
} }
const setModelId = (modelId: string, provider: ProviderType) => { const setModelId = (modelId: string, provider: ProviderEnum) => {
const newModelConfig = produce(modelConfig, (draft: any) => { const newModelConfig = produce(modelConfig, (draft: any) => {
draft.provider = provider draft.provider = provider
draft.model_id = modelId draft.model_id = modelId
@ -113,25 +112,27 @@ const Configuration: FC = () => {
}) })
} }
const [hasSetCustomAPIKEY, setHasSetCustomerAPIKEY] = useState(true) const { textGenerationModelList } = useProviderContext()
const [isTrailFinished, setIsTrailFinished] = useState(false) const hasSetCustomAPIKEY = !!textGenerationModelList?.find(({ model_provider: provider }) => {
if (provider.provider_type === 'system' && provider.quota_type === 'paid')
return true
if (provider.provider_type === 'custom')
return true
return false
})
const isTrailFinished = !hasSetCustomAPIKEY && textGenerationModelList
.filter(({ model_provider: provider }) => provider.quota_type === 'trial')
.every(({ model_provider: provider }) => {
const { quota_used, quota_limit } = provider
return quota_used === quota_limit
})
const hasSetAPIKEY = hasSetCustomAPIKEY || !isTrailFinished const hasSetAPIKEY = hasSetCustomAPIKEY || !isTrailFinished
const [isShowSetAPIKey, { setTrue: showSetAPIKey, setFalse: hideSetAPIkey }] = useBoolean() const [isShowSetAPIKey, { setTrue: showSetAPIKey, setFalse: hideSetAPIkey }] = useBoolean()
const checkAPIKey = async () => {
const { in_trail, trial_end_reason } = await fetchTenantInfo({ url: '/info' })
const isTrailFinished = in_trail && trial_end_reason === 'trial_exceeded'
const hasSetCustomAPIKEY = trial_end_reason === 'using_custom'
setHasSetCustomerAPIKEY(hasSetCustomAPIKEY)
setIsTrailFinished(isTrailFinished)
setHasFetchedKey(true)
}
useEffect(() => {
checkAPIKey()
}, [])
useEffect(() => { useEffect(() => {
(fetchAppDetail({ url: '/apps', id: appId }) as any).then(async (res: AppDetailResponse) => { (fetchAppDetail({ url: '/apps', id: appId }) as any).then(async (res: AppDetailResponse) => {
setMode(res.mode) setMode(res.mode)
@ -284,7 +285,7 @@ const Configuration: FC = () => {
{/* Model and Parameters */} {/* Model and Parameters */}
<ConfigModel <ConfigModel
mode={mode} mode={mode}
provider={modelConfig.provider as ProviderType} provider={modelConfig.provider as ProviderEnum}
completionParams={completionParams} completionParams={completionParams}
modelId={modelConfig.model_id} modelId={modelConfig.model_id}
setModelId={setModelId} setModelId={setModelId}
@ -338,7 +339,6 @@ const Configuration: FC = () => {
) )
} }
{isShowSetAPIKey && <AccountSetting activeTab="provider" onCancel={async () => { {isShowSetAPIKey && <AccountSetting activeTab="provider" onCancel={async () => {
await checkAPIKey()
hideSetAPIkey() hideSetAPIkey()
}} />} }} />}
</> </>

View File

@ -6,7 +6,7 @@ import type {
ICurrentWorkspace, ICurrentWorkspace,
IWorkspace, LangGeniusVersionResponse, Member, IWorkspace, LangGeniusVersionResponse, Member,
OauthResponse, PluginProvider, Provider, ProviderAnthropicToken, ProviderAzureToken, OauthResponse, PluginProvider, Provider, ProviderAnthropicToken, ProviderAzureToken,
SetupStatusResponse, TenantInfoResponse, UserProfileOriginResponse, SetupStatusResponse, UserProfileOriginResponse,
} from '@/models/common' } from '@/models/common'
import type { import type {
UpdateOpenAIKeyResponse, UpdateOpenAIKeyResponse,
@ -34,10 +34,6 @@ export const updateUserProfile: Fetcher<CommonResponse, { url: string; body: Rec
return post(url, { body }) as Promise<CommonResponse> return post(url, { body }) as Promise<CommonResponse>
} }
export const fetchTenantInfo: Fetcher<TenantInfoResponse, { url: string }> = ({ url }) => {
return get(url) as Promise<TenantInfoResponse>
}
export const logout: Fetcher<CommonResponse, { url: string; params: Record<string, any> }> = ({ url, params }) => { export const logout: Fetcher<CommonResponse, { url: string; params: Record<string, any> }> = ({ url, params }) => {
return get(url, params) as Promise<CommonResponse> return get(url, params) as Promise<CommonResponse>
} }