Partager via


GenericRandomErrorPlugin

Échec des requêtes avec une erreur sélectionnée aléatoire à partir d’un fichier contenant des erreurs factices.

Capture d’écran d’une invite de commandes avec le proxy de développement simulant l’une des erreurs d’une requête d’API OpenAI telle que définie dans le fichier de configuration.

Exemple de configuration

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.2.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/v2.2.0/genericrandomerrorplugin.schema.json",
    "errorsFile": "errors.json"
  }
}

Propriétés de configuration

Propriété Descriptif Faire défaut
errorsFile Chemin d’accès au fichier qui contient des réponses d’erreur. Aucune valeur par défaut
rate Pourcentage de demandes à échouer avec une erreur aléatoire. Valeur comprise entre 0 et 100. 50
retryAfterInSeconds Nombre de secondes à attendre avant de réessayer la requête. Inclus dans l’en-tête de réponse Retry-After pour la limitation dynamique. 5

Options de ligne de commande

Nom Descriptif Faire défaut
-f, --failure-rate <failure rate> Pourcentage de demandes à échouer avec une erreur aléatoire. Valeur comprise entre 0 et 100. 50

Remarques

Valeurs par réponse Retry-After

Par défaut, l’en-tête Retry-After utilise la valeur globale retryAfterInSeconds . Vous pouvez remplacer cette valeur par réponse à l’aide de la syntaxe dans le @dynamic=N fichier de réponses d’erreur, où N est le nombre de secondes à attendre avant de réessayer.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.2.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."
            }
          }
        }
      ]
    }
  ]
}

Dans cet exemple, l’en-tête Retry-After utilise 17 des secondes pour cette réponse, quel que soit le paramètre global retryAfterInSeconds . La valeur incrémente chaque requête limitée suivante, comme avec le jeton brut @dynamic .

Étape suivante