fix: maas provider custom config

This commit is contained in:
jialin
2026-02-03 20:26:00 +08:00
parent 7548836b67
commit 42f24245b5
7 changed files with 33 additions and 24 deletions
+2 -2
View File
@@ -255,8 +255,8 @@ export default {
'models.catalog.precision': 'Precision', 'models.catalog.precision': 'Precision',
'models.form.gpuPerReplica.tips': 'Enter a custom number', 'models.form.gpuPerReplica.tips': 'Enter a custom number',
'models.form.generic_proxy': 'Enable Generic Proxy', 'models.form.generic_proxy': 'Enable Generic Proxy',
'models.form.enable_model_access': 'Enable Model Access', 'models.form.enableModelRoute': 'Enable Model Route',
'models.form.enable_model_access.tips': 'Enable Model Access', 'models.form.enableModelRoute.tips': 'Enable Model Route',
'models.form.generic_proxy.tips': 'models.form.generic_proxy.tips':
'After enabling the generic proxy, you can access URI paths that do not follow the OpenAI API standard.', 'After enabling the generic proxy, you can access URI paths that do not follow the OpenAI API standard.',
'models.form.generic_proxy.button': 'Generic Proxy', 'models.form.generic_proxy.button': 'Generic Proxy',
+4 -4
View File
@@ -255,8 +255,8 @@ export default {
'models.catalog.precision': 'Precision', 'models.catalog.precision': 'Precision',
'models.form.gpuPerReplica.tips': 'Enter a custom number', 'models.form.gpuPerReplica.tips': 'Enter a custom number',
'models.form.generic_proxy': 'Enable Generic Proxy', 'models.form.generic_proxy': 'Enable Generic Proxy',
'models.form.enable_model_access': 'Enable Model Access', 'models.form.enableModelRoute': 'Enable Model Route',
'models.form.enable_model_access.tips': 'Enable Model Access', 'models.form.enableModelRoute.tips': 'Enable Model Route',
'models.form.generic_proxy.tips': 'models.form.generic_proxy.tips':
'After enabling the generic proxy, you can access URI paths that do not follow the OpenAI API standard.', 'After enabling the generic proxy, you can access URI paths that do not follow the OpenAI API standard.',
'models.form.generic_proxy.button': 'Generic Proxy', 'models.form.generic_proxy.button': 'Generic Proxy',
@@ -377,6 +377,6 @@ export default {
// 76. 'models.form.maxContextLength': 'Maximum Context Length', // 76. 'models.form.maxContextLength': 'Maximum Context Length',
// 77. 'models.form.backend.helperText': 'Not enabled yet. Will be enabled after deployment. ', // 77. 'models.form.backend.helperText': 'Not enabled yet. Will be enabled after deployment. ',
// 78. 'models.table.instance.benchmark': 'Run Benchmark' // 78. 'models.table.instance.benchmark': 'Run Benchmark'
// 77. 'models.form.enable_model_access': 'Enable Model Access', // 77. 'models.form.enableModelRoute': 'Enable Model Route',
// 78. 'models.form.enable_model_access.tips': 'Enable Model Access', // 78. 'models.form.enableModelRoute.tips': 'Enable Model Route',
// ========== End of To-Do List ========== // ========== End of To-Do List ==========
+4 -4
View File
@@ -260,8 +260,8 @@ export default {
'models.catalog.precision': 'Точность', 'models.catalog.precision': 'Точность',
'models.form.gpuPerReplica.tips': 'Введите произвольное число', 'models.form.gpuPerReplica.tips': 'Введите произвольное число',
'models.form.generic_proxy': 'Включить универсальный прокси', 'models.form.generic_proxy': 'Включить универсальный прокси',
'models.form.enable_model_access': 'Enable Model Access', 'models.form.enableModelRoute': 'Enable Model Route',
'models.form.enable_model_access.tips': 'Enable Model Access', 'models.form.enableModelRoute.tips': 'Enable Model Route',
'models.form.generic_proxy.tips': 'models.form.generic_proxy.tips':
'После включения универсального прокси вы можете получать доступ к URI-путям, которые не следуют стандарту OpenAI API.', 'После включения универсального прокси вы можете получать доступ к URI-путям, которые не следуют стандарту OpenAI API.',
'models.form.generic_proxy.button': 'Универсальный прокси', 'models.form.generic_proxy.button': 'Универсальный прокси',
@@ -289,6 +289,6 @@ export default {
// 1. 'models.form.maxContextLength': 'Maximum Context Length', // 1. 'models.form.maxContextLength': 'Maximum Context Length',
// 2. 'models.form.backend.helperText': 'Not enabled yet. Will be enabled after deployment. ', // 2. 'models.form.backend.helperText': 'Not enabled yet. Will be enabled after deployment. ',
// 3. 'models.table.instance.benchmark': 'Run Benchmark' // 3. 'models.table.instance.benchmark': 'Run Benchmark'
// 2. 'models.form.enable_model_access': 'Enable Model Access', // 2. 'models.form.enableModelRoute': 'Enable Model Route',
// 3. 'models.form.enable_model_access.tips': 'Enable Model Access', // 3. 'models.form.enableModelRoute.tips': 'Enable Model Route',
// ========== End of To-Do List ========== // ========== End of To-Do List ==========
+2 -2
View File
@@ -242,8 +242,8 @@ export default {
'models.catalog.precision': '精度', 'models.catalog.precision': '精度',
'models.form.gpuPerReplica.tips': '输入自定义数值', 'models.form.gpuPerReplica.tips': '输入自定义数值',
'models.form.generic_proxy': '启用通用代理', 'models.form.generic_proxy': '启用通用代理',
'models.form.enable_model_access': '启用模型接入', 'models.form.enableModelRoute': '启用模型路由',
'models.form.enable_model_access.tips': '启用模型接入', 'models.form.enableModelRoute.tips': '启用模型路由',
'models.form.generic_proxy.tips': 'models.form.generic_proxy.tips':
'启用通用代理后可支持访问非 OpenAI-API 标准的 URI 路径。', '启用通用代理后可支持访问非 OpenAI-API 标准的 URI 路径。',
'models.form.generic_proxy.button': '通用代理', 'models.form.generic_proxy.button': '通用代理',
+3 -6
View File
@@ -16,7 +16,7 @@ const AdvanceConfig = () => {
const form = Form.useFormInstance(); const form = Form.useFormInstance();
const EnviromentVars = Form.useWatch('env', form); const EnviromentVars = Form.useWatch('env', form);
const backend = Form.useWatch('backend', form); const backend = Form.useWatch('backend', form);
const modelAccessEnable = Form.useWatch('enable_model_route', form); const modelRouteEnable = Form.useWatch('enable_model_route', form);
const { const {
onValuesChange, onValuesChange,
backendOptions, backendOptions,
@@ -139,15 +139,12 @@ const AdvanceConfig = () => {
style={{ marginBottom: 8 }} style={{ marginBottom: 8 }}
> >
<CheckboxField <CheckboxField
description={intl.formatMessage({
id: 'models.form.enable_model_access.tips'
})}
label={intl.formatMessage({ label={intl.formatMessage({
id: 'models.form.enable_model_access' id: 'models.form.enableModelRoute'
})} })}
></CheckboxField> ></CheckboxField>
</Form.Item> </Form.Item>
{modelAccessEnable && ( {modelRouteEnable && (
<Form.Item<FormData> <Form.Item<FormData>
name="generic_proxy" name="generic_proxy"
valuePropName="checked" valuePropName="checked"
+15 -3
View File
@@ -4,6 +4,7 @@ import { PageActionType } from '@/config/types';
import CollapsePanel from '@/pages/_components/collapse-panel'; import CollapsePanel from '@/pages/_components/collapse-panel';
import { useWrapperContext } from '@/pages/_components/column-wrapper/use-wrapper-context'; import { useWrapperContext } from '@/pages/_components/column-wrapper/use-wrapper-context';
import ScrollSpyTabs from '@/pages/_components/scroll-spy-tabs'; import ScrollSpyTabs from '@/pages/_components/scroll-spy-tabs';
import { json2Yaml, yaml2Json } from '@/pages/backends/config';
import { useIntl } from '@umijs/max'; import { useIntl } from '@umijs/max';
import { Form } from 'antd'; import { Form } from 'antd';
import _ from 'lodash'; import _ from 'lodash';
@@ -41,6 +42,7 @@ const ProviderForm: React.FC<ProviderFormProps> = forwardRef((props, ref) => {
const { getScrollElementScrollableHeight } = useWrapperContext(); const { getScrollElementScrollableHeight } = useWrapperContext();
const [activeKey, setActiveKey] = useState<string[]>([TABKeysMap.BASIC]); const [activeKey, setActiveKey] = useState<string[]>([TABKeysMap.BASIC]);
const scrollTabsRef = useRef<any>(null); const scrollTabsRef = useRef<any>(null);
const advanceRef = useRef<any>(null);
const segmentOptions = [ const segmentOptions = [
{ {
@@ -69,7 +71,11 @@ const ProviderForm: React.FC<ProviderFormProps> = forwardRef((props, ref) => {
); );
const data = { const data = {
..._.omit(values, ['api_key']), ..._.omit(values, ['api_key']),
api_tokens: _.concat([], values.api_key, apiTokens || []) api_tokens: _.concat([], values.api_key, apiTokens || []),
config: {
type: values.config.type,
...yaml2Json(advanceRef.current?.getYamlValue() || '')
}
}; };
onFinish(data); onFinish(data);
}; };
@@ -100,7 +106,8 @@ const ProviderForm: React.FC<ProviderFormProps> = forwardRef((props, ref) => {
...currentData, ...currentData,
api_key: currentData.api_tokens?.[0] || '', api_key: currentData.api_tokens?.[0] || '',
api_tokens: currentData.api_tokens?.slice(1) || [], api_tokens: currentData.api_tokens?.slice(1) || [],
proxy_enabled: !!currentData.proxy_url proxy_enabled: !!currentData.proxy_url,
custom_config: json2Yaml(_.omit(currentData.config, ['type']) || {})
}); });
} }
}, [form, currentData, action]); }, [form, currentData, action]);
@@ -144,7 +151,12 @@ const ProviderForm: React.FC<ProviderFormProps> = forwardRef((props, ref) => {
key: TABKeysMap.ADVANCED, key: TABKeysMap.ADVANCED,
label: intl.formatMessage({ id: 'resources.form.advanced' }), label: intl.formatMessage({ id: 'resources.form.advanced' }),
forceRender: true, forceRender: true,
children: <AdvanceConfig action={action}></AdvanceConfig> children: (
<AdvanceConfig
action={action}
ref={advanceRef}
></AdvanceConfig>
)
} }
]} ]}
></CollapsePanel> ></CollapsePanel>
+3 -3
View File
@@ -280,11 +280,11 @@ const ModelRoutes: React.FC = () => {
image={<IconFont type="icon-extension-outline" />} image={<IconFont type="icon-extension-outline" />}
filters={_.omit(queryParams, ['sort_by'])} filters={_.omit(queryParams, ['sort_by'])}
noFoundText={intl.formatMessage({ noFoundText={intl.formatMessage({
id: 'noresult.accesses.nofound' id: 'noresult.routes.nofound'
})} })}
title={intl.formatMessage({ id: 'noresult.accesses.title' })} title={intl.formatMessage({ id: 'noresult.routes.title' })}
subTitle={intl.formatMessage({ subTitle={intl.formatMessage({
id: 'noresult.accesses.subTitle' id: 'noresult.routes.subTitle'
})} })}
onClick={handleClickDropdown} onClick={handleClickDropdown}
buttonText={intl.formatMessage({ id: 'noresult.button.add' })} buttonText={intl.formatMessage({ id: 'noresult.button.add' })}