当前位置: 首页 > 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了

相关文章:

  • 信息与信息化
  • 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
  • “复旦源”一源六馆焕新启幕,设立文化发展基金首期1亿元
  • 雅安市纪委监委回应黄杨钿甜耳环事件:相关政府部门正在处理
  • 林诗栋/蒯曼混双取胜,国乒赢得多哈世乒赛开门红
  • 竞彩湃|欧联杯决赛前,曼联、热刺继续划水?
  • 一种声音·阿甘本|即将到来的中世纪;“新”与“旧”……
  • 新片|《碟中谍8:最终清算》定档5月30日