From 5e6e726564e5cf1520f95b7f4f13707a39da4bad Mon Sep 17 00:00:00 2001
From: zhangxiao <898441624@qq.com>
Date: 星期五, 30 八月 2024 19:43:42 +0800
Subject: [PATCH] fix: 修改bug
---
src/views/dmx/IntelligentAgent/components/editAgent.vue | 443 ++++++++++++++++++++++++++++++++++++------------------
1 files changed, 292 insertions(+), 151 deletions(-)
diff --git a/src/views/dmx/IntelligentAgent/components/editAgent.vue b/src/views/dmx/IntelligentAgent/components/editAgent.vue
index 813ca79..e82a113 100644
--- a/src/views/dmx/IntelligentAgent/components/editAgent.vue
+++ b/src/views/dmx/IntelligentAgent/components/editAgent.vue
@@ -1,190 +1,331 @@
-
<template>
- <a-button v-if="typeAngint=='edit'" type="text" size="small" @click="handleClick">
+ <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;" />
</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-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"
+ >
+ <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="'2'">
-
- </a-collapse-item>
- <a-collapse-item header="鐭ヨ瘑搴�" key="3">
-
- </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: 10px">
-<!-- <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";
-const props = defineProps(['typeAngint','formData'])
-const visible = ref(false);
-const loading = ref(false);
-const form = reactive({
-
-});
-const formRef = ref(null);
-const height = ref('calc(100vh - 150px)')
-const heightrg = ref('calc(100vh - 100px)')
-
-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,
+ },
+ ],
},
- ],
-}
-
-
-const handleSubmit = ({values, errors}) => {
- console.log('values:', values, '\nerrors:', errors)
-}
-
-const handleClick = (data) => {
- visible.value = true;
- nextTick(()=>{
- Object.assign(form,data);
- console.log(form);
- })
-};
-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;
-}
-
-const handleOpened =(el) => {
- formRef.value.resetFields();
-}
-
-const file = ref();
-
-const onChange = (_, currentFile) => {
- file.value = {
- ...currentFile,
- // url: URL.createObjectURL(currentFile.file),
+ 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 onProgress = (currentFile) => {
- file.value = currentFile;
-};
-onBeforeMount(()=>{
+ 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');
+ }
+ }
+ };
-})
-onMounted(()=>{
+ 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(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 onChange = (_, currentFile) => {
+ file.value = {
+ ...currentFile,
+ // url: URL.createObjectURL(currentFile.file),
+ };
+ };
+ const onProgress = (currentFile) => {
+ file.value = currentFile;
+ };
+
+ 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