GenericRandomErrorPlugin

Mislukte aanvragen met een willekeurige geselecteerde fout uit het bestand met gesimuleerde fouten.

Schermopname van een opdrachtprompt met de Dev Proxy die een van de fouten simuleert voor een OpenAI API-aanvraag, zoals gedefinieerd in het configuratiebestand.

Configuratievoorbeeld

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

Configuratie-eigenschappen

Eigenschap Beschrijving Verstek
errorsFile Pad naar het bestand met foutreacties. errors.json
rate Het percentage aanvragen dat mislukt met een willekeurige fout. Waarde tussen 0 en 100. 50
retryAfterInSeconds Het aantal seconden dat moet worden gewacht voordat u de aanvraag opnieuw probeert uit te voeren. Opgenomen in de Retry-After antwoordheader voor dynamische beperking. 5

Opdrachtregelopties

Naam Beschrijving Verstek
-f, --failure-rate <failure rate> Het percentage aanvragen dat mislukt met een willekeurige fout. Waarde tussen 0 en 100. 50

Opmerkingen

Hoofdtekst van de reactie

Als u de body eigenschap van een foutreactie instelt op een JSON-object of -matrix, serialiseert Dev Proxy deze naar JSON. Als u deze instelt op een tekenreeks, verzendt Dev Proxy de tekenreeks as-is, zonder omringende aanhalingstekens. Een tekenreeks die begint met @ wordt behandeld als een pad naar een bestand, ten opzichte van het foutenbestand, met de hoofdtekst van het antwoord. Omdat de header standaard wordt Content-Type ingesteld op Dev Proxy, stelt u de Content-Type header application/jsonin op uw inhoud wanneer u bijvoorbeeld text/plainniet-JSON-inhoud retourneert.

Waarden per antwoord Retry-After

Dev Proxy wordt omgezet @dynamic in de Retry-After header voor elke statuscode, zoals 429, 503of 529. Deze komt overeen met de naam van de header, ongeacht hoofdletters en kleine letters. Wanneer het probleem wordt opgelost @dynamic, wordt ook de aanvraag geregistreerd bij de RetryAfterPlugin, waarin wordt gerapporteerd dat uw app verzendt voordat de Retry-After tijd is opgetreden.

De koptekst maakt standaard Retry-After gebruik van de globale retryAfterInSeconds waarde. U kunt deze waarde per antwoord overschrijven met behulp van de @dynamic=N syntaxis in het bestand met foutreacties, waarbij N het aantal seconden dat moet worden gewacht voordat u het opnieuw probeert.

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

In dit voorbeeld gebruikt Retry-After de 17 header seconden voor dit antwoord, ongeacht de globale retryAfterInSeconds instelling. De waarde wordt verhoogd voor elke volgende vertraagde aanvraag, net als bij het gewone @dynamic token.

Standaardkoptekst Content-Type

Als een foutbericht een body header bevat en geen header definieert Content-Type , retourneert Dev Proxy het antwoord met de Content-Type: application/json header. Als u een ander inhoudstype wilt retourneren, voegt u de Content-Type header toe aan het antwoord in het foutenbestand. Dev Proxy gebruikt de waarde die u opgeeft.

Volgende stap