From f74f264d875b003730484f3fe7cb242c7f91294e Mon Sep 17 00:00:00 2001 From: zhangxiao <898441624@qq.com> Date: 星期四, 15 八月 2024 17:32:55 +0800 Subject: [PATCH] fix: 模型管理代码修改 --- src/views/sessionManager/components/agentSession.vue | 178 +++++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 153 insertions(+), 25 deletions(-) diff --git a/src/views/sessionManager/components/agentSession.vue b/src/views/sessionManager/components/agentSession.vue index e73415b..5018c67 100644 --- a/src/views/sessionManager/components/agentSession.vue +++ b/src/views/sessionManager/components/agentSession.vue @@ -2,7 +2,7 @@ <!-- 鍐呭--> <a-scrollbar ref="scrollbar" - id="home" + id="agentHome" class="chat-list" style=" width: 90%; @@ -99,21 +99,21 @@ </template> <script setup lang="ts"> -import { defineProps, ref, watch, defineEmits, onMounted, reactive, computed } from "vue"; +import { defineProps, ref, watch, defineEmits, onMounted, reactive, computed, nextTick } from "vue"; import { Message } from '@arco-design/web-vue'; import { useAppStore } from "@/store"; import { getAuthorization } from "@/utils/auth"; import { EventSourceParserStream } from 'eventsource-parser/stream'; -// const props = defineProps({ -// modalObj: Object, -// dialogId: String, -// }); +import { agentResetApi, agentSetApi, getAgentSessionDetailsApi } from "@/api/agentSession"; +const props = defineProps({ + modalObj: Object, +}); // const emit = defineEmits(['addSession']); const sessionDetailList = ref([]); //鏍规嵁浼氳瘽id鍑烘潵鐨勪細璇濊鎯� const sessionList = ref([]); //浼氳瘽鍒楄〃 -const modalObj = reactive({ add: false }); +const modalObj = reactive({ }); const dialogId = ref(''); const chatDis = ref(false); const loading = ref(false); @@ -126,8 +126,7 @@ const inputMsg = ref(''); const activeSessionId = ref(''); const fieldNames = { value: 'id', label: 'name' }; -const dialogs = ref([]); -const dialogObj = reactive({}); +const agentObj = reactive({}); const agentList = ref([]); const selectValue = ref(''); const sectionList = ref({}); @@ -136,6 +135,100 @@ const theme = computed(() => { return appStore.theme; }); + + + +// 鍒濆鍖栭〉闈� +const initPage = async () => { + agentSet(); + agentReset(); + agentCompletion(); + queryAgentSessionDetail(agentObj.id); +}; + +// 璋冪敤set鏂规硶 +const agentSet = async () => { + const res = await agentSetApi({ + id: agentObj.id, + title: agentObj.title, + dsl: agentObj.dsl, + }); + console.log(res,'agentSet'); + if (res.code == 0) { + // sessionDetailList.value = res.data.dsl.messages; + // Message.success('淇敼鎴愬姛'); + } +} +// 璋冪敤reset鏂规硶 +const agentReset = async () => { + const res = await agentResetApi({ + id: agentObj.id, + }); + if (res.code === 200) { + // Message.success('淇敼鎴愬姛'); + } +} +// 璋冪敤completion鏂规硶 +const agentCompletion = async () => { + const response = await fetch( + '/api/v1/canvas/completion', + { + method: 'POST', + headers: { + 'Authorization': getAuthorization(), + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + id: agentObj.id + }), + } + ); + + const reader = response?.body + ?.pipeThrough(new TextDecoderStream()) + .pipeThrough(new EventSourceParserStream()) + .getReader(); + currIndex.value = 0; + // while (true) { + // const x = await reader?.read(); + // if (x) { + // const { done, value } = x; + // console.log(x, 999); + // try { + // const val = JSON.parse(value?.data || ''); + // const d = val?.data; + // if (typeof d !== 'boolean') { + // console.info('data:', d); + // streamStr.value = d.content; + // startDisplayStr(); + // } + // } catch (e) { + // console.warn(e); + // } + // if (done) { + // console.info('done'); + // displayedText.value = ''; + // queryAgentSessionDetail(agentObj.id); + // break; + // } + // } + // } + chatDis.value = false; + loading.value = false; + inputMsg.value = ''; +} +// 璋冪敤get鏂规硶 + +const queryAgentSessionDetail = async (id) => { + const { code, data } = await getAgentSessionDetailsApi(id); + if (code == 0) { + console.log(data,'浼氳瘽璇︽儏'); + sessionDetailList.value = data.dsl.messages; + refreshScroll(); //鍒锋柊婊氬姩鏉′綅缃� + } +}; + + @@ -152,12 +245,12 @@ chatDis.value = true; loading.value = true; - if (!activeSessionId.value) { - Message.warning('璇烽�夋嫨浼氳瘽'); - chatDis.value = false; - loading.value = false; - return; - } + // if (!agentObj.id) { + // Message.warning('璇烽�夋嫨浼氳瘽'); + // chatDis.value = false; + // loading.value = false; + // return; + // } // if (displayedText.value) { // querySessionList(); @@ -171,7 +264,7 @@ sessionDetailList.value.push({ role: 'last' }); refreshScroll(); const response = await fetch( - '/api/tech/cloudminds/query?modeltype=localragflow', + '/api/v1/canvas/completion', { method: 'POST', headers: { @@ -179,8 +272,8 @@ 'Content-Type': 'application/json', }, body: JSON.stringify({ - conversation_id: activeSessionId.value, - messages: inputMsg.value, + id: agentObj.id, + message: inputMsg.value, }), } ); @@ -209,7 +302,7 @@ if (done) { console.info('done'); displayedText.value = ''; - querySessionDetail(sectionList.value); + queryAgentSessionDetail(agentObj.id); break; } } @@ -232,16 +325,51 @@ }; + +//鏂囧瓧鍔ㄦ�佽緭鍑� +const startDisplayStr = () => { + if (timer) { + clearTimeout(timer!); + } + const res = streamStr.value; + // 灏嗘暟缁勪腑鐨勫瓧绗︿覆鎷兼帴璧锋潵 + if (currIndex.value < res.length) { + displayedText.value += res[currIndex.value]; + currIndex.value++; + setTimeout(startDisplayStr, 100); + refreshScroll(); + } else { + clearTimeout(timer!); + timer = null; + } +}; + +const scrollbar = ref(null); +const refreshScroll = () => { + nextTick(() => { + const container = document.getElementById('agentHome'); + scrollbar.value.scrollTop(container.scrollHeight); + }); +}; + + onMounted(() => { }); -// watch( -// () => props.dialogId, -// (newVal, oldVal) => { -// -// } -// ); +watch( + () => props.modalObj, + (newVal, oldVal) => { + Object.assign(agentObj, newVal); + //璋冪敤agent鍒濆鍖栨柟娉� + if(JSON.stringify(newVal) != '{}'){ + initPage(); + } + },{ + immediate: true, + deep: true + } +); </script> <style scoped lang="scss"> -- Gitblit v1.8.0