Udostępnij za pośrednictwem


Symulowanie błędów z interfejsów API interfejsów API interfejsu OpenAI

W przypadku korzystania z interfejsów API interfejsów OpenAI w aplikacji należy przetestować sposób obsługi błędów interfejsu API przez aplikację. Serwer proxy deweloperów umożliwia symulowanie błędów w dowolnym interfejsie API openAI przy użyciu funkcji GenericRandomErrorPlugin.

Porada

Pobierz to ustawienie wstępne, uruchamiając polecenie w wierszu devproxy preset get openai-throttlingpolecenia .

W folderze instalacji serwera proxy deweloperów presets znajdź folder. W folderze presets utwórz nowy plik o nazwie openai-errors.json. Otwórz plik w edytorze kodu.

Utwórz nowy obiekt w tablicy plugins odwołującej się do GenericRandomErrorPluginobiektu . Zdefiniuj adres URL interfejsu API openAI dla wtyczki, aby watch i dodać odwołanie do konfiguracji wtyczki.

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

Utwórz obiekt konfiguracji wtyczki, aby udostępnić wtyczkę lokalizacją odpowiedzi na błędy.

{
  "$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.23.0/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"
  }
}

W tym samym folderze utwórz errors-openai.json plik. Ten plik zawiera możliwe odpowiedzi na błędy, które można zwrócić, gdy wtyczka wysyła odpowiedź o błędzie.

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

Uruchom serwer proxy deweloperów przy użyciu pliku konfiguracji:

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

W przypadku używania aplikacji wywołującej interfejsy API openAI serwer proxy deweloperów losowo zwraca jedną z odpowiedzi o błędach zdefiniowanych w errors-openai.json pliku.

Dowiedz się więcej o genericRandomErrorPlugin.