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

cms门户网站模板下载网站优化最为重要的内容是

cms门户网站模板下载,网站优化最为重要的内容是,企业信用信息查询公示系统河北,阿里云网站建设的实训报告1、智能体项目里与AI大模型对话的时候,需要从后端的流式接口里取数据并实现打字机渲染效果。这里涉及到 Markdown 格式的渲染,所以需要配合 marked.js 实现,安装 marked.js : npm install marked 引用: import { ma…

1、智能体项目里与AI大模型对话的时候,需要从后端的流式接口里取数据并实现打字机渲染效果。这里涉及到 Markdown 格式的渲染,所以需要配合 marked.js 实现,安装 marked.js :

npm install marked

引用:

import { marked } from 'marked';

2、调用后端流式接口,并处理获取到的数据

         // 建立连接createSseConnect(){let token = '1215421542125'let that = this;// 创建一个 AbortController 实例that.abortController = new AbortController();//接口请求参数let sendData = {message: that.currSendValue,modelId:'1',}// 请求配置const config = {method: "post",headers: {"Content-Type": "application/json",Accept: "text/event-stream",clientid: "112121212121212121212",Authorization: "Bearer " + token, // 根据实际情况获取 token},body: JSON.stringify(sendData),signal: that.abortController.signal, // 将 AbortController 的 signal 传递给 fetch};let url = base.url + '/zntdata/stream';// 发起请求let thinkingTime = true;fetch(url, config).then((response) => {const reader = response.body.getReader();const decoder = new TextDecoder("utf-8");let buffer = "";that.currSendValue = ''// 处理接收到的消息function processMessage(message) {message = message.split("data:")[0];const newChars = message.split("");//解析深度思考if (message.includes("<think>")) {thinkingTime = true;}if (message.includes("</think>")) {thinkingTime = false;}if (thinkingTime) {that.charQueue2.push(...newChars);} else {that.charQueue.push(...newChars);}if (message.includes("[DONE]")) {that.dialogId = message.substring(9)}// 启动打字机效果(如果尚未启动)if (!that.isTyping) {that.startTyping();}return false;}// 读取流式数据function readStream() {reader.read().then(({ done, value }) => {if (done) {console.log("Stream ended",value);return;}// 解码数据并添加到缓冲区buffer += decoder.decode(value);// 处理完整的事件 -- 非统一处理方法,需根据业务需求和接口数据格式处理while (buffer.includes("data:")) {if ( buffer.includes("[DONE]")) {that.dialogId = buffer.substring(buffer.indexOf('id:')+3).replaceAll('\n','')}const eventEndIndex = buffer.indexOf("data:");let eventData = buffer.slice(0,eventEndIndex);buffer = buffer.slice(eventEndIndex+5);eventData = eventData.substring(0,eventData.lastIndexOf('\n\n')) const message = eventData;if (eventData) {if (processMessage(message)) return;}}// 继续读取readStream();}).catch((err) => {console.error("Stream error:", err);const lastQuestionIndex = that.dialogueList.length-1that.dialogueList[lastQuestionIndex].content = that.dialogueList[lastQuestionIndex].content + '出错了,暂时无法回答您的问题,请稍后再试。'});}// 开始读取流readStream();})},// 启动打字机效果startTyping() {const that = this;that.isTyping = true;const lastQuestionIndex = that.dialogueList.length-1// 初始间隔时间let intervalTime = 30; // 初始速度为 30msconst minIntervalTime = 5; // 最小间隔时间,防止速度过快const acceleration = 0.9; // 每次加速的比例(0.9 表示每次间隔时间减少 10%)// 清除已有定时器if (that.typingInterval) clearInterval(that.typingInterval);// 定义打字机效果函数function typeCharacter() {if (that.charQueue.length === 0 && that.charQueue2.length === 0) {clearInterval(that.typingInterval);that.isTyping = false;return;}if (that.charQueue2.length > 0) {if (that.dialogueList[lastQuestionIndex].content == '正在思考中...') {that.dialogueList[lastQuestionIndex].content = ''}// 取出一个字符并更新界面let char = that.charQueue2.shift();if (char) {that.thinkText += char;}that.dialogueList[lastQuestionIndex].thinkText = marked.parse(that.thinkText) //渲染Markdown格式}if (that.charQueue.length > 0) {let char = that.charQueue.shift();if (char) {that.answerWithFlow += char;}that.dialogueList[lastQuestionIndex].content = marked.parse(that.answerWithFlow) //渲染Markdown格式}// 滚动到底部that.scrollToSending();// 加速逻辑:减少间隔时间intervalTime = Math.max(minIntervalTime, intervalTime * acceleration);clearInterval(that.typingInterval); // 清除旧的定时器that.typingInterval = setInterval(typeCharacter, intervalTime); // 设置新的定时器}// 启动打字机效果that.typingInterval = setInterval(typeCharacter, intervalTime);},//保持最后一段对话实时出现在视口最下面scrollToSending() {this.$nextTick(() => {if (this.$refs.dialogueBox) {this.$refs.dialogueBox.scrollTop =this.$refs.dialogueBox.scrollHeight +this.$refs.dialogueBox.offsetHeight;}});},

3、渲染数据。要保持Markdown的格式输出,不能直接使用花括号{{}}渲染数据,需要结合v-html使用。

以上就能实现逐字渲染的一个AI大模型对话需求

http://www.cadmedia.cn/news/1339.html

相关文章:

  • 就业服务工作站建设规范重庆seo黄智
  • 游戏网站开发文档seo服务 文库
  • 凡科网站怎么做淘宝客郑州网站推广培训
  • 网站架构和网络重庆seo论
  • 影视自助建站软文广告例子
  • 最优惠的赣州网站建设营销型网站建设的5大技巧
  • html制作企业宣传网站国际足联世界排名
  • 做鞋子皮革有什么网站搜索引擎营销是指
  • 武汉衍艺 网站建设淘宝的前100个关键词排名
  • 深圳燃气公司服务电话搜索引擎优化要考虑哪些方面?
  • 南昌广告制作seo关键词推广多少钱
  • 鹤壁网站推广公司企业应该如何进行网站推广
  • 海尔网站建设的优势百度seo快速
  • 怎么和客户推广说网站建设语阿里云云服务平台
  • 免费网络加速器app下载免费网站seo优化
  • 高端建筑物图片电脑系统优化软件
  • wordpress wp_cumulus_insert(西安自动seo
  • 安徽元鼎建设工程有限责任公司网站百合seo培训
  • 网站建设 服务承诺上海网站推广服务
  • 邵阳市建设投资经营集团网站简述提升关键词排名的方法
  • 网站建设哪家更专业陕西网页设计
  • 网络营销模式有哪几种网站推广优化排名教程
  • 网站被攻击广州专门做网站
  • 专门做老年旅游的网站制作网页
  • 深圳微信网站建设公司哪家好营销策划与运营公司
  • 福田附近公司做网站建设多少钱百度网站app下载
  • 深圳官网网站建设互联网营销师怎么考
  • 全网推广网站seo实战视频
  • 2019还有人做网站淘宝客吗每日重大军事新闻
  • 网站建设的数据导入导出个人网站