| | |
| | | layout="vertical" |
| | | > |
| | | <div> |
| | | <a-form-item field="model_type" label="模型类型"> |
| | | <a-select v-model="form.model_type" placeholder="请选择"> |
| | | <a-option |
| | | v-for="item of form.options" |
| | | :value="item.value" |
| | | :label="item.label" |
| | | ></a-option> |
| | | <!-- <a-option value="embedding">embedding</a-option> |
| | | <a-option value="rerank">rerank</a-option> |
| | | <a-option value="image2text">image2text</a-option> --> |
| | | </a-select> |
| | | </a-form-item> |
| | | <a-form-item field="llm_name" label="模型名称"> |
| | | <a-input v-model="form.llm_name" placeholder="请输入模型名称" /> |
| | | </a-form-item> |
| | | |
| | | <!-- <a-form-item field="volc_ak" label="火山 ACCESS_KEY"> |
| | | <a-input v-model="form.volc_ak" placeholder="请输入火山 ACCESS_KEY" /> |
| | | <a-button |
| | | type="primary" |
| | | @click="handleClick" |
| | | style="margin-left: 10px" |
| | | > |
| | | <template #icon> |
| | | <icon-plus /> |
| | | </template> |
| | | </a-button> |
| | | </a-form-item> |
| | | <a-form-item field="volc_sk" label="火山 SECRET_KEY"> |
| | | <a-input v-model="form.volc_sk" placeholder="请输入火山 SECRET_KEY" /> |
| | | </a-form-item> --> |
| | | <a-form-item field="api_base" label="基础URL"> |
| | | <a-input v-model="form.api_base" placeholder="请输入基础URL" /> |
| | | </a-form-item> |
| | | <a-form-item field="name" label="API-Key"> |
| | | <a-input v-model="form.name" placeholder="API-Key" /> |
| | | </a-form-item> |
| | | <!-- <a-form-item field="describe" label="Base-Url"> |
| | | <a-input v-model="form.name" placeholder="Base-Url" /> |
| | | </a-form-item> --> |
| | | <a-form-item |
| | | <div v-for="(item, index) in form.formData.params" :key="index"> |
| | | <div v-if="item.value_type === 'select'"> |
| | | <a-form-item |
| | | :field="item.key" |
| | | :label="item.name" |
| | | :required="item.required" |
| | | > |
| | | <a-select v-model="form[item.key]" placeholder="请选择"> |
| | | <a-option |
| | | v-for="(list, v) in item.options" |
| | | :value="v" |
| | | :label="v" |
| | | ></a-option> |
| | | </a-select> |
| | | </a-form-item> |
| | | </div> |
| | | <div v-else-if="item.value_type === 'input'"> |
| | | <a-form-item |
| | | :field="item.key" |
| | | :label="item.name" |
| | | :required="item.required" |
| | | > |
| | | <a-input v-model="form[item.key]" placeholder="请输入" /> |
| | | </a-form-item> |
| | | </div> |
| | | </div> |
| | | <!-- <a-form-item |
| | | field="raptor" |
| | | label="是否支持 Vision" |
| | | v-if="form.model_type === 'chat'" |
| | | > |
| | | <a-switch v-model="form.raptor" /> |
| | | </a-form-item> |
| | | </a-form-item> --> |
| | | <a-form-item field="logo" label="模型图片"> |
| | | <a-space |
| | | direction="vertical" |
| | |
| | | ></Upload> |
| | | </a-space> |
| | | </a-form-item> |
| | | <a-form-item field="all_params" label="增加其它参数配置"> |
| | | <!-- <a-form-item field="all_params" label="增加其它参数配置"> |
| | | <a-button |
| | | type="primary" |
| | | @click="handleAddClick" |
| | |
| | | <icon-plus /> |
| | | </template> |
| | | </a-button> |
| | | </a-form-item> |
| | | </a-form-item> --> |
| | | |
| | | <a-form-item v-for="(item, index) in form.addFomList" :key="index"> |
| | | <div class="addInput"> |
| | |
| | | </div> |
| | | </a-form-item> |
| | | </div> |
| | | <!-- <div v-else> |
| | | <a-form-item field="name" label="API-Key"> |
| | | <a-input v-model="form.name" placeholder="API-Key" /> |
| | | </a-form-item> |
| | | <a-form-item field="describe" label="Base-Url"> |
| | | <a-input v-model="form.name" placeholder="Base-Url" /> |
| | | </a-form-item> |
| | | |
| | | <a-form-item field="section" label="模型图片"> |
| | | <a-space direction="vertical" :style="{ width: '100%' }"> |
| | | <Upload |
| | | :action="uploadAction" |
| | | :limit="1" |
| | | :url="form.urlS" |
| | | @handleRemove="deleteRemove" |
| | | @update:fileList="updateFileList" |
| | | @success="handleSuccess" |
| | | ></Upload> |
| | | </a-space> |
| | | </a-form-item> |
| | | </div> --> |
| | | |
| | | <a-form-item> |
| | | <div style="width: 100%; text-align: right"> |
| | |
| | | |
| | | <script lang="ts" setup> |
| | | import { reactive, ref, computed, watch, watchEffect, onMounted } from 'vue'; |
| | | import { addLlm, getLlmDetail, editLlm } from '@/api/model'; |
| | | import { addLlm, getLlmDetail, editLlm, getFactoryDetail } from '@/api/model'; |
| | | import { Modal, Message } from '@arco-design/web-vue'; |
| | | import message from '@arco-design/web-vue/es/message'; |
| | | import { resolveUnref } from '@vueuse/core'; |
| | |
| | | const form = reactive({ |
| | | size: 'medium', |
| | | name: '', |
| | | formData: { logo: '' }, |
| | | llm_factory: '', |
| | | model_type: '', |
| | | province: 'haidian', |
| | | options: [ |
| | | { label: 'chat', value: 'chat' }, |
| | | { label: 'embedding', value: 'embedding' }, |
| | | { label: 'rerank', value: 'rerank' }, |
| | | { label: 'image2text', value: 'image2text' }, |
| | | ], |
| | | llm_name: '', |
| | | api_base: '', |
| | | volc_ak: '', |
| | |
| | | slider: 5, |
| | | score: 5, |
| | | switch: false, |
| | | multiSelect: ['section one'], |
| | | treeSelect: '', |
| | | raptor: false, |
| | | addFomList: <any[]>[], |
| | | }); |
| | | |
| | | const form_ref = ref(); |
| | | |
| | | const rules = { |
| | | model_type: [ |
| | | { |
| | | required: true, |
| | | message: '请选择模型类型', |
| | | }, |
| | | ], |
| | | llm_name: [ |
| | | { |
| | | required: true, |
| | | message: '名称不允许为空', |
| | | }, |
| | | ], |
| | | volc_sk: [ |
| | | { |
| | | required: true, |
| | | message: '请输入volc_sk', |
| | | }, |
| | | ], |
| | | volc_ak: [ |
| | | { |
| | | required: true, |
| | | message: '请输入volc_ak', |
| | | }, |
| | | ], |
| | | api_base: [ |
| | | { |
| | | required: true, |
| | | message: '请输入api_base', |
| | | }, |
| | | ], |
| | | logo: [ |
| | | { |
| | | required: true, |
| | |
| | | const all_params = form.addFomList.map((item) => { |
| | | return item.name + ':' + item.value; |
| | | }); |
| | | console.log(form, 9999); |
| | | form_ref.value |
| | | ?.validate() |
| | | .then(async (res) => { |
| | | if (!res) { |
| | | form.formData.logo = uploadUrl.value[0] || ''; |
| | | form.llm_factory = editList.value.llm_factory; |
| | | delete form.formData; |
| | | if (props.title == '编辑') { |
| | | console.log(imageUrls.value, 999); |
| | | const data = await editLlm({ |
| | | llm_factory: editList.value.llm_factory, |
| | | llm_name: form.llm_name, |
| | | model_type: form.model_type, |
| | | volc_ak: form.volc_ak, |
| | | volc_sk: form.volc_sk, |
| | | api_base: form.api_base, |
| | | all_params: all_params, |
| | | logo: uploadUrl.value[0] || '', |
| | | }); |
| | | const data = await editLlm(form); |
| | | |
| | | if ((data as any).code == 200) { |
| | | message.success('添加成功'); |
| | |
| | | message.error('添加失败'); |
| | | } |
| | | } else { |
| | | const data = await addLlm({ |
| | | llm_factory: editList.value.llm_factory, |
| | | llm_name: form.llm_name, |
| | | model_type: form.model_type, |
| | | volc_ak: form.volc_ak, |
| | | volc_sk: form.volc_sk, |
| | | api_base: form.api_base, |
| | | all_params: all_params, |
| | | logo: uploadUrl.value[0] || '', |
| | | }); |
| | | const data = await addLlm(form); |
| | | |
| | | if ((data as any).code == 200) { |
| | | message.success('添加成功'); |
| | |
| | | |
| | | imageUrls.value.push(httpUrl + data.data.logo); |
| | | }; |
| | | const getFactory = async () => { |
| | | const { data } = await getFactoryDetail({ |
| | | factory_name: editList.value.llm_factory, |
| | | }); |
| | | form.formData = data; |
| | | }; |
| | | onMounted(() => { |
| | | getFactory(); |
| | | }); |
| | | |
| | | watchEffect(() => { |
| | | if (props.editList.name) { |