<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

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

      原創新作vue3.5+deepseek+markdown+vant4仿DeepSeek-R1流式輸出ai聊天對話。

      deepseek-vue3-chat : 實戰2025智能大模型ai會話,基于Vue3+Vite6+OpenAI集成接入DeepSeek聊天小助手模板,支持流式打字輸出效果、淺色/暗黑主題模式、代碼高亮顯示、針對移動端+PC端適配處理。

      Tauri2.0-DeepSeek電腦端Ai對話|tauri2+vite6+deepseek流式ai聊天系統

      flutter3-deepseek流式AI模板|Flutter3.27+Dio+DeepSeeek聊天ai助手

      Uniapp-DeepSeek跨三端AI助手|uniapp+vue3+deepseek-v3流式ai聊天模板

      2025跨平臺Electron35+DeepSeek客戶端ai系統

      最新實戰新作vue3.5+deepseek搭建網頁版AI對話助手

      ??使用技術

      • 開發工具:VScode
      • 技術框架:Vite^6.2.0+Vue^3.5.13+vue-router^4.5.0
      • 大模型框架:DeepSeek-R1 + OpenAI
      • UI組件庫: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. 基于Vue3構建,集成DeepSeek,性能更優,對話絲滑流暢
      3. 支持各種代碼高亮,方便展示和分享代碼片段
      4. 使用vant4組件庫,風格統一,時尚大氣
      5. 支持移動端+PC端750px像素適配,大屏也有良好體驗

      ???項目結構目錄

      vue3-deepseek使用 vite6.x 構建項目模板,采用 vue3 setup 語法編碼開發。

      vue3-deepseek聊天ai對話項目已經同步到我的作品集,感謝大家的鼓勵與支持!

      vue3+vite6+deepseek+vant4流式聊天AI對話模板

      環境變量配置.env

      # title
      VITE_APP_TITLE = 'Vue3-DeepSeek-Chat'
      
      # port 默認http://localhost:5173/
      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

      入口文件配置main.js

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

      布局模板

      如上圖:頁面整體分為頂部導航條+聊天對話區+底部編輯器三個部分。

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

      路由配置

      /**
       * 路由配置
       * @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+pinia狀態管理

      /**
       * 狀態管理 Pinia
       * @author andy
       */
      
      import { createPinia } from 'pinia'
      // 引入pinia本地持久化存儲
      import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
      
      const pinia = createPinia()
      pinia.use(piniaPluginPersistedstate)
      
      export default pinia

      vue3和deepseek聊天會話都保存在本地存儲中。

      export const chatStore = defineStore('chat', {
        state: () => ({
          // 聊天會話記錄
          sessionId: '',
          session: []
        }),
        getters: {},
        actions: {
          // 創建新對話
          createSession(ssid) {
            this.sessionId = ssid
            this.session.unshift({
              sessionId: ssid,
              title: '',
              data: []
            })
          },
      
          // 新增會話
          addSession(message) {
            // 判斷當前會話uuid是否存在,不存在創建新對話
            if(!this.sessionId) {
              const ssid = guid()
              this.createSession(ssid)
            }
            this.session.map(item => {
              if(item.sessionId == this.sessionId) {
                if(!item.title) {
                  item.title = message.content
                }
                item.data.push(message)
              }
            })
          },
      
          // 更新某一條會話
          updateSession(key, content) {
            this.session.map(item => {
              if(item.sessionId == this.sessionId) {
                if(item.data && !isEmpty(item.data)) {
                  item.data.map((it, index) => {
                    if(it.key == key) {
                      it.content = content
                    }
                  })
                }
              }
            })
          },
      
          // 獲取會話
          getSession() {
            return this.session.find(item => item.sessionId == this.sessionId)
          },
      
          // 移除會話
          removeSession(ssid) {
            const index = this.session.findIndex(item => item?.sessionId === ssid)
            if(index > -1) {
              this.session.splice(index, 1)
            }
            this.sessionId = ''
          },
          // 刪除某一條會話
          deleteSession(key) {
            this.session.map(item => {
              if(item.sessionId == this.sessionId) {
                if(item.data && !isEmpty(item.data)) {
                  item.data.map((it, index) => {
                    if(it.key == key) {
                      item.data.splice(index, 1)
                    }
                  })
                }
              }
            })
          },
      
          // 清空會話
          clearSession() {
            this.session = []
            this.sessionId = ''
          }
        },
        // 本地持久化存儲(默認存儲localStorage)
        persist: true
        /* persist: {
          // key: 'chatStore', // 不設置則是默認app
          storage: localStorage,
          paths: ['ssid', 'sessions'] // 設置緩存鍵
        } */
      })

      vue3調用deepseek接口

      • 非流式輸出
      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)
      • 流式輸出

      通過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+deepseek實戰ai對話小助手的一些知識分享,希望對大家有所幫助!感謝大家的閱讀與支持~

      Tauri2.0-DeepSeek電腦端Ai對話|tauri2+vite6+deepseek流式ai聊天系統

      Uniapp-DeepSeek跨三端AI助手|uniapp+vue3+deepseek-v3流式ai聊天模板

      Electron35-DeepSeek桌面端AI系統|vue3.5+electron+arco客戶端ai模板

      vue3-webseek網頁版AI問答|Vite6+DeepSeek+Arco流式ai聊天打字效果

      附上幾個最新實戰項目案例

      flutter3-winseek客戶端AI實例|Flutter3.32+DeepSeek流式ai對話模板Exe

      flutter3-trip仿攜程酒店預訂|Flutter3.27+Getx預約旅游酒店App程序

      flutter3-dymall仿抖音直播商城|Flutter3.27短視頻+直播+聊天App實例

      Vite5+Electron聊天室|electron31跨平臺仿微信EXE客戶端|vue3聊天程序

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

      Tauri2.0-Vue3OS桌面端os平臺|tauri2+vite6+arco電腦版OS管理系統

      tauri2.0-admin桌面端后臺系統|Tauri2+Vite5+ElementPlus管理后臺EXE程序

      flutter3-winchat桌面端聊天實例|Flutter3+Dart3+Getx仿微信Exe程序

      uniapp+vue3酒店預訂|vite5+uniapp預約訂房系統模板(h5+小程序+App端)

       

      posted @ 2025-03-15 12:28  xiaoyan2017  閱讀(7844)  評論(4)    收藏  舉報
      友情鏈接: UP主小店B站
      主站蜘蛛池模板: 精品亚洲香蕉久久综合网| 亚洲精品久荜中文字幕| 在线a亚洲老鸭窝天堂| 女人与牲口性恔配视频免费| 精品国产成人网站一区在线| 国产女人喷潮视频免费 | 啦啦啦高清在线观看视频www| 色吊丝一区二区中文字幕| 国产在线精品成人一区二区| 国内自拍视频在线一区| 国产精品中文第一字幕| 午夜免费无码福利视频麻豆| 国产黄色一区二区三区四区| 免费又黄又爽又猛的毛片| 少妇午夜福利一区二区三区 | 亚洲av激情久久精品人| 久久久久成人片免费观看蜜芽| 国产福利在线观看免费第一福利| 欧美大bbbb流白水| 国内少妇人妻偷人精品视频| 国产亚洲AV电影院之毛片| 五月开心六月丁香综合色啪| 又粗又大又黄又硬又爽免费看| 久久婷婷五月综合97色直播| 亚洲天堂av在线免费看| 国产成人高清亚洲综合| 少妇人妻精品无码专区视频| 日韩高清国产中文字幕| 十八岁污网站在线观看| 国产不卡一区二区在线视频| 国产精品一区在线蜜臀| 国产人妻大战黑人第1集| 国产精品久久久久久久9999| 久久精品国产亚洲精品色婷婷| 国产精品久久久久久福利69堂| 精品粉嫩国产一区二区三区| 夜鲁鲁鲁夜夜综合视频| 国产h视频在线观看| 色欲色香天天天综合网站免费| 97色伦97色伦国产| 三江|