メインコンテンツへスキップ
タイムアウトの多くは、生成の途中でクライアントや経路上のプロキシが待つのをやめることで起こります。接続を閉じても上流に届いたリクエストは取り消されず、生成が終わると課金されます。
タイムアウトの直後にリトライすると、二重に課金されても結果が得られないことがあります。
  • 切断したリクエストは、たいていそのまま完了して課金されます。
  • SDKの組み込みのリトライは、タイムアウトの後に同じリクエストを再送します。
  • リトライする前に、呼び出しログで前のリクエストのステータスと課金額を確認してください。

推奨するタイムアウト

短いタイムアウトとリトライを組み合わせるより、最初から十分に長いタイムアウトを設定してください。 推論モデルは回答の前に考えるため、1回のリクエストが数分かかることがあります。例は次のとおりです。
  • gpt-6-sol、gpt-5.6-sol
  • gpt-5.4-pro、o3-pro(gpt-5.5-pro は2026年10月に提供を終了しました)
  • gemini-3.1-pro-preview

長い出力にはストリーミングを使う

ストリーミングを使わないリクエストは、回答がすべて生成された後で返るため、読み取りのタイムアウトが生成にかかる全時間と競うことになります。ストリーミング(stream=True)なら、出力は生成されたそばから届きます。
  • 最初のデータはすぐに届き、その後もイベントが続きます。
  • 読み取りのタイムアウトは、イベントの間隔をカバーできれば十分で、通常は90〜120秒で足ります。
  • 全体の所要時間は変わりませんが、回答の全体を待つ間に接続が切れることはなくなります。
ストリーミングを使わない場合は、タイムアウトを300〜600秒にしてください。生成が長いほど失敗しやすくなります。

長いリクエストでは自動リトライを無効にする

公式のOpenAI Python SDKは、タイムアウトやその他の一部のエラーの後、既定で2回リトライします。画像や推論のリクエストでは、max_retries を0にして、リトライするタイミングを自分のコードで決めてください。

タイムアウトを延ばしても続くとき

次の順に確認してください。
1

新しいタイムアウトが有効か確認する

フレームワークによっては、HTTPクライアントを独自のタイムアウトで包んでいます。有効な設定を出力して、実際に使われているものを変更したか確認してください。
2

経路上のすべての中継点を確認する

生成より短いタイムアウトを持つ中継点があれば、そこが先に接続を閉じます。次の項目をそれぞれ延ばしてください。
  • 自分で運用しているNginxなどのリバースプロキシ(proxy_read_timeout の既定は60秒)
  • クラウドのロードバランサーのアイドルタイムアウト
  • サーバーレス関数の最大実行時間
  • キューのワーカーの1ジョブあたりのタイムアウト
3

タイムアウトとレート制限を見分ける

接続が切れる、または読み取りがタイムアウトするのは、待つ時間が足りなかったためです。429 はレート制限または処理能力の制限で、待つ時間とは関係ありません。429 はバックオフを入れて数回リトライし、続く場合はサポートに連絡してください。
4

呼び出しログで実際の所要時間を確認する

呼び出しログで、そのリクエストの所要時間と課金額を確認し、それより余裕を持たせてタイムアウトを設定します。

よくある質問

タイムアウトでも課金されますか?

上流の提供元が生成を終えていれば、課金されます。切断が起きるのはお客様側で、ゲートウェイと提供元は処理を続けています。429 や 503 など、上流が200以外を返した場合は課金されません。実際の課金額は呼び出しログで確認できます。返金と残高の調整は利用規約に従います。

切断後にIDで画像を取得できますか?

できません。画像のエンドポイントは同期型で、LaoZhang APIは生成結果を既定では保存しないため、切断された結果は失われます。非同期にしたい場合は、画像APIはタスクIDを返しますか?にあるように、自社のバックエンドにタスクキューを置いてください。

長いタイムアウトの副作用は?

課金には影響しません。課金は使用量または呼び出し回数だけで決まり、待った時間では変わらないためです。ただし、長い接続はワーカーや接続プールの枠を占有します。負荷が高いときは、画像や推論のリクエストを別のジョブキューで処理してください。

関連ページ