请求超时

通过 Portkey 的 请求超时 有效管理不可预测的 LLM 延迟。此功能允许自动终止超过指定持续时间的请求,让您优雅地处理错误或发起另一个更快的请求。

启用请求超时

您可以在发出请求时启用请求超时,或者您可以在配置中设置它们。

请求超时以毫秒integer)为单位指定。

发起请求时

在实例化您的 Portkey 客户端时设置请求超时,或者如果您使用 REST API,请发送 x-portkey-request-timeout 头部。

from portkey_ai import Portkey

# 使用虚拟密钥构建客户端
portkey = Portkey(
    api_key="PORTKEY_API_KEY",
    virtual_key="VIRTUAL_KEY",
    request_timeout=3000
)

completion = portkey.chat.completions.create(
    messages = [{ "role": 'user', "content": 'Say this is a test' }],
    model = 'gpt-4o-mini'
)

配置说明

在配置中,请求超时时间可以设置在 (1) 策略级别,或 (2) 目标级别。

对于 10 秒的超时,它将是:

在策略层面设置请求超时

在这里,10秒的请求超时将适用于*所有*在此配置中的目标。

在目标级别设置请求超时

在这里,第一个目标设置了10秒的请求超时,而第二个目标设置了2秒的请求超时。

嵌套的目标对象继承顶层超时,可以在任何级别覆盖以进行自定义控制。

嵌套配置中的超时工作原理

  1. 我们在第3行设置了全局超时为2秒

  2. 第一个目标具有嵌套的回退策略,第7行的顶级请求超时为5秒

  3. 第一个虚拟键(第10行)将应用5秒的目标级超时

  4. 对于第二个虚拟键(即open-ai-1-2),有一个超时覆盖,设置为10秒,仅适用于此目标

  5. 对于最后一个目标(即虚拟键azure-open-ai-1),将应用顶级策略超时2秒

处理请求超时

Portkey 对于超时请求发出标准的 408 错误。您可以通过 on_status_codes 参数设置备用或重试策略,从而确保对这些情况的强健处理。

触发请求超时的回退机制

在这里,只有在第一次请求超时超过2秒后,才会从OpenAI回退到Azure OpenAI,否则请求将以408错误代码失败。

触发重试与请求超时

在这里,当请求超过 1 秒未返回响应时,将最多触发 3 次重试。在 3 次重试均未成功后,将以 408 代码失败。

这是关于如何在请求中使用配置的一般指南。

注意事项和考虑事项

虽然请求超时是一个强大的功能,可以帮助您优雅地处理不稳定的模型及其延迟,但仍有一些事项需要考虑:

  1. 确保您设置合理的超时时间 - 例如,像 gpt-4 这样的模型通常具有不到10秒的响应时间

  2. 确保您优雅地处理408错误,以便在请求超时时通知用户重新运行查询,并在您的应用中设置一些良好的交互

  3. 对于流式请求,如果在指定的持续时间之前获得至少一个数据块,则不会触发超时。

Last updated