From 8ab183fe7d48a4f93ed44f287bb599b1ed9f2e88 Mon Sep 17 00:00:00 2001
From: liudong <liudong>
Date: 星期一, 05 八月 2024 17:56:19 +0800
Subject: [PATCH] 智能体管理的测试助手页面的bug修改

---
 src/views/dmx/IntelligentAgent/components/editAgent.vue |  543 ++++++++++++++++++++++++++++--------------------------
 1 files changed, 283 insertions(+), 260 deletions(-)

diff --git a/src/views/dmx/IntelligentAgent/components/editAgent.vue b/src/views/dmx/IntelligentAgent/components/editAgent.vue
index f4c81de..f10b761 100644
--- a/src/views/dmx/IntelligentAgent/components/editAgent.vue
+++ b/src/views/dmx/IntelligentAgent/components/editAgent.vue
@@ -1,309 +1,332 @@
-
 <template>
-  <a-button  v-if="typeAngint=='edit'" type="text" size="small" @click="editClick">
+  <a-button
+    v-if="typeAngint == 'edit'"
+    type="text"
+    size="small"
+    @click="editClick"
+  >
     <template #icon>
       <icon-tool />
     </template>
   </a-button>
-<!--  <a-button v-if="typeAngint=='add'" style="margin-left: 10px" type="primary" @click="handleClick">纭畾</a-button>-->
-  <a-modal v-model:visible="visible" title=""
-           @before-open="handleOpened"
-           @cancel="handleCancel"
-           :footer="false"
-           title-align="start"
-           fullscreen
+  <!--  <a-button v-if="typeAngint=='add'" style="margin-left: 10px" type="primary" @click="handleClick">纭畾</a-button>-->
+  <a-modal
+    v-model:visible="visible"
+    title=""
+    @before-open="handleOpened"
+    @cancel="handleCancel"
+    :footer="false"
+    title-align="start"
+    fullscreen
   >
   <div class="main-container">
     <div class="main-container-lf">
-      <div style="padding: 10px;font-size: 16px;background:#eeeeee;">鏅鸿兘浣撻厤缃�</div>
+      <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;background: #ffffff;color: #666666"  />
+            <a-textarea v-model="system" placeholder="" disabled style="height: 400px;"  />
           </div>
 
         </div>
-        <div style="background:#eeeeee;width: 50%;">
+        <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-space direction="vertical" size="large">
-                  <a-select :size="'large'" v-model="form.llm_id" :style="{width:'25rem'}" placeholder="璇烽�夋嫨 ...">
-                    <a-optgroup  :label="index" v-for="(item,index) in modelList" :key=index>
-                      <a-option
-                        v-for="(obj) in item"
-                        :key='obj.fid'
-                        :value="obj.llm_id"
+                <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"
                       >
-                        {{obj.llm_name}}
-                      </a-option>
-                    </a-optgroup>
-                  </a-select>
-                </a-space>
-              </a-collapse-item>
-              <a-collapse-item header="寮�鍦哄紩瀵�" :key="'2'" disabled>
+                        <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-form-item field="kb_ids" label="鐭ヨ瘑搴�">
+                    <a-select
+                      v-model="form.kb_ids"
+                      :style="{ width: '25rem' }"
+                      placeholder="璇烽�夋嫨 ..."
+                      multiple
+                    >
+                      <a-option
+                        v-for="item in tabs"
+                        :key="item.id"
+                        :value="item.id"
+                      >{{ item.name }}</a-option
+                      >
+                    </a-select>
+                  </a-form-item>
+                </a-collapse-item>
+                <a-collapse-item header="宸ュ叿" key="4" disabled>
+                </a-collapse-item>
+                <a-collapse-item header="宸ヤ綔娴�" key="5" disabled>
+                </a-collapse-item>
+              </a-collapse>
 
-              </a-collapse-item>
-              <a-collapse-item header="鐭ヨ瘑搴�" key="3">
-                <a-select v-model="form.kb_ids" :style="{width:'25rem'}" placeholder="璇烽�夋嫨 ..." multiple >
-                  <a-option v-for="(item) in tabs" :key="item.id"  :value="item.id">{{item.name}}</a-option>
-                </a-select>
-              </a-collapse-item>
-              <a-collapse-item header="宸ュ叿" key="4" disabled>
-              </a-collapse-item>
-              <a-collapse-item header="宸ヤ綔娴�" key="5" disabled>
-              </a-collapse-item>
-            </a-collapse>
-
-            <a-form-item>
-              <div style="position: absolute;right: 10px;top: 0px;z-index: 99999">
-<!--                <a-button @click="visible = false">鍙栨秷</a-button>-->
-                <a-button style="margin-left: 10px" type="primary" html-type="submit">淇濆瓨</a-button>
-              </div>
-            </a-form-item>
-          </a-form>
+              <a-form-item>
+                <div
+                  style="
+                    position: absolute;
+                    right: 10px;
+                    top: 0px;
+                    z-index: 99999;
+                  "
+                >
+                  <!--                <a-button @click="visible = false">鍙栨秷</a-button>-->
+                  <a-button
+                    style="margin-left: 10px"
+                    type="primary"
+                    html-type="submit"
+                    >淇濆瓨</a-button
+                  >
+                </div>
+              </a-form-item>
+            </a-form>
+          </div>
         </div>
       </div>
-    </div>
-    <div class="main-container-rt">
-      <div :style="{height:heightrg}">
-        <div style="padding: 10px">
-          <a-avatar :style="{ backgroundColor: '#3370ff' }">
-            <img
-              :style="{ width: '100%'}"
-              alt="dessert"
-              src="https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/a20012a2d4d5b9db43dfc6a01fe508c0.png~tplv-uwbnlip3yd-webp.webp"
-            />
-          </a-avatar>
-          璋冭瘯棰勮
-        </div>
-        <a-divider style="margin: 0;margin-left: 10px"/>
-
-        <div class="bottom">
-          <div class="input">
-            <a-input  placeholder="杈撳叆鎮ㄦ兂浜嗚В鐨勫唴瀹癸紝鎸塃nter鍙戦��">
-              <template #suffix>
-                <icon-send  style="cursor: pointer" />
-              </template>
-            </a-input></div>
-          <div class="text">鍐呭鐢盇I鐢熸垚锛屼粎渚涘弬鑰�</div>
-        </div>
+      <div class="main-container-rt">
+        <sessionAction></sessionAction>
       </div>
     </div>
-  </div>
   </a-modal>
 </template>
 
 <script lang="ts" setup>
-import { onMounted, onBeforeMount, reactive, ref, nextTick } from "vue";
-import { IconSend } from "@arco-design/web-vue/es/icon";
-import { queryKbList, queryModelList } from "@/api/kbList";
-import useLoading from "@/hooks/loading";
-import { dialogSet } from "@/api/Agent";
-import { Message } from "@arco-design/web-vue";
-const {  setLoading } = useLoading(true);
-const props =  defineProps(['typeAngint','formData'])
-const visible = ref(false);
-const loading = ref(false);
-const form = reactive({
-  name: "",
-  icon: "",
-  language: "English",
-  prompt_config: {
-    empty_response: "",
-    prologue: "浣犲ソ锛� 鎴戞槸浣犵殑鍔╃悊锛屾湁浠�涔堝彲浠ュ府鍒颁綘鐨勫悧锛�",
-    quote: true,
-    self_rag: true,
-    system: "绀轰緥锛歕n" +
-      "浣犳槸 XX锛屽叿鏈� XX 缁忛獙锛屾搮闀� XX锛屸�n" +
-      "浣犵殑浠诲姟鏄� XX 锛岄渶瑕佹寜鐓т互涓嬫楠ゆ墽琛岋細\n" +
-      "1. XX\n" +
-      "2. XX\n" +
-      "3. 鈥n",
-    parameters: [
-      {
-        "key": "knowledge",
-        "optional": false
-      }
-    ]
-  },
-  kb_ids: [
-    "985eda244efc11ef9a7a0242ac120006"
-  ],
-  llm_id: "qwen-plus",
-  llm_setting: {
-    temperature: 0.1,
-    top_p: 0.3,
-    presence_penalty: 0.4,
-    frequency_penalty: 0.7,
-    max_tokens: 512
-  },
-  similarity_threshold: 0.2,
-  vector_similarity_weight: 0.30000000000000004,
-  top_n: 8
-});
-const system = ref('');
-const embdId = ref('');
-const modelList = ref({});
-const renderData = ref([]);
-const formRef = ref(null);
-let tabs = ref([])
-const height = ref('calc(100vh - 150px)')
-const heightrg = ref('calc(100vh - 100px)')
-const emit =  defineEmits(['cancelModal'])
-const rules = {
-  name: [
-    {
-      required: true,
-      message:'鍚嶇О涓嶅厑璁镐负绌�',
+  import { onMounted, onBeforeMount, reactive, ref, nextTick } from 'vue';
+  import { IconSend } from '@arco-design/web-vue/es/icon';
+  import { queryKbList, queryModelList } from '@/api/kbList';
+  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";
+  const { setLoading } = useLoading(true);
+  const props = defineProps(['typeAngint', 'formData']);
+  const visible = ref(false);
+  const loading = ref(false);
+  const form = reactive({
+    name: '',
+    icon: '',
+    language: 'English',
+    prompt_config: {
+      empty_response: '',
+      prologue: '浣犲ソ锛� 鎴戞槸浣犵殑鍔╃悊锛屾湁浠�涔堝彲浠ュ府鍒颁綘鐨勫悧锛�',
+      quote: true,
+      self_rag: true,
+      system:
+        '绀轰緥锛歕n' +
+        '浣犳槸 XX锛屽叿鏈� XX 缁忛獙锛屾搮闀� XX锛屸�n' +
+        '浣犵殑浠诲姟鏄� XX 锛岄渶瑕佹寜鐓т互涓嬫楠ゆ墽琛岋細\n' +
+        '1. XX\n' +
+        '2. XX\n' +
+        '3. 鈥n' +
+        '{knowlege}',
+      parameters: [
+        {
+          key: 'knowledge',
+          optional: false,
+        },
+      ],
     },
-  ],
-}
+    kb_ids: [],
+    llm_id: 'qwen-plus',
+    llm_setting: {
+      temperature: 0.1,
+      top_p: 0.3,
+      presence_penalty: 0.4,
+      frequency_penalty: 0.7,
+      max_tokens: 512,
+    },
+    similarity_threshold: 0.2,
+    vector_similarity_weight: 0.30000000000000004,
+    top_n: 8,
+  });
+  const system = ref('');
+  const embdId = ref('');
+  const modelList = ref({});
+  const renderData = ref([]);
+  const formRef = ref(null);
+  let tabs = ref([]);
+  const height = ref('calc(100vh - 150px)');
+  const emit = defineEmits(['cancelModal']);
+  const rules = {
+    name: [
+      {
+        required: true,
+        message: '鍚嶇О涓嶅厑璁镐负绌�',
+      },
+    ],
+    llm_id: [
+      {
+        required: true,
+        message: '妯″瀷涓嶈兘涓虹┖',
+      },
+    ],
+    kb_ids: [
+      {
+        required: true,
+        message: '鐭ヨ瘑搴撲笉鑳戒负绌�',
+      },
+    ],
+  };
 
+  const handleSubmit = async ({ values, errors }) => {
+    // console.log('values:', values, '\nerrors:', errors)
+    if(!errors){
+      let title = '鍒涘缓鎴愬姛';
+      let formNew = { ...form };
+      if (props.typeAngint == 'edit') {
+        formNew.dialog_id = form.id;
+        delete formNew.id;
+        delete formNew.off;
+        title = '淇敼鎴愬姛';
+      }
+      const data = await dialogSet(formNew);
+      if (data.code == 0) {
+        Message.success(title);
+        handleCancel();
+        EventBus.emit('queryList');
+      }
+    }
+  };
 
-const handleSubmit = async({values, errors}) => {
-  // console.log('values:', values, '\nerrors:', errors)
-  let title = '鍒涘缓鎴愬姛';
-  let formNew = {...form}
-  if(props.typeAngint == 'edit'){
-    formNew.dialog_id = form.id;
-    delete formNew.id;
-    delete formNew.off;
-    title = '淇敼鎴愬姛';
-  }
+  const editClick = (data) => {
+    visible.value = true;
 
-  const data = await dialogSet(formNew);
-  if(data.code == 0){
-    Message.success(title);
-    handleCancel()
-
-  }
-
-}
-
-const editClick = (data) => {
-  visible.value = true;
-
-  console.log(props.formData);
-  Object.assign(form,props.formData);
-  console.log(form);
-  system.value = form.prompt_config.system;
-
-};
-
-const handleClick = (data) => {
-  visible.value = true;
-  nextTick(()=>{
-    Object.assign(form,data);
+    console.log(props.formData);
+    Object.assign(form, props.formData);
     console.log(form);
     system.value = form.prompt_config.system;
-  })
-};
-defineExpose({
-  handleClick
-})
-const handleBeforeOk = (done) => {
-    formRef.value.validate().then(res => {
-      console.log('form:', form)
-      if (!form.name) {
-        done(false)
-      }else {
-        console.log('璇锋眰鏁版嵁');
-
-      }
-    })
-};
-const handleCancel = () => {
-  visible.value = false;
-  emit('cancelModal')
-}
-
-const handleOpened =(el) => {
-  // formRef.value.resetFields();
-
-
-}
-const queryModel = async (params) => {
-  try {
-    const data = await queryModelList(params);
-    console.log(data.data, '澶фā鍨嬪垪琛�');
-    modelList.value = data.data
-  } catch (err) {
-    // you can report use errorHandler or other
-  } finally {
-
-  }
-};
-const file = ref();
-
-const onChange = (_, currentFile) => {
-  file.value = {
-    ...currentFile,
-    // url: URL.createObjectURL(currentFile.file),
   };
-};
-const onProgress = (currentFile) => {
-  file.value = currentFile;
-};
 
+  const handleClick = (data) => {
+    visible.value = true;
+    nextTick(() => {
+      Object.assign(form, data);
+      console.log(form,'浼犲��');
+      system.value = form.prompt_config.system;
+      if(tabs.value && tabs.value.length>0){
+        form.kb_ids = [tabs.value[0].id];
+      }
+    });
+  };
+  defineExpose({
+    handleClick,
+  });
+  const handleBeforeOk = (done) => {
+    formRef.value.validate().then((res) => {
+      console.log('form:', form);
+      if (!form.name) {
+        done(false);
+      } else {
+        console.log('璇锋眰鏁版嵁');
+      }
+    });
+  };
+  const handleCancel = () => {
+    visible.value = false;
+    emit('cancelModal');
+  };
 
+  const handleOpened = (el) => {
+    // formRef.value.resetFields();
+  };
+  const queryModel = async (params) => {
+    try {
+      const data = await queryModelList(params);
+      console.log(data.data, '澶фā鍨嬪垪琛�');
+      modelList.value = data.data;
+    } catch (err) {
+      // you can report use errorHandler or other
+    } finally {
+    }
+  };
+  const file = ref();
 
-const knowledgeData = async (
-  params = { page: 1, page_size: 20 }
-) => {
-  setLoading(true);
-  try {
-    const { data } = await queryKbList(params);
-    console.log(data, 'data');
-    tabs.value = data;
-    console.log(tabs.value, 'tabs');
-  } catch (err) {
-    // you can report use errorHandler or other
-  } finally {
-    setLoading(false);
-  }
-};
+  const onChange = (_, currentFile) => {
+    file.value = {
+      ...currentFile,
+      // url: URL.createObjectURL(currentFile.file),
+    };
+  };
+  const onProgress = (currentFile) => {
+    file.value = currentFile;
+  };
 
-onBeforeMount(()=>{
-  queryModel({})
-  knowledgeData()
-})
-onMounted(()=>{
+  const knowledgeData = async (params = { page: 1, page_size: 20 }) => {
+    setLoading(true);
+    try {
+      const { data } = await queryKbList(params);
+      console.log(data, 'data');
+      nextTick(() => {
+        tabs.value = data;
+        console.log(tabs.value, 'tabs');
+      });
+    } catch (err) {
+      // you can report use errorHandler or other
+    } finally {
+      setLoading(false);
+    }
+  };
 
-
-})
+  onBeforeMount(() => {
+    queryModel({});
+    knowledgeData();
+  });
+  onMounted(() => {});
 </script>
 
 <style scoped lang="less">
-.main-container {
-  width: 100%;
-  display: flex;
-  .main-container-lf {
-    width: 60%;
+  .main-container {
+    width: 100%;
+    display: flex;
+    .main-container-lf {
+      width: 60%;
+    }
+    .main-container-rt {
+      position: relative;
+      width: 40%;
+    }
   }
-  .main-container-rt {
-    position: relative;
-    width: 40%;
+  .bottom {
+    width: 100%;
+    position: absolute;
+    bottom: 40px;
+    left: 0;
+    .input {
+      margin-left: 20%;
+      width: 60%;
+    }
+    .text {
+      margin-left: 40%;
+      font-size: 12px;
+      color: lightgrey;
+      line-height: 40px;
+    }
   }
-}
-.bottom{
-  width: 100%;
-  position: absolute;
-  bottom: 40px;
-  left:0;
-  .input{
-    margin-left: 20%;
-    width: 60%;
+  :deep(.arco-textarea-wrapper.arco-textarea-disabled){
+      background: var(--color-bg-2);
+      color: var(--color-text-1);
   }
-  .text{
-    margin-left: 40%;
-    font-size: 12px;
-    color: lightgrey;
-    line-height: 40px;
-  }
-}
-</style>
\ No newline at end of file
+</style>

--
Gitblit v1.8.0