zhangxiao
2024-08-16 5efb195a3e0c956c4b254408a8868368135eb773
fix: 模型修改
9个文件已修改
277 ■■■■■ 已修改文件
src/api/model.ts 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/menu/index.vue 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/routes/modules/authority.ts 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/routes/modules/session.ts 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dmx/agent/components/editAgent.vue 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dmx/model/components/addPageModel.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dmx/model/components/addTableName.vue 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dmx/model/index.vue 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yarn.lock 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/model.ts
@@ -83,3 +83,10 @@
    params,
  });
}
// 获取模型列表
export function getFactories(params) {
  return axios.get('/api/v1/llm/factories', {
    params,
  });
}
src/components/menu/index.vue
@@ -31,6 +31,7 @@
      const goto = (item: RouteRecordRaw) => {
        // Open external link
        if (regexUrl.test(item.path)) {
          openWindow(item.path);
          selectedKey.value = [item.name as string];
@@ -84,7 +85,8 @@
      };
      listenerRouteChange((newRoute) => {
        const { requiresAuth, activeMenu, hideInMenu } = newRoute.meta;
        if (requiresAuth && (!hideInMenu || activeMenu)) {
        //  if (requiresAuth && (!hideInMenu || activeMenu)) {//除去这两个判断后,可以正常展开菜单
        if (requiresAuth) {
          const menuOpenKeys = findMenuOpenKeys(
            (activeMenu || newRoute.name) as string
          );
@@ -96,6 +98,7 @@
            activeMenu || menuOpenKeys[menuOpenKeys.length - 1],
          ];
        }
        console.log(selectedKey.value, 48877);
      }, true);
      const setCollapse = (val: boolean) => {
        if (appStore.device === 'desktop')
@@ -139,6 +142,7 @@
      };
      // selected-keys={selectedKey.value}
      console.log(selectedKey.value, 68877);
      return () => (
        <a-menu
          mode={topMenu.value ? 'horizontal' : 'vertical'}
@@ -147,6 +151,7 @@
          show-collapse-button={appStore.device !== 'mobile'}
          auto-open={false}
          auto-open-selected={true}
          selected-keys={selectedKey.value}
          level-indent={34}
          style="height: 100%;width:100%;"
          onCollapse={setCollapse}
src/router/routes/modules/authority.ts
@@ -10,6 +10,7 @@
    requiresAuth: true,
    icon: 'icon-lock',
    order: 5,
    activeMenu:false,
  },
  children: [
    {
src/router/routes/modules/session.ts
@@ -19,7 +19,7 @@
                requiresAuth: true,
                hideInMenu:true,
                roles: ['*'],
                activeMenu:'session'
                // activeMenu:'session'
            },
            component:()=>import('@/views/sessionManager/index.vue'),
        }
src/views/dmx/agent/components/editAgent.vue
@@ -19,48 +19,87 @@
    title-align="start"
    fullscreen
  >
  <div class="main-container">
    <div class="main-container-lf">
      <div style="padding: 10px;font-size: 16px;background: var(--color-neutral-3);">智能体配置</div>
      <div style="display: flex;width: 100%;" :style="{height:height}">
        <div style="width: 50%;height: 100%">
          <div style="padding: 10px;font-size: 12px;color: #2a2a2b;">智能体画像</div>
          <div>
            <a-textarea v-model="system" placeholder="" disabled style="height: 400px;"  />
    <div class="main-container">
      <div class="main-container-lf">
        <div
          style="
            padding: 10px;
            font-size: 16px;
            background: var(--color-neutral-3);
          "
          >智能体配置</div
        >
        <div style="display: flex; width: 100%" :style="{ height: height }">
          <div style="width: 50%; height: 100%">
            <div style="padding: 10px; font-size: 12px; color: #2a2a2b"
              >智能体画像</div
            >
            <div>
              <a-textarea
                v-model="system"
                placeholder=""
                disabled
                style="height: 400px"
              />
            </div>
          </div>
        </div>
        <div style="width: 50%;border: 1px solid var(--color-neutral-3);background:  var(--color-neutral-3)">
          <a-form ref="formRef" :rules="rules" :model="form" @submit="handleSubmit"  layout="vertical" >
            <a-collapse :default-active-key="['1']">
              <a-collapse-item header="基础信息" key="0" v-if="typeAngint == 'edit'">
                <a-input v-model="form.name" placeholder="请输入智能体名称"  style="width:200px;margin-top: 10px" />
              </a-collapse-item>
              <a-collapse-item header="AI模型配置" key="1">
                <a-form-item field="llm_id" label="模型">
                  <a-space direction="vertical" size="large">
                    <a-select :size="'large'" field="llm_id" v-model="form.llm_id" :style="{width:'25rem'}" placeholder="请选择 ...">
                      <a-optgroup
                        :label="index"
                        v-for="(item, index) in modelList"
                        :key="index"
          <div
            style="
              width: 50%;
              border: 1px solid var(--color-neutral-3);
              background: var(--color-neutral-3);
            "
          >
            <a-form
              ref="formRef"
              :rules="rules"
              :model="form"
              @submit="handleSubmit"
              layout="vertical"
            >
              <a-collapse :default-active-key="['1']">
                <a-collapse-item
                  header="基础信息"
                  key="0"
                  v-if="typeAngint == 'edit'"
                >
                  <a-input
                    v-model="form.name"
                    placeholder="请输入智能体名称"
                    style="width: 200px; margin-top: 10px"
                  />
                </a-collapse-item>
                <a-collapse-item header="AI模型配置" key="1">
                  <a-form-item field="llm_id" label="模型">
                    <a-space direction="vertical" size="large">
                      <a-select
                        :size="'large'"
                        field="llm_id"
                        v-model="form.llm_id"
                        :style="{ width: '25rem' }"
                        placeholder="请选择 ..."
                      >
                        <a-option
                          v-for="obj in item"
                          :key="obj.fid"
                          :disabled="!obj.available"
                          :value="obj.llm_id"
                        <a-optgroup
                          :label="index"
                          v-for="(item, index) in modelList"
                          :key="index"
                        >
                          {{ obj.llm_name }}
                        </a-option>
                      </a-optgroup>
                    </a-select>
                  </a-space>
                </a-form-item>
                          <a-option
                            v-for="obj in item"
                            :key="obj.fid"
                            :disabled="!obj.available"
                            :value="obj.llm_id"
                          >
                            {{ obj.llm_name }}
                          </a-option>
                        </a-optgroup>
                      </a-select>
                    </a-space>
                  </a-form-item>
                </a-collapse-item>
                <a-collapse-item header="开场引导" :key="'2'" disabled>
                </a-collapse-item>
                <a-collapse-item  header="知识库" key="3">
                <a-collapse-item header="知识库" key="3">
                  <a-form-item field="kb_ids" label="知识库">
                    <a-select
                      v-model="form.kb_ids"
@@ -72,7 +111,7 @@
                        v-for="item in tabs"
                        :key="item.id"
                        :value="item.id"
                      >{{ item.name }}</a-option
                        >{{ item.name }}</a-option
                      >
                    </a-select>
                  </a-form-item>
@@ -119,8 +158,8 @@
  import useLoading from '@/hooks/loading';
  import { dialogSet } from '@/api/Agent';
  import { Message } from '@arco-design/web-vue';
  import EventBus from "@/utils/EventBus";
  import sessionAction  from "@/views/dmx/IntelligentAgent/components/sessionAction.vue";
  import EventBus from '@/utils/EventBus';
  import sessionAction from '@/views/dmx/IntelligentAgent/components/sessionAction.vue';
  const { setLoading } = useLoading(true);
  const props = defineProps(['typeAngint', 'formData']);
  const visible = ref(false);
@@ -193,7 +232,7 @@
  const handleSubmit = async ({ values, errors }) => {
    // console.log('values:', values, '\nerrors:', errors)
    if(!errors){
    if (!errors) {
      let title = '创建成功';
      let formNew = { ...form };
      if (props.typeAngint == 'edit') {
@@ -224,9 +263,9 @@
    visible.value = true;
    nextTick(() => {
      Object.assign(form, data);
      console.log(form,'传值');
      console.log(form, '传值');
      system.value = form.prompt_config.system;
      if(tabs.value && tabs.value.length>0){
      if (tabs.value && tabs.value.length > 0) {
        form.kb_ids = [tabs.value[0].id];
      }
    });
@@ -325,8 +364,8 @@
      line-height: 40px;
    }
  }
  :deep(.arco-textarea-wrapper.arco-textarea-disabled){
      background: var(--color-bg-2);
      color: var(--color-text-1);
  :deep(.arco-textarea-wrapper.arco-textarea-disabled) {
    background: var(--color-bg-2);
    color: var(--color-text-1);
  }
</style>
src/views/dmx/model/components/addPageModel.vue
@@ -28,7 +28,7 @@
              <a-select v-model="form[item.key]" placeholder="请选择">
                <a-option
                  v-for="(list, v) in item.options"
                  :value="list"
                  :value="v"
                  :label="v"
                ></a-option>
              </a-select>
src/views/dmx/model/components/addTableName.vue
@@ -27,8 +27,8 @@
        >
          <a-option
            v-for="(item, index) in modalList"
            :value="index"
            :label="index"
            :value="item.name"
            :label="item.name"
            :disabled="item.added"
          ></a-option>
        </a-select>
@@ -43,6 +43,7 @@
        <a-textarea
          v-model="form.tags"
          placeholder="请输入模型描述"
          :max-length="50"
          allow-clear
        />
      </a-form-item>
@@ -85,7 +86,7 @@
    computed,
  } from 'vue';
  import {
    modelmyLlms,
    getFactories,
    addLlmFactory,
    getLlmDetail,
    editLlmFactory,
@@ -233,7 +234,7 @@
  };
  const modalList = ref([]);
  const queryModel = async () => {
    const res = await modelmyLlms();
    const res = await getFactories();
    modalList.value = res.data;
  };
  queryModel();
src/views/dmx/model/index.vue
@@ -30,11 +30,8 @@
                  <a-scrollbar
                    style="height: calc(100vh - 320px); overflow: auto"
                  >
                    <div
                      style="display: flex; flex-wrap: wrap"
                      class="card_content"
                    >
                      <div class="card-wrap">
                    <div class="card_content">
                      <div class="card-wrap content_top">
                        <div class="card_wrap_box">
                          <div class="card_wrap_box_img">
                            <img
@@ -60,6 +57,11 @@
                          </a-card>
                          <div class="arco-btn-group">
                            <a-space class="btn-group">
                              <div class="create_time">
                                创建时间:
                                <span> {{ item.create_date }} </span>
                              </div>
                              <!-- <editModel></editModel> -->
                              <a-button @click="handleDeleteModel(item, 1)">
                                删除
@@ -74,46 +76,51 @@
                          </div>
                        </div>
                      </div>
                      <div
                        class="card-wrap"
                        v-for="(list, index) of item.llm"
                        :key="index"
                      >
                        <div class="card_wrap_box">
                          <div class="card_wrap_box_img">
                            <img
                              :style="{
                                width: '100%',
                              }"
                              alt="暂无图片"
                              :src="list.logo ? httpUrl + list.logo : pdfImg"
                            />
                            <!--   src="https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/a20012a2d4d5b9db43dfc6a01fe508c0.png~tplv-uwbnlip3yd-webp.webp" -->
                          </div>
                          <a-card :bordered="false" hoverable>
                            <div class="arco-card-body-content">
                              <div class="arco-card-body-content-title">
                                {{ list.name }}
                              </div>
                              <div class="arco-card-body-content-dec">{{
                                list.type
                              }}</div>
                      <div class="subset_list">
                        <div
                          class="card-wrap"
                          v-for="(list, index) of item.llm"
                          :key="index"
                        >
                          <div class="card_wrap_box">
                            <div class="card_wrap_box_img">
                              <img
                                :style="{
                                  width: '100%',
                                }"
                                alt="暂无图片"
                                :src="list.logo ? httpUrl + list.logo : pdfImg"
                              />
                            </div>
                          </a-card>
                          <div class="arco-btn-group">
                            <a-space class="btn-group">
                              <a-button @click="handleDeleteModel(list)">
                                删除
                              </a-button>
                              <!-- <a-button
                            <a-card :bordered="false" hoverable>
                              <div class="arco-card-body-content">
                                <div class="arco-card-body-content-title">
                                  {{ list.name }}
                                </div>
                                <div class="arco-card-body-content-dec">{{
                                  list.type
                                }}</div>
                              </div>
                            </a-card>
                            <div class="arco-btn-group">
                              <a-space class="btn-group">
                                <div class="create_time_list">
                                  创建时间:
                                  <span> {{ list.create_date }} </span>
                                </div>
                                <a-button @click="handleDeleteModel(list)">
                                  删除
                                </a-button>
                                <!-- <a-button
                                type="primary"
                                @click="handleEditModel(list)"
                              >
                                编辑
                              </a-button> -->
                              <!-- <editModel></editModel> -->
                            </a-space>
                                <!-- <editModel></editModel> -->
                              </a-space>
                            </div>
                          </div>
                        </div>
                      </div>
@@ -245,7 +252,6 @@
  };
  //编辑模型子类
  const handleEditModel = (val, type) => {
    console.log(val, 6766);
    if (type == 1) {
      tabShow.value = true;
      editList.value = val;
@@ -263,6 +269,7 @@
  //删除模型
  const handleDeleteModel = (val, type) => {
    const factory = tabKey.value;
    if (type == 1) {
      handleDelete(val);
    } else {
@@ -272,7 +279,6 @@
        okText: '确定',
        cancelText: '取消',
        onOk: async () => {
          const factory = tabKey.value;
          const res = await deleteLlm({
            llm_factory: tabKey.value,
            llm_name: val.name,
@@ -291,17 +297,15 @@
  //父级模型
  const handleDelete = async (key: any) => {
    console.log(tabData.value[key]);
    if (tabData.value[key].llm.length > 0) {
    if (tabData.value[key] && tabData.value[key].llm.length > 0) {
      Message.error('请先删除子模型');
      return;
    }
    if (key !== 'key') {
      const res = await deleteLlmFactory(key);
      if ((res as any).code == 200) {
        Reflect.deleteProperty(tabData.value, key);
        queryModel();
      }
    const res = await deleteLlmFactory(tabKey.value);
    if ((res as any).code == 200) {
      // Reflect.deleteProperty(tabData.value, tabKey.value);
      queryModel();
    }
  };
@@ -340,6 +344,7 @@
    loading.value = true;
    tabData.value = Object.assign({}, tabData.value, res.data);
    tabData.value = filterObject(tabData.value, 1);
    tabKey.value = Object.keys(tabData.value)[0];
    await getFactory();
  };
@@ -477,6 +482,9 @@
      font-weight: 400;
    }
  }
  .content_top {
    border-bottom: 1px solid #f0f0f0 !important;
  }
  .card_content {
    .card_wrap_box_img {
      // min-height: 200px;
@@ -488,12 +496,25 @@
        object-fit: cover; /* 不会变形,但可能裁剪图片 */
      }
    }
    .subset_list {
      display: flex;
      flex-direction: row;
      flex-wrap: wrap;
    }
    .card_wrap_box {
      // position: relative;
      .arco-btn-group {
        position: absolute;
        right: 10px;
        top: 87%;
        .create_time {
          text-align: left;
          width: 155px;
        }
        .create_time_list {
          text-align: left;
          width: 223px;
        }
      }
    }
  }
@@ -510,6 +531,7 @@
      transform: translateY(-4px);
      // box-shadow: 4px 4px 10px rgba(0, 0, 0, 0.1);
    }
    :deep(.arco-card) {
      height: 100%;
      border-radius: 4px;
yarn.lock
@@ -5580,7 +5580,7 @@
moment@^2.30.1:
  version "2.30.1"
  resolved "https://registry.npmmirror.com/moment/-/moment-2.30.1.tgz"
  resolved "https://registry.npmmirror.com/moment/-/moment-2.30.1.tgz#f8c91c07b7a786e30c59926df530b4eac96974ae"
  integrity sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==
mozjpeg@^7.0.0: