| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197 | 
							- import { ValidatedStatus } from '../key-validator/declarations'
 
- import type {
 
-   CredentialFormSchemaRadio,
 
-   CredentialFormSchemaTextInput,
 
-   FormValue,
 
-   ModelLoadBalancingConfig,
 
- } from './declarations'
 
- import {
 
-   ConfigurationMethodEnum,
 
-   FormTypeEnum,
 
-   MODEL_TYPE_TEXT,
 
-   ModelTypeEnum,
 
- } from './declarations'
 
- import {
 
-   deleteModelProvider,
 
-   setModelProvider,
 
-   validateModelLoadBalancingCredentials,
 
-   validateModelProvider,
 
- } from '@/service/common'
 
- export const MODEL_PROVIDER_QUOTA_GET_PAID = ['anthropic', 'openai', 'azure_openai']
 
- export const DEFAULT_BACKGROUND_COLOR = '#F3F4F6'
 
- export const isNullOrUndefined = (value: any) => {
 
-   return value === undefined || value === null
 
- }
 
- export const validateCredentials = async (predefined: boolean, provider: string, v: FormValue) => {
 
-   let body, url
 
-   if (predefined) {
 
-     body = {
 
-       credentials: v,
 
-     }
 
-     url = `/workspaces/current/model-providers/${provider}/credentials/validate`
 
-   }
 
-   else {
 
-     const { __model_name, __model_type, ...credentials } = v
 
-     body = {
 
-       model: __model_name,
 
-       model_type: __model_type,
 
-       credentials,
 
-     }
 
-     url = `/workspaces/current/model-providers/${provider}/models/credentials/validate`
 
-   }
 
-   try {
 
-     const res = await validateModelProvider({ url, body })
 
-     if (res.result === 'success')
 
-       return Promise.resolve({ status: ValidatedStatus.Success })
 
-     else
 
-       return Promise.resolve({ status: ValidatedStatus.Error, message: res.error || 'error' })
 
-   }
 
-   catch (e: any) {
 
-     return Promise.resolve({ status: ValidatedStatus.Error, message: e.message })
 
-   }
 
- }
 
- export const validateLoadBalancingCredentials = async (predefined: boolean, provider: string, v: FormValue): Promise<{
 
-   status: ValidatedStatus
 
-   message?: string
 
- }> => {
 
-   const { __model_name, __model_type, ...credentials } = v
 
-   try {
 
-     const res = await validateModelLoadBalancingCredentials({
 
-       url: `/workspaces/current/model-providers/${provider}/models/load-balancing-configs/credentials-validate`,
 
-       body: {
 
-         model: __model_name,
 
-         model_type: __model_type,
 
-         credentials,
 
-       },
 
-     })
 
-     if (res.result === 'success')
 
-       return Promise.resolve({ status: ValidatedStatus.Success })
 
-     else
 
-       return Promise.resolve({ status: ValidatedStatus.Error, message: res.error || 'error' })
 
-   }
 
-   catch (e: any) {
 
-     return Promise.resolve({ status: ValidatedStatus.Error, message: e.message })
 
-   }
 
- }
 
- export const saveCredentials = async (predefined: boolean, provider: string, v: FormValue, loadBalancing?: ModelLoadBalancingConfig) => {
 
-   let body, url
 
-   if (predefined) {
 
-     body = {
 
-       config_from: ConfigurationMethodEnum.predefinedModel,
 
-       credentials: v,
 
-       load_balancing: loadBalancing,
 
-     }
 
-     url = `/workspaces/current/model-providers/${provider}`
 
-   }
 
-   else {
 
-     const { __model_name, __model_type, ...credentials } = v
 
-     body = {
 
-       model: __model_name,
 
-       model_type: __model_type,
 
-       credentials,
 
-       load_balancing: loadBalancing,
 
-     }
 
-     url = `/workspaces/current/model-providers/${provider}/models`
 
-   }
 
-   return setModelProvider({ url, body })
 
- }
 
- export const savePredefinedLoadBalancingConfig = async (provider: string, v: FormValue, loadBalancing?: ModelLoadBalancingConfig) => {
 
-   const { __model_name, __model_type, ...credentials } = v
 
-   const body = {
 
-     config_from: ConfigurationMethodEnum.predefinedModel,
 
-     model: __model_name,
 
-     model_type: __model_type,
 
-     credentials,
 
-     load_balancing: loadBalancing,
 
-   }
 
-   const url = `/workspaces/current/model-providers/${provider}/models`
 
-   return setModelProvider({ url, body })
 
- }
 
- export const removeCredentials = async (predefined: boolean, provider: string, v: FormValue) => {
 
-   let url = ''
 
-   let body
 
-   if (predefined) {
 
-     url = `/workspaces/current/model-providers/${provider}`
 
-   }
 
-   else {
 
-     if (v) {
 
-       const { __model_name, __model_type } = v
 
-       body = {
 
-         model: __model_name,
 
-         model_type: __model_type,
 
-       }
 
-       url = `/workspaces/current/model-providers/${provider}/models`
 
-     }
 
-   }
 
-   return deleteModelProvider({ url, body })
 
- }
 
- export const sizeFormat = (size: number) => {
 
-   const remainder = Math.floor(size / 1000)
 
-   if (remainder < 1)
 
-     return `${size}`
 
-   else
 
-     return `${remainder}K`
 
- }
 
- export const modelTypeFormat = (modelType: ModelTypeEnum) => {
 
-   if (modelType === ModelTypeEnum.textEmbedding)
 
-     return 'TEXT EMBEDDING'
 
-   return modelType.toLocaleUpperCase()
 
- }
 
- export const genModelTypeFormSchema = (modelTypes: ModelTypeEnum[]) => {
 
-   return {
 
-     type: FormTypeEnum.radio,
 
-     label: {
 
-       zh_Hans: '模型类型',
 
-       en_US: 'Model Type',
 
-     },
 
-     variable: '__model_type',
 
-     default: modelTypes[0],
 
-     required: true,
 
-     show_on: [],
 
-     options: modelTypes.map((modelType: ModelTypeEnum) => {
 
-       return {
 
-         value: modelType,
 
-         label: {
 
-           zh_Hans: MODEL_TYPE_TEXT[modelType],
 
-           en_US: MODEL_TYPE_TEXT[modelType],
 
-         },
 
-         show_on: [],
 
-       }
 
-     }),
 
-   } as CredentialFormSchemaRadio
 
- }
 
- export const genModelNameFormSchema = (model?: Pick<CredentialFormSchemaTextInput, 'label' | 'placeholder'>) => {
 
-   return {
 
-     type: FormTypeEnum.textInput,
 
-     label: model?.label || {
 
-       zh_Hans: '模型名称',
 
-       en_US: 'Model Name',
 
-     },
 
-     variable: '__model_name',
 
-     required: true,
 
-     show_on: [],
 
-     placeholder: model?.placeholder || {
 
-       zh_Hans: '请输入模型名称',
 
-       en_US: 'Please enter model name',
 
-     },
 
-   } as CredentialFormSchemaTextInput
 
- }
 
 
  |