diff --git a/src/locales/en-US/models.ts b/src/locales/en-US/models.ts index 308e015c..86639a85 100644 --- a/src/locales/en-US/models.ts +++ b/src/locales/en-US/models.ts @@ -90,11 +90,11 @@ export default { 'models.form.backend.llamabox': 'For GGUF format models, supports Linux, macOS, and Windows.', 'models.form.backend.vllm': - 'Built-in support for NVIDIA, AMD, Ascend, Hygon, Iluvatar, and MetaX devices.', + 'Built-in support for NVIDIA, AMD, Ascend, Hygon, Moore Threads, Iluvatar, MetaX, T-Head PPU devices.', 'models.form.backend.voxbox': 'Only supports NVIDIA GPUs and CPUs.', 'models.form.backend.mindie': 'Only supports Ascend NPUs.', 'models.form.backend.sglang': - 'Built-in support for NVIDIA/AMD GPUs and Ascend NPUs.', + 'Built-in support for NVIDIA, AMD, Ascend, Moore Threads, MetaX, T-Head PPU devices.', 'models.form.search.gguftips': 'If using macOS or Windows as a worker, check GGUF (uncheck for audio models).', 'models.form.button.addlabel': 'Add Label', diff --git a/src/locales/en-US/routes.ts b/src/locales/en-US/routes.ts index d235c83b..303e2e09 100644 --- a/src/locales/en-US/routes.ts +++ b/src/locales/en-US/routes.ts @@ -23,5 +23,7 @@ export default { 'routes.form.metadata.icons': 'Icon', 'routes.form.metadata.uploadIcon': 'Upload Icon', 'routes.form.fallback.warning': - 'Changes to fallback route target take effect after one minute.' + 'Changes to fallback route target take effect after one minute.', + 'routes.form.weight.tips': + 'Default weight is 100. A higher value means higher priority.' }; diff --git a/src/locales/ja-JP/models.ts b/src/locales/ja-JP/models.ts index dc8d9354..13b21fa8 100644 --- a/src/locales/ja-JP/models.ts +++ b/src/locales/ja-JP/models.ts @@ -91,11 +91,11 @@ export default { 'models.form.backend.llamabox': 'GGUF形式のモデル用(Linux、macOS、Windowsをサポート)。', 'models.form.backend.vllm': - 'Built-in support for NVIDIA, AMD, Ascend, Hygon, Iluvatar, and MetaX devices.', + 'Built-in support for NVIDIA, AMD, Ascend, Hygon, Moore Threads, Iluvatar, MetaX, T-Head PPU devices.', 'models.form.backend.voxbox': 'Only supports NVIDIA GPUs and CPUs.', 'models.form.backend.mindie': 'Only supports Ascend NPUs.', 'models.form.backend.sglang': - 'Built-in support for NVIDIA/AMD GPUs and Ascend NPUs.', + 'Built-in support for NVIDIA, AMD, Ascend, Moore Threads, MetaX, T-Head PPU devices.', 'models.form.search.gguftips': 'macOSまたはWindowsをワーカーとして使用する場合、GGUFをチェックしてください(音声モデルの場合はオフにしてください)。', 'models.form.button.addlabel': 'ラベルを追加', @@ -357,10 +357,10 @@ export default { // 55. 'models.form.generic_proxy.button': 'Generic Proxy', // 56. 'models.accessControlModal.includeusers': 'Include Users', // 57. 'models.table.genericProxy': 'Use the following path prefix, and set the model name in either the X-GPUStack-Model request header or the model field in the request body. All requests under this path prefix will be forwarded to the inference backend.' -// 58. 'models.form.backend.vllm': 'Built-in support for NVIDIA, AMD, Ascend, Hygon, Iluvatar, and MetaX devices.', +// 58. 'models.form.backend.vllm': 'Built-in support for NVIDIA, AMD, Ascend, Hygon, Moore Threads, Iluvatar, MetaX, T-Head PPU devices.', // 59. 'models.form.backend.voxbox': 'Only supports NVIDIA GPUs and CPUs.', // 60. models.form.backend.mindie': 'Only supports Ascend NPUs.', -// 61. 'models.form.backend.sglang': 'Built-in support for NVIDIA/AMD GPUs and Ascend NPUs.', +// 61. 'models.form.backend.sglang': 'Built-in support for NVIDIA, AMD, Ascend, Moore Threads, MetaX, T-Head PPU devices.', // 62. 'models.form.backend_parameters.vllm.tips': 'For more details about {backend} parameters, see here.', // 63. 'models.button.accessSettings.tips': 'Changes to access settings take effect after one minute.', // 64. 'models.table.userSelection.tips': 'Admin users can access all models by default.', diff --git a/src/locales/ja-JP/routes.ts b/src/locales/ja-JP/routes.ts index d235c83b..303e2e09 100644 --- a/src/locales/ja-JP/routes.ts +++ b/src/locales/ja-JP/routes.ts @@ -23,5 +23,7 @@ export default { 'routes.form.metadata.icons': 'Icon', 'routes.form.metadata.uploadIcon': 'Upload Icon', 'routes.form.fallback.warning': - 'Changes to fallback route target take effect after one minute.' + 'Changes to fallback route target take effect after one minute.', + 'routes.form.weight.tips': + 'Default weight is 100. A higher value means higher priority.' }; diff --git a/src/locales/ru-RU/models.ts b/src/locales/ru-RU/models.ts index e7bdcc2a..97591147 100644 --- a/src/locales/ru-RU/models.ts +++ b/src/locales/ru-RU/models.ts @@ -92,11 +92,11 @@ export default { 'models.form.backend.llamabox': 'Для моделей формата GGUF. Поддержка Linux, macOS и Windows.', 'models.form.backend.vllm': - 'Встроенная поддержка устройств NVIDIA, AMD, Ascend, Hygon, Iluvatar и MetaX.', + 'Built-in support for NVIDIA, AMD, Ascend, Hygon, Moore Threads, Iluvatar, MetaX, T-Head PPU devices.', 'models.form.backend.voxbox': 'Поддерживает только GPU NVIDIA и CPU.', 'models.form.backend.mindie': 'Поддерживает только Ascend NPU.', 'models.form.backend.sglang': - 'Встроенная поддержка GPU NVIDIA/AMD и Ascend NPU.', + 'Built-in support for NVIDIA, AMD, Ascend, Moore Threads, MetaX, T-Head PPU devices.', 'models.form.search.gguftips': 'Для воркеров на macOS/Windows отметьте GGUF (для аудиомоделей снимите).', 'models.form.button.addlabel': 'Добавить метку', @@ -292,4 +292,6 @@ export default { // 3. 'models.table.instance.benchmark': 'Run Benchmark' // 2. 'models.form.enableModelRoute': 'Enable Model Route', // 3. 'models.form.enableModelRoute.tips': 'Enable Model Route', +// 4. 'models.form.backend.vllm': 'Built-in support for NVIDIA, AMD, Ascend, Hygon, Moore Threads, Iluvatar, MetaX, T-Head PPU devices.', +// 5. 'models.form.backend.sglang': 'Built-in support for NVIDIA, AMD, Ascend, Moore Threads, MetaX, T-Head PPU devices.', // ========== End of To-Do List ========== diff --git a/src/locales/ru-RU/routes.ts b/src/locales/ru-RU/routes.ts index d235c83b..303e2e09 100644 --- a/src/locales/ru-RU/routes.ts +++ b/src/locales/ru-RU/routes.ts @@ -23,5 +23,7 @@ export default { 'routes.form.metadata.icons': 'Icon', 'routes.form.metadata.uploadIcon': 'Upload Icon', 'routes.form.fallback.warning': - 'Changes to fallback route target take effect after one minute.' + 'Changes to fallback route target take effect after one minute.', + 'routes.form.weight.tips': + 'Default weight is 100. A higher value means higher priority.' }; diff --git a/src/locales/zh-CN/models.ts b/src/locales/zh-CN/models.ts index e1590670..be78ec8f 100644 --- a/src/locales/zh-CN/models.ts +++ b/src/locales/zh-CN/models.ts @@ -89,10 +89,11 @@ export default { 'models.form.backend.llamabox': '用于 GGUF 格式模型,支持 Linux, macOS 和 Windows。', 'models.form.backend.vllm': - '内置支持 NVIDIA、AMD、昇腾、海光、天数智芯和沐曦设备。', + '内置支持 NVIDIA、AMD、昇腾、海光、摩尔线程、天数智芯、沐曦和平头哥 PPU 设备。', 'models.form.backend.voxbox': '仅支持 NVIDIA GPU 和 CPU。', 'models.form.backend.mindie': '仅支持昇腾 NPU。', - 'models.form.backend.sglang': '内置支持 NVIDIA/AMD GPU 和昇腾 NPU。', + 'models.form.backend.sglang': + '内置支持 NVIDIA、AMD、昇腾、摩尔线程、沐曦和平头哥 PPU 设备。', 'models.form.search.gguftips': '当 macOS 或 Windows 作节点时勾选 GGUF(搜索语音模型时取消勾选)', 'models.form.button.addlabel': '添加标签', diff --git a/src/locales/zh-CN/routes.ts b/src/locales/zh-CN/routes.ts index 3c824d22..f92c0a8f 100644 --- a/src/locales/zh-CN/routes.ts +++ b/src/locales/zh-CN/routes.ts @@ -22,5 +22,6 @@ export default { 'routes.form.metadata.languages': '语言', 'routes.form.metadata.icons': '图标', 'routes.form.metadata.uploadIcon': '上传图标', - 'routes.form.fallback.warning': 'Fallback 路由目标的更改将在一分钟后生效。' + 'routes.form.fallback.warning': 'Fallback 路由目标的更改将在一分钟后生效。', + 'routes.form.weight.tips': '权重默认值为 100,数值越大,优先级越高。' }; diff --git a/src/pages/_components/doc-link.tsx b/src/pages/_components/doc-link.tsx new file mode 100644 index 00000000..672f8f14 --- /dev/null +++ b/src/pages/_components/doc-link.tsx @@ -0,0 +1,38 @@ +import IconFont from '@/components/icon-font'; +import { useIntl } from '@umijs/max'; +import { Button } from 'antd'; +import React from 'react'; +import styled from 'styled-components'; + +const Wrapper = styled.div` + display: flex; + align-items: center; + flex-wrap: wrap; + .title { + margin-right: 8px; + } +`; + +const DocLink: React.FC<{ + link: string; + title?: React.ReactNode; +}> = ({ link, title }) => { + const intl = useIntl(); + return ( + + {title && {title}} + + + ); +}; + +export default DocLink; diff --git a/src/pages/llmodels/config/index.ts b/src/pages/llmodels/config/index.ts index 25d2d08d..c2863bfb 100644 --- a/src/pages/llmodels/config/index.ts +++ b/src/pages/llmodels/config/index.ts @@ -418,7 +418,7 @@ export const getBackendParamsTips = (backend: string) => { return { backend: 'Ascend MindIE', releases: '', - link: 'http://docs.gpustack.ai/latest/user-guide/inference-backends/#parameters-reference_2', + link: 'https://docs.gpustack.ai/latest/user-guide/built-in-inference-backends/?h=parameters+reference#parameters-reference_2', version: '1.0.0' }; } diff --git a/src/pages/llmodels/forms/advance-config.tsx b/src/pages/llmodels/forms/advance-config.tsx index cbac98a8..94be4fd2 100644 --- a/src/pages/llmodels/forms/advance-config.tsx +++ b/src/pages/llmodels/forms/advance-config.tsx @@ -2,6 +2,8 @@ import LabelSelector from '@/components/label-selector'; import CheckboxField from '@/components/seal-form/checkbox-field'; import SealSelect from '@/components/seal-form/seal-select'; import { PageAction } from '@/config'; +import DocLink from '@/pages/_components/doc-link'; +import { genericReferLink } from '@/pages/model-routes/config'; import { useIntl } from '@umijs/max'; import { Form } from 'antd'; import _ from 'lodash'; @@ -156,9 +158,14 @@ const AdvanceConfig = () => { style={{ marginBottom: 8 }} > + } label={intl.formatMessage({ id: 'models.form.generic_proxy' })} diff --git a/src/pages/llmodels/forms/backend-parameters-list.tsx b/src/pages/llmodels/forms/backend-parameters-list.tsx index 0fc8139a..8e71546c 100644 --- a/src/pages/llmodels/forms/backend-parameters-list.tsx +++ b/src/pages/llmodels/forms/backend-parameters-list.tsx @@ -59,11 +59,6 @@ const BackendParametersList: React.FC = () => { description={ backendParamsTips.link && ( - {backend === backendOptionsMap.ascendMindie && ( - - {intl.formatMessage({ id: 'models.backend.mindie.310p' })} - - )} = (props) => { required description={intl.formatMessage( { id: 'models.form.replicas.tips' }, - { api: `${window.location.origin}/${GPUSTACK_API_BASE_URL}` } + { api: `${window.location.origin}/${OPENAI_COMPATIBLE}` } )} min={0} > diff --git a/src/pages/maas-provider/config/index.ts b/src/pages/maas-provider/config/index.ts index d42b75ca..53773269 100644 --- a/src/pages/maas-provider/config/index.ts +++ b/src/pages/maas-provider/config/index.ts @@ -44,3 +44,6 @@ export const rowActionList = [ } } ]; + +export const referLinkZh = `https://higress.cn/docs/latest/plugins/ai/api-provider/ai-proxy/?spm=36971b57.3562eb7c.0.0.31764f5f7uLs2F#%E6%8F%90%E4%BE%9B%E5%95%86%E7%89%B9%E6%9C%89%E9%85%8D%E7%BD%AE`; +export const referLinkEn = `https://higress.cn/en/docs/latest/plugins/ai/api-provider/ai-proxy/?spm=36971b57.4a688c53.0.0.64ac436ewz1xGA`; diff --git a/src/pages/maas-provider/forms/advance-config.tsx b/src/pages/maas-provider/forms/advance-config.tsx index 6d342ece..1707a395 100644 --- a/src/pages/maas-provider/forms/advance-config.tsx +++ b/src/pages/maas-provider/forms/advance-config.tsx @@ -5,12 +5,10 @@ import YamlEditor from '@/pages/_components/yaml-editor'; import { useIntl } from '@umijs/max'; import { Button, Form } from 'antd'; import React, { forwardRef, useImperativeHandle } from 'react'; +import { referLinkEn, referLinkZh } from '../config'; import APIKeys from './api-keys'; import ProxyConfig from './proxy-config'; -const referLinkZh = `https://higress.cn/docs/latest/plugins/ai/api-provider/ai-proxy/?spm=36971b57.3562eb7c.0.0.31764f5f7uLs2F#%E6%8F%90%E4%BE%9B%E5%95%86%E7%89%B9%E6%9C%89%E9%85%8D%E7%BD%AE`; -const referLinkEn = `https://higress.cn/en/docs/latest/plugins/ai/api-provider/ai-proxy/?spm=36971b57.4a688c53.0.0.64ac436ewz1xGA`; - const AdvanceConfig: React.FC<{ action: PageActionType; ref?: any; diff --git a/src/pages/model-routes/config/index.ts b/src/pages/model-routes/config/index.ts index ab61272b..90e6c3e6 100644 --- a/src/pages/model-routes/config/index.ts +++ b/src/pages/model-routes/config/index.ts @@ -48,3 +48,5 @@ export const rowActionList = [ } } ]; + +export const genericReferLink = `https://docs.gpustack.ai/latest/user-guide/model-deployment-management/#enable-generic-proxy`; diff --git a/src/pages/model-routes/forms/basic.tsx b/src/pages/model-routes/forms/basic.tsx index 646b3eea..abd1aaf4 100644 --- a/src/pages/model-routes/forms/basic.tsx +++ b/src/pages/model-routes/forms/basic.tsx @@ -2,9 +2,11 @@ import CheckboxField from '@/components/seal-form/checkbox-field'; import SealInput from '@/components/seal-form/seal-input'; import useAppUtils from '@/hooks/use-app-utils'; import CategorySelect from '@/pages/_components/category-select'; +import DocLink from '@/pages/_components/doc-link'; import { categoryOptions } from '@/pages/llmodels/config'; import { useIntl } from '@umijs/max'; import { Form } from 'antd'; +import { genericReferLink } from '../config'; import { FormData } from '../config/types'; const Basic = () => { @@ -61,9 +63,14 @@ const Basic = () => { style={{ marginBottom: 8 }} > + } label={intl.formatMessage({ id: 'models.form.generic_proxy' })} diff --git a/src/pages/model-routes/forms/index.tsx b/src/pages/model-routes/forms/index.tsx index a23f306c..8c16fdec 100644 --- a/src/pages/model-routes/forms/index.tsx +++ b/src/pages/model-routes/forms/index.tsx @@ -4,8 +4,9 @@ import { PageActionType } from '@/config/types'; import CollapsePanel from '@/pages/_components/collapse-panel'; import { useWrapperContext } from '@/pages/_components/column-wrapper/use-wrapper-context'; import ScrollSpyTabs from '@/pages/_components/scroll-spy-tabs'; +import { QuestionCircleOutlined } from '@ant-design/icons'; import { useIntl } from '@umijs/max'; -import { Form } from 'antd'; +import { Flex, Form, Tooltip } from 'antd'; import _ from 'lodash'; import { forwardRef, @@ -194,7 +195,18 @@ const AccessForm: React.FC = forwardRef((props, ref) => { items={[ { key: TABKeysMap.TARGETS, - label: intl.formatMessage({ id: 'routes.form.target.title' }), + label: ( + + {intl.formatMessage({ id: 'routes.form.target.title' })} + + + + + ), forceRender: true, children: } diff --git a/src/pages/model-routes/forms/targets.tsx b/src/pages/model-routes/forms/targets.tsx index 98028e0b..b6897a51 100644 --- a/src/pages/model-routes/forms/targets.tsx +++ b/src/pages/model-routes/forms/targets.tsx @@ -216,22 +216,22 @@ const TargetsForm = forwardRef((props, ref) => { if (data.providerType === 'deployments') { return ( - - - + + + {intl.formatMessage({ id: 'menu.models.deployment' })} - - + + ); } return ( - - - + + + {data.label} - - + + ); };