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