Simulare gli errori dalle API OpenAI

Quando si usano LE API OpenAI nell'app, è necessario testare come l'app gestisce gli errori dell'API. Dev Proxy consente di simulare gli errori in qualsiasi API OpenAI usando GenericRandomErrorPlugin.

Suggerimento

Scaricare questo set di impostazioni eseguendo nel prompt devproxy preset get openai-throttlingdei comandi .

Nella cartella di installazione di Dev Proxy individuare la presets cartella. presets Nella cartella creare un nuovo file denominato openai-errors.json. Aprire il file in un editor di codice.

Creare un nuovo oggetto nella plugins matrice che fa riferimento a GenericRandomErrorPlugin. Definire l'URL dell'API OpenAI per il plug-in per watch e aggiungere un riferimento alla configurazione del plug-in.

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

Creare l'oggetto di configurazione del plug-in per fornire al plug-in il percorso delle risposte di errore.

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

Nella stessa cartella creare il errors-openai.json file. Questo file contiene le possibili risposte di errore che possono essere restituite quando il plug-in invia una risposta di errore.

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

Avviare Dev Proxy con il file di configurazione:

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

Quando si usa l'app che chiama LE API OpenAI, Dev Proxy restituisce in modo casuale una delle risposte di errore definite nel errors-openai.json file.

Altre informazioni su GenericRandomErrorPlugin.