임의오류플러그인 (GenericRandomErrorPlugin)

모의 오류가 포함된 파일에서 임의로 선택한 오류가 있는 요청에 실패합니다.

구성 파일에 정의된 OpenAI API 요청에 대한 오류 중 하나를 시뮬레이션하는 개발자 프록시가 있는 명령 프롬프트의 스크린샷

구성 예제

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

구성 속성

재산 묘사 기본값
errorsFile 오류 응답이 포함된 파일의 경로입니다. errors.json
rate 임의 오류로 실패할 요청의 비율입니다. 0에서 100 사이의 값입니다. 50
retryAfterInSeconds 요청을 다시 시도하기 전에 대기할 시간(초)입니다. 동적 제한에 대한 Retry-After 응답 헤더에 포함됩니다. 5

명령줄 옵션

이름 묘사 기본값
-f, --failure-rate <failure rate> 임의 오류로 실패할 요청의 비율입니다. 0에서 100 사이의 값입니다. 50

비고

응답 메시지 본문

오류 응답의 속성을 JSON 개체 또는 배열로 설정 body 하면 Dev Proxy가 이를 JSON으로 직렬화합니다. 문자열로 설정하면 개발자 프록시는 따옴표 없이 문자열 as-is보냅니다. 시작하는 @ 문자열은 응답 본문을 사용하여 오류 파일을 기준으로 파일의 경로로 처리됩니다. 개발자 프록시는 헤더를 Content-Type 기본값으로 설정하므로 application/jsonJSON이 아닌 콘텐츠를 반환할 때 헤더를 콘텐츠와 일치하도록 설정합니다 Content-Type . 예를 들면 다음과 같습니다 text/plain.

응답 Retry-After 별 값

개발자 프록시는 @dynamic 헤더에서 Retry-After 상태 코드(예: 429또는 503529.)를 확인합니다. 대/소문자 구분 없이 헤더 이름과 일치합니다. 이 문제가 해결 @dynamic되면 RetryAfterPlugin에 요청을 등록합니다. 이 요청은 시간이 다 되기 전에 Retry-After 앱이 보내는 요청을 보고합니다.

기본적으로 헤더는 Retry-After 전역 retryAfterInSeconds 값을 사용합니다. 오류 응답 파일의 구문을 사용하여 @dynamic=N 응답별로 이 값을 재정의할 수 있습니다. 다시 N 시도하기 전에 대기할 시간(초)입니다.

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

이 예제에서 헤더는 Retry-After 전역 17 설정에 관계없이 이 응답에 초를 사용합니다retryAfterInSeconds. 일반 토큰과 마찬가지로 후속 제한 요청마다 값이 @dynamic 증가합니다.

기본 Content-Type 헤더

오류 응답에 헤더가 body 있고 헤더를 Content-Type 정의하지 않는 경우 Dev Proxy는 헤더를 사용하여 Content-Type: application/json 응답을 반환합니다. 다른 콘텐츠 형식을 반환하려면 오류 파일의 Content-Type 응답에 헤더를 추가합니다. 개발자 프록시는 사용자가 지정한 값을 사용합니다.

다음 단계