汎用ランダムエラープラグイン

モック エラーを含むファイルからランダムに選択されたエラーで要求が失敗します。

構成ファイルで定義されている OpenAI API 要求のエラーの 1 つをシミュレートする開発プロキシを使用したコマンド プロンプトのスクリーンショット。

構成の例

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/rc.schema.json",
  "plugins": [
    {
      "name": "GenericRandomErrorPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "genericRandomErrorPlugin"
    }
  ],
  "urlsToWatch": [
    "https://api.openai.com/*"
  ],
  "genericRandomErrorPlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/genericrandomerrorplugin.schema.json",
    "errorsFile": "errors.json"
  }
}

構成プロパティ

財産 形容 デフォルト
errorsFile エラー応答を含むファイルへのパス。 errors.json
rate ランダム エラーで失敗する要求の割合。 0 ~ 100 の値。 50
retryAfterInSeconds 要求を再試行するまでに待機する秒数。 動的スロットル用の Retry-After 応答ヘッダーに含まれます。 5

コマンド ライン オプション

名前 形容 デフォルト
-f, --failure-rate <failure rate> ランダム エラーで失敗する要求の割合。 0 ~ 100 の値。 50

注釈

応答本文

エラー応答の body プロパティを JSON オブジェクトまたは配列に設定すると、Dev Proxy によって JSON にシリアル化されます。 文字列に設定すると、Dev Proxy は引用符を囲まずに as-is文字列を送信します。 @で始まる文字列は、エラー ファイルを基準にしたファイルへのパスとして、応答本文と共に扱われます。 開発プロキシでは既定で Content-Type ヘッダーがapplication/jsonされるため、text/plainなどの JSON 以外のコンテンツを返すときに、Content-Type ヘッダーをコンテンツと一致するように設定します。

応答ごとの Retry-After 値

開発プロキシは、429、503、529など、状態コードのRetry-After ヘッダー内の@dynamicを解決します。 大文字と小文字に関係なく、ヘッダー名と一致します。 @dynamicが解決されると、要求も RetryAfterPlugin に登録されます。この要求は、Retry-After時間が稼働する前にアプリから送信された要求を報告します。

既定では、 Retry-After ヘッダーはグローバル retryAfterInSeconds 値を使用します。 エラー応答ファイルの @dynamic=N 構文を使用して、応答ごとにこの値をオーバーライドできます。ここで、 N は再試行するまでの待機時間の秒数です。

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/genericrandomerrorplugin.errorsfile.schema.json",
  "errors": [
    {
      "request": {
        "url": "https://api.openai.com/*"
      },
      "responses": [
        {
          "statusCode": 429,
          "headers": [
            {
              "name": "Retry-After",
              "value": "@dynamic=17"
            }
          ],
          "body": {
            "error": {
              "message": "Rate limit exceeded. Wait 17 seconds."
            }
          }
        }
      ]
    }
  ]
}

この例では、Retry-After ヘッダーは、グローバル17設定に関係なく、この応答にretryAfterInSeconds秒を使用します。 この値は、プレーンな @dynamic トークンと同様に、後続の調整された要求ごとにインクリメントされます。

既定の Content-Type ヘッダー

エラー応答に body があり、 Content-Type ヘッダーが定義されていない場合、Dev Proxy は Content-Type: application/json ヘッダーを含む応答を返します。 別のコンテンツ タイプを返すには、エラー ファイルの応答に Content-Type ヘッダーを追加します。 開発プロキシでは、指定した値が使用されます。

次のステップ