Partager via


Simuler des erreurs à partir d’API OpenAI

Lorsque vous utilisez des API OpenAI dans votre application, vous devez tester la façon dont votre application gère les erreurs d’API. Le proxy de développement vous permet de simuler des erreurs sur n’importe quelle API OpenAI à l’aide de GenericRandomErrorPlugin.

Conseil / Astuce

Téléchargez cette présélection en exécutant l’invite de commandes devproxy config get openai-throttling.

Dans le dossier d’installation du proxy de développement, recherchez le config dossier. Dans le dossier config, créez un fichier nommé openai-errors.json. Ouvrez le fichier dans un éditeur de code.

Créez un objet dans le plugins tableau référençant le GenericRandomErrorPlugin. Définissez l’URL de l’API OpenAI pour que le plug-in surveille et ajoute une référence à la configuration du plug-in.

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

Créez l’objet de configuration du plug-in pour fournir au plug-in l’emplacement des réponses d’erreur.

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

Dans le même dossier, créez le errors-openai.json fichier. Ce fichier contient les réponses d’erreur possibles qui peuvent être retournées lorsque le plug-in envoie une réponse d’erreur.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/genericrandomerrorplugin.schema.json",
  "errors": [
    {
      "request": {
        "url": "https://api.openai.com/*"
      },
      "responses": [
        {
          "statusCode": 429,
          "headers": [
            {
              "name": "content-type",
              "value": "application/json; charset=utf-8"
            }
          ],
          "body": {
            "error": {
              "message": "Rate limit reached for default-text-davinci-003 in organization org-K7hT684bLccDbBRnySOoK9f2 on tokens per min. Limit: 150000.000000 / min. Current: 160000.000000 / min. Contact support@openai.com if you continue to have issues. Please add a payment method to your account to increase your rate limit. Visit https://beta.openai.com/account/billing to add a payment method.",
              "type": "tokens",
              "param": null,
              "code": null
            }
          }
        },
        {
          "statusCode": 429,
          "headers": [
            {
              "name": "content-type",
              "value": "application/json; charset=utf-8"
            }
          ],
          "body": {
            "error": {
              "message": "Rate limit reached for default-text-davinci-003 in organization org-K7hT684bLccDbBRnySOoK9f2 on requests per min. Limit: 60.000000 / min. Current: 70.000000 / min. Contact support@openai.com if you continue to have issues. Please add a payment method to your account to increase your rate limit. Visit https://beta.openai.com/account/billing to add a payment method.",
              "type": "requests",
              "param": null,
              "code": null
            }
          }
        },
        {
          "statusCode": 429,
          "addDynamicRetryAfter": true,
          "headers": [
            {
              "name": "content-type",
              "value": "application/json; charset=utf-8"
            }
          ],
          "body": {
            "error": {
              "message": "The engine is currently overloaded, please try again later.",
              "type": "requests",
              "param": null,
              "code": null
            }
          }
        }
      ]
    }
  ]
}

Démarrez le proxy de développement avec le fichier de configuration :

devproxy --config-file "~appFolder/config/openai-errors.json"

Lorsque vous utilisez votre application appelant des API OpenAI, le proxy de développement retourne de façon aléatoire l’une des réponses d’erreur que vous avez définies dans le errors-openai.json fichier.

En savoir plus sur GenericRandomErrorPlugin.