uniapp-vue3-deepseek 实战:对接 DeepSeek-V3 实现跨端 AI 对话

笔记哥 / 04-29 / 19点赞 / 0评论 / 871阅读
**uniapp-vue3-deepseek** 实战2025对话ai大模型,基于Uniapp+Vue3+Markdown接入DeepSeek-V3聊天会话大模型,支持**编译到H5+小程序+App端**。实现流式输出、支持亮色/暗黑主题、代码高亮、会话本地存储等功能。 ### 三端预览 编译到**H5+小程序端+App端**运行效果。 ![](https://cdn.res.knowhub.vip/c/2505/06/b4024f29.png?G1cAAMTmtHFS4HxxG%2b1Am1g10WbAIo2gUsJ6vffu04i%2b38CI%2fpl9LDsfftPHMhJULVoJjMQRLkBFQhauSZxo0VwCNPs9DQ%3d%3d) > > > ### *基于vue3.5+deepseek搭建网页版ai对话模板* > > > [vue3-webseek网页版AI问答|Vite6+DeepSeek+Arco流式ai聊天打字效果](https://www.cnblogs.com/xiaoyan2017/p/18795796) > > > ### *Electron35+Vite6+DeepSeek-V3跨平台桌面端AI流式输出模板* > > > [Electron35-DeepSeek桌面端AI系统|vue3.5+electron+arco客户端ai模板](https://www.cnblogs.com/xiaoyan2017/p/18830611) > ### 技术栈 - 开发工具:Hbuilder X 4.57 - 技术框架:Uniapp+Vue3+Pinia2+Vite5.x - 大模型框架:DeepSeek-V3 - UI组件库:uni-ui+uv-ui - 高亮插件:highlight.js - markdown解析:ua-markdown - 本地缓存:pinia-plugin-unistorage - 支持编译:H5+小程序+APP端 ![](https://cdn.res.knowhub.vip/c/2505/06/e30fe367.png?G1YAAETn9LyUAizivtMdbIlTE20GJLIIKiWs13vO2jfR94dALD%2bj9Rn7w19an0EsXkt1EsgFQ%2fJSmU0BmCd3LwpVy2sE) ![](https://cdn.res.knowhub.vip/c/2505/06/ebfaca33.gif?G1cAAMTc2vOlu01ns9%2fToCVYBtoMWKQRVEpYr2fvf51E%2fXWB5Hh9bUxfH37TxnRisXpUI4EoMkKQyqyQAqTAagwrYI3ebw%3d%3d) deepseek-uniapp使用最新跨端技术uniapp接入deepseek-v3对话模型,支持编译h5/小程序/app端。 ![](https://cdn.res.knowhub.vip/c/2505/06/79b91ae0.gif?G1YAAMTc2vOl207Nrd%2fToCVYBgoTOZBELDBrfuWn8KyvZ%2b9%2fnUT9dTByvL42pq8f%2fqWN6SRQq6YERuGMIEykrCmkQzMrYNH7DQ%3d%3d) ![](https://cdn.res.knowhub.vip/c/2505/06/f8c4779d.gif?G1YAAMTc2vOl2y5lW7%2bnQUuwDLQZkMgiqJSwXs%2fe%2fzqJ%2bhtglHx9bcxYH%2f7SxgwSmKsbgVG5IHm4SD1YRTgZ2N1NNUe%2fAQ%3d%3d) ### 项目特点 1. 基于Uniapp+Vue3构建,对接DeepSeek-V3实现流式输出效果 2. 支持编译到H5/小程序端/App端 3. 支持各种代码高亮、上下文多轮对话/本地会话存储 4. 支持代码块横向滚动、行号、代码复制功能(h5/app端) 5. 支持图片渲染宽度100%、图片预览功能(h5/app端) 6. 支持链接跳转功能(h5/app端) 7. 修复小程序端表格边框线及各类标签选择器样式失效 ![](https://cdn.res.knowhub.vip/c/2505/06/ef24c452.gif?G1YAAMTc2vOl285JW7%2bnQUuwDLQZkMgiqJSwXs%2fe%2fzqJ%2bhtgaL6%2bNmasD39pYwYJzA83AqOyInm4QIxVXVOptZiiWI5%2bAw%3d%3d) ### 项目框架结构 uni-deepseek使用 uniapp 搭建项目模板,采用 vue3 setup 语法开发。 ![](https://cdn.res.knowhub.vip/c/2505/06/13e3db13.png?G1cAAMTsdJxI8pSk26hD2jvFHc2ARRpBpYT1es9Z%2byb6fgcjx2e0Pn1%2f%2bE3r00mgVk0JjIszQoAJBCgwDZKgmgtrjWs4) > > > #### *uniapp-deepseek跨端ai助手已经同步到我的原创作品集,感谢支持与鼓励~* > > > [uniapp+deepseek+vue3跨端AI流式输出对话模板](https://mall.bilibili.com/neul-next/detailuniversal/detail.html?isMerchant=1&page=detailuniversal_detail&saleType=10&itemsId=12307813&loadingShow=1&noTitleBar=1&msource=merchant_share) > ![](https://cdn.res.knowhub.vip/c/2505/06/8854adf7.gif?G1YAAMTc2vOl287Ftn5Pg0ywDLQZkMgiqJSwXs%2fe%2fzqJ%2btvA0Hx9dcy2PvyljtlI4GHhBMbBiuQRArbCUSSZioiba279Bg%3d%3d) 支持h5在pc端以**750px宽度**显示布局。 ![](https://cdn.res.knowhub.vip/c/2505/06/6545cbd5.png?G1YAAMT0bJxoXVrUNvqh%2f4lHQjMgkUVQKWG93nv3aUTf72BIfGYfy8%2bHv%2fSxnBKqFasEhrIgeFgCKktWDcVSEZUscU8H) ![](https://cdn.res.knowhub.vip/c/2505/06/8b12c364.png?G1YAAMTsdJxI8oWk26hD2jvFHc2ARBZBpYT1es9Z%2byb6fgcjxWe0Pn1%2f%2bEvr00mgVk0JjMwJwcME0AuVSzBVFZRc4xoO) ![](https://cdn.res.knowhub.vip/c/2505/06/cc64f01a.png?G1UAAMTsdJxIvESj26hD2jvFHc2ARBZBpYT1es9Z%2byb6fgdD4jNan74%2f%2fKX16ZRg9apGYCgLgkZNgIkKaxDkopYtruE%3d) ### uniapp环境变量.env配置 ![](https://cdn.res.knowhub.vip/c/2505/06/ecb4544f.png?G1YAAETn9LwUKC7CvtMdbIlTE4UNOJAELbcEVj6FZH2956x9E31%2fgFHyM1qfsX%2f4l9ZnkMC8uhEYFxckwwUKNamsuGiteY0A) 在uniapp+vue3项目中,支持.env环境变量配置。 ```csharp # 项目名称 VITE_APPNAME = 'Uniapp-DeepSeek' # 运行端口 VITE_PORT = 5173 # DeepSeek API配置 VITE_DEEPSEEK_API_KEY = 替换为你的APIKey VITE_DEEPSEEK_BASE_URL = https://api.deepseek.com ``` ### 入口文件main.js ```csharp import App from './App' import { createSSRApp } from 'vue' // 引入pinia状态管理 import pinia from '@/pinia' export function createApp() { const app = createSSRApp(App) app.use(pinia) return { app, pinia } } ``` ![](https://cdn.res.knowhub.vip/c/2505/06/ce69db8b.png?G1cAAER17rxgrFRlfice0wSBBJoBizSCSgnr9e491y3y%2fY4ExqfXNnx9%2bE1tw0VR7LIiSDgSEQJMkUkYzqDGTELBOLsD) ![](https://cdn.res.knowhub.vip/c/2505/06/9b5a4eda.png?G1cAAMTW3DgpD5FB22gDdWfqnTYDFmkElRLW6917rpvo%2b0Mgmp9e24j14Te1jSAW88uNBHJCkYI4y1FUAU1sZmBAS549AA%3d%3d) ### 项目布局结构 ![](https://cdn.res.knowhub.vip/c/2505/06/b96b3ca5.png?G1YAAMTsdJxI8g2k26hD2jvFHc2ARBZBpYT1es9Z%2byb6fgdD4zNan74%2f%2fKX16SSoVqwSGIkVwcMEl0kV0ZALaxLkFNdw) 整个项目布局分为**顶部自定义导航栏+会话内容区+底部编辑区**三个大模块。 ![](https://cdn.res.knowhub.vip/c/2505/06/a114f914.png?G1YAAMTsdJxI8kKj26hD2jvFHc2ARBZBpYT1es9Z%2byb6fgdD4zNan74%2f%2fKX16SSwelUjMDIrgkcVKJIVcIBaLpayxDUc) ```csharp ``` ![](https://cdn.res.knowhub.vip/c/2505/06/601865e4.gif?G1YAAMTc2vOl286FW7%2bnQUuwDLQZkMgiqJSwXs%2fe%2fzqJ%2bhtgaL6%2bNmasD39pYwYJzKsbgXGwInm4QCsMLKlAuXgRy9Fv) ### uniapp+vue3解析markdown结构 uniapp+deepseek流式输出数据,通过之前封装的markdown-it组件解析标签结构。亲测**完美支持在H5端+小程序端+App端**流式Markdown解析。 ![](https://cdn.res.knowhub.vip/c/2505/06/8e2c7f3a.png?G1cAAMTsdJxIfEKTbqMO2jvFHc2ARRpBpYT1es9Z%2byb6%2fgaGxmfUPtv%2b8JvaZ6ME88uNwMisCAGekCEqxUIyUykuXOIaDQ%3d%3d) 修复微信小程序里rich-text组件不支持标签选择器,导致样式会失效问题。 **特性** - 支持代码块横向滚动 - 支持显示代码行号(关闭提升性能) - 支持代码复制功能(h5/app端) - 支持图片渲染宽度100% - 支持图片预览功能(h5/app端) - 支持链接跳转功能(h5/app端) ![](https://cdn.res.knowhub.vip/c/2505/06/cfc208e9.png?G1cAAMT0bJxoXYrWNvqh%2f4lHQjNgkUZQKWG93nv3aUTf72BIfGYfy8%2bH3%2fSxnBLUqimBkVkQAiwhG4uqhFQ0VxMUiXs6) ![](https://cdn.res.knowhub.vip/c/2505/06/b4806992.png?G1YAAMTsdJxIvGik26hD2jvFHc2ARBZBpYT1es9Z%2byb6fgdD4jNan74%2f%2fKX16ZRQTa0SGIUFwcMSiqGKcrhytqQsGtdw) ![](https://cdn.res.knowhub.vip/c/2505/06/3928835e.png?G1cAAMTsdJxI8g2k26hD2jvFHc2ARRpBpYT1es9Z%2byb6fgdD4zNan74%2f%2fKb16SSoVqwSGIkVIcAEyfQqqAGCzFokc1zDAQ%3d%3d) ![](https://cdn.res.knowhub.vip/c/2505/06/0f0688fe.png?G1YAAMTydJz4cyjfbdTh20SR0AxIZBFUSliv95y1b5HvN4LJP6P1afvDX1qfJoFVi1YhmJHgPDVEAERQF4nCnK%2fk1zA%3d) ![](https://cdn.res.knowhub.vip/c/2505/06/cc722b92.png?G1YAAMTmtHFS4HxxG%2b1Am1g10WZAIougUsJ6vffu04i%2b38CI%2fpl9LDsf%2ftLHMhJULVoJjMQRzkMlMEuFZCcBOSmX5Pc0) ![](https://cdn.res.knowhub.vip/c/2505/06/595200dd.png?G1YAAETn9LwUqCzIvtMdbIlTE20GJLIIKiWs13vO2jfR9wcYmp%2fR%2boz94S%2btzyBBdfNKYFysSB4uhblA3BKqASrieY0A) ![](https://cdn.res.knowhub.vip/c/2505/06/2ae8089e.png?G1YAAETn9LwU6CDKvtMdbIlTE20GJLIIKiWs13vO2jfR9wcYmp%2fR%2boz94S%2btzyBB9eKVwDBWJA%2bXi1nNBakWFzNnz2sE) ![](https://cdn.res.knowhub.vip/c/2505/06/8fa3c002.png?G1cAAMTydJz4%2byvhu406fJsoEpoBizSCSgnr9Z6z9i3y%2fU4wxWe0Pn1%2f%2bE3r00VZrVgVghkJIdD0gkIzS1AkqNJgcQ0H) ![](https://cdn.res.knowhub.vip/c/2505/06/b8143a5d.png?G1YAAMTsdJxI8qSk26hD2jvFHc2ARBZBpYT1es9Z%2byb6fgcjx2e0Pn1%2f%2bEvr00lQrVglMJQzgodJYoEV1VBVWfQqFtdw) ![](https://cdn.res.knowhub.vip/c/2505/06/87de1b61.png?G1cAAMTsdJzIJ1Si26hD2jvFHc2ARRpBpYT1es9Z%2byb6fhdIjs9offr%2b8JvWpxOLVa1GArmQEYJUTuBkWiSwAQlaTOMaDg%3d%3d) ![](https://cdn.res.knowhub.vip/c/2505/06/ff6af060.png?G1YAAMTsdJxI8mii26hD2jvFHc2ARBZBpYT1es9Z%2byb6fgcjx2e0Pn1%2f%2bEvr00lgVasRGIUzgkeVxFI4JQmazfSCalzDAQ%3d%3d) ![](https://cdn.res.knowhub.vip/c/2505/06/eb52da76.png?G1YAAMTsdJxI8qKk26hD2jvFHc2ARBZBpYT1es9Z%2byb6fgdD4zNan74%2f%2fKX16SSoVqwSGJkVwcMkMVjAHErOonZJims4) ### uniapp+deepseek实现流式SSE输出 原本打算使用OpenAI来实现流式输出,但在小程序和App不支持该功能。 由于小程序和app运行环境特殊性,最终选择在小程序端使用uni.request开启 enableChunked 实现流式,H5和App端采用 renderjs 方式fetch来实现流式功能。 ```csharp // H5和APP端调用renderjs里的fetch // #ifdef APP-PLUS || H5 this.fetchAppH5({ url: baseURL+'/v1/chat/completions', method: 'POST', headers: { "Content-Type": "application/json", "Authorization": `Bearer ${apiKEY}`, }, body: { // 多轮会话 messages: this.multiConversation ? this.historySession : [{role: 'user', content: editorValue}], model: 'deepseek-chat', // deepseek-chat对话模型 deepseek-reasoner推理模型 stream: true, // 流式输出 max_tokens: 8192, // 限制一次请求中模型生成 completion 的最大 token 数(默认使用 4096) temperature: 0.4, // 严谨采样 越低越严谨(默认1) } }) // #endif ``` ```csharp // #ifdef MP-WEIXIN try { this.loading = true const requestTask = await uni.request({ url: baseURL+'/v1/chat/completions', method: 'POST', header: { "Content-Type": "application/json", "Authorization": `Bearer ${apiKEY}`, }, data: { // 多轮会话 messages: this.multiConversation ? this.historySession : [{role: 'user', content: editorValue}], model: 'deepseek-chat', // deepseek-chat对话模型 deepseek-reasoner推理模型 stream: true, // 流式输出 max_tokens: 8192, // 限制一次请求中模型生成 completion 的最大 token 数(默认使用 4096) temperature: 0.4, // 严谨采样 越低越严谨(默认1) }, enableChunked: true, //开启分块传输 transfer-encoding chunked success: (res) => { console.log('request success', res) }, fail: (error) => { console.log('request fail', error) // ... } }) requestTask.onChunkReceived((res) => { // console.log('Received chunk', res) const uint8Array = new Uint8Array(res.data) let text = String.fromCharCode.apply(null, uint8Array) const buffer = decodeURIComponent(escape(text)) this.parseBuffer(buffer) }) } catch (error) { this.loading = false this.chatState.updateSession(this.botKey, {loading: false}) throw new Error(`request error: ${error.message || '请求异常'}`) } // #endif ``` ![](https://cdn.res.knowhub.vip/c/2505/06/5cb79b8c.png?G1cAAMTsdJxI8kGj26hD2jvFHc2ARRpBpYT1es9Z%2byb6fgcjxWe0Pn1%2f%2bE3r00lg9apGYGROCAFVVBTKyEGyFbCalLiGAw%3d%3d) ![](https://cdn.res.knowhub.vip/c/2505/06/abfa1c35.png?G1YAAGSd87ygE0v9TjyqCQIJNAMSWQSVEtbrPWftG%2bD7g5E1P6P1GfvDX1qfAcTVzSswckFF8uwkJCrkntysmgldeY0A) ![](https://cdn.res.knowhub.vip/c/2505/06/453ba6e4.png?G1YAAMTsdJxIvJSk26hD2jvFHc2ARBZBpYT1es9Z%2byb6fgdD4jNan74%2f%2fKX16ZSgVk0JjIsFwcNSTiJAqaEUVTXJNa7h) 以上就是uniapp+vue3对接deepseek实现流式ai对话的一些知识分享,希望对大家有些帮助哈!