|
@@ -135,6 +135,7 @@
|
|
|
import DOMPurify from 'dompurify';
|
|
|
import { ref, getCurrentInstance } from 'vue'
|
|
|
import useClipboard from 'vue-clipboard3';
|
|
|
+ import { sendChatMessageStream } from '@/api/agent'
|
|
|
const { toClipboard } = useClipboard();
|
|
|
const { proxy } = getCurrentInstance();
|
|
|
|
|
@@ -192,49 +193,15 @@
|
|
|
|
|
|
const startStream = async (query) => {
|
|
|
try {
|
|
|
- const response = await fetch(`${window.SITE_CONFIG['apiURL']}/core/chat/messages`, {//streamingMessage messages
|
|
|
- method: 'POST',
|
|
|
- headers: {
|
|
|
- 'token':Cookies.get('token') || '',
|
|
|
- 'Content-Type': 'application/json',
|
|
|
- // 'Accept': 'text/event-stream',
|
|
|
- },
|
|
|
- body: JSON.stringify({
|
|
|
- query
|
|
|
- })
|
|
|
- });
|
|
|
-
|
|
|
- if (!response.ok || !response.body) {
|
|
|
- throw new Error(`请求失败: ${response.status}`);
|
|
|
- }
|
|
|
-
|
|
|
- const reader = response.body.getReader();
|
|
|
- const decoder = new TextDecoder('utf-8');
|
|
|
- let buffer = ''; // 累积缓冲器
|
|
|
-
|
|
|
- while (true) {
|
|
|
- const { value, done } = await reader.read();
|
|
|
- if (done) break;
|
|
|
-
|
|
|
- buffer += decoder.decode(value, { stream: true });
|
|
|
- // console.log(buffer, 'buffer');
|
|
|
- const event = buffer;
|
|
|
- if (event.startsWith('data:')) {
|
|
|
- try {
|
|
|
- const jsonStr = event.replaceAll('data:', '');
|
|
|
- console.log(jsonStr, 'jsonStr');
|
|
|
- dialogList.value = [...dialogList.value].map((item, idx) => {
|
|
|
- if (idx === dialogList.value.length - 1) {
|
|
|
- return { ...item, answer: item.answer + (jsonStr || '') };
|
|
|
- }
|
|
|
-
|
|
|
- return item;
|
|
|
- });
|
|
|
- } catch (e) {
|
|
|
- console.error('SSE解析失败', e, '原始数据:', event);
|
|
|
- }
|
|
|
+ sendChatMessageStream({query}).then(res => {
|
|
|
+ if(res.code!==0) return proxy.$message.error(res.msg);
|
|
|
+ dialogList.value = [...dialogList.value].map((item, idx) => {
|
|
|
+ if (idx === dialogList.value.length - 1) {
|
|
|
+ return { ...item, answer: res.data };
|
|
|
}
|
|
|
- }
|
|
|
+ return item;
|
|
|
+ });
|
|
|
+ })
|
|
|
} catch (err) {
|
|
|
console.log(err,'err');
|
|
|
}
|