zhangxiao
2024-08-16 5efb195a3e0c956c4b254408a8868368135eb773
src/views/dmx/model/components/addPageModel.vue
@@ -18,53 +18,39 @@
      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"
@@ -81,7 +67,7 @@
            ></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"
@@ -91,7 +77,7 @@
              <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">
@@ -115,27 +101,6 @@
          </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">
@@ -151,7 +116,7 @@
<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';
@@ -186,15 +151,8 @@
  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: '',
@@ -205,44 +163,13 @@
    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,
@@ -281,22 +208,16 @@
    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('添加成功');
@@ -306,16 +227,7 @@
              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('添加成功');
@@ -408,6 +320,15 @@
    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) {