From a4ca216c5b215f323b3c439b2f445dad72bbfce1 Mon Sep 17 00:00:00 2001
From: zhangxiao <898441624@qq.com>
Date: 星期一, 26 八月 2024 16:44:31 +0800
Subject: [PATCH] fix: 修改bug

---
 src/views/dmx/IntelligentAgent/components/agentConfig.vue |  949 ++++++++++++++++++++++++++++++++++-------------------------
 1 files changed, 544 insertions(+), 405 deletions(-)

diff --git a/src/views/dmx/IntelligentAgent/components/agentConfig.vue b/src/views/dmx/IntelligentAgent/components/agentConfig.vue
index 4c23cd3..62b5753 100644
--- a/src/views/dmx/IntelligentAgent/components/agentConfig.vue
+++ b/src/views/dmx/IntelligentAgent/components/agentConfig.vue
@@ -1,24 +1,4 @@
 <template>
-  <a-button
-    v-if="typeAngint == 'add'"
-    type="primary"
-    @click="handleClick"
-    style="margin-left: 10px">
-    <template #icon>
-      <icon-plus />
-    </template>
-    鏂板缓鏅鸿兘浣�
-  </a-button>
-  <a-button
-    v-if="typeAngint == 'edit'"
-    type="text"
-    size="small"
-    @click="editClick"
-  >
-    <template #icon>
-      <icon-tool />
-    </template>
-  </a-button>
   <a-modal
     v-model:visible="visible"
     title="鏅鸿兘浣撻厤缃�"
@@ -32,10 +12,15 @@
   >
     <a-row class="">
       <a-col :span="24">
-        <a-tabs type="capsule" size="large"  :active-key="activeKey" @change="handleTabChange">
+        <a-tabs
+          type="capsule"
+          size="large"
+          :active-key="activeKey"
+          @change="handleTabChange"
+        >
           <a-tab-pane key="1" title="鍔╃悊璁剧疆">
-            <a-divider style="margin-bottom: 20px;margin-top: 0" />
-            <div style="width: 100%;" :style="{height:height}">
+            <a-divider style="margin-bottom: 20px; margin-top: 0" />
+            <div style="width: 100%" :style="{ height: height }">
               <a-form
                 ref="formRef"
                 :rules="rules"
@@ -49,16 +34,20 @@
                 <a-form-item label="鏅鸿兘浣撳浘鏍�">
                   <a-space direction="vertical" :style="{ width: '100%' }">
                     <Upload
+                      v-if="avatarShow"
                       :action="uploadAction"
                       :limit="1"
-                      :url="httpUrl + form.icon"
+                      :url="form.icon ? httpUrl + form.icon : ''"
                       @update:fileList="updateFileList"
                       @success="handleSuccess"
                     ></Upload>
                   </a-space>
                 </a-form-item>
                 <a-form-item label="绌哄洖澶�">
-                  <a-input v-model="form.prompt_config.empty_response" placeholder="" />
+                  <a-input
+                    v-model="form.prompt_config.empty_response"
+                    placeholder=""
+                  />
                 </a-form-item>
                 <a-form-item label="璁剧疆寮�鍦虹櫧">
                   <a-textarea
@@ -68,13 +57,16 @@
                   />
                 </a-form-item>
                 <a-form-item label="鏄剧ず寮曟枃">
-                  <a-space direction="vertical" >
+                  <a-space direction="vertical">
                     <a-switch v-model="form.prompt_config.quote" size="small" />
                   </a-space>
                 </a-form-item>
                 <a-form-item label="Self-RAG">
                   <a-space direction="vertical">
-                    <a-switch v-model="form.prompt_config.self_rag" size="small" />
+                    <a-switch
+                      v-model="form.prompt_config.self_rag"
+                      size="small"
+                    />
                   </a-space>
                 </a-form-item>
                 <a-form-item field="kb_ids" label="鐭ヨ瘑搴�">
@@ -104,86 +96,119 @@
             </div>
           </a-tab-pane>
           <a-tab-pane key="2" title="鎻愮ず寮曟搸">
-            <a-divider style="margin-bottom: 20px;margin-top: 0" />
-            <a-scrollbar style="width: 100%;overflow: auto" :style="{height:height}">
-            <a-form
-              ref="formRef1"
-              :rules="rules"
-              :model="form"
-              @submit="handleSubmit"
-              :style="{ width: '90%', margin: '0 auto' }"
+            <a-divider style="margin-bottom: 20px; margin-top: 0" />
+            <a-scrollbar
+              style="width: 100%; overflow: auto"
+              :style="{ height: height }"
             >
-              <a-form-item field="prompt_config.system" label="绯荤粺">
-                <a-textarea
-                  v-model="form.prompt_config.system"
-                  placeholder=""
-                  style="height: 180px"
-                />
-              </a-form-item>
-              <a-divider style="margin: 0;margin-bottom: 10px" />
-              <a-form-item  label="鐩镐技搴﹂槇鍊�">
-                <a-slider v-model="form.similarity_threshold"  :step="0.01" :min="0" :max="1"  />
-              </a-form-item>
-              <a-form-item  label="鍏抽敭瀛楃浉浼煎害鏉冮噸">
-                <a-slider v-model="form.vector_similarity_weight"  :step="0.01" :min="0" :max="1"  />
-              </a-form-item>
-              <a-form-item  label="Top N">
-                <a-slider v-model="form.top_n" :min="0" :max="30"  />
-              </a-form-item>
-              <a-form-item label="Rerank妯″瀷" >
-                <a-space direction="vertical" size="large">
-                  <a-select :size="'large'" v-model="form.rerank_id"  placeholder="璇烽�夋嫨 ..." allow-clear>
-                    <a-optgroup  :label="index" v-for="(item,index) in rankModelList" :key=index>
-                      <a-option
-                        v-for="(obj) in item"
-                        :key="obj.fid"
-                        :disabled="!obj.available"
-                        :value="obj.llm_name"
+              <a-form
+                ref="formRef1"
+                :rules="rules"
+                :model="form"
+                @submit="handleSubmit"
+                :style="{ width: '90%', margin: '0 auto' }"
+              >
+                <a-form-item field="prompt_config.system" label="绯荤粺">
+                  <a-textarea
+                    v-model="form.prompt_config.system"
+                    placeholder=""
+                    style="height: 180px"
+                  />
+                </a-form-item>
+                <a-divider style="margin: 0; margin-bottom: 10px" />
+                <a-form-item label="鐩镐技搴﹂槇鍊�">
+                  <a-slider
+                    v-model="form.similarity_threshold"
+                    :step="0.01"
+                    :min="0"
+                    :max="1"
+                  />
+                </a-form-item>
+                <a-form-item label="鍏抽敭瀛楃浉浼煎害鏉冮噸">
+                  <a-slider
+                    v-model="form.vector_similarity_weight"
+                    :step="0.01"
+                    :min="0"
+                    :max="1"
+                  />
+                </a-form-item>
+                <a-form-item label="Top N">
+                  <a-slider v-model="form.top_n" :min="0" :max="30" />
+                </a-form-item>
+                <a-form-item label="Rerank妯″瀷">
+                  <a-space direction="vertical" size="large">
+                    <a-select
+                      :size="'large'"
+                      v-model="form.rerank_id"
+                      placeholder="璇烽�夋嫨 ..."
+                      allow-clear
+                    >
+                      <a-optgroup
+                        :label="index"
+                        v-for="(item, index) in rankModelList"
+                        :key="index"
                       >
-                        {{obj.llm_name}}
-                      </a-option>
-                    </a-optgroup>
-                  </a-select>
-                </a-space>
-              </a-form-item>
-              <a-form-item v-if="form.rerank_id" label="Top-K">
-                <a-slider v-model="form.top_k" :min="1" :max="2048" />
-              </a-form-item>
-              <a-form-item  label="鍙橀噺">
-                <div style="width: 100%;text-align: right" >
-                  <a-button type="outline" @click="addVariable" style="" size="mini"  shape="round">
-                    鏂板缓
-                  </a-button>
-                </div>
-              </a-form-item>
-              <a-form-item  label="">
-                <a-table
-                  :columns="columns"
-                  :data="form.prompt_config.parameters"
-                  style="width: 100%"
-                >
-                  <template #key="{ record, rowIndex }">
-                    <a-input v-model="record.key" placeholder="" />
-<!--                    <a-input v-model="form.prompt_config.parameters[rowIndex].key" />-->
-                  </template>
-                  <template #optional="{ record }">
-                    <a-switch v-model="record.optional" size="small" />
-                  </template>
-                  <template #action="{ record }">
-                    <a-button type="text" @click="deleteParameters(record)" style="margin-left: 0" size="small">
-                      <template #icon>
-                        <icon-delete  />
-                      </template>
+                        <a-option
+                          v-for="obj in item"
+                          :key="obj.fid"
+                          :disabled="!obj.available"
+                          :value="obj.llm_name"
+                        >
+                          {{ obj.llm_name }}
+                        </a-option>
+                      </a-optgroup>
+                    </a-select>
+                  </a-space>
+                </a-form-item>
+                <a-form-item v-if="form.rerank_id" label="Top-K">
+                  <a-slider v-model="form.top_k" :min="1" :max="2048" />
+                </a-form-item>
+                <a-form-item label="鍙橀噺">
+                  <div style="width: 100%; text-align: right">
+                    <a-button
+                      type="outline"
+                      @click="addVariable"
+                      style=""
+                      size="mini"
+                      shape="round"
+                    >
+                      鏂板缓
                     </a-button>
-                  </template>
-                </a-table>
-              </a-form-item>
-            </a-form>
+                  </div>
+                </a-form-item>
+                <a-form-item label="">
+                  <a-table
+                    :columns="columns"
+                    :data="form.prompt_config.parameters"
+                    style="width: 100%"
+                  >
+                    <template #name="{ record, rowIndex }">
+                      <a-input v-model="record.name" placeholder="" />
+                      <!--                    <a-input v-model="form.prompt_config.parameters[rowIndex].key" />-->
+                    </template>
+                    <template #optional="{ record }">
+                      <a-switch v-model="record.optional" size="small" />
+                    </template>
+                    <template #action="{ record }">
+                      <a-button
+                        type="text"
+                        @click="deleteParameters(record)"
+                        style="margin-left: 0"
+                        size="small"
+                      >
+                        <template #icon>
+                          <icon-delete />
+                        </template>
+                      </a-button>
+                    </template>
+                  </a-table>
+                </a-form-item>
+              </a-form>
             </a-scrollbar>
           </a-tab-pane>
           <a-tab-pane key="3" title="妯″瀷璁剧疆">
-            <a-divider style="margin-bottom: 20px;margin-top: 0" />
-            <div style="width: 100%;" :style="{height:height}">
+            <a-divider style="margin-bottom: 20px; margin-top: 0" />
+            <div style="width: 100%" :style="{ height: height }">
               <a-form
                 ref="formRef2"
                 :rules="rules"
@@ -193,27 +218,34 @@
               >
                 <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: 400px"  placeholder="璇烽�夋嫨">
-                      <a-optgroup
-                        :label="index"
-                        v-for="(item, index) in modelList"
-                        :key="index"
-                      >
-                        <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
+                      :size="'large'"
+                      field="llm_id"
+                      v-model="form.llm_id"
+                      style="width: 400px"
+                      placeholder="璇烽�夋嫨"
+                    >
+                      <template v-for="(item, index) in modelList" :key="index">
+                        <a-optgroup :label="index" v-if="item.length > 0">
+                          <a-option
+                            v-for="obj in item"
+                            :key="obj.fid"
+                            :value="obj.llm_name"
+                          >
+                            {{ obj.llm_name }}
+                          </a-option>
+                        </a-optgroup>
+                      </template>
                     </a-select>
                   </a-space>
                 </a-form-item>
-                <a-divider style="margin-bottom: 20px;margin-top: 0" />
+                <a-divider style="margin-bottom: 20px; margin-top: 0" />
                 <a-form-item label="鑷敱">
-                  <a-select default-value="2" :style="{width:'400px'}" placeholder="">
+                  <a-select
+                    default-value="2"
+                    :style="{ width: '400px' }"
+                    placeholder=""
+                  >
                     <a-option value="1">鍗冲叴鍒涗綔</a-option>
                     <a-option value="2">绮剧‘</a-option>
                     <a-option value="3">骞宠 </a-option>
@@ -222,31 +254,90 @@
                 <a-form-item label="娓╁害">
                   <a-switch size="small" v-model="temperature" />
                   <a-space direction="vertical" size="large">
-                    <a-slider :disabled="!temperature" v-model="form.llm_setting.temperature" :step="0.01" :min="0" :max="1" :style="{ width: '350px', marginLeft: '20px',display: 'flex' }" show-input />
+                    <a-slider
+                      :disabled="!temperature"
+                      v-model="form.llm_setting.temperature"
+                      :step="0.01"
+                      :min="0"
+                      :max="1"
+                      :style="{
+                        width: '350px',
+                        marginLeft: '20px',
+                        display: 'flex',
+                      }"
+                      show-input
+                    />
                   </a-space>
                 </a-form-item>
                 <a-form-item label="top P">
-                  <a-switch  size="small" v-model="top_p"  />
+                  <a-switch size="small" v-model="top_p" />
                   <a-space direction="vertical" size="large">
-                    <a-slider :disabled="!top_p" v-model="form.llm_setting.top_p" :step="0.01" :min="0" :max="1"  :style="{ width: '350px', marginLeft: '20px',display: 'flex' }" show-input />
+                    <a-slider
+                      :disabled="!top_p"
+                      v-model="form.llm_setting.top_p"
+                      :step="0.01"
+                      :min="0"
+                      :max="1"
+                      :style="{
+                        width: '350px',
+                        marginLeft: '20px',
+                        display: 'flex',
+                      }"
+                      show-input
+                    />
                   </a-space>
                 </a-form-item>
                 <a-form-item label="鍑哄腑澶勭綒">
-                  <a-switch size="small" v-model="presence_penalty"  />
+                  <a-switch size="small" v-model="presence_penalty" />
                   <a-space direction="vertical" size="large">
-                    <a-slider :disabled="!presence_penalty" v-model="form.llm_setting.presence_penalty" :step="0.01" :min="0" :max="1"  :style="{ width: '350px', marginLeft: '20px',display: 'flex' }" show-input />
+                    <a-slider
+                      :disabled="!presence_penalty"
+                      v-model="form.llm_setting.presence_penalty"
+                      :step="0.01"
+                      :min="0"
+                      :max="1"
+                      :style="{
+                        width: '350px',
+                        marginLeft: '20px',
+                        display: 'flex',
+                      }"
+                      show-input
+                    />
                   </a-space>
                 </a-form-item>
                 <a-form-item label="棰戠巼澶勭綒">
-                  <a-switch size="small" v-model="frequency_penalty"  />
+                  <a-switch size="small" v-model="frequency_penalty" />
                   <a-space direction="vertical" size="large">
-                    <a-slider :disabled="!frequency_penalty" v-model="form.llm_setting.frequency_penalty" :step="0.01" :min="0" :max="1"  :style="{ width: '350px', marginLeft: '20px',display: 'flex' }" show-input />
+                    <a-slider
+                      :disabled="!frequency_penalty"
+                      v-model="form.llm_setting.frequency_penalty"
+                      :step="0.01"
+                      :min="0"
+                      :max="1"
+                      :style="{
+                        width: '350px',
+                        marginLeft: '20px',
+                        display: 'flex',
+                      }"
+                      show-input
+                    />
                   </a-space>
                 </a-form-item>
                 <a-form-item label="鏈�澶oken鏁�">
-                  <a-switch size="small" v-model="max_tokens"  />
+                  <a-switch size="small" v-model="max_tokens" />
                   <a-space direction="vertical" size="large">
-                    <a-slider :disabled="!max_tokens" v-model="form.llm_setting.max_tokens"  :min="0" :max="2048"  :style="{ width: '350px', marginLeft: '20px',display: 'flex' }" show-input />
+                    <a-slider
+                      :disabled="!max_tokens"
+                      v-model="form.llm_setting.max_tokens"
+                      :min="0"
+                      :max="2048"
+                      :style="{
+                        width: '350px',
+                        marginLeft: '20px',
+                        display: 'flex',
+                      }"
+                      show-input
+                    />
                   </a-space>
                 </a-form-item>
               </a-form>
@@ -259,311 +350,359 @@
 </template>
 
 <script lang="ts" setup>
-import { onMounted, onBeforeMount, reactive, ref, nextTick } from "vue";
-import { kbdocumentupload, queryKbList, queryModelList } from "@/api/kbList";
-import useLoading from "@/hooks/loading";
-import { Message } from "@arco-design/web-vue";
-import { dialogSet } from "@/api/Agent";
-import EventBus from "@/utils/EventBus";
-const { loading,setLoading } = useLoading(true);
-const visible = ref(false);
-const modelList = ref({});
-const rankModelList = ref({});
-let tabs = ref([]);
-const file = ref();
-const formRef = ref();
-const formRef1 = ref();
-const formRef2 = ref();
-const activeKey = ref('1');
-const form = reactive({
-  name: "",
-  icon: "",
-  language: "English",
-  prompt_config: {
-    empty_response: "",
-    prologue: "浣犲ソ锛� 鎴戞槸浣犵殑鍔╃悊锛屾湁浠�涔堝彲浠ュ府鍒颁綘鐨勫悧锛�",
-    quote: true,
-    self_rag: false,
-    system: "浣犳槸涓�涓櫤鑳藉姪鎵嬶紝璇锋�荤粨鐭ヨ瘑搴撶殑鍐呭鏉ュ洖绛旈棶棰橈紝璇峰垪涓剧煡璇嗗簱涓殑鏁版嵁璇︾粏鍥炵瓟銆傚綋鎵�鏈夌煡璇嗗簱鍐呭閮戒笌闂鏃犲叧鏃讹紝浣犵殑鍥炵瓟蹇呴』鍖呮嫭鈥滅煡璇嗗簱涓湭鎵惧埌鎮ㄨ鐨勭瓟妗堬紒鈥濊繖鍙ヨ瘽銆�" +
-      "鍥炵瓟闇�瑕佽�冭檻鑱婂ぉ鍘嗗彶銆俓n        浠ヤ笅鏄煡璇嗗簱锛歕n        {knowledge}\n        浠ヤ笂鏄煡璇嗗簱銆�",
-    parameters: [
+  import {
+    onMounted,
+    onBeforeMount,
+    reactive,
+    ref,
+    nextTick,
+    onUnmounted,
+    onBeforeUnmount,
+  } from 'vue';
+  import { kbdocumentupload, queryKbList, queryModelList } from '@/api/kbList';
+  import useLoading from '@/hooks/loading';
+  import { Message } from '@arco-design/web-vue';
+  import { dialogSet } from '@/api/Agent';
+  import EventBus from '@/utils/EventBus';
+  const { loading, setLoading } = useLoading(true);
+  const visible = ref(false);
+  const modelList = ref({});
+  const rankModelList = ref({});
+  let tabs = ref([]);
+  const file = ref();
+  const formRef = ref();
+  const formRef1 = ref();
+  const formRef2 = ref();
+  const activeKey = ref('1');
+  const form = reactive({
+    name: '',
+    icon: '',
+    language: 'English',
+    prompt_config: {
+      empty_response: '',
+      prologue: '浣犲ソ锛� 鎴戞槸浣犵殑鍔╃悊锛屾湁浠�涔堝彲浠ュ府鍒颁綘鐨勫悧锛�',
+      quote: true,
+      self_rag: false,
+      system:
+        '浣犳槸涓�涓櫤鑳藉姪鎵嬶紝璇锋�荤粨鐭ヨ瘑搴撶殑鍐呭鏉ュ洖绛旈棶棰橈紝璇峰垪涓剧煡璇嗗簱涓殑鏁版嵁璇︾粏鍥炵瓟銆傚綋鎵�鏈夌煡璇嗗簱鍐呭閮戒笌闂鏃犲叧鏃讹紝浣犵殑鍥炵瓟蹇呴』鍖呮嫭鈥滅煡璇嗗簱涓湭鎵惧埌鎮ㄨ鐨勭瓟妗堬紒鈥濊繖鍙ヨ瘽銆�' +
+        '鍥炵瓟闇�瑕佽�冭檻鑱婂ぉ鍘嗗彶銆俓n        浠ヤ笅鏄煡璇嗗簱锛歕n        {knowledge}\n        浠ヤ笂鏄煡璇嗗簱銆�',
+      parameters: [
+        {
+          index: 0,
+          name: 'knowledge',
+          key: 'knowledge',
+          optional: false,
+        },
+      ],
+    },
+    kb_ids: [],
+    llm_id: undefined,
+    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,
+    rerank_id: '',
+    top_k: 1024,
+  });
+  let temperature = ref(true);
+  let top_p = ref(true);
+  let presence_penalty = ref(true);
+  let frequency_penalty = ref(true);
+  let max_tokens = ref(true);
+  const httpUrl = localStorage.getItem('httpUrl');
+  let avatarShow = ref(true);
+
+  const height = ref('calc(500px)');
+  const props = defineProps(['typeAngint', 'formData']);
+  const emit = defineEmits(['queryList']);
+  const columns = [
+    {
+      title: '鍏抽敭瀛�',
+      dataIndex: 'name',
+      slotName: 'name',
+    },
+    {
+      title: '鍙��',
+      dataIndex: 'optional',
+      slotName: 'optional',
+    },
+    {
+      title: '鎿嶄綔',
+      dataIndex: 'action',
+      slotName: 'action',
+    },
+  ];
+
+  const formatter = (value) => {
+    return `${(value / 100).toFixed(2)}`;
+  };
+
+  const uploadAction = '/api/v1/llm/upload'; // 鏇挎崲涓轰綘鐨勪笂浼燗PI
+  const fileList = ref([]);
+  const imageUrls = ref([]);
+
+  const updateFileList = (newFileList) => {
+    fileList.value = newFileList;
+    console.log(newFileList, 88);
+  };
+
+  const handleSuccess = (urls) => {
+    imageUrls.value = urls; // 鎷垮埌涓婁紶鐨勫浘鐗囧湴鍧�
+    form.icon = urls[0];
+  };
+
+  const rules = {
+    'name': [
       {
-        index: 0,
-        key: "knowledge",
-        optional: false
+        required: true,
+        message: '鍚嶇О涓嶅厑璁镐负绌�',
+      },
+    ],
+    'prompt_config.system': [
+      {
+        required: true,
+        message: '绯荤粺涓嶅厑璁镐负绌�',
+      },
+    ],
+    'llm_id': [
+      {
+        required: true,
+        message: '妯″瀷涓嶈兘涓虹┖',
+      },
+    ],
+    'kb_ids': [
+      {
+        required: true,
+        message: '鐭ヨ瘑搴撲笉鑳戒负绌�',
+      },
+    ],
+  };
+
+  const handleSubmit = ({ values, errors }) => {
+    console.log('values:', values, '\nerrors:', errors);
+    if (!errors) {
+    }
+  };
+
+  const handleClick = () => {
+    visible.value = true;
+  };
+
+  const handleCancel = () => {
+    visible.value = false;
+    formRef.value.resetFields();
+    formRef1.value.resetFields();
+    formRef2.value.resetFields();
+    form.name = '';
+    emit('queryList');
+  };
+
+  const handleOpened = (el) => {
+    // Object.assign(form,{
+    //   name: '',// 鐢ㄦ埛鍚�
+    //   nameJoin: '',// 鏄电О
+    //   post: '',// 宀椾綅
+    //   txt: '',// 澶囨敞
+    // });
+    activeKey.value = '1';
+    formRef.value.resetFields();
+    formRef1.value.resetFields();
+    formRef2.value.resetFields();
+    nextTick(() => {
+      if (props.typeAngint == 'add') {
+        form.name = '';
+        form.icon = '';
+        form.prompt_config.system =
+          '浣犳槸涓�涓櫤鑳藉姪鎵嬶紝璇锋�荤粨鐭ヨ瘑搴撶殑鍐呭鏉ュ洖绛旈棶棰橈紝璇峰垪涓剧煡璇嗗簱涓殑鏁版嵁璇︾粏鍥炵瓟銆傚綋鎵�鏈夌煡璇嗗簱鍐呭閮戒笌闂鏃犲叧鏃讹紝浣犵殑鍥炵瓟蹇呴』鍖呮嫭鈥滅煡璇嗗簱涓湭鎵惧埌鎮ㄨ鐨勭瓟妗堬紒鈥濊繖鍙ヨ瘽銆�' +
+          '鍥炵瓟闇�瑕佽�冭檻鑱婂ぉ鍘嗗彶銆俓n        浠ヤ笅鏄煡璇嗗簱锛歕n        {knowledge}\n        浠ヤ笂鏄煡璇嗗簱銆�';
       }
-    ]
-  },
-  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,
-  rerank_id:'',
-  top_k:1024,
-});
-let temperature = ref(true);
-let top_p = ref(true);
-let presence_penalty = ref(true);
-let frequency_penalty = ref(true);
-let max_tokens = ref(true);
-const httpUrl = localStorage.getItem('httpUrl');
+      // console.log(form, '鏂板缓鏅鸿兘浣撳脊绐�');
+      avatarShow.value = false;
+      setTimeout(() => {
+        avatarShow.value = true;
+      }, 100);
+    });
+  };
 
-const height = ref('calc(500px)');
-const props = defineProps(['typeAngint', 'formData']);
-const emit = defineEmits(['queryList']);
-const columns = [
-  {
-    title: '鍏抽敭瀛�',
-    dataIndex: 'key',
-    slotName: 'key',
-  },
-  {
-    title: '鍙��',
-    dataIndex: 'optional',
-    slotName: 'optional',
-  },
-  {
-    title: '鎿嶄綔',
-    dataIndex: 'action',
-    slotName: 'action',
-  },
-];
+  const handleBeforeOk = async (done) => {
+    formRef.value.validate().then((res) => {
+      // console.log('res:', res)
+    });
+    formRef1.value.validate().then((res) => {
+      // console.log('res:', res)
+    });
+    formRef2.value.validate().then((res) => {
+      // console.log('res:', res)
+    });
+    if (
+      form.name &&
+      form.kb_ids.length > 0 &&
+      form.prompt_config.system &&
+      form.llm_id
+    ) {
+      let title = '鍒涘缓鎴愬姛';
+      let formNew = { ...form };
+      if (formNew.rerank_id) {
+        delete formNew.top_k;
+      }
 
-const formatter = (value) => {
-  return `${(value / 100).toFixed(2)}`
-};
+      if (formNew.rerank_id) {
+        delete formNew.top_k;
+      }
 
-const uploadAction = '/api/v1/llm/upload'; // 鏇挎崲涓轰綘鐨勪笂浼燗PI
-const fileList = ref([]);
-const imageUrls = ref([]);
+      formNew.prompt_config.parameters = form.prompt_config.parameters.map(
+        (item) => {
+          return {
+            ...item,
+            key: item.name,
+          };
+        }
+      );
 
-const updateFileList = (newFileList) => {
-  fileList.value = newFileList;
-  console.log(newFileList, 88);
-};
+      console.log(formNew, 'formNew');
 
-const handleSuccess = (urls) => {
-  imageUrls.value = urls; // 鎷垮埌涓婁紶鐨勫浘鐗囧湴鍧�
-  form.icon = urls[0];
-};
+      if (props.typeAngint == 'edit') {
+        formNew.dialog_id = form.id;
+        delete formNew.id;
+        delete formNew.off;
+        title = '淇敼鎴愬姛';
+      }
 
-const rules = {
-  name: [
-    {
-      required: true,
-      message: "鍚嶇О涓嶅厑璁镐负绌�"
+      if (!max_tokens.value) {
+        formNew.llm_setting.max_tokens = '';
+      }
+
+      setLoading(true);
+      try {
+        const data = await dialogSet(formNew);
+        // console.log(data, 'data');
+        if (data.code == 0) {
+          Message.success(title);
+          handleCancel();
+          EventBus.emit('queryList');
+        } else {
+          Message.error(data.msg);
+        }
+        done(true);
+        setLoading(false);
+      } catch (err) {
+        // you can report use errorHandler or other
+        setLoading(false);
+      }
+    } else {
+      Message.warning('璇峰~鍐欏繀濉」');
+      done(false);
     }
-  ],
-  "prompt_config.system": [
-    {
-      required: true,
-      message: "绯荤粺涓嶅厑璁镐负绌�"
-    }
-  ],
-  llm_id: [
-    {
-      required: true,
-      message: '妯″瀷涓嶈兘涓虹┖',
-    },
-  ],
-  kb_ids: [
-    {
-      required: true,
-      message: '鐭ヨ瘑搴撲笉鑳戒负绌�',
-    },
-  ],
-};
+  };
 
-const handleSubmit = ({ values, errors }) => {
-  console.log("values:", values, "\nerrors:", errors);
-  if (!errors) {
+  const editClick = (data) => {
+    visible.value = true;
+    nextTick(() => {
+      // console.log(props.formData,'浼犲叆鏁版嵁');
+      if (props.formData.llm_setting.max_tokens == '') {
+        max_tokens.value = false;
+      } else {
+        max_tokens.value = true;
+      }
+      Object.assign(form, props.formData);
+      console.log(form, '琛ㄥ崟鏁版嵁');
+    });
+  };
 
-  }
-};
+  const addVariable = () => {
+    form.prompt_config.parameters.push({
+      index: form.prompt_config.parameters.length,
+      key: '',
+      name: '',
+      optional: true,
+    });
+    nextTick(() => {
+      formRef.value.validate();
+    });
+  };
 
-const handleClick = () => {
-  visible.value = true;
-};
-defineExpose({
-  handleClick
-});
+  const deleteParameters = (record) => {
+    // console.log(record, 'record');
+    // console.log(form.prompt_config.parameters);
+    form.prompt_config.parameters = form.prompt_config.parameters.filter(
+      (item) => item.index !== record.index
+    );
+  };
 
-const handleCancel = () => {
-  visible.value = false;
-  formRef.value.resetFields();
-  formRef1.value.resetFields();
-  formRef2.value.resetFields();
-  form.name = "";
-  emit('queryList');
-};
-
-const handleOpened = (el) => {
-  // Object.assign(form,{
-  //   name: '',// 鐢ㄦ埛鍚�
-  //   nameJoin: '',// 鏄电О
-  //   post: '',// 宀椾綅
-  //   txt: '',// 澶囨敞
-  // });
-  activeKey.value= '1'
-  formRef.value.resetFields();
-  formRef1.value.resetFields();
-  formRef2.value.resetFields();
-
-  if(props.typeAngint=='add'){
-    form.name = "";
-    form.prompt_config.system = "浣犳槸涓�涓櫤鑳藉姪鎵嬶紝璇锋�荤粨鐭ヨ瘑搴撶殑鍐呭鏉ュ洖绛旈棶棰橈紝璇峰垪涓剧煡璇嗗簱涓殑鏁版嵁璇︾粏鍥炵瓟銆傚綋鎵�鏈夌煡璇嗗簱鍐呭閮戒笌闂鏃犲叧鏃讹紝浣犵殑鍥炵瓟蹇呴』鍖呮嫭鈥滅煡璇嗗簱涓湭鎵惧埌鎮ㄨ鐨勭瓟妗堬紒鈥濊繖鍙ヨ瘽銆�" +
-      "鍥炵瓟闇�瑕佽�冭檻鑱婂ぉ鍘嗗彶銆俓n        浠ヤ笅鏄煡璇嗗簱锛歕n        {knowledge}\n        浠ヤ笂鏄煡璇嗗簱銆�";
+  function handleTabChange(key) {
+    // 澶勭悊鏍囩鏀瑰彉浜嬩欢
+    activeKey.value = key;
   }
 
-};
-
-
-const handleBeforeOk = async (done) => {
-  formRef.value.validate().then(res => {
-    // console.log('res:', res)
-  })
-  formRef1.value.validate().then(res => {
-    // console.log('res:', res)
-  })
-  formRef2.value.validate().then(res => {
-    // console.log('res:', res)
-  })
-  if (form.name && form.kb_ids.length>0 && form.prompt_config.system && form.llm_id) {
-    let title = '鍒涘缓鎴愬姛';
-    let formNew = { ...form };
-    if(formNew.rerank_id){
-      delete formNew.top_k;
-    }
-
-    if(formNew.rerank_id){
-      delete formNew.top_k;
-    }
-
-    if (props.typeAngint == 'edit') {
-      formNew.dialog_id = form.id;
-      delete formNew.id;
-      delete formNew.off;
-      title = '淇敼鎴愬姛';
-    }
-    setLoading(true)
+  const queryModel = async (params) => {
     try {
-      const data = await dialogSet(formNew);
-      // console.log(data, 'data');
-      if (data.code == 0){
-        Message.success(title);
-        handleCancel();
-        EventBus.emit('queryList');
-      }else {
-        Message.error(data.msg);
+      const data = await queryModelList(params);
+      const arrObj = {};
+      for (const key in data.data) {
+        if (Object.hasOwnProperty.call(data.data, key)) {
+          const element = data.data[key];
+          arrObj[key] = element.filter((item) => item.available === true);
+        }
       }
-      done(true);
-      setLoading(false)
+      modelList.value = arrObj;
+      rankModelList.value = {
+        BAAI: [data.data.BAAI[1]],
+        Jina: data.data.Jina,
+        youdao: data.data.youdao,
+      };
     } catch (err) {
       // you can report use errorHandler or other
-      setLoading(false)
+    } finally {
     }
-  }else {
-    Message.warning('璇峰~鍐欏繀濉」');
-    done(false)
-  }
-};
+  };
 
-const editClick = (data) => {
-  visible.value = true;
-  nextTick(()=>{
-    // console.log(props.formData,'浼犲叆鏁版嵁');
-    Object.assign(form, props.formData);
-    console.log(form,'琛ㄥ崟鏁版嵁');
-  })
-};
+  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);
+    }
+  };
 
-const addVariable = () => {
-  form.prompt_config.parameters.push({
-    index: form.prompt_config.parameters.length,
-    key: "",
-    optional: true
+  onBeforeMount(() => {
+    queryModel({});
+    knowledgeData();
   });
-  nextTick(() => {
-    formRef.value.validate();
+  onMounted(() => {});
+
+  onBeforeUnmount(() => {});
+
+  defineExpose({
+    handleClick,
+    editClick,
   });
-}
-
-const deleteParameters = (record) => {
-  // console.log(record, 'record');
-  // console.log(form.prompt_config.parameters);
-  form.prompt_config.parameters = form.prompt_config.parameters.filter(item => item.index !== record.index);
-
-}
-
-function handleTabChange(key) {
-  // 澶勭悊鏍囩鏀瑰彉浜嬩欢
-  console.log('Changed to tab:', key);
-  activeKey.value=key;
-}
-
-const queryModel = async (params) => {
-  try {
-    const data = await queryModelList(params);
-    // console.log(data.data, '澶фā鍨嬪垪琛�');
-    modelList.value = data.data;
-    rankModelList.value = {
-      BAAI: [data.data.BAAI[1]],
-      Jina: data.data.Jina,
-      youdao: data.data.youdao
-    };
-  } catch (err) {
-    // you can report use errorHandler or other
-  } finally {
-  }
-};
-
-
-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 lang="less" scoped>
-:deep(.arco-tabs-nav-tab-list) {
-  width: 100%;
+  :deep(.arco-tabs-nav-tab-list) {
+    width: 100%;
 
-  .arco-tabs-tab {
-    width: 33%;
+    .arco-tabs-tab {
+      width: 33%;
 
-    .arco-tabs-tab-title {
-      width: 100%;
-      display: inline-block;
-      text-align: center;
+      .arco-tabs-tab-title {
+        width: 100%;
+        display: inline-block;
+        text-align: center;
+      }
     }
   }
-}
-</style>
\ No newline at end of file
+</style>

--
Gitblit v1.8.0