当前位置: 首页 > news >正文

动手学大模型应用开发笔记--用dash开发一个大模型知识库

简介

动手学,把自己学到的东西动手自己做出来并输出,是最好的学习方式。最近一直在关注和使用各种ai工具,也在学一些ai开发的知识,看到datawhale的开源学习教程,动手学大模型开发( [github.com/datawhalech…])这个教程比较全面,正好可以结合自己常用的数据平台开发工具dash来开发一个web界面,做个简单的demo用起来,可以本地调用各种大模型api来和自己的文本知识库来对话。本来准备报名进群一起学习的,看到的时候报名时间刚好过了半天,就自己来自学一下了。先来看一下做出来的结果吧:

代码开源在这里: github.com/qibaizhang/…

可以这样运行:

# 新建虚拟环境
conda create -n zsk python=3.11  -y# 进入环境
conda activate zsk# 克隆项目
git clone https://github.com/qibaizhang/chat_kb_app.git# 进入项目根目录
cd chat_kb_app# 安装项目依赖环境
pip install -r requirements.txt# 运行项目
python wsgi.py#浏览器打开http://127.0.0.1:8055/就可以看到界面,如果要局域网访问,把localhost改成0.0.0.0
  • web应用开发主要采用Dash(基于flask和react)、feffery-antd-components(feffery老师封装的的ant design组件库 github.com/CNFeffery/f… )等一些配套的dash组件库,可以用纯python迅速开发迭代。
  • 后端大模型开发用langchain和chroma向量数据库,主要运用这个datawhale开源教程里面讲述的相关大模型开发知识。

主要功能

  1. 可以选择大模型厂商,填写自己的key和模型等参数,现在支持智谱,openai,讯飞星火,百度文心这几家的模型,默认用的智谱glm4。

  1. 可以选择直接和不同的大模型不带知识库对话或者和自己上传文档建立的知识库对话,选择知识库对话会先根据问题检索向量数据库里面相关的文本返回再和大模型对话。

  1. 知识库对话需要在右边上传文档界面先上传pdf或者md文件上传并向量入库,可以选择不同厂商的embedding模型,现在有智谱和openai的,默认是智谱的模型。

  1. 知识库对话可以自己填写提示词来不断迭代提示词,取得更好的效果,默认用教程里面的提示词。

  1. 对话界面可选支持单轮和带历史记录多轮对话,默认单轮对话。

  1. 可以保存当前界面的全部历史聊天记录为md并下载,先点击保存,然后再点击下载。

  1. 可以一键清除当前界面全部历史聊天记录。

左上角输入相应模型自己的key之后就可以开始在中间对话框输入问题了。

开发过程

后端

后端主要就是和大模型的交互,以及向量数据库的处理,用langchain可以统一不同大模型和向量数据库调用,主要就是就按照教程里面的相关知识,就是把智谱的调用对话改成直接在最新的langchain版本调用,不用自定义了,先在jupyter notebook里面把逻辑都跑通了。

前端

后端逻辑跑通之后,就是要开始做前端界面展示出来了,现在大部分ai应用界面都是用的gradio和streamlit来做的,因为自己平时主要在用dash开发web应用,自由度和可扩展性都更好一些,也是纯python可以迅速开发,也可以结合传统html、css和js各种自定义,就用dash来开发界面,教程只是开发了一个简单界面demo,然后也说了一下优化方向,我就把这几个一起用自己的方式来实现了一下。

现在这个版本就是实现了这些基础功能,后续继续迭代。整个完整代码都在前面的开源地址里面,感兴趣的可以自己查看下载运行。

存在问题

现在有一个问题就是上传不同的文本格式到向量数据库,教程里面只讲了两种类型pdf和md格式的,我查询langchain文档里面的相关接口,测试别的格式文本,在jupyter notebook里面可以成功入库,但是在应用里同样代码不知道为什么不能成功,暂时只能成功教程里面的这两种格式,别的格式可以转换成pdf或者md再上传,还需要查找出问题改进。

可以用来做什么

  1. 学习的时候查资料,可以把自己在学习的资料传到向量数据库,然后中间碰到某些问题,直接用大模型查资料返回知识库的结果。
  2. 公司里面一些文本资料比如档案,招标文件,客服资料,培训文档等这些入库,通过大模型来调用知识库对话,返回结果,如果要纯本地的,可以自己部署离线模型,把接口改造一下就可以调用自己的本地模型。
  3. 可以更改不同的知识库提示词模板迭代,收集bad case ,优化迭代,还可以保存对话记录,可以先看看默认提示词的效果

然后改成这段提示词

结果如下

可以看到,不同提示词,效果明显有差别,可以不断修改迭代。

  1. 可以测试不同大模型api的能力,只要是langchian支持的大模型接口,都可以接入进行调用测试,现在不同厂商都会新用户送一些token来使用,可以都用一下,看看哪个更适合自己。比如默认的智谱新注册实名认证就会有400万一个月期限的token可以使用,各家不一样。

如何学习AI大模型?

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

在这里插入图片描述

👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

在这里插入图片描述

1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 网络空间资产测绘:为安全防护“画出”实时“地图”
  • SPIFFS与LittleFS的对gz文件格式的区别
  • 静态IP代理和动态IP代理的区别
  • 使用ollama分别在我的window、mac、小米手机上部署体验llama3-8b(文末有福利)
  • C++——C++11
  • 【深度学习】VITS中的条件VAE,VAE的隐变量z为何要服从正太分布(2)
  • python == 与 is区别
  • 零基础入门转录组数据分析——机器学习算法之xgboost(筛选特征基因)
  • 返校季热度持续发酵,赛盈分销浅谈下半年选品趋势!
  • vue3父子组件通信
  • 开源大模型(LLM)震撼来袭:解锁AI语言处理新纪元,引领全球开发者共创未来!
  • 树与二叉树【下】
  • nagle算法作用
  • 采购在供应链管理中有什么作用?8个步骤拆解供应链采购流程!
  • Java工厂模式详解:方法工厂模式与抽象工厂模式
  • 网络传输文件的问题
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • [译] 怎样写一个基础的编译器
  • 30秒的PHP代码片段(1)数组 - Array
  • CSS盒模型深入
  • exif信息对照
  • input的行数自动增减
  • IP路由与转发
  • JavaWeb(学习笔记二)
  • js
  • js ES6 求数组的交集,并集,还有差集
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • scala基础语法(二)
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 对象管理器(defineProperty)学习笔记
  • 三栏布局总结
  • 什么软件可以剪辑音乐?
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 怎样选择前端框架
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • ​ubuntu下安装kvm虚拟机
  • # Spring Cloud Alibaba Nacos_配置中心与服务发现(四)
  • #FPGA(基础知识)
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (多级缓存)多级缓存
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • .libPaths()设置包加载目录
  • .NET Core、DNX、DNU、DNVM、MVC6学习资料
  • .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖
  • .NetCore部署微服务(二)
  • .net打印*三角形
  • .net之微信企业号开发(一) 所使用的环境与工具以及准备工作