vue3-webseek网页版AI问答|Vite6+DeepSeek+Arco流式ai聊天打字效果

news/2025/3/30 19:38:28/文章来源:https://www.cnblogs.com/xiaoyan2017/p/18795796

2025 AI实战vue3+deepseek+arcoDesign仿DeepSeek/豆包网页版AI聊天助手。

vue3-web-deepseek 实战网页PC版智能AI对话,基于vite6+vue3.5+openAI对接DeepSeek-Chat聊天对话模型。实现流动式打字返回效果、支持亮色+暗黑主题、各种代码高亮、本地会话存储等功能。

🐬技术栈

  • 编码工具:Vscode
  • 技术框架:vite^6.2.0+vue^3.5.13+vue-router^4.5.0
  • AI模型框架:DeepSeek-R1 + OpenAI
  • 组件库:arco-design^2.57.0 (字节桌面端组件库)
  • 状态管理:pinia^3.0.1
  • 本地存储:pinia-plugin-persistedstate^4.2.0
  • 高亮插件:highlight.js^11.11.1
  • markdown解析:markdown-it

🚀项目特点

  1. 流式响应Vue3+DeepSeek实现逐行打字输出效果
  2. 基于Vite6构建,接入DeepSeek,性能更优,聊天丝滑流畅
  3. 支持各种代码高亮,利于展示和分享代码片段
  4. 采用arco-design组件库,风格统一,美观大气
  5. 支持暗黑+亮色主题模式、侧边栏收缩

💻项目框架结构

vue3-deepseek-webai使用 vite6 搭建项目模板,采用 vue3 setup 语法糖开发。

目前vue3-web-deepseek网页版AI对话项目已经发布到我的原创作品集。

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

.env文件配置

# 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

公共布局模板

整个项目分为侧边栏+顶部导航条+AI对话内容区三个板块。

<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>

    

侧边栏模板

<template><div class="vu__sidebar" :class="{'collapsed': appstate.config.collapsed}"><a-button class="vu__sidebar-collapse" shape="circle" @click="handleCollapse"></a-button><aside class="vu__sidebar-aside flex1 flexbox flex-col"><div class="vu__aside-head"><router-link to="/" class="logo"><i class="iconfont ai-deepseek"></i><span class="fs-14 ff-ab">Vue3-WebSeek</span></router-link><div class="btn-create flex-c mt-15" @click="handleCreate"><i class="iconfont ai-newchat fs-20"></i>新建对话</div></div><div class="vu__aside-navlinks flexbox flex-col"><div class="section-navitem" @click="toLink('/aihub')"><span class="icon flex-c"><icon-compass size="18" /></span><div class="title">AI 导航</div></div><a-dropdown trigger="hover" :show-arrow="false" position="rt" :popup-offset="15" :content-style="{'min-width': '150px'}"><div class="section-navitem"><span class="icon flex-c"><icon-command size="18" /></span><div class="title">AI 技能</div><i class="iconfont ai-arrR c-999 fs-12"></i></div><template #content><a-doption><i class="iconfont ai-aisousou"></i> AI搜索</a-doption><a-doption><i class="iconfont ai-fanyi"></i> 快速翻译</a-doption><a-doption><i class="iconfont ai-xiezuo"></i> 帮我写作</a-doption><a-doption><i class="iconfont ai-tuxiang"></i> 图像生成</a-doption><a-doption><i class="iconfont ai-aicode"></i> AI编程</a-doption></template></a-dropdown></div><a-divider style="margin: 0;" /><div class="vu__aside-sessions flex1 flexbox flex-col"><div class="vu__aside-navlinks"><div class="section-navitem plain"><span class="icon flex-c"><icon-message size="18" /></span><div class="title">最近对话</div><i class="clean iconfont ai-qingli" @click="handleClean"></i></div></div><a-scrollbar :outer-style="{'height': '100%'}"><template v-if="sessionstate.session.length"><SessionList /></template><template v-else><a-empty description="暂无对话" /></template></a-scrollbar></div><div class="vu__aside-navlinks" @click="toLink('/setting')">...</div></aside></div>
</template>

AI对话编辑框

封装在components目录下ChatEditor.vue组件。

<template><div class="v3ai__footbar flexbox flex-col"><!-- 技能栏 --><div v-if="skillbar" class="v3ai__skills flexbox flex-alignc">...</div><!-- 编辑栏 --><div class="v3ai__inputbox flexbox flex-col"><div class="v3ai__editor flexbox"><a-textarea v-model="editorText" :auto-size="autoSize" placeholder="有问题,尽管问" @input="handleInput" /></div><!-- 操作栏 --><div class="v3ai__tools flexbox flex-alignc"><div class="option flex1 flexbox"><div class="btn" :class="{'active': isDeep}" @click="isDeep =! isDeep"><i class="iconfont ai-deepthink"></i> 深度思考 (R1)</div><div class="btn" :class="{'active': isNetwork}" @click="isNetwork =! isNetwork"><i class="iconfont ai-network"></i> 联网</div></div><a-dropdown trigger="hover" :show-arrow="false" position="lb" :content-style="{'min-width': '250px'}"><a-button shape="circle"><icon-attachment size="18" /></a-button><template #content>...</template></a-dropdown><a-tooltip content="添加图片" position="top" mini><a-button shape="circle"><icon-image size="18" /></a-button></a-tooltip><a-dropdown :show-arrow="false" position="top" :popup-translate="[-10, -5]"><a-button shape="circle" style="background: none;"><icon-plus size="18" /></a-button><template #content><a-doption value="pyq"><icon-apps /> 文件</a-doption><a-doption value="qq"><icon-apps /> PDF文档分析</a-doption><a-doption value="qq"><icon-apps /> Word文档分析</a-doption><a-doption value="qq"><icon-apps /> 网页总结</a-doption></template></a-dropdown><a-divider direction="vertical" style="margin: 0 8px 0 5px;" /><a-button type="primary" shape="circle" :disabled="!editorText?.trim() || sessionstate.loading" @click="handleSubmit"><icon-arrow-up v-if="!sessionstate.loading" size="20" /><icon-loading v-else size="18" /></a-button></div></div></div>
</template>

Vue3集成DeepSeek API

实现一个非流式输出。

const completion = await openai.chat.completions.create({messages: [{role: 'user', content: editorValue}],model: 'deepseek-chat', // deepseek-chat对话模型 deepseek-reasoner推理模型stream: false, // 流式输出max_tokens: 8192, // 限制一次请求中模型生成 completion 的最大 token 数(默认使用 4096)temperature: 0.6, // 严谨采样 越低越严谨(默认1)
})// 返回ai内容
console.log(completion.choices[0].message.content)

处理流式打字返回。通过for循环叠加流式返回片段。

// 处理流式输出
let content = ''
for await (const chunk of completion) {content += chunk.choices[0].delta.content;chatState.updateSession(uniKey, content)if(chunk.choices[0].finish_reason == 'stop') {loading.value = false}if(props.reachBottom) {props.scrollBottom()}
}

以上就是vue3.5接入deepseek搭建网页版AI聊天助手的一些知识分享,希望对大家有些帮助~

附上几个最新项目实例

Vue3-DeepSeek-Chat流式AI对话|vite6+vant4+deepseek智能ai聊天助手

flutter3-dymall仿抖音直播商城|Flutter3.27短视频+直播+聊天App实例

uniapp+vue3酒店预订|vite5+uniapp预约订房系统模板(h5+小程序+App端)

Tauri2.0-Vue3OS桌面端os平台|tauri2+vite6+arco电脑版OS管理系统

Tauri2.0+Vite5聊天室|vue3+tauri2+element-plus仿微信|tauri聊天应用

Electron31-Vue3Admin管理系统|vite5+electron+pinia桌面端后台Exe

flutter3-trip仿携程酒店预订|Flutter3.27+Getx预约旅游酒店App程序

uniapp+vue3聊天室|uni-app+vite4+uv-ui跨端仿微信app聊天语音/朋友圈

 

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

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

相关文章

仓库呆滞物料堆积如山?十年的仓库主管跟我说了这五点

今天咱们聊聊一个经常让很多仓库管理者头疼的问题—— 仓库呆滞物料堆积 。 说实话,仓库呆滞物料堆得满满的,不仅占用宝贵的仓储空间,还让企业的资金周转变得紧张,真的是个大麻烦! 不过,之前我和一位拥有 十年经验的仓库主管 聊了聊,得到了很多宝贵的经验,特别是在如何…

【汇总】sqlcmd 命令选项说明-MSSQL2012

一、原始帮助D:\>sqlcmd /? Microsoft (R) SQL Server 命令行工具 版本 11.0.2100.60 NT x64 版权所有 (c) 2012 Microsoft。保留所有权利。用法: Sqlcmd [-U 登录 ID] [-P 密码][-S 服务器] [-H 主机名] [-E 可信连接][-N 加密连…

导入SpaceClaim的iges模型尺寸被放大1000倍的问题

ANSYS APDL 和 Workbench 联合仿真中,导入 Workbench 的 iges 模型尺寸被放大1000倍问题的解决方案问题 ANSYS APDL 和 Workbench 联合仿真时,导入 SpaceClaim 的 .iges 模型尺寸被放大 1000 倍数。 如 APDL 生成的尺寸为 10 mm(注:此处的 mm 是在 APDL 编码中设置的一致单…

Linux的vim编辑器

Linux的vi/vim编辑器 命令模式 编辑模式 输入模式 vi/ vim编辑器的基本操作Linux的vi/vim编辑器基本概念:vim文本编辑器,是由vi编辑器发展演变过来的文本编辑器,因其具有使用简单、功能强大、是 Linux 众多发行版的默认文本编辑器。很多人习惯将 vim 称为 vi,其实 vim 是 v…

高度场流体模拟

【USparkle专栏】如果你深怀绝技,爱“搞点研究”,乐于分享也博采众长,我们期待你的加入,让智慧的火花碰撞交织,让知识的传递生生不息!一、原理参考这个论文:《Real-time Simulation of Large Bodies of Water with Small Scale Details》 核心是这两个公式: 我在这篇《…

Navicat将微软数据库MS-SQLServer表内容导入MySQL数据库

前言全局说明一、说明 1.1 环境: Windows 7 旗舰版 MSSQL 2012 Navicat for MySQL 10.1.7二、MySQL准备 用 Navicat 在 mysql 新建数据库,要和 MSSQL 数据库同名注意:编码也要一致2.1 mysql 新建数据 空白处新,建 test 数据库,2.2 数据库右键查看在mysql里新建数据库编码三…

深度解析:通过 AIBrix 多节点部署 DeepSeek-R1 671B 模型

本文详细介绍了如何通过 AIBrix 分布式推理平台实现 DeepSeek-R1 671B 的多节点部署。DeepSeek-R1 通过渐进式训练框架展现出优秀的逻辑推理能力 —— 在 6710 亿总参数量中,其动态激活的 370 亿参数与 128k 上下文窗口,使其在复杂任务处理中表现卓越。然而,如此庞大的模型规…

玄机靶场 第一章 应急响应-webshell查杀

玄机靶场 第一章 应急响应-webshell查杀 1.黑客webshell里面的flag flag2. 黑客使用的什么工具的shell github地址的md5 flag 哥斯拉webshell的特征3.黑客隐藏shell的完整路径的md5 flag{md5} 注 : /xxx/xxx/xxx/xxx/xxx.xxx 发现隐藏4.黑客免杀马完整路径 md5 flag 查看这是一…

玄机靶场 第一章 应急响应-Linux日志分析

玄机靶场 第一章 应急响应-Linux日志分析 1.有多少IP在爆破主机ssh的root帐号,如果有多个使用","分割 /var/log/auth.log里面存放了相关的登录信息 直接下载看根据user=root发现三个ip 网上发现神奇妙妙脚本 cat auth.log.1 | grep -a "Failed password for ro…

【每日一题】20250327

改变不了的事,不值得烦恼。【每日一题】 1.(15分) \(\hspace{0.7cm}\)已知数列 \(\{a_n\}\),\(\{b_n\}\) 和 \(\{c_n\}\) 满足: \[a_{n+1}=\frac14b_n \]\[b_{n+1}=a_n+c_n+\frac12b_n \]\[c_{n+1}=\frac14b_n \]且 \(a_n+b_n+c_{n}=1\),\(a_1=0\),\(b_1=1\),\(\displa…

必看!SpringAI轻松构建MCP Client-Server架构

MCP 这个概念相信大家已经听了无数次了,但不同人会有不同的解释,你可能也是听得云里雾里的。 不过没关系,今天这篇内容会通过 Spring AI 给你实现一个 MCP 的 Client 和 Server 架构,让你彻底搞懂 MCP 的概念,以及学会 MCP 的开发技能。 什么是MCP? MCP 是 Model Context…

国产服务器操作系统CTyunOS,技能值拉满!

新一轮科技革命和产业变革深入发展,数字经济迎来新的发展机遇。其中,以操作系统为代表的关键基础软件是新一代信息技术的灵魂,它不仅构筑起信息技术领域的根基磐石,更在守护关键信息基础设施的安全防线、实现核心技术自主可控中,发挥着不可替代的作用。 作为云服务国家队…