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

典籍知识问答模块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.dtcms.com/a/197287.html

相关文章:

  • 信息与信息化
  • LeetCode 第 45 题“跳跃游戏 II”
  • BBR 的 buffer 动力学观感
  • 【ant design】ant-design-vue 4.0实现主题色切换
  • C语言中字符串函数的详细讲解
  • 【软考 程序流程图的测试方法】McCabe度量法计算环路复杂度
  • 无线信道的噪声与干扰
  • 恢复因 oh-my-zsh 安装导致丢失的 zsh 环境变量
  • Python自学笔记3 常见运算符
  • C语言:在 Win 10 上,gcc 如何编译 gtk 应用程序
  • 【VSCode】快捷键合集(持续更新~)
  • python3GUI--多功能WiFi网络工具箱 By:PyQt5(详细分享)
  • 如何根据竞价数据判断竞价强度,是否抢筹等
  • LLM-Based Agent综述及其框架学习(五)
  • FreeCAD源码分析: Transaction实现原理
  • 安全性(一):加密算法总结
  • 技术测评:小型单文件加密工具的功能解析
  • 第五项修炼:打造学习型组织
  • 深度学习中ONNX格式的模型文件
  • 深入探讨 Java Switch Expressions
  • day33-网络编程
  • 操作系统学习笔记第4章 (竟成)
  • 小型气象站应用之鱼塘养殖方案
  • 中国30米年度土地覆盖数据集及其动态变化(1985-2022年)
  • 【AI论文】EnerVerse-AC:用行动条件来构想具身环境
  • 【滑动窗口】LeetCode 1658题解 | 将 x 减到 0 的最小操作数
  • 如何利用技术手段提升小学数学练习效率
  • 【001】Cython功能及入门
  • 2025.05.17淘天机考笔试真题第三题
  • Scratch游戏 | 3D极速坡道