ChatGPT 开源了第一款插件,都来学习一下源码吧!

article/2025/4/21 21:03:58

3 月 23 日,OpenAI 又投出了一枚重磅炸弹:为 ChatGPT 推出插件系统!

此举意味着 ChatGPT 将迎来“APP Store”时刻,也就是围绕它的能力,形成一个开发者生态,打造出基于 AI 的“操作系统”!

插件系统将为 ChatGPT 带来质的飞跃,因为借助于插件服务,它可以获取实时的互联网信息、调用第三方应用(预定酒店航班、点外卖、购物、查询股票价格等等)。

ChatGPT 是一个无比聪明的大脑,而插件会成为它的眼睛、耳朵、手脚、甚至于翅膀,能力惊人,未来不敢想象!

官方目前提供了两个插件:

  • 一个网页浏览器。利用新必应浏览器的 API,实时搜索互联网内容,并给出答案和链接

  • 一个代码解释器。利用 Python 解释器,可以解决数学问题、做数据分析与可视化、编辑图片、剪辑视频等等,还支持下载处理后的文件

另外,OpenAI 还开源了一个知识库检索插件 chatgpt-retrieval-plugin ,这个插件通过自然语言从各种数据源(如文件、笔记、邮件和公共文档)检索信息。有了开源代码后,开发者可以部署自己的插件版本。

想象一下,假如我提供了一个“Python 知识库插件”,以所有官方文档作为数据源,那以后有任何 Python 使用上的问题,我就只需询问 ChatGPT,然后它调用插件并解析数据,最后返回给我准确的答案。这将节省大量的时间!

不仅如此,你还可以用书籍作为数据源,打造出“西游记知识库”、“红楼梦知识库”、“百科全书知识库”、“个人图书馆知识库”,等等;以专业领域的论文与学术期刊为数据源,创造出一个专家助手,从此写论文查资料将无比轻松;以苏格拉底、乔布斯、马斯克等名人的资料为数据源,创造出人格化的个人顾问……

作为第一个开源的 ChatGPT 插件,chatgpt-retrieval-plugin 项目一经发布,就登上 Github 趋势榜第一,发布仅一周就获得 11K stars。

这个项目完全是用 Python 写的,不管是出于学习编程的目的,还是为了将来开发别的插件作借鉴,这都值得我们花时间好好研究一下。

接下来,我将分享自己在阅读项目文档和源码时,收获到的一些信息。

首先,该项目含 Python 代码约 3 K,规模不算大。项目结构也很清晰,目录如下:

目录描述
datastore包含使用各种向量数据库提供程序存储和查询文档嵌入的核心逻辑
examples包括配置示例、身份验证方法和面向程序提供方的示例
models包含插件使用的数据模型,例如文档和元数据模型
scripts存放实用的脚本,用于处理和上传来自不同数据源的文件
server存放主要的 FastAPI 服务端实现
services包含用于任务(如分块、元数据提取和 PII 检测)的实用服务
tests包括各种向量数据库提供程序的集成测试
.well-known存储插件清单文件和 OpenAPI 格式,定义插件配置和 API 规范等信息

除去示例、测试、配置文件等内容外,最主要的三个目录如下:

datastore 数据存储

数据源的文本数据会被映射到低维度向量空间,然后存储到向量数据库中。官方已提供 Pinecone、Weaviate、Zilliz、Milvus、Qdrant、Redis 这几种数据存储方案的示例。另外,有几个 pull requests 想要加入 PostgreSQL 的支持,大概率将来会合入。

这里使用了抽象工厂设计模式 ,DataStore 是一个抽象类,每种数据存储库是具体的实现类,需要实现三个抽象方法:

(1)_upsert(chunks: Dict[str, List[DocumentChunk]]) -> List[str] 方法,接收一个字典参数,包含有 DocumentChunk 对象列表,将它们插入到数据库中。返回值为文档 ID 的列表。

(2)_query(queries: List[QueryWithEmbedding]) -> List[QueryResult] 方法,接收一个列表参数,包含被 embedding 的查询文本。返回一个包含匹配文档块和分数的查询结果列表。

(3)delete(ids: Optional[List[str]] = None, filter: Optional[DocumentMetadataFilter] = None, delete_all: Optional[bool] = None, ) -> bool  方法,根据 id 和其它过滤条件删除,或者全部删除。返回操作是否成功。

值得注意的是,该目录下的factory.py 模块使用了 Python 3.10 新引入的 match-case 语法,紧跟着 Python 社区的新潮流呢~

server 服务端接口

这个目录只有一个main.py 文件,是整个项目的启动入口。它使用了目前主流的 FastAPI 框架,提供了增删改查的几个 API,另外使用 uvicorn 模块来启动服务。

  • /upsert-file 接口,用于上传单个文件,将其转换为 Document 对象,再进行新增或更新

  • /upsert 接口,上传一系列的文档对象,用于新增或更新

  • /query 接口,传入一系列的文本条件,转成 QueryWithEmbedding 对象后,再从向量数据库查询

  • /delete 接口,根据条件删除或者全部删除数据库中的数据

在这几个接口中,增改删功能主要是给开发者/维护者使用的,ChatGPT 只需调用插件的查询接口。因此,代码中还创建了一个“/sub”子应用,只包含/query 接口,提供给 ChatGPT 调用。

另外,它使用 FastAPI 的 mount 方法挂载了一个“/.well-known”静态文件目录,暴露了关于本插件的基本信息,例如名称、描述、作者、logo、邮箱、提供给 OpenAPI 的接口文档等等。

services 任务处理方法

这个目录下是一些通用的函数,比如下面这些:

(1)chunks.py 文件包含了将字符串和 Document 对象分割成小块、以及为每个块获取嵌入向量的函数。

(2)file.py 文件提供了从上传的文件中提取文本内容及元数据的函数。目前支持解析的文件类型包括 PDF、纯文本、Markdown、Word、CSV 和 PPTX。

(3)openai.py 文件包含两个函数:get_embeddings 函数使用 OpenAI 的 text-embedding-ada-002 模型对给定的文本进行嵌入。get_chat_completion 函数使用 OpenAI 的 ChatCompletion API 生成对话。

整个而言,这个插件的几个接口功能很清晰,代码逻辑也不算复杂。核心的文本嵌入操作是借助于 openai 的 Embedding 接口,文本分块信息的存储及查询操作,则是依赖于各家向量数据库的功能。

YouTube 上有博主手画了一张示意图,字体虽潦草,但大家可以意会一下:

他这个视频 值得推荐一看,因为 up 主不仅简明地介绍了插件的工作原理,还手把手演示如何部署到 Digital Ocean、如何修改配置、如何调试,而且他有 ChatGPT 的插件权限,可以将自己部署的插件接入 ChatGPT,现场演示了知识库插件的使用!

视频:https://www.youtube.com/watch?v=hpePPqKxNq8

目前,关于 ChatGPT 插件的介绍、开发及配置等资料还比较少,毕竟是新推出的。但是,申请 waitlist 的个人和组织已经数不胜数了,一旦开放使用,各式各样的插件一定会像 Python 社区丰富的开源库一样,也将极大扩展 ChatGPT 的生态。

最后,插件 chatgpt-retrieval-plugin 的官方文档是最为详细的一手资料,推荐大家研究一番。https://github.com/openai/chatgpt-retrieval-plugin

 


http://chatgpt.dhexx.cn/article/sRWpkpuT.shtml

相关文章

ChatGPT开源替代来了!参数量200亿,在4300万条指令上微调而成

OpenChatKit 是一个类 ChatGPT 开源工具包,内含一个 20B 参数量的大模型,而且该模型在 4300 万条指令上进行了微调。 转自《机器之心》 2023 年,聊天机器人领域似乎只剩下两个阵营:「OpenAI 的 ChatGPT」和「其他」。 ChatGPT 功能…

ChatGPT开源平替来了,开箱即用!前OpenAI团队打造,GitHub刚发布就揽获800+星

点击上方“视学算法”,选择加"星标"或“置顶” 重磅干货,第一时间送达 丰色 发自 凹非寺量子位 | 公众号 QbitAI ChatGPT的开源平替来了,源代码、模型权重和训练数据集全部公开。 它叫OpenChatKit,由前OpenAI研究员共同…

一大波 ChatGPT 开源项目,诞生了!

这是「进击的Coder」的第 764 篇技术分享 作者:小 G 来源:GitHubDaily “ 阅读本文大概需要 8 分钟。 ” 本月初 ChatGPT 问世,犹如平地惊雷般,在技术圈中引起了广泛讨论。 作为全球最大的开发者社区,GitHub 平台也在…

推荐 4个有趣实用的 ChatGPT 开源应用

以下是 4个有趣实用的基于 ChatGPT 的开源应用,让我们一起来探索吧! 1. ChatGPT 快捷键 ChatGPT Shortcut 是一个让你使用 ChatGPT 时生产力翻倍的快捷指令网站。你只需在该开源项目中复制提示词,稍加修改后发送给 ChatGPT,就能…

ChatGPT开源优秀项目推荐

作为一名开发者,总是希望能够找到一些优秀的开源项目来学习、使用和贡献。而随着人工智能技术的不断发展,ChatGPT作为一个开源的大型语言模型,已经成为了人们学习和开发自然语言处理应用的重要工具。在这篇技术博客中,我将向大家介…

ChatGPT 开源替代项目整理

项目作者 nichtdax 整理了 9 个开源的 ChatGPT 平替项目。接下来会一一介绍。 项目地址:https://github.com/nichtdax/awesome-totally-open-chatgpt PaLM-rlhf-pytorch 第一个项目是「PaLM-rlhf-pytorch」,项目作者为 Phil Wang。该项目是在 PaLM 架构之…

5 个令人惊艳的 ChatGPT 项目,开源了!

公众号关注 “GitHubDaily” 设为 “星标”,每天带你逛 GitHub! 自 3 月初 Open AI 开放 ChatGPT API 以来,GitHub 上诞生的开源项目数量之多,着实让我应接不暇。 今天,我将着重挑选几个对日常工作、生活、学习帮助较大…

6 个令人惊艳的 ChatGPT 项目,开源了!

公众号关注 “GitHubDaily” 设为 “星标”,每天带你逛 GitHub! 过去一周,技术圈的各个爆炸新闻,可以说是让我真正见证到了什么叫人间一日,AI 一年。 首先是 New Bing 对所有用户放开,注册即可用&#xff0…

开源版ChatGPT,30分钟训完,性能堪比GPT3.5!

转自:新智元 话说,ChatGPT 开源,是一件好事吗? 此前,OpenAI 不 Open 的事件,已经引发了坊间的诸多争议。 光放出基准和测试结果,不提供训练数据、成本、方法,是真的要「赢家通吃」了…

最近很火的ChatGPT究竟是什么?本文解释得非常全面,还通俗易懂

目录 01 ChatGPT是什么? 02 ChatGPT能做什么? 1)回答问题。 2)撰写文章。 3)总结提炼。 4)生成代码。 03 ChatGPT 的缺点和问题 04 ChatGPT的未来前景 1)搜索。 2)阅读…

知乎、百度会被ChatGPT取代吗?百度文心一言胜算如何

有人说ChatGPT革了知乎的命,这种看法是很直观能理解的,因为知乎上面有问题(题主),也有很多人回答问题,解决题主的疑惑,其实这种形式和ChatGPT的“一问一答”“知识分享”或“对话交流”很相像。…

如何让ChatGPT写出更符合知乎调性的文章

文 / 韩彬(微信公众号:量子论) 很多朋友疑问,怎么起的”量子论”这个不伦不类的名字。 这背后的故事,有必要做个解释。 最早时候,我们想起个与ChatGPT有关的名字,比如“ChatGPT学习指南”、“Ch…

2023最新商业版ChatGPT网站源码4.8.0+功能强大/新增一键安装

正文: 安装教程: 一台VPS 搭建宝塔 解析域名 上传程序至根目录 访问首页在线安装配置数据库 PHP版本选择:7.3 安装完成后访问网站首页即可! 配置APIKEY,登录网站后台自定义配置,不然网站无法使用! 网站后台地址/admin 默…

2023商业版ChatGPT网页版源码V4.4+有后台/功能配置多

正文: 4.4版本来了 V4.4 新增注册用户赠送次数自定义 修复前端密钥明文 V4.3 优化首页加载CSS 之前加载的时候div块会往左边跑 代码安全性逻加强 优化首页输入框换行过高的问题 安装教程: 搭建宝塔 解析域名 上传程序至根目录 配置数据库信息:lib/config.php 导入…

2023最新ChatGPT中文自适应网页版带后台会员中心PHP源码

ChatGPT是一种使用人工智能技术开发的聊天机器人,它可以与人类进行自然语言对话,并提供有用的回答和建议。 ChatGPT使用了监督学习和强化学习技术,在GPT-3.5模型的基础上进行了微调和升级。这使得它能够理解人类的语言,并根据问题…

如何高效性的使用ChatGPT

目录 简单介绍 考虑以下几点 举几个例子 简单介绍 ChatGPT是由OpenAI开发的一种自然语言处理模型,它基于GPT(Generative Pre-trained Transformer)架构,旨在为用户提供更加流畅、准确的对话体验。 ChatGPT通过在大规模的互联网…

【Python】极简部署私有化ChatGPT-Web,使用Flask框架编写网页版ChatGPT

极简部署私有化ChatGPT 使用ChatGPT最新API创建的聊天页面,模型回复效果与官网的ChatGPT一致特性演示动图使用前提介绍 使用ChatGPT最新API创建的聊天页面,模型回复效果与官网的ChatGPT一致 特性 python环境下可极简配置windows、linux、mac os均可部署…

她用ChatGPT写了一篇文章,日赚14000元!

金磊 Pine 发自 凹非寺量子位 | 公众号 QbitAI 用ChatGPT写篇博客,竟能实现日入过万! 没开玩笑,这事真真儿地就发生了。 事情的起因,是一位小姐姐正准备发布一篇数据分析文章,字数大约在3000左右。 但她觉得一边要分析…

​ChatGPT爆火后:API与平台战争

无界社区是一个跨学科的创新组织,由设计师和工程师组成的开放式线上协作组织。我们正在寻找对跨学科内容感兴趣、敢于尝试新方法并乐于分享想法的人士。如果你准备好加入一个开放、协作、有思想并能够凸显你独特性格的大家庭,那么请来无界社区吧&#xf…

ChatGPT版Office来了:微软下周四举行发布会,CEO亲自上

机器之心报道编辑:蛋酱 又一次「工业革命」正在加速进行? 从微软、谷歌到百度,大型科技公司正加速将生成式 AI 整合到他们的产品中。 刚刚,微软公司宣布将 ChatGPT 背后的技术与其低代码应用平台 Power Platform 捆绑在一起&#…