diff --git a/ui/src/components/ai-chat/index.vue b/ui/src/components/ai-chat/index.vue index d49e9ddba13..a786420ca4a 100644 --- a/ui/src/components/ai-chat/index.vue +++ b/ui/src/components/ai-chat/index.vue @@ -185,11 +185,21 @@ import { t } from '@/locales' import bus from '@/bus' import { throttle } from 'lodash-es' import { copyClick } from '@/utils/clipboard' +import { loadSharedApi } from '@/utils/dynamics-api/shared-api' + provide('upload', (file: any, loading?: Ref) => { return props.type === 'debug-ai-chat' ? applicationApi.postUploadFile(file, 'TEMPORARY_120_MINUTE', 'TEMPORARY_120_MINUTE', loading) : chatAPI.postUploadFile(file, chartOpenId.value, 'CHAT', loading) }) +provide('getSelectModelList', (params: any) => { + if (route.path.includes('resource-management')) { + return loadSharedApi({ type: 'model', systemType: 'systemManage' }).getSelectModelList(params) + } else { + return loadSharedApi({ type: 'model', systemType: 'workspace' }).getSelectModelList(params) + } +}) + const transcribing = ref(false) defineOptions({ name: 'AiChat' }) const route = useRoute() diff --git a/ui/src/components/dynamics-form/constructor/data.ts b/ui/src/components/dynamics-form/constructor/data.ts index 751b06b360d..59da1f1ebb7 100644 --- a/ui/src/components/dynamics-form/constructor/data.ts +++ b/ui/src/components/dynamics-form/constructor/data.ts @@ -54,5 +54,10 @@ const input_type_list = [ label: t('dynamicsForm.input_type_list.UploadInput'), value: 'UploadInput', }, + + { + label: t('dynamicsForm.input_type_list.Model'), + value: 'Model', + }, ] export { input_type_list } diff --git a/ui/src/components/dynamics-form/constructor/items/ModelConstructor.vue b/ui/src/components/dynamics-form/constructor/items/ModelConstructor.vue new file mode 100644 index 00000000000..7e118c068f8 --- /dev/null +++ b/ui/src/components/dynamics-form/constructor/items/ModelConstructor.vue @@ -0,0 +1,311 @@ + + + diff --git a/ui/src/components/dynamics-form/index.vue b/ui/src/components/dynamics-form/index.vue index 8a41683ea9b..473f4c08de8 100644 --- a/ui/src/components/dynamics-form/index.vue +++ b/ui/src/components/dynamics-form/index.vue @@ -215,6 +215,7 @@ const render = ( | (() => Promise>>), data?: Dict, ) => { + console.log(data, '-----') formFieldList.value = [] nextTick(() => { if (typeof render_data == 'string') { @@ -246,6 +247,7 @@ const render = ( } const getFormDefaultValue = (fieldList: Array, form_data?: any) => { form_data = form_data ? form_data : {} + console.log(form_data) const value = fieldList .map((item) => { if (form_data[item.field] !== undefined) { @@ -274,6 +276,7 @@ const getFormDefaultValue = (fieldList: Array, form_data?: any) => { return {} }) .reduce((x, y) => ({ ...x, ...y }), {}) + console.log(value) return value } /** diff --git a/ui/src/components/dynamics-form/items/model/Model.vue b/ui/src/components/dynamics-form/items/model/Model.vue new file mode 100644 index 00000000000..f87010f12f5 --- /dev/null +++ b/ui/src/components/dynamics-form/items/model/Model.vue @@ -0,0 +1,128 @@ + + + diff --git a/ui/src/components/dynamics-form/items/model/provider-data.ts b/ui/src/components/dynamics-form/items/model/provider-data.ts new file mode 100644 index 00000000000..398d07fa0b8 --- /dev/null +++ b/ui/src/components/dynamics-form/items/model/provider-data.ts @@ -0,0 +1,107 @@ +export const providerList = [ + { + "provider": "model_azure_provider", + "name": "Azure OpenAI", + "icon": "" + }, + { + "provider": "model_wenxin_provider", + "name": "千帆大模型", + "icon": "\n\n\n\n" + }, + { + "provider": "model_ollama_provider", + "name": "Ollama", + "icon": " \n\n" + }, + { + "provider": "model_openai_provider", + "name": "OpenAI", + "icon": "" + }, + { + "provider": "model_docker_ai_provider", + "name": "Docker AI", + "icon": "\n\n\n" + }, + { + "provider": "model_kimi_provider", + "name": "Kimi", + "icon": "" + }, + { + "provider": "model_zhipu_provider", + "name": "智谱 AI", + "icon": "" + }, + { + "provider": "model_xf_provider", + "name": "讯飞星火", + "icon": "" + }, + { + "provider": "model_deepseek_provider", + "name": "DeepSeek", + "icon": "\n\t\n" + }, + { + "provider": "model_gemini_provider", + "name": "Gemini", + "icon": "" + }, + { + "provider": "model_volcanic_engine_provider", + "name": "火山引擎", + "icon": "\n\n \n\n" + }, + { + "provider": "model_tencent_provider", + "name": "腾讯混元", + "icon": "\n\n \n\n" + }, + { + "provider": "model_tencent_cloud_provider", + "name": "腾讯云", + "icon": "\n\n\n \n \n \n" + }, + { + "provider": "model_aws_bedrock_provider", + "name": "Amazon Bedrock", + "icon": "" + }, + { + "provider": "model_local_provider", + "name": "本地模型", + "icon": "\n\n\n" + }, + { + "provider": "model_xinference_provider", + "name": "Xorbits Inference", + "icon": "\n\n \n\n" + }, + { + "provider": "model_vllm_provider", + "name": "vLLM", + "icon": "\n\n \n\n" + }, + { + "provider": "aliyun_bai_lian_model_provider", + "name": "阿里云百炼", + "icon": "【icon】阿里百炼大模型" + }, + { + "provider": "model_anthropic_provider", + "name": "Anthropic", + "icon": "" + }, + { + "provider": "model_siliconCloud_provider", + "name": "SILICONFLOW", + "icon": "\n\n\n\n\n" + }, + { + "provider": "model_regolo_provider", + "name": "Regolo", + "icon": "\n\n \n \n \n .cls-1 {\n fill: #303030;\n }\n\n .cls-2 {\n fill: #59e389;\n }\n \n \n \n \n \n \n \n \n \n\n" + } +] \ No newline at end of file diff --git a/ui/src/components/model-select/index.vue b/ui/src/components/model-select/index.vue index 34b3661b466..91120eed1f6 100644 --- a/ui/src/components/model-select/index.vue +++ b/ui/src/components/model-select/index.vue @@ -1,6 +1,12 @@