Uniapp-DeepSeek:全新力作uni-app+vue3接入deepseek流式输出ai模板。
重磅跨端AI心血之作,基于
uniapp+vue3
集成deepseek-v3
聊天大模型实战跨三端ai问答小助手。支持编译到H5+小程序+App端。实现流式打字输出效果、支持亮色/暗黑主题、各种代码高亮、会话本地存储等功能。
vue3-web-deepseek:基于Vite6+Deepseek+ArcoDesign+Markdown构建网页版AI模板
基于electron35+vue3.5+deepseek+arco实战桌面端AI流式聊天系统
技术栈
- 开发工具:hbuilderx 4.57
- 技术框架:uni-app+vue3+pinia2+vite5.x
- 大模型框架:deepseek-v3-0324
- UI组件库:uni-ui+uv-ui
- 高亮插件:highlight.js
- markdown解析:ua-markdown
- 本地缓存:pinia-plugin-unistorage
- 支持编译:H5+小程序+APP端
uniapp-deepseek支持亮色+暗黑两种主题模式,支持h5+小程序+app端。
项目结构框架
使用跨平台框架uni-app+vue3
搭建项目模板,集成deepseek-v3
聊天模型,实现stream
流式输出效果,全部采用vue3 setup
语法编码。
uniapp-deepseek跨端ai项目已经同步到我的原创作品集,有需要的可以去看看。
uniapp+deepseek+vue3跨端AI流式输出对话模板
支持在pc端以750px像素宽度展示页面布局。
uniapp+vue3环境变量.env
uni-app+vue3项目支持配置.env环境变量文件。
去deepseek官网申请一个key,替换掉.env文件里的Key,即可畅快体验deepseek流式对话。
# 项目名称
VITE_APPNAME = 'Uniapp-DeepSeek'
# 运行端口
VITE_PORT = 5173
# DeepSeek API配置
VITE_DEEPSEEK_API_KEY = 替换为你的APIKey
VITE_DEEPSEEK_BASE_URL = https://api.deepseek.com
main.js配置
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
}
}
项目结构布局
<template>
<uv3-layout>
<!-- 导航栏 -->
<template #header>
<Toolbar :title="chatSession?.title" />
</template>
<view v-if="chatSession && !isEmpty(chatSession.data)" class="vu__chatview flexbox flex-col">
<scroll-view :scroll-into-view="scrollIntoView" scroll-y="true" @scrolltolower="onScrollToLower" @scroll="onScroll" style="height: 100%;">
<view class="vu__chatbot">
...
</view>
<view id="scrollbottom-placeholder" style="height: 1px;"></view>
</scroll-view>
<!-- 滚动到底部 -->
<view class="vu__scrollbottom" @click="scrollToBottom"><text class="iconfont ai-arrD fw-700"></text></view>
</view>
<!-- 欢迎信息 -->
<view v-else class="vu__welcomeinfo">
<view class="intro flex-c flex-col">
<view class="logo flex-c" style="gap: 15px;">
<view class="iconfont ai-deepseek" style="font-size: 40px;"></view>
<text style="color: #999; font-size: 20px;">+</text>
<image src="/static/uni.png" mode="widthFix" style="height: 30px; width: 30px;" />
</view>
<view class="name"><text class="txt text-gradient">嘿~ Uniapp-DeepSeek</text></view>
<view class="desc">我可以帮你写代码、答疑解惑、写作各种创意内容,请把你的任务交给我吧~</view>
</view>
<view class="prompt">
<view class="tip flex-c"><text class="flex1">试试这样问</text><view class="flex-c" @click="refreshPrompt">换一换<uni-icons type="refreshempty" color="#999" size="14" /></view></view>
<view v-for="(item,index) in promptList" :key="index">
<view class="option" @click="changePrompt(item.prompt)">{{item.emoji}} {{item.prompt}} <text class="arrow iconfont ai-arrR c-999"></text></view>
</view>
</view>
</view>
<template #footer>
<view :style="{'padding-bottom': keyboardHeight + 'px'}">
<ChatEditor ref="editorRef" v-model="promptValue" :scrollBottom="scrollToBottom" />
</view>
</template>
</uv3-layout>
</template>
uni-app解析流式markdown
特征
- 支持代码块横向滚动
- 支持显示代码行号(关闭提升性能)
- 支持代码复制功能(h5/app端)
- 支持图片渲染宽度100%
- 支持图片预览功能(h5/app端)
- 支持链接跳转功能(h5/app端)
uni-app+deepseek跨端流式输出
小程序和app运行环境特殊性,小程序端使用uni.request
开启 enableChunked
实现流式,H5和App端采用 renderjs
方式fetch
来实现流式功能。
h5+app端流式
// 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
小程序端流式
// #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
ok,以上就是uniapp接入deepseek-v3实战跨三端流式ai助手的一些知识分享。希望对大家有所帮助!
热文推荐
基于electron35+vue3.5+deepseek+arco实战桌面端AI流式聊天系统
基于Vite6+Deepseek+ArcoDesign+Markdown构建网页版AI流式
原创自研electron31+vite5+pinia2仿微信客户端Exe聊天实例
flutter3.27实战抖音app商城|flutter3.x+getX仿抖音直播+短视频+聊天
自研Flutter3.27+getx仿携程app酒店预订模板
Electron31-ViteAdmin桌面端后台|electron31+element-plus客户端后台
自研tauri2.0-vue3-os桌面端仿macos管理系统
uniapp-vue3-wechat:基于uniapp+vue3仿微信app聊天
原创uniapp+vue3+pinia2跨三端(H5+App+小程序)酒店预订模板