ガイド
レート制限とクォータ
並行上限、レート制限、クォータとアカウント容量、およびバックオフ再試行の方法
レート制限とクォータ
プラットフォームの制限はいくつかの種類に分かれており、発生時の表示もそれぞれ異なります。どの種類なのかを区別して初めて、迅速に対処できます。
| 制限の種類 | 発生時の表示 | 対処方法 |
|---|---|---|
| リクエスト頻度(レート制限) | HTTP 429「リクエストが多すぎます」 | バックオフしてから再試行し、並行して再試行しない |
| 非同期タスクの並行数 | HTTP 429、task_concurrency_exceeded | 既存のタスクが完了してから送信する |
| Key のクォータ | 残高/クォータ不足のメッセージ、タスクは作成されない | チャージする、Key のクォータを調整する、またはリクエストを小さくする |
| アカウント残高 | 残高が今回の推定消費をカバーできない旨のメッセージ | ウォレットでチャージする |
| 素材の容量 | 素材送信時の形式とサイズの検証 | ファイルを修正するか image_url に変更する |
リクエスト頻度の制限
プラットフォームにはリクエスト頻度の制限があります。ポーリングが速すぎる、並行数が高すぎる、または短時間に大量の再試行を行うと、制限に達する可能性があります:
{ "error": { "code": "...", "message": "请求过于频繁" } }HTTP ステータスは 429 です。
正しい対処:
429を受け取ったらバックオフする:一定時間待ってから次のリクエストを送信し、すぐに再送信しない;- 並行リクエストでレート制限を回避しようとしない。バックオフ時間が長くなるだけです;
- 非同期タスクをポーリングする際は、固定された適切な間隔(たとえば数秒に 1 回)を使用し、間隔を空けずにポーリングしない。
429 以外のステータスコードをむやみに再試行しない:
| ステータスコード | 対処 |
|---|---|
429 | 案内に従ってバックオフしてから再試行 |
一時的な 5xx | RequestId を保存し、バックオフして 1 回再試行 |
400 | パラメータの問題。リクエストを修正してから送信 |
401 | Key が無効または停止済み。キーを確認 |
403 | そのリソースまたはモデルへのアクセス権限なし |
404 | リソースが存在しない。ID を確認 |
非同期タスクの並行数
動画などの非同期タスクは並行上限の制約を受け、単一アカウント単位とプラットフォーム全体単位に分かれます。上限に達すると HTTP 429 を返し、
エラーコードは task_concurrency_exceeded で、メッセージには「現在 N 件 / 上限 M 件」が示されます。
発生した場合は以下のように対処してください:
- 既存のタスク ID を保持する。破棄しない;
- 処理中のタスクが終端状態になるのを待つ(またはそれらの現在の状態を直接照会する);
- 待った後にユーザーが主体的に再送信する。連続して再試行しない;
- 並行数を「奪う」ために同じタスクを重複して送信しない——重複したタスクと重複した費用が発生します。
一括送信の前に、業務のバックエンドでキュー管理を行うことをおすすめします。一度にすべてを送信するのではなく、処理中のタスク数を制御してください。
Key のクォータとアカウント残高
クォータと残高は2 層の制限です:
| 階層 | 説明 |
|---|---|
| Key のクォータ | コンソールの「API キー」でその Key に設定する使用量の上限と有効期限 |
| アカウント残高 | LocoPal アカウント全体の利用可能残高、プランのクォータ、またはクレジット |
非同期タスクは送信前に残高が今回の推定消費をカバーできるかを検証します。不足している場合は読み取り可能なメッセージを返し、 タスクを作成しません。そのため、この場合は費用が発生しません。
対処方法:
- Key のクォータが不足 → 「API キー」でその Key のクォータまたは有効期限を調整する;
- アカウント残高が不足 → 「ウォレット」でチャージするかプランを利用する;
- 推定消費が大きすぎる → 解像度、長さを下げるか、より小さなモデルに変更する。
業務のバックエンドで残高の事前判定を行い、エンドユーザーに分かりやすいメッセージを表示することをおすすめします。プラットフォームのエラーをそのままユーザーに投げ返さないでください。
素材の制限
素材エンドポイントはアップロードデータに対して検証を行います:
| 制限 | 表示 | 対処 |
|---|---|---|
| アドレスの形式 | image_url 必须是可公开下载的 http(s) 地址… | パブリックインターネットから直接ダウンロードできる http(s) アドレスに変更する |
| 1 回につき 1 種類のみ送信 | image_url 与 data_url 只能提交一个 | フィールドを 1 つだけ残す |
| データサイズ | 图片数据无效或超过 20MB | 画像を圧縮するか image_url に変更する |
| グループの種類 | 素材分组不存在或不是虚拟素材分组 | 画像は virtual グループにのみ送信できる |
| 名前の長さ | グループ名は空にできず、64 文字以内。説明は 300 文字以内 | 名前または説明を修正する |
素材の審査が完了していないことはエラーではありません:照会が 200 と status が Processing を返す場合は、同じ素材 ID でポーリングを続けてください。
重複して送信しないでください。
ポーリングの推奨事項
非同期タスクの照会では費用は発生しませんが、ポーリングが密すぎるとレート制限が発生します。
| タスクの段階 | 推奨間隔 |
|---|---|
| 送信直後(待機中) | 数秒に 1 回 |
| 生成中 | 数秒から十数秒に 1 回 |
| 終端状態に到達 | ポーリングを停止 |
ポーリングには総時間の上限を設けてください。上限に達したら照会を停止し、ユーザーにタスク ID を返して、後で ID を使って照会を続けられるようにします—— タスクを再作成しないでください。
冪等性と重複送信
プラットフォームは同一のリクエストを自動的に統合しません。プロンプト、パラメータ、参照素材が完全に同じでも、主体的に送信するたびに 新しいタスクと新しい結果が作成され、それぞれ課金されます。
そのため:
- 業務側の冪等キー(注文番号、業務 ID)を使用して、ユーザーの二重クリックによる重複送信を防止する;
- 非同期タスクは送信後すぐにタスク ID をデータベースに保存し、ネットワーク障害時は再作成ではなく照会で復旧する;
- 同じ失敗結果に対して「直接再試行」をクリックした場合にのみ、元の位置で再実行されます——この場合も新しいタスクと新しい費用が発生します。
