使用 OpenAI 处理 API 超时和重试涉及到设置合适的超时时间、实现重试逻辑以及有效地管理错误。当 API 请求超过您的应用程序愿意等待的时间时,会发生超时。 为了防止这种情况,请配置您的客户端以使用基于操作的合理的超时值。 例如,简单的补全可能需要 10-20 秒,而复杂的任务(如大型上下文处理)可能需要 30 秒或更长时间。 大多数 HTTP 客户端(例如,Python 的 requests
或 Node.js 的 axios
)允许您全局或按请求设置超时。 如果发生超时,您的代码应捕获异常(例如 Python 中的 requests.exceptions.Timeout
),并决定是否重试。
应谨慎处理重试,以避免压垮 API 或重复工作。 使用指数退避 - 一种重试之间等待时间更长的策略(例如,1 秒、2 秒、4 秒)。 诸如 tenacity
(Python) 或 retry
(Node.js) 之类的库简化了此过程。 例如,在 Python 中,您可以使用 @retry(wait=wait_exponential(), stop=stop_after_attempt(3))
包装您的 OpenAI API 调用,以重试最多三次,并且延迟会越来越长。 始终检查重试安全错误:网络问题(5xx 服务器错误、超时)或速率限制(HTTP 429)通常是可重试的。 避免重试客户端错误(4xx 代码,例如无效的 API 密钥),因为如果不更改代码,它们将无法解决。
监控和日志记录对于调试和完善您的方法至关重要。 记录重试次数、错误类型和响应时间等详细信息以识别模式。 例如,频繁的 429 错误可能表明需要调整速率限制或升级您的计划。 诸如 Prometheus 或特定于云的服务(AWS CloudWatch)之类的工具可以跟踪指标。 此外,如果支持,请使用幂等键来确保重试不会导致重复的副作用。 例如,在写入操作中包含一个具有唯一值的 Idempotency-Key
标头。 最后,在模拟故障下测试您的重试逻辑(例如,使用 toxiproxy
之类的工具)以确保它在实际场景中按预期运行。