From cb2cbf500ca4de3d31c8123e237274c271b601dd Mon Sep 17 00:00:00 2001 From: balibabu Date: Thu, 11 Apr 2024 18:17:45 +0800 Subject: [PATCH] feat: support Xinference (#319) ### What problem does this PR solve? support xorbitsai inference as model provider Issue link:#299 ### Type of change - [x] New Feature (non-breaking change which adds functionality) --- web/src/assets/svg/enable.svg | 9 ++--- web/src/assets/svg/llm/xinference.svg | 39 +++++++++++++++++++ web/src/locales/en.ts | 3 +- web/src/locales/zh.ts | 3 +- web/src/pages/user-setting/constants.tsx | 2 + .../pages/user-setting/setting-model/hooks.ts | 9 ++++- .../user-setting/setting-model/index.tsx | 14 ++++--- .../setting-model/ollama-modal/index.tsx | 13 ++++--- web/src/pages/user-setting/utils.ts | 4 ++ 9 files changed, 77 insertions(+), 19 deletions(-) create mode 100644 web/src/assets/svg/llm/xinference.svg create mode 100644 web/src/pages/user-setting/utils.ts diff --git a/web/src/assets/svg/enable.svg b/web/src/assets/svg/enable.svg index bf1535b0d..49c42a263 100644 --- a/web/src/assets/svg/enable.svg +++ b/web/src/assets/svg/enable.svg @@ -1,10 +1,9 @@ + d="M 512 0 a 512 512 0 1 0 0 1024 A 512 512 0 0 0 512 0 z m 0 990.2 A 438.2 438.2 0 1 1 512 33.8 a 438.2 438.2 0 0 1 0 956.4 z" + fill="#abefc6" p-id="6805"> - + \ No newline at end of file diff --git a/web/src/assets/svg/llm/xinference.svg b/web/src/assets/svg/llm/xinference.svg new file mode 100644 index 000000000..8d2ab4f3e --- /dev/null +++ b/web/src/assets/svg/llm/xinference.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/locales/en.ts b/web/src/locales/en.ts index 33fb8d9cc..4a4ca5595 100644 --- a/web/src/locales/en.ts +++ b/web/src/locales/en.ts @@ -397,13 +397,14 @@ export default { upgrade: 'Upgrade', addLlmTitle: 'Add LLM', modelName: 'Model name', + modelUid: 'Model UID', modelNameMessage: 'Please input your model name!', modelType: 'Model type', modelTypeMessage: 'Please input your model type!', addLlmBaseUrl: 'Base url', baseUrlNameMessage: 'Please input your base url!', vision: 'Does it support Vision?', - ollamaLink: 'How to integrate Ollama', + ollamaLink: 'How to integrate {{name}}', }, message: { registered: 'Registered!', diff --git a/web/src/locales/zh.ts b/web/src/locales/zh.ts index 70a3b42c7..ad4741ac0 100644 --- a/web/src/locales/zh.ts +++ b/web/src/locales/zh.ts @@ -382,13 +382,14 @@ export default { upgrade: '升级', addLlmTitle: '添加 LLM', modelName: '模型名称', + modelUid: '模型UID', modelType: '模型类型', addLlmBaseUrl: '基础 Url', vision: '是否支持 Vision', modelNameMessage: '请输入模型名称!', modelTypeMessage: '请输入模型类型!', baseUrlNameMessage: '请输入基础 Url!', - ollamaLink: '如何集成 Ollama', + ollamaLink: '如何集成 {{name}}', }, message: { registered: '注册成功', diff --git a/web/src/pages/user-setting/constants.tsx b/web/src/pages/user-setting/constants.tsx index 73df9c7c5..d91843c2a 100644 --- a/web/src/pages/user-setting/constants.tsx +++ b/web/src/pages/user-setting/constants.tsx @@ -14,3 +14,5 @@ export const UserSettingIconMap = { }; export * from '@/constants/setting'; + +export const LocalLlmFactories = ['Ollama', 'Xinference']; diff --git a/web/src/pages/user-setting/setting-model/hooks.ts b/web/src/pages/user-setting/setting-model/hooks.ts index 5e9bd8c35..617c564e9 100644 --- a/web/src/pages/user-setting/setting-model/hooks.ts +++ b/web/src/pages/user-setting/setting-model/hooks.ts @@ -132,6 +132,7 @@ export const useSelectModelProvidersLoading = () => { export const useSubmitOllama = () => { const loading = useOneNamespaceEffectsLoading('settingModel', ['add_llm']); + const [selectedLlmFactory, setSelectedLlmFactory] = useState(''); const addLlm = useAddLlm(); const { visible: llmAddingVisible, @@ -149,11 +150,17 @@ export const useSubmitOllama = () => { [hideLlmAddingModal, addLlm], ); + const handleShowLlmAddingModal = (llmFactory: string) => { + setSelectedLlmFactory(llmFactory); + showLlmAddingModal(); + }; + return { llmAddingLoading: loading, onLlmAddingOk, llmAddingVisible, hideLlmAddingModal, - showLlmAddingModal, + showLlmAddingModal: handleShowLlmAddingModal, + selectedLlmFactory, }; }; diff --git a/web/src/pages/user-setting/setting-model/index.tsx b/web/src/pages/user-setting/setting-model/index.tsx index 272ffb5bc..cd570e71e 100644 --- a/web/src/pages/user-setting/setting-model/index.tsx +++ b/web/src/pages/user-setting/setting-model/index.tsx @@ -25,6 +25,7 @@ import { } from 'antd'; import { useCallback } from 'react'; import SettingTitle from '../components/setting-title'; +import { isLocalLlmFactory } from '../utils'; import ApiKeyModal from './api-key-modal'; import { useSelectModelProvidersLoading, @@ -43,6 +44,7 @@ const IconMap = { 'ZHIPU-AI': 'zhipu', 文心一言: 'wenxin', Ollama: 'ollama', + Xinference: 'xinference', }; const LlmIcon = ({ name }: { name: string }) => { @@ -89,7 +91,7 @@ const ModelCard = ({ item, clickApiKey }: IModelCardProps) => {