西部数码网站建设助手/做电商必备的几个软件

西部数码网站建设助手,做电商必备的几个软件,重庆市工信部网站,网站策划方案如何做你的前端 EventSource 代码遇到了 undefined 连续输出 的问题,通常是因为: AI 返回的内容被拆成了单个字符,导致前端 JSON.parse(event.data).content 获取到的是单个字符,而 undefined 可能是因为某些数据块没有 content 字段。…

在这里插入图片描述
你的前端 EventSource 代码遇到了 undefined 连续输出 的问题,通常是因为:

  1. AI 返回的内容被拆成了单个字符,导致前端 JSON.parse(event.data).content 获取到的是单个字符,而 undefined 可能是因为某些数据块没有 content 字段。
  2. 前端拼接字符串时,错误地处理了 undefined,导致 undefined 被拼接到页面上。

✅ 解决方案

1️⃣ 修正后端(确保 AI 输出的是 “块” 而不是单个字符)

你的 AI 可能逐字符返回内容,需要在后端 合并成合理的块,然后以 SSE 格式输出:

import jsondef generate_category_description(messages, client):"""调用 DeepSeek API 并流式返回符合 SSE 格式的 JSON"""response = client.chat.completions.create(model="deepseek-chat",messages=messages,response_format={"type": "json_object"},stream=True  # 设置为 True,以便接收流式数据)buffer = ""  # 临时存储数据,防止单字符输出for chunk in response:if not chunk.choices:continue  # 跳过空数据content = chunk.choices[0].delta.content or ""  # 取 AI 返回的内容buffer += content  # 逐步累积内容if len(buffer) >= 10:  # 只有在积累到 10 个字符后才发送print(buffer, end='', flush=True)  # 实时流式输出到控制台yield f"data: {json.dumps({'content': buffer})}\n\n"buffer = ""  # 发送后清空 buffer# 发送剩余的内容(如果有的话)if buffer:yield f"data: {json.dumps({'content': buffer})}\n\n"

2️⃣ 修正前端(处理 undefined 并正确拼接流式数据)

你的 EventSource 代码没有正确处理 undefined,需要修正:

async function generateCategoryDesc() {const eventSource = new EventSource("/generate_category_desc_stream");let contentBuffer = ""; // 存储完整的内容eventSource.onmessage = (event) => {try {console.log("Raw event data:", event.data);const data = JSON.parse(event.data);if (data.content) {  // 确保 content 存在contentBuffer += data.content; // 拼接完整内容document.getElementById("editArea").innerHTML = contentBuffer; // 更新页面}} catch (err) {console.error("JSON parse error:", err, "Raw event data:", event.data);}};eventSource.onerror = (err) => {console.error("EventSource failed:", err);eventSource.close();};eventSource.onopen = () => {console.log("SSE connection opened.");};
}

🔥 关键修正

后端:

  • 确保 buffer 缓冲字符,防止逐字符发送
  • 积累到足够字符后才 yield,防止前端 undefined 乱拼接
  • 如果 AI 只返回一个字符,后端会等到 10 个字符后才发送

前端:

  • 检查 data.content 是否为 undefined,避免拼接 undefined
  • 修正 EventSource 解析逻辑,确保流式数据完整
  • 修正 contentBuffer 逻辑,确保拼接的数据正确

🚀 结果

  • 流式 AI 输出不会拆成单个字符
  • 前端不会出现 undefined
  • 文本会按块(10 字符)更新到 editArea
  • AI 生成的内容仍然是流式的,不影响流式体验

现在试试看,你的 editArea 应该会正常流式更新,而不会出现 undefinedundefinedundefined 的问题了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/72498.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前缀和 之 哈希表 之 和 的奇偶与倍数

文章目录 930.和相同的二元子数组523.连续的子数组和 求解连续子数组的和的问题,常常会使用到这个前缀和的思路,当然当数组存在单调性的时候,可以考虑使用不定长滑动窗口,在这里解释一下,何为数组的和存在这个单调性&a…

Docker Compose 和 Kubernetes(K8s)对比

Docker Compose 和 Kubernetes(K8s)在某些方面有相似的功能,但它们的 核心用途和适用场景不同。以下是它们的主要区别和联系: 1. Docker Compose 和 Kubernetes 的区别 对比项Docker ComposeKubernetes(K8s&#xff0…

晶艺代理,100V3.5A高耐压LA1823完全替换MP9487--启烨科技有限公司

晶艺品牌LA1823是异步降压转换器,COT控制,PFM工作模式, 150KHz/ 250KHz/ 450KHz ,开关频率可调节,输入电压4.5~100V,2A平均电流,峰值电流3.5A,采用ESOP8封装。 晶艺LA1823的特性: 4.…

PLC控制柜在技术创新驱动中功能演进 尤劲恩科技

在智能制造体系中,PLC控制柜不仅承担着传统设备控制的基础功能,更通过工业以太网、PROFIBUS等现场总线技术,构建起分布式控制系统(DCS)。这种拓扑结构使生产线具备实时数据采集、远程监控和智能决策能力,显…

【JavaEE】Spring Boot 日志

目录 一、日志概述二、使用日志2.1 打印日志2.2 日志框架2.2.1 门面 / 外观 模式 2.3 日志级别2.3.1 六大分类2.3.2 使用 2.4 日志级别配置2.5 日志的持久化2.6 日志文件分割2.7 日志文件格式2.8 Slf4j 简单打印日志 一、日志概述 ⽇志主要是为了发现问题, 分析问题, 定位问题…

uniapp APP权限弹框

效果图 第一步 新建一个页面,设置透明 {"path": "pages/permissionDisc/permissionDisc","style": {"navigationBarTitleText": "","navigationStyle": "custom","app-plus": {&…

(性能测试)性能测试工具 2.jmeter的环境搭建 3jmeter元件和4使用实例 5jmeter元件和参数化

目录 性能测试工具 性能测试工具 jemeter环境搭建 jmeter的常用目录介绍 jmeter修改语言和主题--jmeter界面的汉化 jmeter元件 jmeter元件和组件的介绍 jmeter的作用域原则 jmeter的执行顺序 案例:执行顺序 jmeter使用案例 jmeter线程组的介绍 jmeter…

Qt程序基于共享内存读写CodeSys的变量

文章目录 1.背景2.结构体从CodeSys导出后导入到C2.1.将结构体从CodeSys中导出2.2.将结构体从m4文件提取翻译成c格式 3.添加RTTR注册信息4.读取PLC变量值5.更改PLC变量值6.Qt读写CodeSys的共享内存 1.背景 在文章【基于RTTR在C中实现结构体数据的多层级动态读写】中&#xff0c…

计算机视觉——深入理解卷积神经网络与使用卷积神经网络创建图像分类算法

引言 卷积神经网络(Convolutional Neural Networks,简称 CNNs)是一种深度学习架构,专门用于处理具有网格结构的数据,如图像、视频等。它们在计算机视觉领域取得了巨大成功,成为图像分类、目标检测、图像分…

服务性能防腐体系:基于自动化压测的熔断机制

01# 背景 在系统架构的演进过程中,项目初始阶段都会通过压力测试构建安全护城河,此时的服务性能与资源水位保持着黄金比例关系。然而在业务高速发展时期,每个冲刺周期都被切割成以业务需求为单位的开发单元,压力测试逐渐从必选项…

SpringBoot 和vue前后端配合开发网页拼图10关游戏源码技术分享

今天分享一个 前后端结合 的网页游戏 开发项目源码技术。 这也是我第一次写游戏类的程序,虽然不是特别复杂的游戏,但是是第一次写,肯定要记录一下了,哈哈。 游戏的内容 就是 我们显示中玩的那个 拼图碎片的 游戏,类似下…

01-Canvas-使用fabric初始

fabric官网&#xff1a; https://fabric5.fabricjs.com/demos/ 创建画布并绘制 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-sca…

【机器学习-基础知识】统计和贝叶斯推断

1. 概率论基本概念回顾 1. 概率分布 定义: 概率分布(Probability Distribution)指的是随机变量所有可能取值及其对应概率的集合。它描述了一个随机变量可能取的所有值以及每个值被取到的概率。 对于离散型随机变量,使用概率质量函数来描述。对于连续型随机变量,使用概率…

《TCP/IP网络编程》学习笔记 | Chapter 18:多线程服务器端的实现

《TCP/IP网络编程》学习笔记 | Chapter 18&#xff1a;多线程服务器端的实现 《TCP/IP网络编程》学习笔记 | Chapter 18&#xff1a;多线程服务器端的实现线程的概念引入线程的背景线程与进程的区别 线程创建与运行pthread_createpthread_join可在临界区内调用的函数工作&#…

创新实践分享:基于边缘智能+扣子的智能取物机器人解决方案

在 2024 年全国大学生物联网设计竞赛中&#xff0c;火山引擎作为支持企业&#xff0c;不仅参与了赛道的命题设计&#xff0c;还为参赛队伍提供了相关的硬件和软件支持。以边缘智能和扣子的联合应用为核心&#xff0c;参赛者们在这场竞赛中展现出了卓越的创新性和实用性&#xf…

QT:动态属性和对象树

动态对象 1.添加Q_PROPERTY对象 #ifndef MYPROPERTYCLASS_H #define MYPROPERTYCLASS_H#include <QObject>class MyPropertyClass : public QObject {Q_OBJECTQ_PROPERTY(QString mask READ mask WRITE setMask NOTIFY maskChanged) public:explicit MyPropertyClass(Q…

在 Windows 上使用 choco 安装 mkcert 并配置 Vue 运行HTTPS

解决在Windows上使用Vue本地运行HTTPS的问题,vue-cli或vite都可以使用 步骤 1&#xff1a;确认 Chocolatey 是否已安装 1. 检查 choco 命令是否可用 打开 PowerShell&#xff08;管理员权限&#xff09;&#xff0c;输入&#xff1a; choco -v如果显示版本号&#xff08;如…

2、操作系统之软件基础

一、硬件支持系统 &#xff0c;系统管理硬件 操作系统核心功能可以分为&#xff1a; 守护者&#xff1a;对硬件和软件资源的管理协调者&#xff1a;通过机制&#xff0c;将各种各样的硬件资源适配给软件使用。 所以为了更好的管理硬件&#xff0c;操作系统引进了软件。其中3大…

idea更新git代码报错No Git Roots

idea更新git代码报错&#xff1a; No Git Roots None of configured Git roots are under Git. The configured directory must have ".git directory in it.但是本地项目里是存在.git文件的&#xff0c;就是突然间不能更新代码了 然后尝试重新拉新项目代码提示: Git i…

[Hello-CTF]RCE-Labs超详细WP-Level13Level14(PHP下的0/1构造RCE命令简单的字数限制RCE)

Level 13 源码分析 这题又回到了 PHP重点关注preg_match("/[A-Za-z0-9\"%*,-.\/:;>?[\]^|]/", $cmd)禁用了所有数字, 并且回到了 PHP, 没办法用上一关的方法进行绕过但是比起上一关, 给我们少绕过了 &, ~, _似乎有其他方法 解题分析 利用 $(()) 和 …