【AI】如何创建自己的自定义ChatGPT
如何创建自己的自定义ChatGPT
目录
- 如何创建自己的自定义ChatGPT
- 大型语言模型(LLM)
- GPT模型
- ChatGPT
- OpenAI API
- LlamaIndex
- LangChain
- 参考
推荐超级课程:
- Docker快速入门到精通
- Kubernetes入门到大师通关课
本文将记录如何使用OpenAI GPT-3.5模型、LlamaIndex和LangChain创建自己的自定义ChatGPT.
大型语言模型(LLM)
大型语言模型(LLM)是一种人工智能(AI)算法,它使用深度学习技术和大规模数据集来理解、总结、生成和预测新内容。术语生成式AI与LLM密切相关,实际上,LLM是一种生成式AI,专门设计用于帮助生成基于文本的内容。LLM是专为自然语言处理任务而设计并经过广泛训练的模型。这些模型在大量文本数据上接受训练,使它们能够生成与人类语言非常相似的文本。它们具有理解语境细微差别并回答问题的能力。此外,LLM还可以针对特定任务进行微调,例如翻译、总结和情感分析。由OpenAI开发的GPT(生成预训练变换器)模型系列是LLM的著名实例。这些GPT模型是广泛认可的ChatGPT应用程序的核心组件,我们将在下一部分进行详细探讨。
GPT模型
OpenAI是开创了GPT模型系列的研究机构。这些模型经过训练,可以理解自然语言和代码,并根据其输入生成文本输出。它们的GPT-3和GPT-4模型(用于构建著名的ChatGPT应用程序)是游戏改变者。在得到GPT-3和GPT-4之前,还有GPT-1和GPT-2,这两个模型都是令人印象深刻的语言模型,但在数据集和能力方面存在局限性。GPT-3有1750亿参数,使其能够提供类似人类的回应。通常很难区分GPT-3的回应和人类回应。现在世界正在等待GPT-4,这是GPT-3的更好版本。OpenAI最先进的系统,GPT-4,有1万亿参数,使其更加显著和有影响力。如果您有兴趣深入了解GPT模型的构建和训练过程,我建议参考这篇全面的研究论文。
ChatGPT
ChatGPT是一个基于Web的聊天机器人应用程序,专为优化对话交互而设计和微调。它利用OpenAI强大的GPT-3模型,以便与人类进行无缝和引人入胜的对话。ChatGPT的重点在于创建对话,让它能够以聊天方式生成文本,以便用于代码解释甚至撰写诗歌等任务。基本上,ChatGPT是一个应用程序,GPT-3模型是其基础智能。ChatGPT这个命名方式源于它是一个基于GPT模型基础上构建的面向聊天的应用程序。
OpenAI API
正如我之前提到的,OpenAI构建了GPT LLM模型系列,包括GPT-3和GPT-4。使用这些GPT,您可以构建应用程序来草稿文档、编写计算机代码、回答关于知识库的问题、分析文本等。OpenAI提供API,以便与这些模型进行交互和使用在我们自己的应用程序中。要通过OpenAI API使用GPT模型,我们需要发送一个包含输入和您的API密钥的请求,并接收包含模型输出的响应。
像GPT-3和GPT-4这样的模型是在大规模的公共数据集上预训练的,这使得它们在开箱即用时具有令人难以置信的自然语言处理能力。但是,如果无法访问自己的私有数据,它们的效用是有限的。OpenAI提供的API允许我们使用自定义数据集利用它们的模型的能力。这意味着我们可以使用我们的专有数据训练GPT模型,并将这些模型集成到我们的应用程序中。在这个示例中,我将深入探讨使用提供的PDF文件中的一系列研究论文训练gpt-3.5-turbo模型的过程。随后,我将演示创建一个与ChatGPT类似的聊天机器人,能够根据这些研究论文的内容回答问题。
LlamaIndex
LlamaIndex(以前被称为gpt-index)是一个数据框架,提供了与外部数据(例如您的私有数据)连接LLM的简单灵活界面。它允许开发人员将来自PDF、PowerPoints、Notion和Slack等应用程序以及Postgres和MongoDB等数据库的数据连接到LLM。该框架包括连接器,用于摄取数据源和数据格式,以及构造数据的方法,使其可以轻松与LLM一起使用。这些数据被索引成优化了LLM的中间表示。然后,LlamaIndex通过查询引擎、聊天界面和基于LLM的数据代理,支持自然语言查询和会话与您的数据。它使您的LLM能够在大规模的私有数据上访问和解释,而无需重新训练模型以适应新数据。
LlamaIndex从您的文档数据创建矢量化索引,使查询变得非常高效。然后,它使用此索引根据查询与数据之间的相似度确定文档的最相关部分。检索到的信息随后被合并到发送给GPT模型的提示中,为其提供回答您问题所需的上下文。
LangChain
LangChain是一个强大的库,旨在简化与大型语言模型(LLMs)提供程序(如OpenAI、Cohere、Bloom、Huggingface等)的交互。LangChain的独特提议是创建链条,即一个或多个LLMS之间的逻辑链接。
LLM的复杂性,例如它们的频繁更新和大量参数,已经造成了提供者之间激烈的竞争。为了简化利用这些模型的过程,LangChain提供了API,抽象出许多与克隆代码、下载训练权重和手动配置设置相关的挑战。基本上,LangChain提供了一个应用程序编程接口(API),以便访问和与LLM进行交互,促进无缝集成,使您能够充分利用LLM在各种用例中的潜力。
LlamaIndex有效地利用了LangChain的LLM模块,并提供了灵活性,可以自定义所使用的基础LLM —— 默认选项是OpenAI的text-davinci-003模型。所选定的LLM用于构建LlamaIndex内的响应,并有时还在索引创建过程中发挥作用。
LlamaIndex和LangChain的无缝组合为使用专有数据训练GPT模型和开发应用程序提供了一种无缝的方法。以下步骤概述了使用自定义数据训练GPT模型并创建使用该模型的Chatbot应用程序的过程。在这种情况下,我使用了GPT-3.5模型(gpt-3.5-turbo)。数据索引使用LlamaIndex实现,而与OpenAI API的集成由LangChain促成。
- 安装所需的软件包
首先,您需要安装以下必要的Python软件包:openai、PyPDF2(用于读取PDF文件的Python库)、llama_index、langchain和gradio(一个Python UI库)。
pip install openai
pip install PyPDF2
pip install langchain==0.0.148
pip install llama-index==0.5.6
pip install gradio
相关文章:

【AI】如何创建自己的自定义ChatGPT
如何创建自己的自定义ChatGPT 目录 如何创建自己的自定义ChatGPT大型语言模型(LLM)GPT模型ChatGPTOpenAI APILlamaIndexLangChain参考推荐超级课程: Docker快速入门到精通Kubernetes入门到大师通关课本文将记录如何使用OpenAI GPT-3.5模型、LlamaIndex和LangChain创建自己的…...

电子科技大学链时代工作室招新题C语言部分---题号E
1. 题目 这道题大概的意思是说,一座城市中被埋了许多雷(用一个只含0和1的字符串表示城市,1代表有雷,0代表无雷)。 你作为一个排雷兵,需要花最少的钱引爆所有的雷来使城市中不再有雷(太逆天了&a…...

K8S CNI
OCI概念 OCI,Open Container Initiative,开放容器标准,是一个轻量级,开放的治理结构(项目),在 Linux 基金会的支持下成立,致力于围绕容器格式和运行时创建开放的行业标准。 OCI 项目…...

Python数据分析实验一:Python数据采集与存储
目录 一、实验目的与要求二、实验过程三、主要程序清单和运行结果1、爬取 “中国南海网” 站点上的相关信息2、爬取天气网站上的北京的历史天气信息 四、程序运行结果五、实验体会 一、实验目的与要求 1、目的: 理解抓取网页数据的一般处理过程;熟悉应用…...

丘一丘正则表达式
正则表达式(regular expression,regex,RE) 正则表达式是一种用来简洁表达一组字符串的表达式正则表达式是一种通用的字符串表达框架正则表达式是一种针对字符串表达“简洁”和“特征”思想的工具正则表达式可以用来判断某字符串的特征归属 正则表达式常用操作符 操作符说明实…...

工业物联网平台在水务环保、暖通制冷、电力能源等行业的应用
随着科技的不断发展,工业物联网平台作为连接物理世界与数字世界的桥梁,正逐渐成为推动各行业智能化转型的关键力量。在水务环保、暖通制冷、电力能源等行业,工业物联网平台的应用尤为广泛,对于提升运营效率、降低能耗、优化管理等…...

【研发日记】Matlab/Simulink技能解锁(二)——在Matlab Function编辑窗口Debug
文章目录 前言 行断点 条件断点 按行步进 Watch Value 分析和应用 总结 前言 见《【研发日记】Matlab/Simulink技能解锁(一)——在Simulink编辑窗口Debug》 行断点 当Matlab Function出现异常时,如果能确定大致的代码段,就可以在相应的行上设置一…...
从键盘输入两个数,求它们的和并输出 从键盘输入三个数到a,b,c中,按公式值输出
别急别急,先看完 (从初学者出发) 从键盘输入两个数,求它们的和并输出 作者 陈春晖 单位 浙江大学 本题目要求读入2个整数A和B,然后输出它们的和。 输入格式: 在一行中给出一个被加数 在另一行中给出一个加数 输出格式: 在…...
密码解密 C卷(100%用例)(JavaPythonC++Node.jsC语言)
给定一段“密文“字符串s,其中字符都是经过"密码本”映射的,现需要将"密文"解密并且输出 映射的规则(a-i)分别用(1-9)表示;(j-z")分别用(10-"26”)表示 约束:映射始终唯一 输入描述: “密文”字符串 输出描述: 明文字符串 补充说明: 翻译后的文本…...

因为manifest.json文件引起的 android-chrome-192x192.png 404 (Not Found)
H5项目打包之后,总是有这个报错,有时候还有别的icon也找不见 一通调查之后,发现是因为引入了一个vue插件 这个插件引入之后,webpack打包的时候就会自动在dist文件夹中产生一个manifest.json文件这个文件里面主要就是一些icon地址的…...

『 Linux 』进程替换( Process replacement ) 及 简单Shell的实现(万字)
文章目录 🦄 进程替换🦩 execl()函数🦩 execlp()函数🦩 execle()函数🦩 execv()函数🦩 execvp()函数🦩 execvpe()函数🦩 execve()函数 🦄 简单Shell命令行解释器的实现&a…...

【Linux】从零开始认识进程 — 前篇
我从来不相信什么懒洋洋的自由。我向往的自由是通过勤奋和努力实现的更广阔的人生。。——山本耀司 从零开始认识进程 1 认识冯诺依曼体系2 操作系统3 进程3.1 什么是进程???3.2 进程管理PCB 3.3 Linux中的进程深入理解 3.4 进程创建总结 送给…...

公众号留言功能恢复了,你的开通了吗?
了解公众号的人都知道,腾讯在2018年3月宣布暂停新注册公众号的留言功能,这之后注册的公众号都不具备留言功能。 这成了很多号主运营人的一块心病,也包括我。 没有留言,就好似一个人玩单机游戏,无法与读者互动ÿ…...

C语言葵花宝典之——文件操作
前言: 在之前的学习中,我们所写的C语言程序总是在运行结束之后,就会自动销毁,那如果我们想将一个结果进行长期存储应该如何操作呢?这时候就需要我们用文件来操作。 目录 1、什么是文件? 1.1 程序文件 1.2…...

SSM框架,MyBatis-Plus的学习(下)
条件构造器 使用MyBatis-Plus的条件构造器,可以构建灵活高效的查询条件,可以通过链式调用来组合多个条件。 条件构造器的继承结构 Wrapper : 条件构造抽象类,最顶端父类 AbstractWrapper : 用于查询条件封装…...

边缘计算网关的工作原理及其在工业领域的应用价值-天拓四方
随着物联网技术的快速发展,物联网时代已经悄然来临。在这个时代,数以亿计的设备相互连接,共享数据,共同构建智慧的世界。边缘计算网关通过将计算能力和数据存储推向网络的边缘,实现了对海量数据的实时处理,…...

下载指定版本的pytorch
下载网址:https://download.pytorch.org/whl/torch_stable.html 参考博客网址:https://blog.csdn.net/wusuoweiieq/article/details/132773977...

STL:List从0到1
🎉个人名片: 🐼作者简介:一名乐于分享在学习道路上收获的大二在校生 🙈个人主页🎉:GOTXX 🐼个人WeChat:ILXOXVJE 🐼本文由GOTXX原创,首发CSDN&…...

利用高分五号02星高光谱数据进行地物识别
高分五号02星搭载了一台60公里幅宽、330谱段、30米分辨率的可见短波红外高光谱相机(AHSI),可见近红外(400~1000nm)和短波红外光谱(1000~2500nm)分辨率分别达到5纳米和10纳米。单看参数性能优越&…...
前端如何识别上传的二维码---jsQR
npm npm i -d jsqrhtml <el-button click"$refs.input.click()">识别</el-button> <input type"file" style"display: none" id"input" input"upload">js import jsQR from "jsqr";decodeQR…...

高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...

基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...
SQL慢可能是触发了ring buffer
简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...
虚拟电厂发展三大趋势:市场化、技术主导、车网互联
市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦࿰…...