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