错误代码

本指南提供了您在使用 API 和我们的官方 Python 库时可能遇到的错误代码的概述。本概述中提到的每个错误代码都有一个专门的部分,提供更具体的指导。

API 错误

以下表格列出了 API 错误代码、其潜在原因以及解决方案。

代码概述
401 - 无效身份验证原因:无效的身份验证凭据。
解决方案:确保您使用的是正确的 API 密钥和请求组织。
401 - 提供的 API 密钥不正确原因:请求中提供的 API 密钥不正确。
解决方案:确保使用的 API 密钥正确,清除浏览器缓存,或生成新的 API 密钥。
401 - 必须是组织成员才能使用 API原因:您的账户不是组织的一部分。
解决方案:联系我们以加入新的组织,或者请您的组织管理员邀请您加入组织。
403 - 国家、地区或领土不受支持原因:您正在从不受支持的国家、地区或领土访问 API。
解决方案:参见此页面以了解更多信息。
429 - 请求的速率超过限制原因:您的请求速度过快。
解决方案:降低请求速度。阅读速率限制指南
429 - 您已经超过了当前配额,请查看您的计划和账单详情原因:您的信用或每月最高支出已用完。
解决方案:购买更多信用或了解如何增加您的限制
500 - 服务器在处理您的请求时发生错误原因:我们的服务器上发生了问题。
解决方案:在稍作休息后重试您的请求,并在问题持续时与我们联系。查看状态页面
503 - 引擎当前负载过重,请稍后再试原因:我们的服务器正在经历高峰交通。
解决方案:请在稍作休息后重试您的请求。

401 - 无效身份验证

该错误消息表明您的身份验证凭据无效。这可能是由于以下几个原因:

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

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

  1. 检查您在请求标头中使用的 API 密钥和组织 ID 是否正确。您可以在账户设置中找到您的 API 密钥和组织 ID,或者通过选择所需项目,在常规设置下找到它们。
  2. 如果您不确定您的 API 密钥是否有效,可以生成新的 API 密钥。确保用新的 API 密钥替换旧的 API 密钥,并按照我们的最佳实践指南操作。

401 - 提供的 API 密钥不正确

该错误消息表明您在请求中使用的 API 密钥不正确。这可能是由于以下几个原因:

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

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

  1. 尝试清除浏览器的缓存和 cookie,然后重试。
  2. 检查您在请求标头中使用的 API 密钥是否正确。
  3. 如果您不确定您的 API 密钥是否正确,可以生成新的 API 密钥。确保在代码库中用新的 API 密钥替换旧的 API 密钥,并按照我们的最佳实践指南操作。

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

该错误消息表明您的账户不是组织的一部分。这可能是由于以下几个原因:

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

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

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

429 - 请求的速率超过限制

该错误消息表明您已经达到了 API 的分配速率限制。这意味着您在较短的时间内提交了太多的令牌或请求,而这些请求都超过了允许的请求数。这可能是由于以下几个原因:

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

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

  1. 降低请求的速度,并避免进行不必要或冗余的调用。
  2. 如果您使用的是一个循环或脚本,请确保实现了一个回退机制或重试逻辑,该机制或逻辑能够尊重速率限制和响应标头。您可以在我们的速率限制指南中了解有关我们的速率限制策略和最佳实践的更多信息。
  3. 如果您将组织与其他用户共享,请注意,限制是针对组织而不是针对用户进行的。了解团队其他成员的使用情况是很有价值的,因为这将对限制有所贡献。
  4. 如果您使用的是一个免费的或者低层次的计划,请考虑升级到按照使用情况计费的计划,该计划提供了更高的速率限制。您可以在我们的速率限制指南中比较每个计划的限制。
  5. 与您的组织所有者联系,增加项目的速率限制。

429 - 您已经超过了当前配额,请查看您的计划和账单详情

该错误消息表明您已经达到了 API 的每月使用限制,或者对于预付费信用的客户,已经使用了所有的信用。您可以在限制页面上查看最大使用限制。这可能是由于以下几个原因:

  • 您使用的是一个高卷积或者复杂的服务,该服务会消耗大量的信用或令牌。
  • 您的每月预算设置得太低,无法满足您的组织的使用情况。
  • 您的每月预算设置得太低,无法满足您的项目的使用情况。

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

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

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

该错误消息表明我们的服务器正在经历高峰交通,无法处理您的请求。这可能是由于以下几个原因:

  • 我们的服务正在经历需求的突然增加或者冲击。
  • 我们的服务器正在进行计划或者未计划的维护或更新。
  • 我们的服务器正在经历一个意外或者无法避免的中断或事件。

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

  1. 在稍作休息后重试您的请求。有时,网络拥堵或者我们的服务器上的负载可能会减少,而您的请求可能会在第二次尝试时成功。
  2. 查看我们的状态页面,了解有关我们的服务和服务器的更新或者公告。
  3. 如果您在合理的时间内仍然收到此错误,请与我们联系,以获取进一步的帮助。我们感到很抱歉,并且非常感激您的耐心和理解。

Python 库错误类型

以下表格列出了我们的官方 Python 库可能引发的错误类型、其潜在原因以及解决方案。

类型概述
APIConnectionError原因:无法连接到我们的服务。
解决方案:检查您的网络设置、代理配置、SSL 证书或防火墙规则。
APITimeoutError原因:请求超时。
解决方案:在稍作休息后重试您的请求,并在问题持续时与我们联系。
AuthenticationError原因:您的 API 密钥或令牌无效、过期或被撤销。
解决方案:检查您的 API 密钥或令牌,确保它们是正确和有效的。您可能需要在账户仪表板中生成新的密钥。
BadRequestError原因:您的请求格式错误或缺少一些必需的参数。
解决方案:查看有关所调用 API 方法的文档,并确保您正在发送有效和完整的参数。
ConflictError原因:另一个请求已经更新了该资源。
解决方案:尝试再次更新资源,并确保没有其他请求正在尝试更新它。
InternalServerError原因:我们的问题。
解决方案:在稍作休息后重试您的请求,并在问题持续时与我们联系。
NotFoundError原因:请求的资源不存在。
解决方案:确保您正在使用正确的资源标识符。
PermissionDeniedError原因:您没有权限访问所请求的资源。
解决方案:确保您正在使用正确的 API 密钥、组织 ID 和资源 ID。
RateLimitError原因:您已经达到了分配的速率限制。
解决方案:降低请求的速度。在我们的速率限制指南中了解更多信息。
UnprocessableEntityError原因:无法处理请求,即使格式正确。
解决方案:请再次尝试该请求。

APIConnectionError

APIConnectionError 表明您的请求无法连接到我们的服务器或者建立安全连接。这可能是由于网络问题、代理配置、SSL 证书或防火墙规则等原因。

如果您遇到 APIConnectionError,请尝试以下步骤:

  1. 检查您的网络设置,并确保您拥有稳定和高速的互联网连接。您可能需要切换到不同的网络、使用有线连接或者减少设备或应用程序的带宽使用量。
  2. 检查您的代理配置,并确保它与我们的服务兼容。您可能需要更新您的代理设置、使用不同的代理或者绕过代理。
  3. 检查您的 SSL 证书,并确保它们是有效和最新的。您可能需要安装或续订您的证书、使用不同的证书颁发机构或者禁用 SSL 验证。
  4. 检查您的防火墙规则,并确保它们没有阻止或过滤我们的服务。您可能需要修改您的防火墙设置。
  5. 如果适合,检查您的容器是否具有发送和接收流量的正确权限。
  6. 如果问题持续,请参阅我们的持久化错误的下一步步骤部分。

APITimeoutError

APITimeoutError 错误表明您的请求花费了太多时间并且我们的服务器已经关闭了连接。这可能是由于网络问题、我们的服务器上的负载过重或者复杂的请求等原因。

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

  1. 等待几秒钟,然后重试您的请求。有时,网络拥堵或者我们的服务器上的负载可能会减少,而您的请求可能会在第二次尝试时成功。
  2. 检查您的网络设置,并确保您拥有稳定和高速的互联网连接。您可能需要切换到不同的网络、使用有线连接或者减少设备或应用程序的带宽使用量。
  3. 如果问题持续,请参阅我们的持久化错误的下一步步骤部分。

身份验证错误

身份验证错误 表明您的 API 密钥或令牌无效、过期或被撤销。这可能是由于拼写错误、格式错误或安全漏洞等原因。

如果您遇到 身份验证错误,请尝试以下步骤:

  1. 检查您的 API 密钥或令牌,并确保它们是正确和有效的。您可能需要在 API 密钥仪表板中生成新的密钥、确保没有多余的空格或字符,或者使用不同的密钥或令牌(如果您有多个的话)。
  2. 确保您遵循了正确的格式。

坏请求错误

BadRequestError(之前的 InvalidRequestError)表明您的请求格式错误或缺少一些必需的参数,例如令牌或输入。这可能是由于拼写错误、格式错误或逻辑错误等原因。

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

  1. 仔细阅读错误消息,并识别具体的错误。错误消息应该告诉您哪个参数是无效的或缺失的,以及哪个值或格式是期望的。
  2. 查看所调用 API 方法的文档,并确保您正在发送有效和完整的参数。您可能需要查看参数的名称、类型、值和格式,并确保它们与文档相匹配。
  3. 查看请求数据的编码、格式或大小,并确保它们与我们的服务兼容。您可能需要将数据编码为 UTF-8、将数据格式化为 JSON,或者在数据过大时进行压缩。
  4. 使用 Postman 或 curl 等工具测试您的请求,并确保其按照预期的方式工作。您可能需要调试您的代码并修复请求逻辑中的任何错误或不一致。
  5. 如果问题持续,请参阅我们的持久化错误的下一步步骤部分。

内部服务器错误

InternalServerError 表明在处理您的请求时,我们的一些问题。这可能是由于临时错误、错误或系统中断等原因。

我们感到非常抱歉,并且正在尽力尽快解决任何问题。您可以在系统状态页面上查看更多信息。

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

  1. 等待几秒钟,然后重试您的请求。有时,问题可能会很快得到解决,而您的请求可能会在第二次尝试时成功。
  2. 检查我们的状态页面,了解是否有正在进行的事件或维护工作,这些工作可能会影响我们的服务。如果有一个正在进行的事件,请遵循更新并在其解决之前重试您的请求。
  3. 如果问题持续,请参阅我们的持久化错误的下一步步骤部分。

我们的支持团队将调查问题并尽快与您联系。请注意,由于需求较大,我们的支持队列时间可能会较长。您也可以在我们的社区论坛上发布,但请确保不要泄露任何敏感信息。

RateLimitError

RateLimitError 表明您已经达到了分配的速率限制。这意味着您在较短的时间内发送了太多的令牌或请求,而这些请求都超过了允许的请求数。

我们会强制执行速率限制,以确保公平和有效的使用我们的资源,并防止对我们的服务进行滥用或过载。

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

  1. 发送较少的令牌或请求,或者放慢速度。您可能需要减少请求的频率或体积、对令牌进行批处理,或者实现指数退避。您可以在我们的速率限制指南中了解有关我们的速率限制策略和最佳实践的更多信息。
  2. 等待您的速率限制重置(一分钟),然后重试您的请求。错误消息应该会给您一些关于您的使用率和允许的使用率的概念。
  3. 您也可以在您的账户仪表板中查看 API 使用情况的统计信息。

持久化错误

如果问题持续,请通过聊天与我们的支持团队联系,并提供以下信息:

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

我们的支持团队将调查问题并尽快与您联系。请注意,由于需求较大,我们的支持队列时间可能会较长。您也可以在我们的社区论坛上发布,但请确保不要泄露任何敏感信息。

处理错误

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

import openai
from openai.error import APIError, APIConnectionError, RateLimitError

client = openai.Client()

try:
  # 在此处进行 OpenAI API 请求
  response = client.completions.create(
    prompt="Hello world",
    model="gpt-3.5-turbo-instruct"
  )

except APIError as e:
  # 在此处处理 API 错误,例如重试或记录日志
  print(f"OpenAI API 返回了 API 错误:{e}")
  pass

except APIConnectionError as e:
  # 在此处处理连接错误
  print(f"无法连接到 OpenAI API:{e}")
  pass

except RateLimitError as e:
  # 在此处处理速率限制错误(我们建议使用指数退避)
  print(f"OpenAI API 请求超过了速率限制:{e}")
  pass

此代码使用 try 块进行 API 请求,并使用一系列 except 块来处理可能发生的不同类型的错误。 APIError 类是所有 API 相关错误的基类,而 APIConnectionErrorRateLimitError 类是专门处理特定类型错误的子类。

在每个 except 块中,您可以添加自己的逻辑来处理错误,例如重试请求、记录错误或向用户显示错误消息。 pass 语句用作占位符,如果您还不想添加任何逻辑的话。

通过使用此代码片段,您可以确保您的应用程序能够优雅地处理错误并提供更好的用户体验。

请注意,此代码片段仅供参考。您可能需要根据自己的应用程序和使用情况进行调整和扩展。此外,我们的 Python 库可能会随着时间的推移和更新而发生变化,因此请确保您使用的是最新版本的库,并且定期查看我们的文档以了解最新的更改和最佳实践。

Was this page helpful?