ChatGPT 插件是专门为以安全为核心原则的语言模型设计的工具,可帮助 ChatGPT 访问最新信息、运行计算或使用第三方服务。
目前的语言模型虽然功能强大,但仍有局限性。其只能从训练数据中学习,而这些数据可能已经过时或无法涵盖所有情况。同时,语言模型只能生成文本,而无法直接执行指令。为了解决这些问题,插件被提出作为语言模型的“眼睛和耳朵”,让模型能够获取更加及时、个性化和具体化的信息,并能够通过插件执行安全和受限的操作。
为了统一应用程序公开面向 AI 的接口的方式,开放标准预计会出现。OpenAI 正在早期尝试这个标准,并希望得到开发者的反馈。现在,OpenAI 正在逐步启用一些合作者的插件供 ChatGPT 用户使用,同时开始推出开发者可以为 ChatGPT 创建自己的插件的功能。在未来,随着安全系统的改进和使用经验的累积,OpenAI 还将对协议进行迭代,并计划使使用 OpenAI 模型的开发者能够将插件集成到自己的应用程序中。ChatGPT 希望建立一个社区,共同塑造人工智能与人类互动范式的未来。
邀请进入等待名单(等待名单申请入口[1])的插件开发者现在可以开始构建插件了。这一创新将使 ChatGPT 更加灵活和强大,能够解决更多的问题,满足更多的需求。第一批插件已经由 Expedia[2]、FiscalNote[3]、Instacart[4]、KAYAK[5]、Klarna[6]、Milo[7]、OpenTable[8]、Shopify[9]、Slack[10]、Speak[11], Wolfram[12] 和 Zapier[13] 创建。
目前官方托管了两个插件,一个是网页浏览器,一个是代码解释器。同时,开源了知识库检索插件的代码,让开发者可以自行托管以增强 ChatGPT 的信息。已经开始向等待名单中的用户和开发者扩展插件 alpha 访问权限。会优先考虑少数开发者和 ChatGPT Plus 用户,但也会逐步推出更广泛的访问权限。
网页浏览器(Alpha)
一种实验性模型,知道何时以及如何浏览互联网
受到过去工作(WebGPT[14],以及 GopherCite[15]、BlenderBot2[16]、LaMDA2[17] 等其他工作[18])的启发,允许语言模型从互联网中阅读信息严格地扩展了它们可以讨论的内容数量,超越了训练语料库,获取了来自当下的新鲜信息。
下面是浏览为ChatGPT用户带来的一种体验的示例,以前模型会礼貌地指出其训练数据中不包含足够的信息以便回答(例如:ChatGPT 检索有关最新奥斯卡奖的最新信息,然后进行了现在众所周知的ChatGPT诗歌表演),这是浏览可以成为一种附加体验的一种方式。
安全注意事项:
Web 浏览插件,让 ChatGPT 能够安全地访问网络浏览器,并考虑了安全问题和成为 Web 良好公民。该插件仅允许进行 GET 请求,从而降低了某些安全风险,但并未完全消除。这使得浏览插件适用于检索信息,但排除了具有更多安全和安全问题表面的“交易”操作,例如表单提交。浏览插件使用 Bing 搜索 API 从 Web 检索内容,并且插件运行在隔离服务中,因此 ChatGPT 的浏览活动与基础架构的其余部分分离。
为了尊重内容创作者和遵守 Web 规范,浏览器插件的用户代理会标记为 ChatGPT-User[19],并配置为遵守网站的 robots.txt 文件。这有时可能会导致“点击失败”消息,表示插件正在遵循网站的指示以避免爬行它。该用户代理仅用于代表 ChatGPT 用户采取直接操作,而不会以任何自动方式爬网页。ChatGPT 会公布 IP 出口范围[20],同时实施了限制速率措施,以避免向网站发送过多流量。使 ChatGPT 能够在合适的情况下使用网络资源。浏览插件会在 ChatGPT 的回复中显示访问的网站,并引用其来源。这种透明度的增加有助于用户验证模型回复的准确性,也向内容创建者归功,这是与网络互动的一种新尝试。
代码解释器(Alpha)
一款实验性模型,可以使用 Python,处理上传和下载
为模型提供了一个工作中的 Python 解释器,在一个沙盒化、防火墙的执行环境中,以及一些短暂的磁盘空间。由解释器插件运行的代码在一个持久的会话中进行评估,该会话在聊天对话期间保持活动状态(有一个上限的超时时间),随后的调用可以在其上进行构建。支持将文件上传到当前的对话工作区,并下载其返回结果。
希望模型能够利用自身的编程技能,为我们的计算机提供更自然的接口,以使用大多数基本功能。能够访问速度快的初级程序员可以使全新的工作流程变得轻松高效,同时也可以向新的受众开放编程的好处。通过初步用户研究,发现比较适合的场景:
解决数学问题,包括定量和定性分析
进行数据分析和可视化
在不同格式之间进行文件转换
简单来说:就是 ChatGPT 自己生成代码,并执行它,返回结果。当然它能处理的任务很有限,但潜力巨大,用户可以自己去发掘一下。
安全考虑:
将模型连接到编程语言解释器的主要考虑因素是正确地对执行进行沙箱隔离,以避免 AI 生成的代码在现实世界中产生意外的副作用。在受保护的环境中执行代码,并使用严格的网络控制来防止执行代码时的外部 Internet 访问。也会在每个会话中设置资源限制。禁用 Internet 访问会限制代码沙盒的功能,但团队认为这是正确的初步权衡。第三方插件是将模型安全地连接到外部世界的首选方法。
Retrieval 插件
Retrieval 插件(ChatGPT Retrieval Plugin[21])使 ChatGPT 能够访问个人或组织信息源(经过授权)。它允许用户通过自然语言提出问题或表达需求,从其数据源(如文件、笔记、电子邮件或公共文档)中获取最相关的文档片段。
作为开源和自托管解决方案,开发人员可以部署自己的插件版本并在 ChatGPT 中注册。该插件利用 OpenAI 嵌入,并允许开发人员选择用于索引和搜索文档的向量数据库(Milvus[22]、Pinecone[23]、Qdrant[24]、Redis[25]、Weaviate[26] 和 Zilliz[27])。可以使用 Webhook 将信息源与数据库同步。
安全考虑:
Retrieval 插件允许 ChatGPT 搜索内容向量数据库,并将最佳结果添加到 ChatGPT 会话中。这意味着它没有任何外部影响,主要的风险是数据授权和隐私。开发者应仅将其有权使用并可以在用户 ChatGPT 会话中共享的内容添加到其检索插件中。
第三方插件(Alpha)
一个实验性的模型,知道何时以及如何使用插件
第三方插件由一个清单文件描述(manifest.json[28]),其中包括插件能力的机器可读描述以及如何调用它们,以及面向用户的文档。
{
"schema_version": "v1",
"name_for_human": "TODO Manager",
"name_for_model": "todo_manager",
"description_for_human": "Manages your TODOs!",
"description_for_model": "An app for managing a user's TODOs",
"api": { "url": "/openapi.json" },
"auth": { "type": "none" },
"logo_url": "https://example.com/logo.png",
"legal_info_url": "http://example.com",
"contact_email": "hello@example.com"
}复制
创建插件的步骤包括:
构建一个 API,包含您希望语言模型调用的端点(可以是新的 API,现有的 API 或专门为 LLMs 设计的现有 API 的包装器)。
创建一个 OpenAPI 规范文档,记录您的 API,以及一个链接到 OpenAPI 规范的清单文件,其中包含一些插件特定的元数据。
在 chat.openai.com
上开始对话时,用户可以选择启用哪些第三方插件。已启用插件的文档将作为对话上下文的一部分显示给语言模型,使模型能够根据需要调用适当的插件 API 以满足用户意图。目前,插件旨在调用后端 API,但也在探索可以调用客户端 API 的插件。
References
等待名单申请入口: https://openai.com/waitlist/plugins
[2]Expedia: https://www.expedia.com
[3]FiscalNote: https://fiscalnote.com
[4]Instacart: https://www.instacart.com
[5]KAYAK: https://www.kayak.com
[6]Klarna: https://www.klarna.com
[7]Milo: https://www.joinmilo.com
[8]OpenTable: https://www.opentable.com
[9]Shopify: https://www.shopify.com
[10]Slack: https://slack.com
[11]Speak: https://www.speak.com
[12]Wolfram: http://wolfram.com
[13]Zapier: https://zapier.com
[14]WebGPT: https://openai.com/research/webgpt
[15]GopherCite: https://arxiv.org/abs/2203.11147
[16]BlenderBot2: https://parl.ai/projects/blenderbot2/
[17]LaMDA2: https://ai.googleblog.com/2022/01/lamda-towards-safe-grounded-and-high.html
[18]其他工作: https://arxiv.org/pdf/2209.14375.pdf
[19]ChatGPT-User: https://platform.openai.com/docs/plugins/bot
[20]IP 出口范围: https://platform.openai.com/docs/plugins/production/ip-egress-ranges
[21]ChatGPT Retrieval Plugin: https://github.com/openai/chatgpt-retrieval-plugin
[22]Milvus: https://milvus.io
[23]Pinecone: https://www.pinecone.io
[24]Qdrant: https://qdrant.tech
[25]Redis: https://redis.io/docs/stack/search/reference/vectors
[26]Weaviate: https://weaviate.io
[27]Zilliz: https://zilliz.com
[28]manifest.json: https://platform.openai.com/docs/plugins/getting-started