GenericRandomErrorPlugin

Żądania kończą się niepowodzeniem z losowym wybranym błędem z pliku zawierającego wyśmiewane błędy.

Zrzut ekranu wiersza polecenia z serwerem proxy dewelopera symulującym jeden z błędów żądania interfejsu API OpenAI zgodnie z definicją w pliku konfiguracji.

Przykład konfiguracji

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

Właściwości konfiguracji

Własność Opis Domyślny
errorsFile Ścieżka do pliku zawierającego odpowiedzi na błędy. errors.json
rate Procent żądań do niepowodzenia z losowym błędem. Wartość z zakresu od 0 do 100. 50
retryAfterInSeconds Liczba sekund oczekiwania przed ponowieniu próby żądania. Uwzględniony w nagłówku odpowiedzi Retry-After na potrzeby ograniczania dynamicznego. 5

Opcje wiersza polecenia

Nazwa Opis Domyślny
-f, --failure-rate <failure rate> Procent żądań do niepowodzenia z losowym błędem. Wartość z zakresu od 0 do 100. 50

Uwagi

Treść odpowiedzi

Jeśli ustawisz body właściwość błędu odpowiedzi na obiekt lub tablicę JSON, serwer proxy dewelopera serializuje go na JSON. Jeśli ustawisz go na ciąg, serwer proxy dewelopera wysyła ciąg as-is, bez otaczających cudzysłowów. Ciąg rozpoczynający się od @ jest traktowany jako ścieżka do pliku w stosunku do pliku błędów z treścią odpowiedzi. Ponieważ serwer proxy deweloperów Content-Type domyślnie ustawia nagłówek na application/json, ustaw Content-Type nagłówek tak, aby był zgodny z zawartością, gdy zwracasz zawartość inną niż JSON, na przykład text/plain.

Wartości na odpowiedź Retry-After

Serwer proxy deweloperów @dynamic rozpoznaje w nagłówku Retry-After dowolny kod stanu, taki jak 429, 503lub 529. Pasuje do nazwy nagłówka niezależnie od wielkości liter. Po rozwiązaniu problemu @dynamicrejestruje również żądanie za pomocą polecenia RetryAfterPlugin, które zgłasza żądania wysyłane przez aplikację przed upływem Retry-After czasu.

Domyślnie Retry-After nagłówek używa wartości globalnej retryAfterInSeconds . Tę wartość można zastąpić dla poszczególnych odpowiedzi przy użyciu @dynamic=N składni w pliku odpowiedzi o błędach, gdzie N jest to liczba sekund oczekiwania przed ponowną próbą.

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

W tym przykładzie Retry-After nagłówek używa 17 sekund dla tej odpowiedzi, niezależnie od ustawienia globalnego retryAfterInSeconds . Wartość zwiększa się dla każdego kolejnego żądania ograniczonego, tak jak w przypadku zwykłego @dynamic tokenu.

Domyślny Content-Type nagłówek

Jeśli odpowiedź o błędzie zawiera body nagłówek i nie definiuje nagłówka Content-Type , serwer proxy deweloperów zwraca odpowiedź z nagłówkiem Content-Type: application/json . Aby zwrócić inny typ zawartości, dodaj Content-Type nagłówek do odpowiedzi w pliku błędów. Serwer proxy deweloperów używa określonej wartości.

Następny krok