作者:快跑阿小卢
☀️ 前言
最近人工智能领域高潮迭起,人工智能聊天工具 ChatGPT 的大风刮到了世界各地,风靡全球,说到神奇的 ChatGPT 大家最想吐槽的是什么🤔?
- 信息落后?
- 胡说八道?
- 不会算数?
- 我用我自己的 id 去问 ChatGPT ,大家可以看到他说是能说,编也是真能编啊👍。
- 更可怕的是,当我询问他是从哪些网站来获取这些信息时,他毫不犹豫的给我发了几个网址,不出所料,全部不是 404 就是 毫无相关的文章🤦♂️
- 这是因为 ChatGPT 所有信息都停留在 2021 年 9 月之前,这是数据训练的时间节点,因此很多知识内容也停留在这个时刻,当用户提到相关问题的时候他却少了相关的资料而无法回答甚至会胡编乱造。
- 但是在几天前,OpenAI 发布了 ChatGPT 的插件系统。网上大家都说如果把「 OpenAI 」比作「 苹果 」,那「GPT-4 」就是「 iPhone 」,「 ChatGPT 」则是「 iOS 」,而这次发布的「 Plugins 」就是「 App Store 」了。
- 插件系统的出现,说的通俗一点就像是给配了一个
DLC
,让 ChatGPT 从一个单机版 AI 升级为联网版 AI,他能上网了,并且对实时信息的检索大大补全加强,让 ChatGPT 功能再度提升一整个数量级。
🌋 ChatGPT plugins
- 自从 ChatGPT 上线以来,OpenAI 收到了很多用户和企业的诉求,希望开放插件系统,大家都想把自己的系统接入到这一波巨大的流量中。
- 知识扩展:API First 再先一步,OpenAPI 定义被 openAI 定为 ChatGPT 插件标准
- OpenAI 自身还托管了两个插件,一个网络浏览器和一个代码解释器。还开源了知识库检索插件的代码,任何开发人员都可以自行托管这些插件,并提供他们希望用来增强 ChatGPT 的信息。
- 我们简单来看看官方使用这些插件的示例。
Browsing
An experimental model that knows when and how to browse the internet
- 上面我也说了,ChatGPT 最让人诟病的一点是他的资料过于落后跟不上时代,当然官方也是知道这件事情的,所以他们自己的托管的「Browsing plugin」可以说是诚意满满了。
- Browsing 插件可以提供额外的信息来源,使得 ChatGPT 可以回答更加详细和准确的问题。例如,当用户询问某个特定的商品信息时,Browsing插件可以在互联网上搜索并提供更多的产品信息和评价。这可以提高 ChatGPT 的回答质量,从而增强用户体验。
- 再比如官方示例中,你问它「今年奥斯卡获奖电影的票房和最近上映的电影相比,谁高谁低?」
- 它会利用「New Bing」的 API,在互联网上搜索问题的相关信息,然后给出具体答案,最主要的并不是这个答案,而是他能实时溯源!我们查资料不就是想要拿到这些官方咨询和信息吗,这个是原来的 ChatGPT 老旧数据库所做不到的。更多有趣玩法可以看:ChatGPT 插件应用场景有哪些?
- 不过当然需要注意的一点是,OpenAI 从安全角度出发,做的一些限制,这个插件只支持
GET
请求,不支持POST
,也就是说,它只能用于获取数据,不能用于发送,例如表单提交,这些操作具有更大的安全性和安全性问题,但是完全不影响我们日常查询资料的使用。
Code interpreter
An experimental ChatGPT model that can use Python, handle uploads and downloads
- 「Code Interpreter」这款插件可以使 ChatGPT 解释和执行代码。通过这个插件,用户可以向 ChatGPT 发送计算机代码,并且 ChatGPT 会尝试理解并执行这些代码,从而返回计算结果。这个插件可以让用户在 ChatGPT 上编程并执行一些简单的计算任务,例如进行数学计算、字符串操作等。
- 这是一款非常有用的插件,可以为用户提供更加强大的计算能力和更丰富的编程体验。通过这个插件,用户可以使用自然语言与 ChatGPT 交互,并且可以使用 ChatGPT 执行一些简单的计算任务,从而减轻用户自己编写代码的工作量。
- 在用户进行对话交流时,代码会保存在持续会话中,交流不中断的情况下,可随时调用。
据官方统计,在目前该插件有几个比较好用的功能:
- 解决定量和定性的数学问题
- 进行数据分析和可视化
- 快速转换文件格式
- 当然,随着用户量的增多,这款插件更多的潜能会被激发出来,这意味着我们再也不用担心 ChatGPT 为了回答而回答,给出你一个错误甚至离谱的答案了。
❓ 它是如何运作的
- 看了这么多官方示例和第三方插件示例,让我不禁好奇,它(插件系统)到底是怎么运作的呢?
🏃🏻 使用路径
从官方的示例我们不难看出,我们使用 ChatGPT 插件的路径大概是这样的:
- 用户从「Plugin store」安装插件。
- 发送自然语言给 ChatGPT。
- ChatGPT 根据你的对话提问进行选择需要用到的插件。
- 根据插件给出响应信息,如果有需要还会继续寻找插件使用。
- 最终给出一个你想期望的结果。
- 在这个整个过程中,用户通过自然语言向 ChatGPT 发送请求,ChatGPT 会先使用预训练的语言模型对请求进行理解和编码。接着,ChatGPT 会将请求传递给相应的插件进行处理。
- 插件可以支持不同的自然语言处理功能,例如对话、问答、代码解释、文本摘要等等。
- 插件处理请求的过程中,涉及到自然语言处理、机器学习、知识图谱、编程语言解析等多个方面的技术。
- 最终,插件会返回相应的自然语言响应或计算结果给用户。
🤔 它是如何选择插件的
- 要想了解一个这个插件系统如何运行,最好的方法就是看看这些插件都是怎么生成出来的。
- 官方给我们演示了一个用 ChatGPT 生成 ChatGPT 插件的示例,但是这些不是我们关注的点,我只需要关心产物即可。
- 正好官方把 Retrieval 插件的代码开源了,我们可以根据官方示例与这个仓库的代码查个所以然。
清单文件🧾
- 我们可以看到示例首先会生成一个
manifest
清单文件,并将该文件托管在yourdomain.com/.well-known/ai-plugin.json
。 - 其中包含了其中包括插件功能的机器可读描述以及如何调用它们,以及面向用户的文档。
其中这个json
文件有两个字段我们需要特别注意:
description_for_model
:给 ChatGPT 看的描述。api
:存放了你可提供给 ChatGPT 调用 API 的 OpenAPI 规范文件。
OpenAPI 规范文件📃
- OpenAPI 规范文件是一种机器可读的格式,用于描述 RESTful API 的设计和功能。它使用
YAML
或JSON
格式的文档,包括 API 的所有端点、操作和参数,并提供了对每个端点和操作的详细说明。 - 目的是提供一个标准的方式来描述和交互 RESTful API,以促进不同技术平台之间的互操作性和集成。
- 查阅chatgpt-retrieval-plugin的
openapi.yaml
我们可以看到,这其实就是一个标准的 OpenAPI 规范文件。 - 那么说明每个插件只需要提供一份标准的、接口描述准确的 OpenAPI 规范文件即可让 ChatGPT了解你的 API 的入参出参并加以调用。
- 如何正确规范的写好一份 OpenAPI 描述文件,我们可以参考 OpenAPI 规范 (中文版)
- 当然啦,现在的 OpenAPI 文件都可以自动生成了,你可以使用 Apifox 利用可视化的界面来编写你的 API 文档,并且加以自然语言的接口描述信息,选择导出 OpenAPI 格式就可以得到一份非常标准的 OpenAPI 格式描述文件,大大提升你的效率。
现在我们知道了 ❗️
搞懂了一个插件是如何开发的,这么看下来就很清晰了:
- 用户使用自然语言向 ChatGPT 提问。
- ChatGPT 根据用户的需求去查找符合描述的插件系统。
- 根据插件系统的 API 描述文档来选择符合当前上下文的 API 进行调用。
- 得到结果后会将它继续「喂」给上下文,由此判断需不需要进行使用下一个插件。
- 最终会得到一个满足用户预期的自然语言回答,包括图表、代码等信息。
- 这样一来,就完成了该系统神奇的所有部分。
🍃 着眼未来
- 放眼未来我们可能不需要再去使用什么 APP,不再去学习怎么使用 APP,我们可能只需要学习如何和 AI 进行交流,这是一件多么可怕的事情。
- 你会发现你用自然语言跟它对话它会用自然语言回复你,并且!帮你做完了这些事。
- 以后就不是 AI 辅助你做什么事情,辅助你生成图片,辅助你生成 PPT,而是直接帮你完成了。
- 当你想开发一个网站,只用说一句:「我想要一个xxx网站」它就会帮你做完,当你说帮忙部署一下,他会自己根据你平时的习惯购买服务器-->部署上线 。
- 我不敢奢望这些事情能不能实现,但是随着新时代的潮流,我深刻的感觉到了希望,或许,我说或许,真的我们每个人都可以拥有一个自己的贾维斯。
- 共勉!