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, id?: string): 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/${id ? `${id}/` : ''}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
- }
|