当前位置: 首页 > ops >正文

典籍知识问答模块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了

http://www.xdnf.cn/news/6872.html

相关文章:

  • 机器学习——逻辑回归
  • Mipsel固件Fuzzing小记
  • 计算机图形学编程(使用OpenGL和C++)(第2版)学习笔记 12.曲面细分
  • AUTOSAR图解==>AUTOSAR_SWS_HWTestManager
  • STM32H7时钟树
  • 开源语音-文本基础模型和全双工语音对话框架 Moshi 介绍
  • OTA与boot loader
  • 北大:基于因果的LLM形式化推理
  • 进阶-数据结构部分:3、常用查找算法
  • NVC++ 介绍与使用指南
  • 很啰嗦,再次总结 DOM
  • CAPL Class: TcpSocket (此类用于实现 TCP 网络通信 )
  • 使用教程:8x16模拟开关阵列可级联XY脚双向导通自动化接线
  • Vue-键盘事件
  • Elasticsearch Fetch阶段面试题
  • 1.2 C++第一个程序
  • WORD个人简历单页326款模版分享下载
  • win32相关(字符编码)
  • 2025年PMP 学习十八 第11章 项目风险管理 (11.5~11.7)
  • 【读代码】端到端多模态语言模型Ultravox深度解析
  • 【2025年软考中级】第一章1.6 安全性、可靠性、性能评价
  • LabVIEW光谱信号仿真与数据处理
  • 中间网络工程师知识点5
  • 【单机版OCR】清华TH-OCR v9.0免费版
  • 模型量化AWQ和GPTQ哪种效果好?
  • 【vscode】解决vscode无法安装远程服务器插件问题,显示正在安装
  • Linux内存管理相关
  • 【C/C++】C++中constexpr与const的深度对比
  • OGG 更新表频繁导致进程中断,见鬼了?非也!
  • Halcon算子应用和技巧14