OpenAI GPT Actions 生产注意事项
速率限制
考虑在暴露的 API 端点实现速率限制。ChatGPT 会遵循 429 响应;如果短时间内收到一定数量的 429 或 500 响应,会动态退避,减少向该 Action 发送请求。
超时
Actions 调用 API 时,往返时间超过 45 秒会超时。
使用 TLS 与 HTTPS
Action 的全部流量必须使用 TLS 1.2 或更高版本,通过 443 端口,并具有有效的公有证书。
出站 IP 范围
ChatGPT 会从公布的 IP 范围调用 Action。可以考虑将这些地址明确加入允许列表。
多种认证方式
定义 Action 时,可以将一种认证方式(OAuth 或 API 密钥)与不要求认证的端点组合使用。
详见 Actions 认证。
OpenAPI 描述限制
OpenAPI 描述有以下限制,具体数值可能变化:
- 每个 API 端点的 description/summary 字段最多 300 个字符。
- 每个 API 参数的 description 字段最多 700 个字符。
其他限制
构建 Actions 时还应注意:
- 不支持自定义请求头。
- 除 Google、Microsoft、Adobe 的 OAuth 域名外,OAuth 流程中的全部域名必须与主要端点使用的域名相同。
- 请求载荷和响应载荷各自必须少于 100,000 个字符。
- 请求会在 45 秒后超时。
- 请求与响应只能包含文本,不能直接包含图像或视频。
具有实质影响的操作标记
可以在 OpenAPI 描述中,将某些端点标为具有实质影响(consequential)的操作:
来源示例 1(yaml):
## [中文] GET读取待办;POST修改待办并显式标记为具有实质影响,要求按GPT Actions的确认机制处理。
paths:
/todo:
get:
operationId: getTODOs
description: Fetches items in a TODO list from the API.
security: []
post:
operationId: updateTODOs
description: Mutates the TODO list.
x-openai-isConsequential: true
例如,替用户预订酒店并付款,属于具有实质影响的操作。
x-openai-isConsequential: true:ChatGPT 必须在每次运行前请求用户确认,不显示 Always allow(始终允许)按钮。这些 GPT 功能让构建者和用户更好地控制操作。x-openai-isConsequential: false:显示“始终允许”按钮。- 未提供此字段时,GET 操作默认为
false,其他操作默认为true。
编写说明与示例的最佳实践
编写 GPT 指令、Schema 描述及设计 API 响应时,可遵循以下建议。
- 不要鼓励 GPT 在用户未提出相应服务需求时主动使用 Action。
不佳示例:“只要用户提到任何任务,就询问是否使用 TODO Action 将其加入待办清单。”
较好示例:“TODO 清单支持添加、删除和查看用户的待办事项。”
- 不要规定 GPT 调用 Action 的特定触发话术。ChatGPT 会在合适时自动使用 Action。
不佳示例:“用户提到任务时,回答‘需要加入待办清单吗?请说yes继续。’”
较好做法:无须为此添加指令。
- 除非确有必要,API 应返回原始数据,而不是自然语言回答。GPT 会根据返回数据自行组织回答。
不佳示例:“我找到了你的待办清单!有两项:买食品、遛狗。如果你愿意,我还可以添加更多!”
较好示例:{ "todos": [ "get groceries", "walk the dog" ] },即用结构化数据返回两项待办。
GPT Action 数据如何使用
GPT Actions 将 ChatGPT 与外部应用连接起来。用户与自定义 Action 交互时,ChatGPT 可能将部分对话发送到该 Action 的端点。
遇到问题或其他限制,可到 OpenAI 开发者论坛讨论。

TRAE-AI编程


更多建议: