GenerikRandomErrorPlugin

Gagal permintaan dengan kesalahan acak yang dipilih dari file yang berisi kesalahan yang ditidakan.

Cuplikan layar prompt perintah dengan Proksi Dev yang mensimulasikan salah satu kesalahan untuk permintaan API OpenAI seperti yang didefinisikan dalam file konfigurasi.

Contoh konfigurasi

{
  "$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"
  }
}

Properti konfigurasi

Harta benda Deskripsi Bawaan
errorsFile Jalur ke file yang berisi respons kesalahan. errors.json
rate Persentase permintaan gagal dengan kesalahan acak. Nilai antara 0 dan 100. 50
retryAfterInSeconds Jumlah detik untuk menunggu sebelum mencoba kembali permintaan. Disertakan pada header respons Retry-After untuk pembatasan dinamis. 5

Opsi baris perintah

Nama Deskripsi Bawaan
-f, --failure-rate <failure rate> Persentase permintaan gagal dengan kesalahan acak. Nilai antara 0 dan 100. 50

Komentar

Isi respons

Jika Anda mengatur body properti respons kesalahan ke objek atau array JSON, Dev Proxy menserialisasikannya ke JSON. Jika Anda mengaturnya ke string, Dev Proxy mengirimkan string as-is, tanpa tanda kutip di sekitarnya. String yang dimulai dengan @ diperlakukan sebagai jalur ke file, relatif terhadap file kesalahan, dengan isi respons. Karena Proksi Dev default Content-Type header ke application/json, atur Content-Type header agar sesuai dengan konten Anda saat Anda mengembalikan konten non-JSON, misalnya text/plain.

Nilai per respons Retry-After

Proksi Dev diselesaikan @dynamic di Retry-After header untuk kode status apa pun, seperti 429, 503, atau 529. Ini cocok dengan nama header terlepas dari kasus. Ketika diselesaikan @dynamic, ia juga mendaftarkan permintaan dengan RetryAfterPlugin, yang melaporkan permintaan yang dikirim aplikasi Anda sebelum Retry-After waktu habis.

Secara default, Retry-After header menggunakan nilai global retryAfterInSeconds . Anda dapat mengambil alih nilai ini berdasarkan per respons menggunakan @dynamic=N sintaks dalam file respons kesalahan, di mana N adalah jumlah detik untuk menunggu sebelum mencoba kembali.

{
  "$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."
            }
          }
        }
      ]
    }
  ]
}

Dalam contoh ini, Retry-After header menggunakan 17 detik untuk respons ini, terlepas dari pengaturan global retryAfterInSeconds . Kenaikan nilai pada setiap permintaan yang dibatasi berikutnya, seperti halnya token biasa @dynamic .

Header default Content-Type

Jika respons kesalahan memiliki body dan tidak menentukan Content-Type header, Dev Proxy mengembalikan respons dengan Content-Type: application/json header . Untuk mengembalikan tipe konten yang berbeda, tambahkan Content-Type header ke respons dalam file kesalahan. Dev Proxy menggunakan nilai yang Anda tentukan.

Langkah selanjutnya