基于 Vue3 + TypeScript + Element Plus 建立 DeepSeek AI 对话界面(流式输出)

news/2026/1/24 10:38:27/文章来源:https://www.cnblogs.com/yangykaifa/p/19525438

前言

最近在开发一个后台管理系统时,需要集成 AI 对话功能。经过调研,选择了 DeepSeek API 作为后端服务,使用 Vue3 + TypeScript + Element Plus 实现了一个功能完善的对话界面。本文将详细介绍实现过程,包括流式输出、思考模式、对话历史管理等核心功能。

项目概述

本项目实现了一个完整的 DeepSeek AI 对话界面,支持:

️ 技术栈

  • 前端框架: Vue 3.5.13 (Composition API)
  • 类型系统: TypeScript 5.8.3
  • UI 组件库: Element Plus 2.11.9
  • HTTP 客户端: Axios 1.13.2
  • AI SDK: OpenAI SDK 6.10.0 (兼容 DeepSeek API)
  • 构建工具: Vite 6.3.5
  • 样式预处理: Less 4.3.0

项目结构

src/views/index/
├── index.vue      # 主组件(UI 界面)
├── index.ts       # 业务逻辑(API 调用、对话管理)
└── index.scss     # 样式文件

核心功能实现

1. 流式回答实现

流式回答是核心功能之一,让 AI 的回答能够逐字显示,提升用户体验。

1.1 API 调用层(index.ts)
// 聊天 - 支持流式和思考模式
export async function main(
userMessage?: string,
model: string = "deepseek-chat",
options?: {

stream?: boolean;           // 是否流式输出
thinkingMode?: boolean;     // 是否思考模式
onStreamChunk?: (chunk: string) => void;  // 流式数据回调
}
) {

try {

// 如果提供了用户消息,添加到历史
if (userMessage) {

addMessageToHistory({
 role: "user", content: userMessage });
}
// 构建消息数组,包含系统提示和对话历史
const conversation = conversations.find((c) => c.id === currentConversationId);
const historyMessages = conversation?.messages || [];
const messages: Message[] = [
{
 role: "system", content: "You are a helpful assistant." },
...historyMessages,
];
// 流式模式
if (options?.stream) {

const stream = await openai.chat.completions.create({

messages: messages as any,
model: model,
stream: true,
});
let fullContent = "";
for await (const chunk of stream) {

const content = chunk.choices[0]?.delta?.content || "";
if (content

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1209329.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VMware ESXi 9.0.2.0 macOS Unlocker OEM BIOS 2.7 Realtek 网卡驱动定制版

ESXi 9.0.2.0 Realtek 网卡(RTL8111 / RTL8125 / RTL8126 / RTL8127)定制版ESXi 9.0.2.0 Realtek 网卡(RTL8111 / RTL8125 / RTL8126 / RTL8127)定制版 VMware ESXi 9.0.2.0 macOS Unlocker & OEM BIOS 2.7 集…

Z-Image-Turbo日志查看技巧,快速定位运行问题

Z-Image-Turbo日志查看技巧,快速定位运行问题 1. 为什么日志是排查Z-Image-Turbo问题的第一把手 当你在本地浏览器打开 http://127.0.0.1:7860 却只看到空白页、加载转圈、报错弹窗,或者生成图片时卡住、出错、提示“CUDA out of memory”,…

MinerU电商应用场景:商品说明书结构化提取案例

MinerU电商应用场景:商品说明书结构化提取案例 在电商运营中,商品说明书往往以PDF形式存在——可能是厂家提供的技术文档、产品参数表,也可能是第三方检测报告。这些文件通常排版复杂:多栏布局、嵌套表格、公式图表混排、扫描件模…

基于MATLAB的三维装箱程序实现(遗传算法+模拟退火优化)

一、核心算法框架 三维装箱问题通过遗传算法(GA)全局搜索与模拟退火(SA)局部优化结合,解决多约束条件下的最优装箱问题。核心流程如下:数据输入:读取货物尺寸(长宽高)和货箱尺寸初始化种群:生成随机装箱方案…

在 IDEA 中,GIT 合并分支时选择远程的 dev 分支和本地的 dev 分支,有区别吗

我现在要把 dev 分支合并到 prd 分支,我选择本地 dev 分支和远程 dev 分支有区别吗 是的,有非常大的区别。在将 dev 分支合并到 prd 分支时,选择“本地 dev”还是“远程 dev”直接决定了你合并进去的代码是否是最新的。 简单来说:…

MinerU vs PDF-Extract-Kit实战对比:多模态提取谁更准?详细步骤

MinerU vs PDF-Extract-Kit实战对比:多模态提取谁更准? 在处理科研论文、技术白皮书、财报报告等专业PDF文档时,你是否也遇到过这些问题: 多栏排版一提取就乱序,段落东拼西凑;表格变成一堆空格和换行符&a…

电商设计必备!Qwen-Image-Layered轻松替换商品背景和文字

电商设计必备!Qwen-Image-Layered轻松替换商品背景和文字 在电商运营中,一张高质量的商品主图往往决定点击率与转化率。但现实很骨感:设计师要反复抠图、换背景、调色、加文案,一张图耗时30分钟起步;运营人员想快速改…

颠覆性系统优化工具:Windows Cleaner终极解决方案

颠覆性系统优化工具:Windows Cleaner终极解决方案 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 系统优化与空间释放正成为现代Windows用户的核心需求…

PyTorch轻量化模型在树莓派5人脸追踪中的应用指南

以下是对您提供的博文内容进行 深度润色与工程化重构后的终稿 。我以一位长期深耕嵌入式AI部署的一线工程师视角,彻底重写了全文: - 去除所有AI腔调和模板化结构 (如“引言/概述/总结”等机械分节); - 强化技术…

做二手物品估价小程序,输入物品品类,使用时长,新旧程度,参考同平台二手成交数据,自动给出合理报价区间,标注定价技巧。

1. 实际应用场景描述在闲鱼、转转等二手交易平台上,卖家常常面临如何定价的问题:- 定价过高,无人问津;- 定价过低,损失利润。卖家需要参考同类商品的近期成交价,结合物品的品类、使用时长、新旧程度来估算合…

3步精通专业级游戏存档编辑:从原理到实践的完整指南

3步精通专业级游戏存档编辑:从原理到实践的完整指南 【免费下载链接】NHSE Animal Crossing: New Horizons save editor 项目地址: https://gitcode.com/gh_mirrors/nh/NHSE 游戏存档编辑技术作为游戏修改领域的重要分支,为玩家提供了定制化游戏体…

全面解析SEO从零起步的实用技巧与策略

本文旨在为初学者提供关于SEO从零起步的全方位指导。首先,明确理解SEO的基础概念及其必要性,能够帮助新手快速融入这一领域。接下来,将聚焦于关键词研究的重要性,通过合适的工具选择相关关键词,从而为网站优化打下基础…

Qwen vs Llama3轻量模型对比:谁更适合低成本AI对话?实战评测

Qwen vs Llama3轻量模型对比:谁更适合低成本AI对话?实战评测 1. 为什么轻量模型正在成为AI落地的“新刚需” 你有没有遇到过这样的情况:想在一台老笔记本、树莓派,甚至公司闲置的旧办公电脑上跑个AI助手,结果刚下载完…

自媒体配图神器!Z-Image-Turbo一键生成吸睛封面

自媒体配图神器!Z-Image-Turbo一键生成吸睛封面 1. 为什么自媒体人急需这台“配图印钞机” 你有没有过这样的深夜: 赶着发一条小红书笔记,文案写好了,发布时间卡在流量高峰前30分钟——可封面图还在反复重试。 输入“极简风咖啡…

Scilab介绍,和Octave,Matlab比较

文章目录一、Scilab 简介✅ 核心特性📌 典型应用场景二、三者核心对比三、语法差异示例1. **矩阵定义**2. **函数定义**3. **绘图**4. **字符串**四、优势与劣势分析✅ **Scilab 优势**❌ **Scilab 劣势**✅ **Octave 优势**❌ **Octave 劣势**✅ **MATLAB 优势**❌…

系统清理工具全攻略:从磁盘告急到电脑重生的完整指南

系统清理工具全攻略:从磁盘告急到电脑重生的完整指南 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 系统清理工具是维护电脑健康的关键软件&#xff…

AAAI 2026 最佳论文公布!华人占3篇!图灵奖得主Bengio斩获大奖!

点击下方卡片,关注“CVer”公众号 AI/CV重磅干货,第一时间送达 点击进入—>【顶会/顶刊】投稿交流群 添加微信号:CVer2233,小助手拉你进群! 扫描下方二维码,加入CVer学术星球!可以获得最新顶…

边缘设备部署BERT:树莓派上运行中文语义填空系统实测

边缘设备部署BERT:树莓派上运行中文语义填空系统实测 1. 这不是“大模型”,是能塞进树莓派的中文语义填空专家 你有没有试过在手机备忘录里写半句诗,突然卡壳,想不起下个字?或者编辑文案时反复删改,就为了…

传统vsAI:矩阵求逆效率对比实验报告

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 生成一个矩阵求逆性能对比项目,要求:1. 实现高斯消元法、LU分解等3种传统算法 2. 添加AI优化版本 3. 设计自动化测试框架 4. 可视化性能对比图表 5. 支持从…

IQuest-Coder-V1-40B-Instruct环境部署:Conda配置详细步骤

IQuest-Coder-V1-40B-Instruct环境部署:Conda配置详细步骤 1. 为什么需要专门配置这个模型的运行环境? IQuest-Coder-V1-40B-Instruct不是那种装完Python就能直接跑的轻量工具。它是个400亿参数的代码大语言模型,专为软件工程和竞技编程设计…