错误代码

错误代码

本指南包括关于您可能从 API 和我们官方的 Python 库中看到的错误代码的概述。概述中提到的每个错误代码都有一个专门的部分,提供进一步的指导。

API错误

CODE 概述
401 - 无效身份验证 原因:无效的身份验证
解决方案:确保使用了正确的API密钥和请求组织。
401 - 提供的API密钥不正确 原因:请求的API密钥不正确。
解决方案:确保使用的API密钥正确,清除浏览器缓存,或生成一个新的。
401 - 您必须是组织的成员才能使用API 原因:您的账户不属于任何组织。
解决方案:联系我们将您添加到新的组织中,或要求您的组织管理员邀请您加入组织。
403 - 不支持的国家、地区或领土 原因:您正在从不受支持的国家、地区或领土访问API。
解决方案:请查看此页面获取更多信息。
429 - 请求速率达到限制 原因:您发送请求的速度太快。
解决方案:控制请求速率。阅读速率限制指南。
429 - 您超出了当前配额,请检查您的计划和结算详情 原因:您已经用完了信用额度或达到了每月的最大支出限额。
解决方案:购买更多的信用额度或了解如何增加您的限额。
500 - 服务器在处理您的请求时发生错误 原因:我们的服务器出现问题。
解决方案:稍等片刻后重试您的请求,如果问题仍然存在,请联系我们。检查状态页面。
503 - 引擎当前过载,请稍后再试 原因:我们的服务器正在经历高流量。
解决方案:请稍等片刻后重试您的请求。

401 - 无效身份验证

这个错误信息表明您的身份验证凭据无效。这可能由多种原因引起,例如:

  • 您使用的API密钥已被吊销。
  • 您使用的API密钥与请求的组织或项目分配的API密钥不同。
  • 您使用的API密钥没有调用您正在调用的端点所需的权限。

要解决此错误,请按照以下步骤操作:

  • 检查您在请求头中是否使用了正确的API密钥和组织ID。您可以在您的账户设置中找到您的API密钥和组织ID,或者在常规设置下选择所需的项目后,在相关项目设置中找到特定项目相关密钥。
  • 如果您不确定您的API密钥是否有效,您可以生成一个新的。确保在您的请求中用新的API密钥替换旧的API密钥,并遵循我们的最佳实践指南。

401 - 提供的API密钥不正确

这个错误消息表明您在请求中使用的API密钥不正确。这可能由多种原因引起,例如:

  • 您的API密钥中存在拼写错误或额外的空格。
  • 您使用的API密钥属于不同的组织或项目。
  • 您使用的API密钥已被删除或停用。
  • 旧的、已吊销的API密钥可能被本地缓存。

要解决此错误,请按照以下步骤操作:

  • 尝试清除浏览器的缓存和Cookie,然后重试。
  • 检查您在请求头中是否使用了正确的API密钥。
  • 如果您不确定您的API密钥是否正确,您可以生成一个新的。确保在您的代码库中用新的API密钥替换旧的API密钥,并遵循我们的最佳实践指南。

401 - 您必须是组织的成员才能使用API

这个错误消息表明您的账户不属于任何组织。这可能由多种原因引起,例如:

  • 您已经离开或被移出了之前的组织。
  • 您已经离开或被移出了之前的项目。
  • 您所属的组织已被删除。

要解决此错误,请按照以下步骤操作:

  • 如果您已经离开或被移出了之前的组织,您可以请求加入一个新的组织或被邀请加入现有组织。
  • 要请求加入一个新的组织,请通过 help.openai.com 与我们联系。
  • 现有组织所有者可以通过团队页面邀请您加入他们的组织,也可以通过设置页面创建一个新项目。
  • 如果您已经离开或被移出了之前的项目,您可以要求您所属的组织或项目所有者将您添加到其中,或者创建一个新的项目。

429 - 请求速率已达到限制

这个错误消息表明您已经达到了API的分配速率限制。这意味着您在短时间内提交了过多的令牌或请求,超过了允许的请求数量。这可能由多种原因引起,例如:

  • 您使用了频繁或并发请求的循环或脚本。
  • 您与其他用户或应用程序共享您的API密钥。
  • 您使用的是速率限制较低的免费计划。
  • 您已经达到了项目的定义限制。

要解决此错误,请按照以下步骤操作:

  • 控制您的请求速率,避免进行不必要或冗余的调用。
  • 如果您使用的是循环或脚本,请确保实施回退机制或重试逻辑,以尊重速率限制和响应头。您可以在我们的速率限制指南中了解有关我们的速率限制政策和最佳实践的更多信息。
  • 如果您与其他用户共享组织,请注意限制是针对每个组织而不是每个用户应用的。检查团队其余成员的使用情况是值得的,因为这将影响到限制。
  • 如果您使用的是免费或低级别计划,请考虑升级到按使用量计费的计划,以获得更高的速率限制。您可以在我们的速率限制指南中比较每个计划的限制。
  • 联系您的组织所有者,以增加项目的速率限制。

429 - 您已超出当前配额,请检查您的计划和结算详情

这个错误消息表明您已经达到了API的月度使用限制,或者对于预付费用户,您已经使用完了所有的信用额度。您可以在限制页面上查看您的最大使用限制。这可能由多种原因引起,例如:

  • 您正在使用消耗大量信用额度或令牌的高容量或复杂服务。
  • 您的组织使用的月度预算设置得太低。
  • 您的项目使用的月度预算设置得太低。

要解决此错误,请按照以下步骤操作:

  • 检查您账户的当前使用情况,并将其与账户的限制进行比较。
  • 如果您正在使用免费计划,请考虑升级到付费计划以获得更高的限制。
  • 联系您的组织所有者,以增加项目的预算。

503 - 引擎当前过载,请稍后再试

这个错误消息表明我们的服务器正在经历高流量,暂时无法处理您的请求。这可能由多种原因引起,例如:

  • 我们的服务需求突然激增或激增。
  • 我们的服务器上有计划的或非计划的维护或更新。
  • 我们的服务器出现了意外或无法避免的中断或事件。

要解决此错误,请按照以下步骤操作:

  • 稍等片刻后重试您的请求。我们建议使用指数退避策略或重试逻辑,以尊重响应头和速率限制。您可以在我们的速率限制最佳实践中了解更多信息。
  • 查看我们的状态页面,了解关于我们的服务和服务器的任何更新或公告。
  • 如果您在合理的时间内仍然遇到此错误,请联系我们寻求进一步的帮助。对于造成的任何不便,我们深感抱歉,并感谢您的耐心和理解。

Python库错误类型

类型 概述
APIConnectionError 原因: 连接到我们服务的问题。
解决方案: 检查您的网络设置、代理配置、SSL证书或防火墙规则。
APITimeoutError 原因: 请求超时。
解决方案: 在短暂等待后重试您的请求,如果问题仍然存在,请联系我们。
AuthenticationError 原因: 您的API密钥或令牌无效、过期或已被取消。
解决方案: 检查您的API密钥或令牌,确保其正确且有效。您可能需要从您的账户仪表板生成一个新的。
BadRequestError 原因: 您的请求格式不正确或缺少一些必需的参数,例如令牌或输入。
解决方案: 错误消息应该会指导您找出具体的错误。查看您正在调用的具体API方法的文档,并确保您发送了有效和完整的参数。您可能还需要检查请求数据的编码、格式或大小。
ConflictError 原因: 资源已被另一个请求更新。
解决方案: 再次尝试更新资源,并确保没有其他请求正在尝试更新它。
InternalServerError 原因: 我们这边出了问题。
解决方案: 在短暂等待后重试您的请求,如果问题仍然存在,请联系我们。
NotFoundError 原因: 请求的资源不存在。
解决方案: 确保您是正确的资源标识符。
PermissionDeniedError 原因: 您无权访问请求的资源。
解决方案: 确保您使用了正确的API密钥、组织ID和资源ID。
RateLimitError 原因: 您已达到分配的速率限制。
解决方案: 控制您的请求速度。在我们的速率限制指南中了解更多。
UnprocessableEntityError 原因: 尽管格式正确,但无法处理请求。
解决方案: 请再次尝试请求。

APIConnectionError

APIConnectionError 表示您的请求无法到达我们的服务器或建立安全连接。这可能是由于网络问题、代理配置、SSL证书或防火墙规则导致的。 如果遇到 APIConnectionError,请尝试以下步骤:

  • 检查您的网络设置,并确保您拥有稳定且快速的互联网连接。您可能需要切换到不同的网络、使用有线连接,或减少使用带宽的设备或应用程序的数量。
  • 检查您的代理配置,并确保它与我们的服务兼容。您可能需要更新代理设置、使用不同的代理,或完全绕过代理。
  • 检查您的SSL证书,并确保它们是有效的且最新的。您可能需要安装或更新您的证书、使用不同的证书颁发机构,或禁用SSL验证。
  • 检查您的防火墙规则,并确保它们未阻止或过滤我们的服务。您可能需要修改防火墙设置。
  • 如适用,检查您的容器是否具有正确的权限以发送和接收流量。
  • 如果问题仍然存在,请查看我们的持久性错误的下一步操作部分。

APITimeoutError

APITimeoutError 错误表示您的请求花费的时间太长,导致我们的服务器关闭了连接。这可能是由于网络问题、我们服务的负载过重,或者是需要更多处理时间的复杂请求。 如果遇到 APITimeoutError 错误,请尝试以下步骤:

  • 等待几秒钟,然后重试您的请求。有时候,网络拥堵或我们服务的负载可能会减少,您的请求可能会在第二次尝试时成功。
  • 检查您的网络设置,并确保您拥有稳定且快速的互联网连接。您可能需要切换到不同的网络、使用有线连接,或减少使用带宽的设备或应用程序的数量。
  • 如果问题仍然存在,请查看我们的持久性错误的下一步操作部分。

AuthenticationError

AuthenticationError 表示您的API密钥或令牌无效、过期或被取消。这可能是由于拼写错误、格式错误或安全漏洞导致的。 如果遇到 AuthenticationError 错误,请尝试以下步骤:

  • 检查您的API密钥或令牌,并确保其正确且有效。您可能需要从API密钥仪表板生成一个新密钥,确保没有额外的空格或字符,或者如果您有多个密钥或令牌,可以尝试使用其他密钥或令牌。
  • 确保您已按照正确的格式进行操作。

BadRequestError

BadRequestError(之前称为 InvalidRequestError)表示您的请求格式不正确或缺少一些必需的参数,例如令牌或输入。这可能是由于拼写错误、格式错误或代码中的逻辑错误导致的。

如果遇到 BadRequestError 错误,请尝试以下步骤:

  • 仔细阅读错误消息,并识别具体的错误。错误消息应该会指导您哪个参数是无效或缺失的,以及期望的值或格式是什么。
  • 检查您正在调用的具体API方法的API参考文档,并确保您发送了有效和完整的参数。您可能需要查看参数名称、类型、值和格式,并确保它们与文档匹配。
  • 检查您的请求数据的编码、格式或大小,并确保其与我们的服务兼容。您可能需要将数据编码为UTF-8,将数据格式化为JSON,或者如果数据过大,则需要压缩数据。
  • 使用Postman或curl等工具测试您的请求,并确保其按预期工作。您可能需要调试您的代码,并修复请求逻辑中的任何错误或不一致之处。
  • 如果问题仍然存在,请查看我们的持久性错误的下一步操作部分。

InternalServerError

InternalServerError 表示在处理您的请求时我们这边出了问题。这可能是由于临时错误、bug 或系统故障导致的。 对此造成的任何不便,我们深感抱歉,并正在努力尽快解决任何问题。您可以查看我们的系统状态页面以获取更多信息。

如果遇到 InternalServerError 错误,请尝试以下步骤:

  • 等待几秒钟,然后重试您的请求。有时候,问题可能会很快解决,您的请求可能会在第二次尝试时成功。
  • 检查我们的状态页面,查看是否有正在进行的事件或可能影响我们服务的维护。如果有活动事件,请关注更新,并在事件解决之前等待再次尝试您的请求。
  • 如果问题仍然存在,请查看我们的持久性错误的下一步操作部分。

我们的支持团队将调查此问题,并尽快回复您。请注意,由于需求量大,我们的支持队列时间可能较长。您也可以在我们的社区论坛上发帖,但请务必省略任何敏感信息。

RateLimitError

RateLimitError 表示您已达到您分配的速率限制。这意味着您在一定时间内发送了过多的令牌或请求,我们的服务暂时阻止了您发送更多请求。 我们实施速率限制是为了确保对我们资源的公平有效使用,防止滥用或过载我们的服务。

如果遇到 RateLimitError 错误,请尝试以下步骤:

  • 发送更少的令牌或请求,或者放慢速度。您可能需要降低请求的频率或量,批量处理您的令牌,或者实施指数退避。您可以阅读我们的速率限制指南以获取更多详细信息。
  • 等待您的速率限制重置(一分钟),然后重试您的请求。错误消息应该会给您一个关于您的使用率和允许使用量的概念。
  • 您还可以从您的账户仪表板查看您的API使用统计信息。

持续性错误

如果问题仍然存在,请通过聊天联系我们的支持团队,并向他们提供以下信息:

  • 您正在使用的模型
  • 您收到的错误消息和代码
  • 您发送的请求数据和标头
  • 您请求的时间戳和时区
  • 可能有助于我们诊断问题的任何其他相关细节

我们的支持团队将调查此问题,并尽快回复您。请注意,由于需求量大,我们的支持队列时间可能较长。您也可以在我们的社区论坛上发帖,但请务必省略任何敏感信息。

处理错误

我们建议您以编程方式处理API返回的错误。为此,您可能希望使用类似以下的代码片段:

import openai
from openai import OpenAI
client = OpenAI()

try:
  #Make your OpenAI API request here
  response = client.completions.create(
    prompt="Hello world",
    model="gpt-3.5-turbo-instruct"
  )
except openai.APIError as e:
  #Handle API error here, e.g. retry or log
  print(f"OpenAI API returned an API Error: {e}")
  pass
except openai.APIConnectionError as e:
  #Handle connection error here
  print(f"Failed to connect to OpenAI API: {e}")
  pass
except openai.RateLimitError as e:
  #Handle rate limit error (we recommend using exponential backoff)
  print(f"OpenAI API request exceeded rate limit: {e}")
  pass