生产环境插件Plugins in production
速率 Rate limits
考虑对暴露的API端点(Completion)实现速率限制。虽然当前规模有限,但ChatGPT被广泛使用,您应该预期大量的请求。您可以监控请求数量并相应地设置限制。
超时(Timeouts)
在插件体验期间进行API调用时,如果超过以下阈值,将会出现超时:
- 调用
ai-plugn.json
/openapi.yaml
的往返时间为15秒 - API调用的往返时间为45秒
随着我们将插件体验扩展到更多人群,我们预计超时阈值将会降低。
更新插件
每次更改 ai-plugin.json
文件时,都必须通过插件商店中的“开发自己的插件”流程手动更新清单文件。每次发出请求时,ChatGPT 会自动获取最新的 OpenAPI 规范,因此所做的更改将立即传播到终端用户。
插件条款 Plugin terms
为了注册插件,您必须同意插件条款 (opens in a new tab)。
域验证和安全性
为了确保插件只能对其控制的资源执行操作,OpenAI 对插件的清单和 API 规范施加要求。
插件的根域名
清单文件定义了显示给用户的信息(比如标识和联系信息),以及托管插件的 OpenAPI 规范的 URL。当清单被获取时,插件的根域名遵循以下规则:
- 如果域名有
www.
作为子域,那么根域名将从托管清单的域名中去掉www.
。 - 否则,根域名是托管清单的域。
关于重定向的注意事项:如果在解析清单时存在任何重定向,只允许子子域名重定向。唯一的例外是从带有www的子域名重定向到没有www的子域名。
根域名的示例:
- ✅
https://example.com/.well-known/ai-plugin.json
- Root domain:
example.com
- Root domain:
- ✅
https://www.example.com/.well-known/ai-plugin.json
- Root domain:
example.com
- Root domain:
- ✅
https://www.example.com/.well-known/ai-plugin.json
→ redirects tohttps://example.com/.well-known/ai-plugin.json
- Root domain:
example.com
- Root domain:
- ✅
https://foo.example.com/.well-known/ai-plugin.json
→ redirects tohttps://bar.foo.example.com/.well-known/ai-plugin.json
- Root domain:
bar.foo.example.com
- Root domain:
- ✅
https://foo.example.com/.well-known/ai-plugin.json
→ redirects tohttps://bar.foo.example.com/baz/ai-plugin.json
- Root domain:
bar.foo.example.com
- Root domain:
- ❌
https://foo.example.com/.well-known/ai-plugin.json
→ redirects tohttps://example.com/.well-known/ai-plugin.json
- 禁止重定向到父级域
- ❌
https://foo.example.com/.well-known/ai-plugin.json
→ redirects tohttps://bar.example.com/.well-known/ai-plugin.json
- 禁止重定向到同级子域
- ❌
https://example.com/.well-known/ai-plugin.json
-> redirects tohttps://example2.com/.well-known/ai-plugin.json
- 禁止重定向到另一个域
清单要求 Manifest validation
清单本身的特定字段必须满足以下要求:
api.url
- 提供给 OpenAPI 规范的 URL 必须与根域名相同或是根域名的子域。legal_info
- 提供的 URL 的二级域名 (opens in a new tab)必须与根域名的二级域名相同。contact_info
- 电子邮件地址的二级域名应该与根域名的二级域名相同。
解析 API 规范
清单中的 api.url
字段提供了一个链接到定义插件调用的 API 的 OpenAPI 规范。OpenAPI 允许指定多个服务器基础 URL (opens in a new tab)。以下逻辑用于选择服务器 URL:
- 迭代服务器 URL 列表
- 使用与根域名完全匹配或是根域名的子域名的第一个服务器 URL
- 如果以上两种情况都不适用,则默认为 API 规范所托管的域。例如,如果规范托管在
api.example.com
上,则api.example.com
将用作 OpenAPI 规范路由的基本 URL。
注意:请避免使用重定向来托管API规范和任何API端点(Completion),因为不能保证重定向总是会被跟随。
使用 TLS 和 HTTPS
与插件相关的所有流量(例如,获取 ai-plugin.json
文件、OpenAPI 规范、API 调用)必须使用 TLS 1.2 或更高版本,在 443 端口上使用有效的公共证书。
IP范围
ChatGPT 将在 CIDR 块 (opens in a new tab) 23.102.140.112/28
的 IP 地址下调用您的插件。您可能希望明确允许列入这些 IP 地址的白名单。
此外,OpenAI 的 Web 浏览插件从不同的 IP 地址块 Access Web Sites (opens in a new tab): 23.98.142.176/28
.
FAQ
插件数据的用途是什么?
插件将 ChatGPT 连接到外部应用程序。如果用户启用插件,则 ChatGPT 可能会将他们的某些对话和国家或州发送给您的插件。
如果 API 请求失败会发生什么?
如果 API 请求失败,模型可能会在尝试重试该请求最多 10 次之前,让用户知道无法从该插件获得响应。
我能邀请其他人尝试我的插件吗?
是的,所有未验证的插件都可以由高达 15 个其他具有插件访问权限的开发人员安装。
我可以收费使用我的插件吗?
是的,我们鼓励您考虑提供有限数量的免费 API 调用,但理解运行您的插件需要资源。