다음을 통해 공유


언어 모델 토큰 제한 테스트

언어 모델을 사용하는 앱을 빌드할 때 앱이 토큰 기반 속도 제한을 처리하는 방법을 테스트해야 합니다. 개발자 프록시를 사용하면 LanguageModelRateLimitingPlugin을 사용하여 언어 모델 API에 대한 토큰 제한을 시뮬레이션할 수 있습니다.

언어 모델 API에 대한 토큰 제한 시뮬레이션

구성 파일에서 LanguageModelRateLimitingPlugin을(를) 활성화하여 시작하십시오.

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

팁 (조언)

플러그 인은 Ollama와 같은 로컬 언어 모델을 포함하여 OpenAI 호환 API에서 작동합니다. 속성에서 테스트하려는 모든 언어 모델 API 엔드포인트를 urlsToWatch 포함합니다.

다음으로 원하는 토큰 제한 및 기간으로 플러그 인을 구성합니다.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/rc.schema.json",
  "plugins": [
    {
      "name": "LanguageModelRateLimitingPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "languageModelRateLimitingPlugin",
      "urlsToWatch": [
        "https://api.openai.com/*",
        "http://localhost:11434/*"
      ]
    }
  ],
  "languageModelRateLimitingPlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/languagemodelratelimitingplugin.schema.json",
    "promptTokenLimit": 1000,
    "completionTokenLimit": 500,
    "resetTimeWindowSeconds": 60,
    "whenLimitExceeded": "Throttle"
  }
}

이 구성을 사용하면 60초 기간 내에 최대 1,000개의 프롬프트 토큰과 500개의 완료 토큰을 사용할 수 있습니다. 한도를 초과하면 후속 요청이 표준 429 응답으로 제한됩니다.

구성 파일로 개발자 프록시를 시작하고 앱을 사용하여 언어 모델 요청을 만듭니다. 플러그 인은 실제 API 응답에서 토큰 사용량을 추적하고 제한을 초과할 때 요청을 제한합니다.

사용자 지정 오류 응답을 사용하여 테스트

토큰 제한이 초과될 때 whenLimitExceededCustom로 설정하고 사용자 지정 응답 파일을 생성하여 사용자 지정 응답을 구성할 수도 있습니다.

{
  "languageModelRateLimitingPlugin": {
    "promptTokenLimit": 500,
    "completionTokenLimit": 300,
    "resetTimeWindowSeconds": 120,
    "whenLimitExceeded": "Custom",
    "customResponseFile": "token-limit-response.json"
  }
}

원하는 오류 형식으로 사용자 지정 응답 파일을 만듭니다.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/languagemodelratelimitingplugincustomresponse.schema.json",
  "statusCode": 429,
  "headers": [
    {
      "name": "retry-after",
      "value": "@dynamic"
    },
    {
      "name": "content-type",
      "value": "application/json"
    }
  ],
  "body": {
    "error": {
      "message": "Token quota exceeded. Your application has consumed all available tokens for this time period.",
      "type": "quota_exceeded",
      "code": "TOKENS_EXHAUSTED",
      "details": {
        "quota_type": "tokens",
        "retry_after_seconds": "@dynamic"
      }
    }
  }
}

재시도 후 헤더의 값은 @dynamic 토큰 제한이 재설정될 때까지 남은 시간(초)을 자동으로 계산합니다.

다양한 시나리오 테스트

시나리오 1: 잦은 테스트를 위한 낮은 토큰 제한

{
  "languageModelRateLimitingPlugin": {
    "promptTokenLimit": 100,
    "completionTokenLimit": 50,
    "resetTimeWindowSeconds": 30
  }
}

짧은 시간 창을 가진 낮은 한도를 사용하여 개발 및 테스트 중에 제한 조치를 신속하게 유발하세요.

시나리오 2: 프로덕션과 유사한 제한

{
  "languageModelRateLimitingPlugin": {
    "promptTokenLimit": 10000,
    "completionTokenLimit": 5000,
    "resetTimeWindowSeconds": 3600
  }
}

실제 토큰 사용 패턴을 테스트하려면 프로덕션 환경과 유사한 제한을 구성합니다.

시나리오 3: 비대칭 제한

{
  "languageModelRateLimitingPlugin": {
    "promptTokenLimit": 2000,
    "completionTokenLimit": 100,
    "resetTimeWindowSeconds": 300
  }
}

완료 토큰 제한이 프롬프트 제한보다 낮은 시나리오를 테스트하여 비용에 민감한 API 계획을 시뮬레이션합니다.

다음 단계

LanguageModelRateLimitingPlugin에 대해 자세히 알아보세요.