vue3+dify从零手撸AI对话系统

vue3+dify从零手撸AI对话系统

前言

  近年来,人工智能技术呈现爆发式增长,其应用已深度渗透至各行各业。甚至家里长辈们也开始借助AI工具解决日常问题。作为程序员群体,我们更应保持技术敏锐度,紧跟这波浪潮。

  回溯求学时期,在高中阶段自学Python时便察觉到AI的巨大潜力。遗憾的是,当年报考的院校尚未开设相关专业,大学期间参与的AI社团也未能深入探索。这段经历反而让我深刻认识到:在技术迭代加速的当下,持续学习比系统培养更为关键。

  如今AI浪潮已席卷全球,近期工作中频繁接触的AI开发需求印证了这一趋势。恰逢周末闲暇,我利用一天时间完成了从调研到开发的流程。对比当年为手写识别算法苦思冥想数日的经历,如今借助成熟的AI框架和开放接口,复杂对话系统的搭建已变得高效便捷。这种技术代际跨越带来的震撼体验,正是推动我持续探索的动力源泉。接下来,我将系统分享本次实践的技术路径与实现过程。

效果图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注:其他功能就不一一展示了,整个项目都开源在GitHub,需要的同学私聊我获取仓库地址。本人作品免费开源,喜欢的同学点赞收藏哦~

技术栈

  • 基础框架: Vue3、Vite、TS
  • 前端组件库:TDesign(TD Chat for AI、Vue Next for Web)
  • AI接口:dify平台提供
  • AI模型:deepseek-V3、deepseek-R1

调研和开发流程

  • Dify

      简介:Dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务(Backend as Service)和 LLMOps 的理念,使开发者可以快速搭建生产级的生成式 AI 应用。即使你是非技术人员,也能参与到 AI 应用的定义和数据运营过程中。

      使用简单方便,如果没有特殊需求,只要配置LLM中的模型即可,配置完成后可即时预览。点击发布,在访问API菜单中获取你的APIkey,参考接口文档就可以在程序中直接调用相关接口。

在这里插入图片描述

  • DeepSeek

      简介:DeepSeek凭借自然语言处理、机器学习与深度学习、大数据分析等核心技术优势,在推理、自然语言理解与生成、图像与视频分析、语音识别与合成、个性化推荐、大数据处理与分析、跨模态学习以及实时交互与响应等八大领域表现出色。它能进行逻辑推理、解决复杂问题,理解和生成高质量文本,精准分析图像和视频内容,准确识别和合成语音,根据用户偏好提供个性化推荐,高效处理大规模数据并挖掘有价值信息,实现多模态数据融合与学习,以及通过智能助手和聊天机器人实现快速的自然语言交互。

      不必多说,很火的一个AI,进入他的开放平台,在APIkeys菜单中获取你的key,即可在dify中进行配置,也可以跳过dify平台,直接参考其接口文档中的接口调用。不要忘记充值,不然会报错,我替你们试过了。

在这里插入图片描述

  • TDesign

      简介:TDesign 是腾讯第一个对外开源的企业级设计体系,基于腾讯海量业务沉淀,为 PC、Mobile、小程序等平台提供丰富组件库,通过统一组件 API 接口为上层业务开发提供跨平台和跨端的同构方案。TDesign 具有统一的 价值观,一致的设计语言和视觉风格,帮助用户形成连续、统一的体验认知。

      前端组件库我看了很多,包括element-plus-x、ant-design-x、mateChat等。经过我的多次尝试,最终选择了TDesign,他有提供完善的组件ts代码、种类丰富、扩展性好,语法也比较符合我的编码习惯。其他的当然也很优秀,只是这个更适合我。

在这里插入图片描述

结束语

  在AI技术日新月异的今天,我们既是见证者,更是建设者。从算法原理的钻研到实际场景的落地,每一次技术突破都离不开持续的实践与迭代。本次实践虽仅是AI开发长河中的一朵浪花,却印证了"站在巨人肩膀上创新"的真理——成熟的框架、开放的生态与活跃的社区,正在让复杂技术平民化。未来,我期待与更多同行者共同探索AI边界,用代码编织更智能的世界。技术之路永无止境,愿我们始终保持对未知的好奇、对难题的勇气,以及——最重要的——将技术转化为价值的行动力。

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

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

相关文章

robot_lab train的整体逻辑

Go2机器人推理(Play)流程详细分析 概述 本文档详细分析了使用命令 python scripts/rsl_rl/base/play.py --task RobotLab-Isaac-Velocity-Rough-Unitree-Go2-v0 进行Go2机器人推理的完整流程,基于实际的代码实现,包括模型加载、环境配置调整、推理循环…

Python Day45

Task: 1.tensorboard的发展历史和原理 2.tensorboard的常见操作 3.tensorboard在cifar上的实战:MLP和CNN模型 效果展示如下,很适合拿去组会汇报撑页数: 作业:对resnet18在cifar10上采用微调策略下,用tens…

MySQL SQL 优化:从 INSERT 到 LIMIT 的实战与原理

在数据库驱动的现代应用中,SQL 查询的性能直接决定了用户体验和系统效率。本文将深入探讨 MySQL (特别是 InnoDB 存储引擎)中常见的 SQL 性能瓶颈,并结合实际案例,详细剖析从数据插入到复杂分页查询的优化策略与底层实…

SQL 基础入门

SQL 基础入门 SQL(全称 Structured Query Language,结构化查询语言)是用于操作关系型数据库的标准语言,主要用于数据的查询、新增、修改和删除。本文面向初学者,介绍 SQL 的基础概念和核心操作。 1. 常见的 SQL 数据…

HTTP 请求协议简单介绍

目录 常见的 HTTP 响应头字段 Java 示例代码:发送 HTTP 请求并处理响应 代码解释: 运行结果: 文件名: 总结: HTTP(HyperText Transfer Protocol)是用于客户端与服务器之间通信的协议。它定…

《100天精通Python——基础篇 2025 第5天:巩固核心知识,选择题实战演练基础语法》

目录 一、踏上Python之旅二、Python输入与输出三、变量与基本数据类型四、运算符五、流程控制 一、踏上Python之旅 1.想要输出 I Love Python,应该使用()函数。 A.printf() B.print() C.println() D.Print() 在Python中想要在屏幕中输出内容,应该使用print()函数…

求解一次最佳平方逼近多项式

例 设 f ( x ) 1 x 2 f(x)\sqrt{1x^2} f(x)1x2 ​,求 [ 0 , 1 ] [0,1] [0,1]上的一个一次最佳平方逼近多项式。 解 : d 0 ∫ 0 1 1 x 2 d x 1 2 ln ⁡ ( 1 2 ) 2 2 ≈ 1.147 d_0\int_{0}^{1}\sqrt{1x^2}dx\frac{1}{2}\ln(1\sqrt{2})\frac{\sqrt…

在Ubuntu上使用 dd 工具制作U盘启动盘

在Ubuntu上使用 dd 工具制作U盘启动盘 在Linux系统中,dd 是一个功能强大且原生支持的命令行工具,常用于复制文件和转换数据。它也可以用来将ISO镜像写入U盘,从而创建一个可启动的操作系统安装盘。虽然图形化工具(如 Startup Disk…

如何理解OSI七层模型和TCP/IP四层模型?HTTP作为如何保存用户状态?多服务器节点下 Session方案怎么做

本篇概览: OSI 七层模型是什么?每一层的作用是什么?TCP/IP四层模型和OSI七层模型的区别是什么? HTTP 本身是无状态协议,HTTP如何保存用户状态? 能不能具体说一下Cookie的工作原理、生命周期、作用域?使用…

深入剖析 RocketMQ 中的 DefaultMQPushConsumerImpl:消息推送消费的核心实现

前言 在 Apache RocketMQ 的消息消费体系中,RocketMQ 提供了DefaultMQPushConsumer(推送消费)和DefaultMQPullConsumer(拉取消费)两种主要消费方式。DefaultMQPushConsumer与DefaultMQPullConsumer在消息获取方式&…

Linux编程:2、进程基础知识

一、进程基本概念 1、进程与程序的区别 程序:静态的可执行文件(如电脑中的vs2022安装程序)。进程:程序的动态执行过程(如启动后的vs2022实例),是操作系统分配资源的单位(如 CPU 时…

React Router 中 navigate 后浏览器返回按钮不起作用的问题记录

React Router 中 navigate 后浏览器返回按钮不起作用的问题记录 在使用 React Router(v6)开发项目时,我遇到了一个让人困惑的问题: 当我从 /article 页面使用 navigate("/article/next") 进行跳转后,点击浏…

[面试精选] 0094. 二叉树的中序遍历

文章目录 1. 题目链接2. 题目描述3. 题目示例4. 解题思路5. 题解代码6. 复杂度分析 1. 题目链接 94. 二叉树的中序遍历 - 力扣(LeetCode) 2. 题目描述 给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。 3. 题目示例 示例 1 : 输入&…

Addressable-配置相关

1、Profile 概述窗口配置 主要用于配置Addressable打包(构建)加载AB包时使用的一些变量,这些变量定义了 在哪里保存打包(构建)的AB包运行时在哪里加载AB包 可以添加自定义变量,以便在打包加载时使用,之后在设置 组中…

aws(学习笔记第四十三课) s3_sns_sqs_lambda_chain

文章目录 aws(学习笔记第四十三课) s3_sns_sqs_lambda_chain学习内容:1. 整体架构1.1 代码链接1.2 整体架构1.3 测试代码需要的修改1.3.1 unit test代码中引入stack的修改1.3.2 test_outputs_created代码中把错误的去掉 2. 代码解析2.1 生成dead_letter_queue死信队…

Python训练营打卡Day43

kaggle找到一个图像数据集,用cnn网络进行训练并且用grad-cam做可视化 进阶:并拆分成多个文件 config.py import os# 基础配置类 class Config:def __init__(self):# Kaggle配置self.kaggle_username "" # Kaggle用户名self.kaggle_key &quo…

hive 3集成Iceberg 1.7中的Java版本问题

hive 3.1.3 集成iceberg 1.7.2创建Iceberg表报错如下: Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/iceberg/mr/hive/HiveIcebergStorageHandler has been compiled by a more recent version of the Java Runtime …

文本切块技术(Splitter)

为什么要分块? 将长文本分解成适当大小的片段,以便于嵌入、索引和存储,并提高检索的精确度。 用ChunkViz工具可视化分块 在线使用 ChunkViz github https://github.com/gkamradt/ChunkViz 如何确定大模型所能接受的最长上下文 可以从…

C++:用 libcurl 发送一封带有附件的邮件

编写mingw C 程序&#xff0c;用 libcurl 发送一封带有附件的邮件 下面是一个使用 MinGW 编译的 C 程序&#xff0c;使用 libcurl 发送带附件的邮件。这个程序完全通过代码实现 SMTP 邮件发送&#xff0c;不依赖外部邮件客户端&#xff1a; // send_email.cpp #include <i…

tensorflow image_dataset_from_directory 训练数据集构建

以数据集 https://www.kaggle.com/datasets/vipoooool/new-plant-diseases-dataset 为例 目录结构 训练图像数据集要求&#xff1a; 主目录下包含多个子目录&#xff0c;每个子目录代表一个类别。每个子目录中存储属于该类别的图像文件。 例如 main_directory/ ...cat/ ...…