この記事では、Azure OpenAI Service の使用中に発生する可能性がある一般的なエラー コードの内容や原因、解決策についてご紹介します。
HTTP 400 エラー / Bad Request
このエラーは、クライアント側から送信したリクエストに問題があることを示します。
原因として、プロンプトの誤入力、プロンプトがコンテンツフィルターによりブロックされている可能性が挙げられます。
対処方法:
- クライアント側から送信したプロンプトを見直してください (Jsonペイロードの形式や、パラメーターのミススペルなど)
- コンテンツのフィルター処理 の設定を確認し、必要に応じてレベルを調整してください。
HTTP 401 エラー / Unauthorized
このエラーは、認証に問題が発生していることを示します。
原因として、Azure OpenAI Service へのリクエストに必要な API キーなどの認証情報に誤りがある可能性が挙げられます。
例:リクエスト時にキーが含まれていない、キーに余分なスペースや欠落文字がある、アクセス トークンの有効期限が切れている、必要なロールが割り当てられていない
対処方法:
API キー 認証をご使用の場合は、リクエスト時に必要なENDPOINT, API-KEY, DEPLOYMENT-NAME が正しいかどうかをご確認ください。
確認方法は、以下の公開情報をご参照ください。
Microsoft Entra ID 認証をご使用の場合は、リクエストを行うユーザーに対して、必要なロールが割り当たっているかどうかをご確認ください。
詳細は、以下の公開情報をご参照ください。
HTTP 403 エラー / Forbidden
このエラーは、ネットワーク制限により生じている可能性があります。
対処方法:
HTTP 404 エラー / Not Found
このエラーは、クライアント側の要求で指定されたリソースが、サーバー側で見つけられなかったことを示します。
原因として、API エンドポイントが正しくないといったことが挙げられます。
対処方法:
API リファレンス や SDK リファレンスを参照し、API エンドポイントの指定が正しいことを確認します
エンドポイント指定時の必須パラメーターを確認します。 (リソース名、デプロイメントID、API バージョン (後述))
API バージョン (モデルバージョンとは異なります)が正しいかどうかをご確認ください。 (API エンドポイントは、指定された要求が正しく最新であることを確認するために、バージョン管理に api-version クエリ パラメーターを使用しており、サービス API のすべてのバージョンは、YYYY-MM-DD の日付構造になっています。)
例)https:// (中略) /openai/deployments/my-first-deployment/completions?api-version=2022-12-01
HTTP 408 エラー / Request Timeout
このエラーは、サーバー側の応答がない、ネットワーク接続が不安定などでリクエストがタイムアウトしたことを示します。
原因として、クライアント側のインターネット接続の速度が遅い、大きな要求の送信に時間がかかりすぎている、サーバー側に要求の処理に遅延を引き起こす何らかの問題がある、などが挙げられます。
対処方法:
- ご利用のインターネット環境において、リクエストを送信するのに十分な安定性と速度があることをご確認ください。そのうえで、再度リクエストを送信しエラーが解消するかどうかをご確認ください。
- 大きなクエリが送信されている場合は、要求を複数の小さなクエリに分割することをご検討ください。これにより、Azure OpenAI は情報をより効率的に処理することができ、タイムアウトの可能性が低減します。
- Chat Completions API を使用している場合は、API リクエストを行う際に stream=true を設定することを検討してください。これにより、サーバー側は、部分的な結果が利用可能になったときに送信できるため、タイムアウトの可能性が低減します。
HTTP 429 エラー / Too Many Requests
このエラーは、定義されたレート制限を超過していることや、バックエンドサービスがスケーリング中であることを示します。
原因として、モデルデプロイに割り当てられているクォーターの TPM (Tokens-per-Minute) が少ない場合や、Azure OpenAI サービスが需要に合わせてスケールアップしているときにスローされ、必要なスケールに達しなかった一時的なエラーの可能性が挙げられます。
対処方法:
- モデルデプロイに対して割り当てている TPM のレート制限の変更を検討します。
Azure OpenAI Service のクォータを管理する - Azure AI services | Microsoft Learnデプロイ後は、Azure AI Studio の [管理>デプロイ] で [デプロイの編集] を選択して、TPM の割り当てを調整できます。 この選択は、新しいクォータ管理エクスペリエンスの [管理>クォータ] で変更することもできます。
- 429エラーがスローされたときに提示される時間を空けて再度実行していただくことが必要となります。
Azure サービスの再試行ガイダンス - Best practices for cloud applications | Microsoft Learn429 エラーの場合は、Retry-After ヘッダーに示されている時間が経過した後でのみ再試行してください。
参考情報:
Azure OpenAI Service のクォータを管理する - Azure AI services | Microsoft Learn
デプロイが作成されると、割り当てられた TPM は、推論要求で適用される TPM (Tokens-per-Minute) のレート制限に直接マップされます。 1 分あたりの要求 (RPM) レート制限も適用され、その値は次の比率を使用して TPM 割り当てに比例して設定されます。
1000 TPM あたり 6 RPM。
(中略)
RPM レート制限は、時間の経過と同時に受信した要求の数に基づいています。
レート制限では、1 分間に要求が均等に分散されることを想定しています。
この平均フローが維持されない場合、1 分間測定しても制限が満たされない場合でも、要求は 429 応答を受け取る可能性があります。
この動作を実装するために、Azure OpenAI Service は、短い時間 (通常は 1 秒または 10 秒) にわたる受信要求の速度を評価します。
その間に受信した要求の数が設定された RPM 制限で予想される数を超えた場合、新しい要求は次の評価期間まで 429 応答コードを受け取ります。
たとえば、Azure OpenAI が 1 秒間隔で要求レートを監視している場合、1 秒ごとに 10 件を超える要求を受信すると、600 RPM デプロイでレート制限が発生します (1 分あたり 600 件の要求 = 1 秒あたり 10 件の要求)。-
変更履歴
2023-12-29 created by Uehara
※ 本記事は 「jpaiblog について」 の留意事項に準じます。
※ 併せて 「ホームページ」 および 「記事一覧」 もご参照いただければ幸いです。