典籍知识问答模块AI问答bug修改

一、修改流式数据处理问题

1.问题描述:由于传来的数据形式如下:

event:START

data:350

data:<

data:t

data:h

data:i

data:n

data:k

data:>

data:

data:

data:

data:

data:嗯

data:,

导致需要修改获取正常的当前信息id并更新的逻辑

2.修改代码如下:

while (true) {

const { done, value } = await reader.read();

if (done) break;

buffer += decoder.decode(value, { stream: true });

const lines = buffer.split('\n');

buffer = lines.pop() || '';

for (const line of lines) {

if (line.startsWith('event:')) {

currentEvent = line.replace('event:', '').trim();

continue;

}

if (line.startsWith('data:')) {

const data = line.replace('data:', '').trim();

// 处理 START 事件

if (currentEvent === 'START') {

serverAIId = data;

currentMessages.value.push({

id: serverAIId,

role: 'assistant',

content: '',

createdAt: new Date().toISOString(),

streaming: true

});

currentEvent = null; // 重置事件状态

//console.log('START event received, serverAIId:', serverAIId);

continue;

}

// 处理普通内容(MESSAGE 或未指定 event)

if (currentEvent === null) {

aiContent += data;

currentMessages.value = currentMessages.value.map(msg =>

msg.id === serverAIId ? { ...msg, content: aiContent } : msg

);

}

// 处理 COMPLETE 事件(结束)

if (currentEvent === 'COMPLETE') {

currentMessages.value = currentMessages.value.map(msg =>

msg.id === serverAIId ? { ...msg, streaming: false } : msg

);

}

}

}

}

currentMessages.value = currentMessages.value.map(msg =>

msg.id === serverAIId ? { ...msg, streaming: false } : msg

);

await fetchSessions(classic.value.id);

二、重新编辑问题时出现的问题

1.问题描述:由于发送信息后的userId也没能及时更新到前端,导致在使用修改问题获取msgid时无法获取原始id的信息.

2.解决方法:后端返回时加上问题的id信息,具体返回如下:

event:USER_MSG

data:347

event:START

data:348

data:<

data:t

因此就可以正常更新问题id了

相关推荐
用户904438163246021 小时前
90%前端都踩过的JS内存黑洞:从《你不知道的JavaScript》解锁底层逻辑与避坑指南
前端·javascript·面试
CodeCraft Studio21 小时前
文档开发组件Aspose 25.12全新发布:多模块更新,继续强化文档、图像与演示处理能力
前端·.net·ppt·aspose·文档转换·word文档开发·文档开发api
追逐时光者1 天前
一款开源、现代化的 WinForm UI 控件库
后端·.net
PPPPickup1 天前
easychat项目复盘---获取联系人列表,联系人详细,删除拉黑联系人
java·前端·javascript
老前端的功夫1 天前
前端高可靠架构:医疗级Web应用的实时通信设计与实践
前端·javascript·vue.js·ubuntu·架构·前端框架
前端大卫1 天前
【重磅福利】学生认证可免费领取 Gemini 3 Pro 一年
前端·人工智能
孜燃1 天前
Flutter APP跳转Flutter APP 携带参数
前端·flutter
花月C1 天前
个性化推荐:基于用户的协同过滤算法
开发语言·后端·算法·近邻算法
脾气有点小暴1 天前
前端页面跳转的核心区别与实战指南
开发语言·前端·javascript
lxh01131 天前
最长递增子序列
前端·数据结构·算法