From cfdf588704b194118f1d6a1ed69e01025734bba9 Mon Sep 17 00:00:00 2001
From: yinbangzhong <zhongbangyin@126.com>
Date: 星期五, 13 九月 2024 13:45:07 +0800
Subject: [PATCH] 审计
---
src/api/agentSession.ts | 7 +
src/views/sessionManager/components/agentSession.vue | 62 ++++-----
src/views/sessionManager/index.vue | 2
src/views/sessionManager/components/seniorAgentSession.vue | 259 ++++++++++++++-----------------------------
4 files changed, 120 insertions(+), 210 deletions(-)
diff --git a/src/api/agentSession.ts b/src/api/agentSession.ts
index ef8e05a..d550b83 100644
--- a/src/api/agentSession.ts
+++ b/src/api/agentSession.ts
@@ -46,6 +46,13 @@
}
+export function updateSeniorAgentConversation(data) {
+ return axios.post(
+ '/api/v1/advanced-agent/update_agent_conversation',
+ data
+ );
+}
+
// 鑾峰彇浼氳瘽璇︽儏
export function getAgentSessionDetailsApi(id: string) {
return axios.get(
diff --git a/src/views/sessionManager/components/agentSession.vue b/src/views/sessionManager/components/agentSession.vue
index 484ad76..e10748a 100644
--- a/src/views/sessionManager/components/agentSession.vue
+++ b/src/views/sessionManager/components/agentSession.vue
@@ -267,7 +267,7 @@
const visible = ref(false);
let isHistory = ref(false); //鏄惁鏄巻鍙茶褰�
let dsl = reactive({});
- const chatDataMeg = reactive({});
+
let toStop = false;
@@ -396,12 +396,17 @@
const { code, data } = await getAgentSessionDetailsApi(id);
if (code == 0) {
console.log(data, 'agent浼氳瘽璇︽儏');
- Object.assign(chatObj, data);
- // sessionDetailList.value = data.dsl.messages;
- await updateAgentConversation({
- converson_id: conversation_id.value,
- dsl:data.dsl,
- })
+ let l = data.dsl.messages.length;
+ if (l > 1) {
+ chatObj.dsl.messages[chatObj.dsl.messages.length-1] = data.dsl.messages[l - 1];
+ await updateAgentConversation({
+ converson_id: conversation_id.value,
+ dsl: chatObj.dsl
+ });
+ } else {
+ chatObj.dsl = data.dsl;
+ }
+ sessionDetailList.value = chatObj.dsl.messages;
agentTitle.value = `${data.title}` || '鏈懡鍚嶄細璇�';
from.name = `${data.title}` || '鏈懡鍚嶄細璇�';
refreshScroll(); //鍒锋柊婊氬姩鏉′綅缃�
@@ -418,12 +423,18 @@
from.name = session.name;
const { code, data } = await getSessionDetailsApi(session.id);
if (code == 200) {
- sessionDetailList.value = data.message.messages;
const res = await getAgentSessionDetailsApi(session.dialog_id);
if (res.code == 0) {
- console.log(res.data, 'agent浼氳瘽璇︽儏');
+ console.log(res.data, "agent浼氳瘽璇︽儏");
Object.assign(agentObj, res.data);
- Object.assign(chatObj, res.data);
+ if (data?.message?.messages) {
+ sessionDetailList.value = data.message.messages;
+ let dsl = data.message;
+ Object.assign(chatObj, { "dsl": dsl });
+ } else {
+ Object.assign(chatObj, res.data);
+ sessionDetailList.value = res.data.dsl.messages;
+ }
Object.assign(dsl, res.data.dsl);
refreshScroll(); //鍒锋柊婊氬姩鏉′綅缃�
}
@@ -454,18 +465,6 @@
event.preventDefault(); // 闃绘榛樿琛屼负锛屽嵆涓嶆崲琛�
}
- // chatDis.value = true;
- // loading.value = true;
- // if (!agentObj.id) {
- // Message.warning('璇烽�夋嫨浼氳瘽');
- // chatDis.value = false;
- // loading.value = false;
- // return;
- // }
-
- // if (displayedText.value) {
- // querySessionList();
- // }
if (inputMsg.value) {
startChat(inputMsg.value);
@@ -515,7 +514,6 @@
while (true) {
if (isStopChat) {
message_stop.push(message_id);
- setChatDataMeg(chatDataMeg);
break;
}
const x = await reader?.read();
@@ -581,25 +579,21 @@
.concat(lastArr);
console.log(sessionDetailList.value, 'sessionDetailList2');
console.log(chatObj, 'chatObj瀵硅薄');
- chatObj.dsl.messages = chatObj.dsl.messages.concat(lastArr);
- Object.assign(chatDataMeg, {
- id: chatObj.id,
- conversation_id: chatObj.id,
- message: sessionDetailList.value,
- });
- };
+ chatObj.dsl.messages = sessionDetailList.value;
- const setChatDataMeg = async (chatData) => {
- const { code, data } = await addSessionApi(chatData);
+ const { code, data } = await updateAgentConversation({
+ converson_id: conversation_id.value,
+ dsl:chatObj.dsl,
+ });
if (data) {
//鍋滄瀹氭椂鍣�
clearTimeout(timer!);
timer = null;
- // displayedText.value = "";
- queryAgentSessionDetail(chatObj.id);
}
};
+
+
const handleShiftEnter = (event) => {
event.preventDefault();
inputMsg.value += '\n';
diff --git a/src/views/sessionManager/components/seniorAgentSession.vue b/src/views/sessionManager/components/seniorAgentSession.vue
index 347551a..5763015 100644
--- a/src/views/sessionManager/components/seniorAgentSession.vue
+++ b/src/views/sessionManager/components/seniorAgentSession.vue
@@ -58,22 +58,6 @@
<div :class="{ chartUserText: theme === 'light' }"
>{{ sessionDetail.content }}
</div>
-
- <!-- <div class="uploadFileList fileList">
- <a-comment
- content="232323"
- style="
- background: var(--color-bg-2);
- padding: 10px;
- border-radius: 10px;
- font-size: 12px;
- "
- >
- <template #avatar>
- <img :src="getIconByExtension('wps')" alt="" />
- </template>
- </a-comment>
- </div> -->
</template>
</a-comment>
<a-comment v-else-if="sessionDetail?.role === 'assistant'">
@@ -85,58 +69,29 @@
/>
</template>
<template #content>
- <!-- <a-card :class="{ chatItemAnswer: theme === 'light' }">-->
- <!-- <div :class="{ light: theme === 'light' }"-->
- <!-- >{{ sessionDetail.content }}-->
- <!-- </div>-->
- <!-- </a-card>-->
- <a-textarea
- v-if="sessionDetail?.content"
- readonly
- auto-size
- v-model="sessionDetail.content"
- :class="{ chatItemAnswer: theme === 'light' }"
- :style="{
- backgroundColor: theme === 'light' ? '#ffffff' : '#000000',
- }"
- style="border: none"
- >
- </a-textarea>
- <div v-else>
- <!-- <a-textarea
- readonly
- auto-size
- :default-value="chartText(sessionDetail.code, sessionDetail.sql)"
- :class="{ chatItemAnswer: theme === 'light' }"
- :style="{
- backgroundColor: theme === 'light' ? '#ffffff' : '#000000',
- }"
- style="border: none"
- >
- </a-textarea> -->
- <!-- <codemirror
- v-model="sessionDetail.code"
- placeholder="Code gose here..."
- :style="{ height: '100%' }"
- :autofocus="true"
- :tabSize="2"
- /> -->
- <div class="codeStle">
- <div class="language">python</div>
- <pre
- style="
+ <div v-if="isExistTip(sessionDetail.content)" class="chartUserText">
+ <div v-for="(item, breakIndex) in breakLine(sessionDetail)">
+ <span v-if="item.preIndex==0">
+ {{ sessionDetail.content.substring(0, item.index) }}
+ </span>
+ <span v-else>
+ {{ sessionDetail.content.substring(item.preIndex+item.preItem.length, item.index) }}
+ </span>
+ <div class="codeStle">
+ <div class="language">{{ item.item }}</div>
+ <pre
+ style="
background: #2c2c36;
padding: 10px;
margin-top: 0;
margin-bottom: 0;
"
- ><code class="language-js line-numbers">{{ sessionDetail?.code}}</code></pre>
- <div class="language">SQL</div>
- <pre
- style="background: #2c2c36; padding: 10px; margin-top: 0"
- ><code class="language-js line-numbers">{{sessionDetail?.sql}}</code></pre>
+ ><code class="language-js line-numbers">{{ item?.tip_content }}</code></pre>
+ </div>
</div>
-
+ </div>
+ <div v-else :class="{ chartUserText: theme === 'light' }">{{ sessionDetail.content }}</div>
+ <div>
<a-image
v-if="sessionDetail?.image_name"
:src="getImg(sessionDetail)"
@@ -436,8 +391,8 @@
agentConversationSetApi,
agentConverDownloadApi,
downloadFile,
- agentUploadApi,
- } from '@/api/agentSession';
+ agentUploadApi, updateAgentConversation, updateSeniorAgentConversation
+ } from "@/api/agentSession";
import EventBus from '@/utils/EventBus';
import useClipboard from 'vue-clipboard3';
import { addSessionApi, getSessionDetailsApi } from '@/api/session';
@@ -519,6 +474,45 @@
],
};
+ const isExistTip = (message: string): boolean => {
+ if (/\$([a-z]+)\$/g.test(message)) {
+ return true;
+ } else {
+ return false;
+ }
+ };
+
+ const breakLine = (detail): string[] => {
+ let indexs: any[] = [];
+ let tip_content: any;
+ let preTip = 0;
+ let preItem="";
+ let matches = detail.content.match(/\$([a-z]+)\$/g);
+ matches?.map((item) => {
+ let i = detail.content.indexOf(item);
+ if (item == "$metadata$") {
+ tip_content = detail.metadata;
+ }
+ if (item == "$sql$") {
+ tip_content = detail.sql;
+ }
+ if (item == "$code$") {
+ tip_content = detail.code;
+ }
+ indexs.push({
+ index: i,
+ item: item,
+ preIndex: preTip,
+ preItem: preItem,
+ tip_content: tip_content,
+ len: matches.length
+ });
+ preTip = i;
+ preItem = item;
+ });
+ return indexs;
+ };
+
const handleSubmit = async ({ values, errors }) => {
if (errors) return;
@@ -578,87 +572,7 @@
isHistory.value = false;
initPage();
};
- // 璋冪敤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) {
- conversation_id.value = res.data.conversation_id;
- agentReset();
- }
- };
- // 璋冪敤reset鏂规硶
- const agentReset = async () => {
- const res = await agentResetApi({
- id: agentObj.id,
- });
- if (res.code == 0) {
- // Message.success('淇敼鎴愬姛');
- agentCompletion();
- }
- };
- // 璋冪敤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,
- }),
- });
- refreshScroll();
- 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;
-
- try {
- const val = JSON.parse(value?.data || '');
- const d = val?.data;
- if (typeof d !== 'boolean') {
- console.info('data:', d);
- if (d?.content) {
- streamStr.value = d.content;
- } else {
- streamStr.value = d?.code + d?.sql;
- }
- startDisplayStr();
- }
- } catch (e) {
- console.warn(e);
- }
- if (done) {
- console.info('done');
- displayedText.value = '';
- // queryAgentSessionDetail(activeSessionId.value);
- break;
- }
- }
- }
- chatDis.value = false;
- loading.value = false;
- inputMsg.value = '';
- uploaditemList.value = [];
- };
-
- //娓叉煋鏂囧瓧
- const chartText = (val, sql) => {
- console.log(val + sql, 77);
- return val + '\n' + sql;
- };
//鑾峰彇鍥剧墖鍦板潃
const getImg = (val) => {
@@ -716,19 +630,7 @@
getAentId(session.dialog_id);
from.name = session.name;
- const { code, data } = await getSessionDetailsApi(session.id);
-
- if (code == 200) {
- sessionDetailList.value = data.message;
- refreshScroll(); //鍒锋柊婊氬姩鏉′綅缃�
- // const res = await getAgentSessionDetailsApi(session.dialog_id);
- // if (res.code == 0) {
- // Object.assign(agentObj, res.data);
- // Object.assign(chatObj, res.data);
- // Object.assign(dsl, res.data.dsl);
- // refreshScroll(); //鍒锋柊婊氬姩鏉′綅缃�
- // }
- }
+ queryAgentSessionDetails(activeSessionId.value);
};
const { toClipboard } = useClipboard();
@@ -955,24 +857,34 @@
.pipeThrough(new EventSourceParserStream())
.getReader();
currIndex.value = 0;
+ let end_msg={};
while (true) {
const x = await reader?.read();
if (x) {
const { done, value } = x;
console.log(x, 999);
-
+ loading.value = false;
if (value && value?.event == 'message') {
try {
const val = JSON.parse(value?.data || '');
- const d = val?.data;
+ const d = val?.data;
if (typeof d !== 'boolean') {
console.info('data:', d);
-
if (d?.content) {
- streamStr.value = d.content;
- } else {
- streamStr.value = d?.code + d?.sql;
+ let msg = d.content;
+ //灏哾.output涓�$metadata$鏇挎崲涓篸.metadata
+ msg = msg.replace('$metadata$', d.metadata);
+ //d.content涓瓨鍦�$sql$
+ if (d.content.includes('$sql$')) {
+ msg = msg.replace('$sql$', d.sql);
+ }
+ //d.content涓瓨鍦�$code$
+ if (d.content.includes('$code$')) {
+ msg = msg.replace('$code$', d.code);
+ }
+ end_msg=d;
+ streamStr.value = msg;
}
EventBus.emit('queryAgent', uploaditemList.value);
startDisplayStr();
@@ -984,20 +896,20 @@
if (done) {
console.info('done');
- // displayedText.value = '';
- if (isStopChat.value) {
- isStopChat.value = false;
- setChatDataMeg(chatDataMeg);
- } else {
- // queryAgentSessionDetail(activeSessionId.value);
- // EventBus.emit('queryAppUsageList');
+ if (!chatObj?.message) {
+ chatObj.message = [];
}
+ chatObj.message.push(end_msg) ;
+ await updateSeniorAgentConversation({
+ converson_id: activeSessionId.value,
+ message: chatObj.message
+ });
+ setChatDataMeg(chatDataMeg);
break;
}
}
}
chatDis.value = false;
- loading.value = false;
};
const stopChat = async () => {
@@ -1061,13 +973,10 @@
if (currIndex.value < res.length) {
displayedText.value += res[currIndex.value];
-
currIndex.value++;
- setTimeout(startDisplayStr, 100);
+ setTimeout(startDisplayStr, 50);
refreshScroll();
} else {
- displayedText.value = '';
- queryAgentSessionDetails(activeSessionId.value);
clearTimeout(timer!);
timer = null;
}
diff --git a/src/views/sessionManager/index.vue b/src/views/sessionManager/index.vue
index 6dfc3d0..f86fb75 100644
--- a/src/views/sessionManager/index.vue
+++ b/src/views/sessionManager/index.vue
@@ -984,8 +984,8 @@
while (true) {
if (toStop) {
message_stop.push(message_id);
- displayedText.value = '';
setChatDataMeg(chatDataMeg);
+ //displayedText.value = '';
break;
}
const x = await reader?.read();
--
Gitblit v1.8.0