tauri2.0+vite6接入deepseek-v3电脑端ai流式多轮聊天对话系统

简介: 原创重磅新作tauri2.0+vite6+deepseek-v3+arco-design实战客户端AI流式聊天对话系统。整合 Tauri2.x 接入 DeepSeek-V3 大模型。支持多窗口浅色+暗黑主题、代码高亮、本地会话缓存。

2025桌面端ai新作:基于tauri2+vue3.5+deepseek搭建桌面端ai流式对话exe系统。

未标题-9.png

tauri2-vue3-deepseek封装多窗口、亮色+暗黑主题、代码高亮、本地存储对话等功能。

未标题-3.png


使用技术


  • 前端框架:vite^6.3.5+vue^3.5.15+vue-router^4.5.1
  • 大模型ai框架:DeepSeek-V3-0324 + OpenAI
  • 跨平台框架:tauri^2.5.0
  • UI组件库:arco-design^2.57.0 (字节桌面端组件库)
  • 状态管理:pinia^3.0.3
  • 本地缓存:pinia-plugin-persistedstate^4.3.0
  • 高亮插件:highlight.js^11.11.1
  • markdown插件:markdown-it


p2.gif

p6.gif

项目功能性

  1. 封装多窗口管理、支持暗黑+浅色主题模式、展开/收缩侧边栏
  2. 支持各种代码高亮效果、易于展示分享代码片段
  3. 支持上下文多轮对话、提示词生成图片及预览功能
  4. 支持在浏览器打开会话里面的链接
  5. 使用arco-design组件库,保证UI风格统一性

未标题-4.png


项目结构目录


360截图20250615113837180.png


360截图20250615215828140.png 360截图20250615215828142.png 001360截图20250615090832240.png 001360截图20250615090900554.png 003360截图20250615100640448.png 003360截图20250615100658272.png 003360截图20250615100735444.png 003360截图20250615101000465.png 005360截图20250615105449352.png 005360截图20250615105710380.png 006360截图20250615110931884.png 006360截图20250615112034435.png 006360截图20250615112149628.png 006360截图20250615112232775.png 006360截图20250615112333093.png 007360截图20250615112538060.png 008360截图20250615112900160.png 008360截图20250615112912091.png


项目入口配置

/**
 * 渲染页面入口main.js
 * @author andy
 */

import { createApp } from "vue"
import App from "./App.vue"
import './style.scss'

// 引入插件配置
import Plugins from './plugins'

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

createApp(App)
.use(Plugins)
.use(Router)
.use(Pinia)
.mount("#app");


项目布局模板

b0c8a802c2dd65206ee0097fee0986e1_1289798-20250617075811079-646808144.png

fe8e17c616dd566fce17f9db8dc58e02_1289798-20250617075929976-164022696.png

<script setup>
  import { appState } from '@/pinia/modules/app'

  import Titlebar from '@/layouts/components/titlebar/index.vue'
  import Sidebar from '@/layouts/components/sidebar/index.vue'

  const appstate = appState()
</script>

<template>
  <div class="vu__chatbot">
    <div class="vu__container" :style="{'--themeSkin': appstate.config.skin}">
      <div class="vu__layout flexbox flex-col">
        <!-- 导航栏 -->
        <Titlebar />

        <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>
  </div>
</template>

自定义编辑框

f61199b5490d18c414f1518188f1d9ab_1289798-20250617080819180-1788756348.png

3f8153c9b7bea198ae607d2c39dc1a4c_1289798-20250617080846438-136191182.png

<template>
  <div class="v3ai__footbar flexbox flex-col">
    <!-- 技能栏 -->
    <div v-if="skillbar" class="v3ai__skills flexbox flex-alignc">
      <div class="item" v-for="(item, index) in skills" :key="index" @click="handleSkill(item)">
        <i class="iconfont" :class="item.icon"></i><span class="text">{{item.text}}</span>
      </div>
    </div>
    <!-- 编辑栏 -->
    <div class="v3ai__inputbox flexbox flex-col">
      <div class="v3ai__editor flexbox">
        <a-textarea v-model="editorText" :auto-size="autoSize" placeholder="想问点什么..." spellcheck="false" @input="handleInput" />
      </div>
      <!-- 操作栏 -->
      <div class="v3ai__tools flexbox flex-alignc">
        <div class="option flex1 flexbox">
          <div class="btn" @click="isDeep =! isDeep"><i class="iconfont ai-deepthink"></i> 深度思考 <span class="fs-12">(R1)</span></div>
          <div class="btn" @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>
            <a-dgroup>
              <template #title><div style="margin-bottom: 5px;">从网盘添加</div></template>
              <a-doption value="wx"><icon-more /> 选择网盘文件</a-doption>
            </a-dgroup>
            <a-dgroup>
              <template #title><div style="margin-bottom: 5px;">从本地添加</div></template>
              <a-doption value="wx"><icon-apps /> 上传文件</a-doption>
              <a-dsubmenu trigger="hover" position="rb" :popup-translate="[8, 8]" value="option-1">
                <template #default><icon-apps /> 上传代码</template>
                <template #content>
                  <a-doption value="pyq"><icon-apps /> 代码文件</a-doption>
                  <a-doption value="qq"><icon-apps /> 代码文件夹</a-doption>
                  <a-doption value="qq"><icon-apps /> GitHub仓库</a-doption>
                </template>
              </a-dsubmenu>
            </a-dgroup>
          </template>
        </a-dropdown>
        <a-dropdown :show-arrow="false" position="top" :popup-translate="[-5, -5]" :content-style="{'min-width': '150px'}">
          <a-button shape="circle"><icon-plus size="18" /></a-button>
          <template #content>
            <a-doption value="image"><icon-file-image /> 图片</a-doption>
            <a-doption value="file"><icon-file /> 本地文件</a-doption>
            <a-doption value="pdf"><icon-file-pdf /> PDF文档分析</a-doption>
            <a-doption value="page"><icon-cloud /> 网页总结</a-doption>
          </template>
        </a-dropdown>
        <a-divider direction="vertical" style="margin: 0 7px;" />
        <a-button class="submit" type="primary" shape="circle" @click="handleSubmit">
          <icon-send v-if="!sessionstate.loading" size="20" />
          <icon-loading v-else size="18" />
        </a-button>
      </div>
    </div>
  </div>
</template>

tauri2接入deepseek流式输出

p6-1.gif

const completion = await openai.chat.completions.create({
  // 单一会话
  messages: [ {role: 'user', content: editorValue} ],
  // 多轮会话
  // messages: props.multiConversation ? historySession.value : [{role: 'user', content: editorValue}],
  model: 'deepseek-chat',
  stream: false, // 非流式输出
  max_tokens: 8192, // 限制一次请求中模型生成 completion 的最大 token 数(默认使用 4096)
  temperature: 0.4, // 严谨采样 越低越严谨(默认1)
})
// 使用数组存储chunk内容,提高拼接效率
let chunks = []
let lastUpdate = 0

// 处理流式输出
for await (const chunk of completion) {
  const content = chunk.choices[0]?.delta?.content || ''
  if(content) {
    chunks.push(content)
    // 限制更新频率:每100ms最多更新一次
    const now = Date.now()
    if (now - lastUpdate > 100) {
      sessionstate.updateSession(botKey, {content: chunks.join('')})
      lastUpdate = now
      // 滚动最底部
      if (sessionstate.reachBottom) {
        props.scrollBottom()
      }
    }
  }
  if(chunk.choices[0]?.finish_reason === 'stop') {
    sessionstate.loading = false
    // 确保最终内容完整更新
    sessionstate.updateSession(botKey, {content: chunks.join(''), loading: false})
    if (sessionstate.reachBottom) {
      props.scrollBottom()
    }
  }
}

Ok,以上就是tauri2+vue3集成deepseek搭建客户端ai流式对话的一些分享,感觉大家的阅读与支持!

目录
相关文章
|
2月前
|
人工智能 安全 架构师
不只是聊天:从提示词工程看AI助手的优化策略
不只是聊天:从提示词工程看AI助手的优化策略
309 119
|
2月前
|
人工智能 监控 安全
提效40%?揭秘AI驱动的支付方式“一键接入”系统
本项目构建AI驱动的研发提效系统,通过Qwen Coder与MCP工具链协同,实现跨境支付渠道接入的自动化闭环。采用多智能体协作模式,结合结构化Prompt、任务拆解、流程管控与安全约束,显著提升研发效率与交付质量,探索大模型在复杂业务场景下的高采纳率编码实践。
430 26
提效40%?揭秘AI驱动的支付方式“一键接入”系统
|
2月前
|
人工智能 数据处理 API
阿里云、Ververica、Confluent 与 LinkedIn 携手推进流式创新,共筑基于 Apache Flink Agents 的智能体 AI 未来
Apache Flink Agents 是由阿里云、Ververica、Confluent 与 LinkedIn 联合推出的开源子项目,旨在基于 Flink 构建可扩展、事件驱动的生产级 AI 智能体框架,实现数据与智能的实时融合。
431 6
阿里云、Ververica、Confluent 与 LinkedIn 携手推进流式创新,共筑基于 Apache Flink Agents 的智能体 AI 未来
|
2月前
|
人工智能 自然语言处理 前端开发
最佳实践2:用通义灵码以自然语言交互实现 AI 高考志愿填报系统
本项目旨在通过自然语言交互,结合通义千问AI模型,构建一个智能高考志愿填报系统。利用Vue3与Python,实现信息采集、AI推荐、专业详情展示及数据存储功能,支持响应式设计与Supabase数据库集成,助力考生精准择校选专业。(239字)
299 12
|
2月前
|
存储 人工智能 搜索推荐
LangGraph 记忆系统实战:反馈循环 + 动态 Prompt 让 AI 持续学习
本文介绍基于LangGraph构建的双层记忆系统,通过短期与长期记忆协同,实现AI代理的持续学习。短期记忆管理会话内上下文,长期记忆跨会话存储用户偏好与决策,结合人机协作反馈循环,动态更新提示词,使代理具备个性化响应与行为进化能力。
455 10
LangGraph 记忆系统实战:反馈循环 + 动态 Prompt 让 AI 持续学习
|
2月前
|
人工智能 自然语言处理 供应链
超越聊天:AI代理——下一代人机交互的雏形
超越聊天:AI代理——下一代人机交互的雏形
166 22
|
2月前
|
机器学习/深度学习 人工智能 JSON
PHP从0到1实现 AI 智能体系统并且训练知识库资料
本文详解如何用PHP从0到1构建AI智能体,涵盖提示词设计、记忆管理、知识库集成与反馈优化四大核心训练维度,结合实战案例与系统架构,助你打造懂业务、会进化的专属AI助手。
266 6
|
2月前
|
人工智能 JSON 安全
Claude Code插件系统:重塑AI辅助编程的工作流
Anthropic为Claude Code推出插件系统与市场,支持斜杠命令、子代理、MCP服务器等功能模块,实现工作流自动化与团队协作标准化。开发者可封装常用工具或知识为插件,一键共享复用,构建个性化AI编程环境,推动AI助手从工具迈向生态化平台。
465 1
|
2月前
|
存储 人工智能 自然语言处理
拔俗AI产投公司档案管理系统:让数据资产 “活” 起来的智能助手
AI产投档案管理系统通过NLP、知识图谱与加密技术,实现档案智能分类、秒级检索与数据关联分析,破解传统人工管理效率低、数据孤岛难题,助力投资决策提效与数据资产化,推动AI产投数字化转型。
|
2月前
|
人工智能 算法 数据安全/隐私保护
拔俗AI多模态心理风险预警系统:用科技守护心理健康的第一道防线
AI多模态心理风险预警系统通过语音、文本、表情与行为数据,智能识别抑郁、焦虑等心理风险,实现早期干预。融合多源信息,提升准确率,广泛应用于校园、企业,助力心理健康服务从“被动响应”转向“主动预防”,为心灵筑起智能防线。(238字)