部署DeepSeek模型,进群交流最in玩法!
立即加群
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >DeepSeek-Vue3基于vite6+vant4仿deepseek/Kimi流式AI聊天小助手

DeepSeek-Vue3基于vite6+vant4仿deepseek/Kimi流式AI聊天小助手

原创
作者头像
andy2018
发布2025-03-17 11:56:00
发布2025-03-17 11:56:00
4792
举报
文章被收录于专栏:h5h5

2025年智能AI实战-Vue3+DeepSeek API打造一款mobile版ai聊天界面小助手。

vue3-deepseek支持流式打字输出、light+dark主题模式、代码高亮等功能。

运用技术

  • 编码工具:VScode
  • 技术框架:vite^6.2.0+vue^3.5.13+vue-router^4.5.0
  • 大模型AI框架:DeepSeek-R1 / OpenAI
  • 组件库:vant^4.9.17 (有赞vue3移动端组件库)
  • 状态管理:pinia^3.0.1
  • 高亮插件:highlight.js^11.11.1
  • markdown解析:markdown-it
  • 本地缓存:pinia-plugin-persistedstate^4.2.0

项目特性

  1. Vue3构建,集成DeepSeek,性能更优,对话丝滑流畅
  2. 支持代码高亮,方便展示和分享代码片段
  3. 流式响应:逐字显示 AI 回复,提供更好的用户体验
  4. 优雅的 UI 设计:
  • 气泡式对话界面
  • 打字机效果
  • 平滑的动画过渡
  • 响应式布局

项目目录框架

环境变量配置

需在deepseek官网注册获取apikey,替换掉VITE_DEEPSEEK_API_KEY即可替换ai功能。

入口main.js配置

代码语言:actionscript
复制
import { createApp } from 'vue'
import './style.scss'
import App from './App.vue'

// 引入路由/状态管理
import Router from './router'
import Pinia from './pinia'

import Plugins from './plugins'

const app = createApp(App)

app
.use(Router)
.use(Pinia)
.use(Plugins)
.mount('#app')

会话布局模板

代码语言:actionscript
复制
<template>
  <div class="flexbox flex-col" style="height:100%;">
    <Toolbar :title="chatSession?.title" />

    <div class="v3ai__scrollview flex1">
      <!-- Chat对话 -->
      <div v-if="chatSession && !isEmpty(chatSession.data)" class="v3ai__chatbot" ref="scrollRef" @scroll="onScroll">
        <div class="v3ai__chatbot-sessions">
          ...
        </div>
        <!-- 滚动底部 -->
        <div class="v3ai__scrollbottom flex-c" :class="{'is-bottom': reachBottom}" @click="scrollToBottom"><i class="iconfont ai-arrD"></i></div>
      </div>
      <!-- 导语 -->
      <div v-else class="v3ai__chatbot-intro">
        <i class="logo iconfont ai-deepseek"></i>
        <h3 class="name"><span class="txt text-gradient">嗨~ Vue3-DeepSeek</span></h3>
        <p class="desc">你身边的智能小帮手,我可以帮你搜索、答疑、写作,请把你的任务交给我吧~</p>
        <div class="prompt">
          <p class="tip flex-c"><span class="flex1">你可以这样问</span><span class="flex-c" @click="refreshPrompt">换一换<i class="iconfont ai-shuaxin"></i></span></p>
          <ul class="list">
            <li v-for="(item,index) in promptList" :key="index">
              <div class="txt" @click="changePrompt(item.prompt)">{{item.emoji}} {{item.prompt}}</div>
            </li>
          </ul>
        </div>
      </div>
    </div>

    <!-- 编辑器 -->
    <ChatEditor ref="editorRef" :value="promptValue" :reachBottom="reachBottom" :scrollBottom="scrollToBottom" />
  </div>
</template>

vue3路由管理

代码语言:actionscript
复制
/**
 * 路由配置
 * @author andy
 */

import { createRouter, createWebHashHistory } from 'vue-router'
import { appStore } from '@/pinia/modules/app'

// 批量导入modules路由
const modules = import.meta.glob('./modules/*.js', { eager: true })
const patchRoutes = Object.keys(modules).map(key => modules[key].default).flat()

const routes = [
  // 错误模块
  {
    path: '/:pathMatch(.*)*',
    component: () => import('@views/error/404.vue'),
    meta: {
      title: '404 error'
    }
  },
  ...patchRoutes
]

const router = createRouter({
  history: createWebHashHistory(),
  routes
})

// 全局钩子拦截
router.beforeEach((to, from, next) => {
  const store = appStore()
  if(to?.meta?.isAuth && !store.isLogged) {
    next('/login')
  }else {
    next()
  }
})

router.afterEach(() => {
  // ...
})

router.onError(error => {
  console.warn('Router Error>>', error.message);
})

export default router

vue3对接Deepseek API

代码语言:actionscript
复制
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.4, // 严谨采样 越低越严谨(默认1)
})
// 处理返回数据
console.log(completion.choices[0].message.content)

特殊处理流式输出返回。

代码语言:actionscript
复制
// 处理流式输出
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()
  }
}

flutter3.27+getx仿抖音app短视频+直播商城:https://cloud.tencent.com/developer/article/2493971

Electron32桌面端os系统:https://cloud.tencent.com/developer/article/2449406

electron31+vue3客户端聊天Exe实例:https://cloud.tencent.com/developer/article/2435159

tauri2.0+vue3客户端admin后台系统:https://cloud.tencent.com/developer/article/2458392

uniapp+vue3仿携程预订客房模板:https://cloud.tencent.com/developer/article/2474766

OK,以上就是vue3.5集成deepseek实战智能AI聊天会话的一些知识分享,希望对大家有所帮助!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 运用技术
  • 项目特性
  • 项目目录框架
  • 环境变量配置
  • 入口main.js配置
  • 会话布局模板
  • vue3路由管理
  • vue3对接Deepseek API
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档