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

news2024/11/17 17:32:11

简介

动手学,把自己学到的东西动手自己做出来并输出,是最好的学习方式。最近一直在关注和使用各种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%免费】🆓

在这里插入图片描述

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

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

相关文章

高频面试题基本总结回顾(含笔试高频算法整理)暂存篇

干货分享,感谢您的阅读! (暂存篇---后续会删除,完整版和持续更新见高频面试题基本总结回顾(含笔试高频算法整理)) 备注:引用请标注出处,同时存在的问题请在相关博客留言…

dockerfile部署镜像 ->push仓库 ->虚拟机安装建木 ->自动部署化 (详细步骤)

目录 创建私服仓库 vi /etc/docker/daemon.json vim deploy.sh判断脚本内容 创建 建木 后端部署 命名空间 设置密码用户名 创建git仓库 gitignore文件内容 图形项目操作 git maven docker镜像 点击流程日志 vim /etc/docker/daemon.json 执行部署脚本 ip 开发…

代码性能优化(3)——聊聊多线程

代码的性能优化,有些是从逻辑层面进行的,比如同时对50W个人发放奖励,可以改成用户登录的时候,自动领取有没奖励,或者统计每日的每个业务员的销售额和实时累积的销售额,将实时sum函数改成,每一笔…

24种设计模式介绍与6大设计原则(电子版教程)

前言 您是一个初级的 coder,可以从中领会到怎么设计一段优秀的代码;您是一个高级程序员,可以从中全面了解到设计模式以及 Java 的边角技术的使用;您是一个顶级的系统分析师,可以从中获得共鸣,寻找到项目公共问题的解决…

StarRock3.3 安装部署

服务器前置要求: 1、内存>32GB 2、JDK 8 is not supported, please use JDK 11 or 17 1、安装 wget https://releases.starrocks.io/starrocks/StarRocks-3.3.0.tar.gz tar zxvf StarRocks-3.3.0.tar.gz 2、FE服务启动 2.1 配置FE节点(默认配置,…

dns和 openELB

DNS yum -y install bind允许其他的主机来监听,允许其他的主机来查询,改这两个地方就行了。 把需要解析的文件都添加进来,cp -p的意思是保留原来的权限控制 注意本地dns放在 DNS1 二、负载均衡 OpenELB Layer2 模式 BGP模式 OpenELB …

DBeaver使用SQL脚本编辑器

文章目录 1 新建脚本2 选择数据库3 编写脚本【按行执行】参考 1 新建脚本 2 选择数据库 3 编写脚本【按行执行】 光标放到需要执行的行上,点击【最上面的按钮】 或者选中某片代码,然后执行 也可以编写一个脚本然后执行 参考 dbeaver安装和使用教程 …

Linux文件恢复

很麻烦 一般还是小心最好 特别恢复的时候 可能不能选择某个文件夹去扫描恢复 所以 删除的时候 用rm -i代替rm 一定小心 以及 探索下linux的垃圾箱机制 注意 一定要恢复到不同文件夹 省的出问题 法1 系统自带工具 debugfs 但是好像不能重启? testdisk 1、安装 …

酒店智能门锁接口pro[0922]D801 对接收银-SAAS本地化-未来之窗行业应用跨平台架构

proUSB接口函数[0922中性版]-D801 调用函数库: 提供Windows下的32位动态连接库proRFL.DLL,函数使用详细说明 //-----------------------------------------------------------------------------------// 功能:读DLL版本,不涉…

【大数据】:hdfs相关进程启停管理命令

HADOOP_HOME/sbin/start-dfs.sh,一键启动HDFS集群 执行原理: 在执行此脚本的机器上,启动SecondaryNameNode 读取core-site.xml内容(fs.defaultFS项),确认NameNode所在机器,启动NameNode 读取wor…

AI变现:科技与商业化的交织

随着科技的飞速发展,人工智能(AI)已经从科幻电影中的概念走进了现实生活的各个领域,深刻影响着经济、社会与科技的发展。AI不仅代表着技术的革新,更是推动商业变现的重要力量。本文将深入剖析AI的发展历程,…

数据结构(5.3_5)——二叉树的线索化

第一种寻找中序前驱方法 中序线索化 本质上就是一次中序遍历,只不过需要在一边遍历一边处理结点线索化 代码: //全局变量pre 指向当前访问结点的前驱 ThreadNode* pre NULL;struct ElemType {int value; };//线索二叉树结点 typedef struct ThreadNode…

姜夔,师法自然的不仕道人

姜夔(ku),字尧章,号白石道人,约生于南宋绍兴二十四年(公元1154年),卒于南宋嘉定十四年(公元1221年),享年67岁。他的艺术成就涵盖了诗词、散文、书…

JAVA (IO流) day7.25

ok了家人们今天继续学习io流,废话不多说,我们一起看看吧 一.File类 1.1 File类的概述 通过 File 类与 IO 流进行搭配使用就可以通过 Java 代码将数 据从内存写入到硬盘文件 或者从硬盘文件读取到内存 中。 File 类就是文件和目录路径名的抽象表示形式…

ElasticSearch(es)倒排索引

目录 一、ElasticSearch 二、倒排索引 1. 正向索引 2. 倒排索引 具体细节 1. 文档分析 2. 索引构建 3. 索引存储 4. 词条编码 5. 索引优化 6. 查询处理 示例 总结 3. 正向和倒排 三、总结 倒排索引的基本概念 为什么倒排索引快 一、ElasticSearch Elasticsear…

让开发者生活更轻松的 JavaScript 字符串方法

前端岗位内推来了 JavaScript 最初被引入作为一种简单的客户端脚本语言,但现在,它已经成为一种真正的 WORA(一次编写到处运行)语言,使开发者能够构建桌面、移动、电视、CLI 和嵌入式应用程序。JavaScript 的初学者友好…

HiveSQL题——炸裂+开窗

一、每个学科的成绩第一名是谁? 0 问题描述 基于学生成绩表输出每个科目的第一名是谁呢? 1 数据准备 with t1 as(selectzs as name,[{"Chinese":80},{"Math":70}],{"English"…

IOS-04 Swift 中数组、集合、字典、区间、元组和可选类型

在 Swift 编程语言中,数据结构和类型的合理运用对于高效编程至关重要。接下来,我们将深入探讨数组、集合、字典、区间、元组和可选类型的相关知识。 一、数组(Array) (一)元素定义 可以通过多种方式定义数…

关于 OSPF 序列号范围 0x80000001-0x7FFFFFFF 正本清源

注:机翻,未校对。 正本:RFC 2328 OSPF Version 2 中相关解释 April 1998 12.1.6. LS sequence number 12.1.6. 序列号 The sequence number field is a signed 32-bit integer. It is used to detect old and duplicate LSAs. The space …

【React】详解 React Hooks 使用规则

文章目录 一、Hooks 的基本原则1. 只在最顶层调用 Hooks2. 只在 React 函数组件和自定义 Hooks 中调用 Hooks 二、常见 Hooks 及其使用规则1. useState2. useEffect3. useContext4. useReducer5. useMemo6. useCallback 三、常见错误及其解决方案1. 在条件语句中调用 Hooks2. 在…