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

实现类似AI流式输出效果

前段时间deepseek流行,然后都要求接入实现AI问答系统。
因为是简单的接入,直接用纯 HTML 实现

1. js 实现流式输出

前期后台接口没有实现流式输出,都是所有内容一起返回给前端。然后前端通过js实现流式输出效果

① AI 回答有的是有加粗效果,这个其实接口返回的有markdown格式的文本。只要用marked插件就可以实现效果

<!-- 虽然是纯html,但我还是用npm下载了 marked 插件。好像是之前另外下载的文件有问题。npm的可以用 -->
<script src="./node_modules/marked/marked.min.js"></script><script>
// 用 import 和 require 会报错
const { marked } = window.marked;
</script>

② 流式输出

let markStr;	// AI的回答(接口返回)
// 逐字输出函数  currentIndex--当前输出字的位置,outputContainer--输出文字放的div
function streamMarkdown(currentIndex, outputContainer) {if(!markStr || markStr==='') return;if (currentIndex >= markStr.length) return; // 如果所有字符都输出完毕,则结束const chatBox = document.getElementById('chatBox');	// 聊天内容的 divchatBox.scrollTop = chatBox.scrollHeight;	// 字数多的话可能会出现滚动条,这里可以一直自动滚动到底部(其实更好的是判断前后 scrollHeight 变化再调整比较好,而不是每输出一个字就这样)// ------------ 流式输出效果主要代码 ---------------------------------// 获取当前字符const currentChar = markStr[currentIndex];// 将当前字符添加到临时内容中const tempContent = markStr.substring(0, currentIndex + 1);// 将临时内容解析为HTMLconst htmlContent = marked.parse(tempContent);// 更新输出容器的内容outputContainer.innerHTML = htmlContent;// 增加索引,准备输出下一个字符currentIndex++;// 设置延迟,模拟逐字输出setTimeout(()=>{streamMarkdown(currentIndex, outputContainer);}, 50); // 每个字符输出间隔50ms
}
http://www.xdnf.cn/news/348319.html

相关文章:

  • 美化cmd窗格----添加背景图
  • axes.axis()--控制坐标轴显示
  • 深入理解指针(1)
  • 3.5/Q1,GBD数据库最新文章解读
  • 深入解析:如何正确处理业务空值与技术异常?从避免滥用`None`和`WebDriverException`谈起
  • CTF-DAY10
  • 设计部绩效考核关键指标与综合评估方法
  • 【金仓数据库征文】金仓数据库 KES:MySQL 迁移实用指南
  • Vue3快速入门/Vue3基础速通
  • GIT设置账户密码特殊字符处理
  • 第三天 车联网云架构
  • 18.Java 序列化与反序列化
  • Puppeteer vs Playwright:全面对比与最佳应用场景指南
  • GIS开发技术介绍
  • Filecoin中lotus节点的搭建部署
  • 【Axure高保真原型】中继器表格批量上传数据
  • 如何解决 Linux 系统文件描述符耗尽的问题
  • LaTeX印刷体 字符与数学符号的总结
  • 【MySQL】进阶知识详解
  • 全球异硬脂酸及其衍生物市场:绿色化学浪潮下的技术迭代与区域增长新逻辑
  • Codeforces Round 1012 (Div. 2)
  • MybatisPlus 发布 3.5.12 版本啦
  • 过曝区域信息补全
  • Python从入门到高手8.3节-元组的常用操作方法
  • 【战略合作】开封大学_阀门产业学院+智橙PLM
  • maven 依赖冲突异常分析
  • 17.thinkphp的分页功能
  • 开发者如何应对浏览器中的身份关联与反追踪问题?
  • 主成分分析(PCA)是什么?简易理解版
  • 使用Compose编排工具搭建Ghost博客系统