Browse Source

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

tags/0.3.15
Joel 2 years ago
parent
commit
4db35fa375
No account linked to committer's email address
2 changed files with 24 additions and 28 deletions
  1. 23
    23
      web/app/components/app/configuration/index.tsx
  2. 1
    5
      web/service/common.ts

+ 23
- 23
web/app/components/app/configuration/index.tsx View File

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 || !hasFetchedKey
const isLoading = !hasFetchedDetail
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] : ''
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: '',
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
}) })
} }


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(() => { useEffect(() => {
(fetchAppDetail({ url: '/apps', id: appId }) as any).then(async (res: AppDetailResponse) => { (fetchAppDetail({ url: '/apps', id: appId }) as any).then(async (res: AppDetailResponse) => {
{/* 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}
) )
} }
{isShowSetAPIKey && <AccountSetting activeTab="provider" onCancel={async () => { {isShowSetAPIKey && <AccountSetting activeTab="provider" onCancel={async () => {
await checkAPIKey()
hideSetAPIkey() hideSetAPIkey()
}} />} }} />}
</> </>

+ 1
- 5
web/service/common.ts View File

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,
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>
} }

Loading…
Cancel
Save