跳到主要内容

超时与模型不稳定

背景

由于网络波动或厂商服务不稳定,模型调用偶尔会出现超时或失败。图灵平台提供三个配置项来应对:

配置项作用
timeout控制单次请求的最大等待时间
max_retries失败后自动重试
fallbacks主模型不可用时切换到备用模型

为什么会遇到超时?

如果你遇到超时错误,可能是以下原因:

  1. 大文件传输:上传大量图片或文件需要更多时间
  2. 长思考问题:使用思考模式的模型(如 o 系列、Deepseek R1)在复杂问题上可能需要较长的推理时间
  3. 模型静默期:模型在处理请求时可能有一段时间没有返回数据

排查方法:用 stream=True 模式验证是否有首个 chunk 返回

completion = client.chat.completions.create(
model="turing/deepseek-r1",
messages=[{"role": "user", "content": "复杂的数学问题..."}],
stream=True
)

for chunk in completion:
print(chunk) # 观察首个 chunk 返回时间
  • 有首 chunk 返回但后续超时:说明模型正在工作,增加 timeout 时间即可
  • 一直没有返回:可能是网络问题或请求参数错误

实际案例

假设你的应用对响应时间有要求:希望 10 秒内完成大模型调用

正常情况下,deepseek-v4-flash 平均 3-4 秒返回。但偶尔会出现超时或失败。

解决方案:设置 timeout: 5 秒,配合 fallbacks 降级到 doubao-seed-2.1-turbo

from openai import OpenAI

client = OpenAI()

completion = client.chat.completions.create(
model="deepseek-v4-flash",
messages=[{"role": "user", "content": "你好"}],
turing_options={
"timeout": 5,
"fallbacks": "doubao-seed-2.1-turbo"
}
)

效果

  • 正常情况:deepseek-v4-flash 3-4 秒返回
  • 主模型超时(>5秒)或失败:自动切换到 doubao-seed-2.1-turbo
  • 总耗时控制在 10 秒以内

如果希望主模型有一次重试机会再降级:

turing_options={
"timeout": 5,
"max_retries": 1,
"fallbacks": "doubao-seed-2.1-turbo"
}

配置多个备用模型

turing_options={
"timeout": 10,
"max_retries": 1,
"fallbacks": [
"doubao-seed-2.1-turbo", # 第一备选
"turing/gpt-5.4-mini" # 第二备选
]
}

Fallback 时覆盖参数

如果备用模型需要不同的参数配置:

turing_options={
"fallbacks": {
"model": "doubao-seed-2.1-turbo",
"thinking": {"type": "enabled"}, # 启用深度思考
"temperature": 0.7
}
}

客户端超时说明

OpenAI SDK 的超时是客户端超时,turing_options.timeout 是服务端超时,两者独立生效。建议将 SDK 客户端超时设置得比服务端超时更长:

client = OpenAI(
timeout=60.0 # 客户端超时 60 秒
)

completion = client.chat.completions.create(
model="turing/gpt-4.1",
messages=[{"role": "user", "content": "Hello!"}],
turing_options={
"timeout": 30 # 服务端超时 30 秒
}
)

参数速查表

参数类型默认值范围说明
timeoutfloatstream: 90s, non-stream: 120s0-300请求超时时间(秒)
max_retriesint01-3最大重试次数
fallbacksstring | object | arraynull-备用模型配置

注意事项

  1. 流式请求在开始输出 chunk 后,如果发生错误不会重试或触发 Fallback
  2. 确保 fallback 模型支持原请求的功能(如 tools、vision 等)
  3. fallback 请求会产生独立的计费,按实际使用的模型计算