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

Vite7+DeepSeek网页版Ai助手|vue3+arco网页web流式生成ai聊天问答系统

2026款vue3.5+vite7.2+deepseek-v3.2+arco打造网页web版流式ai会话模板。

vite7-webseek:基于vite7.2+vue3.5+arco-design+markdown调用deepseek-v3.2 API会话大模型。提供暗黑+浅色主题界面、新增深度思考、代码高亮/复制、Katex数学公式、Mermaid图表渲染

未标题-kk

p4

使用技术

  • 编辑器:vscode
  • 前端技术框架:vite^7.2.4+vue^3.5.24+vue-router^4.6.4
  • ai大模型框架:DeepSeek-R1 + OpenAI
  • 组件库:arco-design^2.57.0 (字节桌面端组件库)
  • 状态管理:pinia^3.0.4
  • 本地存储:pinia-plugin-persistedstate^4.7.1
  • 高亮插件:highlight.js^11.11.1
  • markdown插件:markdown-it
  • katex公式:@mdit/plugin-katex^0.24.1

p3

p4-1

功能性

  1. 基于Vite7.2接入DeepSeek流式丝滑打字输出效果
  2. 提供暗黑+浅色两种主题、侧边栏收缩
  3. 支持丰富Markdown样式,代码高亮/复制/收缩功能
  4. 新增思考模式DeepSeek-R1
  5. 支持Katex数学公式
  6. 支持Mermaid各种甘特图/流程图/类图等图表
  7. 使用arco-design组件库,风格统一,美观大气

p4-4

项目结构目录

vue3-webseek使用最新版vite7.2接入deepseek-v3.2搭建流式ai对话,采用 vue3 setup 语法糖编码。

360截图20260104095028897

vite7-webseek网页版ai对话系统已经更新到我的原创作品集,欢迎下载使用。

Vue3+DeepSeek+ArcoDesign网页版AI流式对话模板

项目运行配置

自己申请一个deepseek apikey,替换掉项目根目录下.env文件里的key,即可愉快体验ai流式对话功能。

image

# title
VITE_APP_TITLE = 'Vue3-Web-DeepSeek'# port
VITE_PORT = 3001# 运行时自动打开浏览器
VITE_OPEN = true# 开启https
VITE_HTTPS = false# 是否删除生产环境 console
VITE_DROP_CONSOLE = true# DeepSeek API配置
VITE_DEEPSEEK_API_KEY = 替换为你的 API Key
VITE_DEEPSEEK_BASE_URL = https://api.deepseek.com

未标题-bb

003360截图20260103091843214

通用布局模板

image

如下图:项目整体结构分为侧边栏+顶部导航栏+Ai对话区三大模块。

image

<script setup>import Sidebar from '@/layouts/components/sidebar/index.vue'
</script><template><div class="vu__container"><div class="vu__layout flexbox flex-col"><div class="vu__layout-body flex1 flexbox"><!-- 侧边区域 --><Sidebar /><!-- 主面板区域 --><div class="vu__layout-main flex1"><router-view v-slot="{ Component, route }"><keep-alive><component :is="Component" :key="route.path" /></keep-alive></router-view></div></div></div></div>
</template>

vue3接入deepseek深度思考

image

image

// 调用deepseek接口
const completion = await openai.chat.completions.create({// 单一会话/* messages: [{role: 'user', content: editorValue}], */// 多轮会话messages: props.multiConversation ? historySession.value : [{role: 'user', content: editorValue}],// deepseek-chat对话模型 deepseek-reasoner推理模型model: sessionstate.thinkingEnabled ? 'deepseek-reasoner' : 'deepseek-chat',stream: true, // 流式输出max_tokens: 8192, // 一次请求中模型生成 completion 的最大 token 数(默认使用 4096)temperature: 0.4, // 严谨采样
})

vue3+deepseek自定义Latex数学公式/Mermaid图表

import { katex } from "@mdit/plugin-katex"; // 支持数学公式
import 'katex/dist/katex.min.css'
// 渲染mermaid图表
import { markdownItMermaidPlugin } from '@/components/markdown/plugins/mermaidPlugin'

渲染markdown调用方式

<Markdown:source="item.content":html="true":linkify="true":typographer="true":plugins="[[katex, {delimiters: 'all'}],[markdownItMermaidPlugin, { ... }]]"@copy="onCopy"
/>

005360截图20260103120319468

006360截图20260103120533404

008360截图20260103125240325

封装mermaid渲染插件

export const markdownItMermaidPlugin = (md, options) => {const defaultFence = md.renderer.rules.fencemd.renderer.rules.fence = (...args) => {const [tokens, idx] = argsconst token = tokens[idx]const lang = token.info.replace(/\[.*\]/, '').trim() || ''if(lang === 'mermaid') {const code = token.content.trim()const hash = generateHash(code)const uuid = `${hash}-${Date.now()}-${Math.random().toString(36).substring(2, 9)}`// 如果有缓存,加载缓存图表if(renderCache.has(hash)) {// console.log('加载缓存mermaid图表')return `${ defaultFence(...args) }<div class="mermaid-container">${renderCache.get(hash)}</div>
        `}nextTickRender(uuid)return `${ defaultFence(...args) }<div class="mermaid-container" id="${uuid}" data-mermaid-hash="${hash}" data-mermaid-code="${encodeURIComponent(code)}"><div class="mermaid-loading">📊Mermaid 图表加载中...</div></div>
      `}return defaultFence(...args)}function nextTickRender(containerId) {// 如果容器存在,直接渲染if(document.getElementById(containerId)) {renderMermaidDiagram(containerId)return}// 使用MutationObserver监听DOM更新const observer = new MutationObserver((mutations, ob) => {const container = document.getElementById(containerId)if(container) {ob.disconnect()renderMermaidDiagram(containerId)}})observer.observe(document.body, {childList: true,subtree: true})}async function renderMermaidDiagram(containerId) {const container = document.getElementById(containerId)if (!container) {console.warn(`Mermaid container #${containerId} not found`)return}const code = decodeURIComponent(container.dataset.mermaidCode)const hash = container.dataset.mermaidHashif (!code) {return}// 检查 mermaid 是否可用if (typeof window.mermaid === 'undefined') {showError(container, 'Mermaid 库未加载!')return}try {// 配置 mermaid(如果还未配置)if (!window.mermaid.initialized) {window.mermaid.initialize({startOnLoad: false,theme: 'default',securityLevel: 'loose',})window.mermaid.initialized = true}let svg// 检查缓存if(renderCache.has(hash)) {svg = renderCache.get(hash)}else {const { isValid } = await verifyMermaid(code)if(!isValid) {showError(container, `<pre>渲染语法错误:\n${ code }\n</pre>`)return}// 使用唯一ID渲染(避免图表冲突)const {svg: renderedSvg} = await window.mermaid.render(`mermaid-${containerId}`, code)svg = renderedSvgrenderCache.set(hash, svg)}container.innerHTML = svgcontainer.removeAttribute('data-mermaid-hash')container.removeAttribute('data-mermaid-code')// 触发回调if(options?.reachBottom) {options?.onRender?.()}} catch (error) {console.error('Mermaid 渲染失败:', error)showError(container, `<pre>渲染图表时出错: \n ${error.message}\n</pre>`)
    }}
}

001360截图20260103080425549

002360截图20260103081001998

002360截图20260103081001999

002360截图20260103084825451

002360截图20260103085708292

003360截图20260103091332143

003360截图20260103091843214

004360截图20260103115744725

005360截图20260103120319468

007360截图20260103120754686

008360截图20260103124947743

009360截图20260103125438125

010360截图20260103125925726

012360截图20260103130203476

vue3对接deepseek api流式输出

// 调用deepseek接口
const completion = await openai.chat.completions.create({// 单一会话// messages: [{role: 'user', content: editorValue}],// 多轮会话messages: props.multiConversation ? historySession.value : [{role: 'user', content: editorValue}],// deepseek-chat对话模型 deepseek-reasoner推理模型model: sessionstate.thinkingEnabled ? 'deepseek-reasoner' : 'deepseek-chat',stream: true, // 流式输出max_tokens: 8192,temperature: 0.4
})

处理流式输出

for await (const chunk of completion) {// 检查是否已终止if(sessionstate.aborted) breakconst content = chunk.choices[0]?.delta?.content || ''// 获取推理内容const reasoningContent = chunk.choices[0]?.delta?.reasoning_content || ''if(content || reasoningContent) {answerText += contentreasoningText += reasoningContent// 限制更新频率:每100ms最多更新一次const now = Date.now()if(now - lastUpdate > 100) {lastUpdate = nowrequestAnimationFrame(() => {// ...
      })}}if(chunk.choices[0]?.finish_reason === 'stop') {// ...
  }
}

未标题-aa

以上就是vite7.2接入deepseek搭建网页版流式ai对话系统的一些项目分享,希望能给大家带来一些帮助!

附上几个最新实战项目

Uniapp-DeepSeek跨三端AI助手|uniapp+vue3+deepseek-v3流式ai聊天模板

vite7+deepseek流式ai模板|vue3.5+deepseek3.2+markdown打字输出ai助手

最新版Flutter3.38+Dart3.10仿写抖音APP直播+短视频+聊天应用程序

flutter3-deepseek流式AI模板|Flutter3.27+Dio+DeepSeeek聊天ai助手

Electron38-Vue3OS客户端OS系统|vite7+electron38+arco桌面os后台管理

electron38-admin桌面端后台|Electron38+Vue3+ElementPlus管理系统

Electron38-Wechat电脑端聊天|vite7+electron38仿微信桌面端聊天系统

最新版uniapp+vue3+uv-ui跨三端短视频+直播+聊天【H5+小程序+App端】

最新版uni-app+vue3+uv-ui跨三端仿微信app聊天应用【h5+小程序+app端】

Flutter3-MacOS桌面OS系统|flutter3.32+window_manager客户端OS模板

Tauri2-Vite7Admin客户端管理后台|tauri2.9+vue3+element-plus后台系统

Tauri2.9+Vue3桌面版OS系统|vite7+tauri2+arcoDesign电脑端os后台模板

n.sohucs

 

http://www.jsqmd.com/news/195419/

相关文章:

  • Sysinternals Suite 工具介绍
  • 音频智能分割神器:Audio Slicer 让剪辑变得如此简单
  • 高效解决Visual C++运行库缺失问题:全面故障排除指南
  • 椰羊cocogoat:原神圣遗物智能管理三大核心优势解析
  • Momentos Song by Julio Iglesias
  • AppleRa1n解锁工具:让被锁定的iOS设备重获自由
  • 实战解析:ReplayBook如何让英雄联盟回放分析变得简单高效
  • 英雄联盟回放管理新体验:ReplayBook深度使用指南
  • 化纤种类介绍
  • B站缓存视频转换终极指南:从m4s到mp4的完整解决方案
  • ECDICT:开源中英词典数据库技术架构深度解析
  • 终极指南:用Tsukimi打造你的专属Emby媒体中心
  • 完整指南:如何在宽屏显示器上完美运行《植物大战僵尸》
  • 5个技巧让Windows搜索效率翻倍的桌面神器
  • EverythingToolbar:Windows桌面搜索效率的革命性提升方案
  • 蜂鸣器报警模块操作指南:新手必看的接线实战案例
  • DeepLX免费AI翻译工具:5分钟快速搭建终极教程
  • 钉钉自动打卡终极配置指南:快速实现智能签到
  • 告别命令行:3步轻松搞定OpenCore图形化配置
  • 3步搞定Visual C++运行库缺失问题:实战修复指南
  • 【课程设计/毕业设计】基于深度学习的垃圾分类识别系统
  • 激光雕刻艺术:7天从新手到创意大师的奇幻之旅
  • Android自动化工具终极配置指南:钉钉打卡一键设置
  • osr2mp4-app终极指南:3步将Osu!回放变身高清大片
  • Honey Select 2增强补丁完整使用指南:从安装到精通
  • Mac Mouse Fix完整指南:如何免费解锁第三方鼠标在macOS的全部功能
  • 喜马拉雅音频下载工具:高效获取VIP与付费内容的技术方案
  • Irony Mod Manager:解决游戏模组管理难题的5个关键优势
  • 终极视频下载助手:轻松获取网络视频的完整指南
  • Visual C++运行库完整安装指南:解决“缺少DLL文件“问题