대규모 언어 모델 API 토큰 사용 제한

적용 대상: 개발자 | 기본 | 기본 v2 | 표준 | 표준 v2 | 프리미엄 | 프리미엄 v2

llm-token-limit 정책은 언어 모델 토큰의 사용량을 지정된 속도(분당 수), 지정된 기간의 할당량 또는 둘 다로 제한하여 키별로 LLM(대규모 언어 모델) API 사용 급증을 방지합니다. 지정된 토큰 속도 제한을 초과하면 호출자는 응답 상태 코드를 받습니다 429 Too Many Requests . 지정된 할당량을 초과하면 호출자는 응답 상태 코드를 받습니다 403 Forbidden .

참고 항목

정책 문에 제공된 순서대로 정책의 요소 및 자식 요소를 설정합니다. API Management 정책을 설정하거나 편집하는 방법에 대해 자세히 알아봅니다.

지원되는 모델 API

이 정책은 다음 API 스키마 중 하나를 준수하는 API Management에 추가된 LLM API에서 작동합니다.

  • OpenAI 채팅 완료 또는 응답 API
  • Anthropic 메시지 API(현재 API Management v2 계층에서 지원됨)

정책 문

<llm-token-limit counter-key="key value"
        tokens-per-minute="number"
        token-quota="number"
        token-quota-period="Hourly | Daily | Weekly | Monthly | Yearly"
        estimate-prompt-tokens="true | false"    
        retry-after-header-name="custom header name, replaces default 'Retry-After'" 
        retry-after-variable-name="policy expression variable name"
        remaining-quota-tokens-header-name="header name"  
        remaining-quota-tokens-variable-name="policy expression variable name"
        remaining-tokens-header-name="header name"  
        remaining-tokens-variable-name="policy expression variable name"
        tokens-consumed-header-name="header name"
        tokens-consumed-variable-name="policy expression variable name" />

특성

특성 설명 필수 항목 기본값
카운터 키 토큰 제한 정책에 사용할 키입니다. 각 키 값에 대해 정책이 구성된 모든 범위에 단일 카운터가 사용됩니다. 정책 식이 허용됩니다. 해당 없음
분당 토큰 프롬프트 및 분당 완료에 사용되는 최대 토큰 수입니다. 속도 제한(), 할당량(tokens-per-minutetoken-quota초과token-quota-period) 또는 둘 다 지정해야 합니다. 해당 없음
token-quota 에 지정된 token-quota-period시간 간격 동안 허용되는 최대 토큰 수입니다. 정책 식이 허용됩니다. 속도 제한(), 할당량(tokens-per-minutetoken-quota초과token-quota-period) 또는 둘 다 지정해야 합니다. 해당 없음
token-quota-period 다시 설정되는 고정 창의 token-quota 길이입니다. 값은 다음 HourlyDailyWeeklyMonthlyYearly중 하나여야 합니다. 할당량 기간의 시작 시간은 해당 기간에 사용된 단위(시간, 일 등)로 잘린 UTC 타임스탬프로 계산됩니다. 정책 식이 허용됩니다. 속도 제한(), 할당량(tokens-per-minutetoken-quota초과token-quota-period) 또는 둘 다 지정해야 합니다. 해당 없음
estimate-prompt-tokens 프롬프트에 필요한 토큰 수를 예측할지 여부를 결정하는 부울 값입니다.
- true: API의 프롬프트 스키마에 따라 프롬프트 토큰을 미리 예측합니다.
- false: 프롬프트 토큰을 예측하지 않습니다. 는 모델 응답에서 실제 토큰 사용량을 사용합니다.

토큰 계산 및 예측 동작은 토큰 수 및 예측에 대한 고려 사항을 참조하세요.
해당 없음
retry-after-header-name 지정 tokens-per-minute 하거나 token-quota 초과한 후 값이 권장 재시도 간격(초)인 사용자 지정 응답 헤더의 이름입니다. 정책 식은 허용되지 않습니다. 아니요 Retry-After
retry-after-variable-name 지정 tokens-per-minute 하거나 token-quota 초과한 후 권장 재시도 간격을 초 단위로 저장하는 변수의 이름입니다. 정책 식은 허용되지 않습니다. 아니요 해당 없음
remaining-quota-tokens-header-name 각 정책 실행 후 값이 허용되는 나머지 토큰 token-quota 의 예상 수인 응답 헤더의 token-quota-period이름입니다. 정책 식은 허용되지 않습니다. 아니요 해당 없음
remaining-quota-tokens-variable-name 각 정책 실행 후에 허용되는 나머지 토큰 token-quota 의 예상 수를 저장하는 변수의 token-quota-period이름입니다. 정책 식은 허용되지 않습니다. 아니요 해당 없음
remaining-tokens-header-name 각 정책 실행 후 값이 시간 간격에 허용되는 나머지 토큰 tokens-per-minute 의 수인 응답 헤더의 이름입니다. 정책 식은 허용되지 않습니다. 아니요 해당 없음
remaining-tokens-variable-name 각 정책 실행 후에 시간 간격에 허용되는 나머지 토큰 tokens-per-minute 수를 저장하는 변수의 이름입니다. 정책 식은 허용되지 않습니다. 아니요 해당 없음
tokens-consumed-header-name 해당 값이 프롬프트 및 완료 모두에서 사용되는 토큰 수인 응답 헤더의 이름입니다. 백 엔드에서 응답을 받은 후에만 헤더가 응답에 추가됩니다. 정책 식은 허용되지 않습니다. 아니요 해당 없음
tokens-consumed-variable-name 섹션의 예상 프롬프트 토큰 수 backend 로 초기화된 변수의 이름(또는 0인 경우 estimate-prompt-tokens )은 false섹션의 실제 보고된 수 outbound 로 업데이트됩니다. 아니요 해당 없음

사용

사용법 참고 사항

  • 이 정책은 정책 정의별로 여러 번 사용될 수 있습니다.
  • 이 정책은 포털을 통해 LLM API를 추가할 때 선택적으로 설정할 수 있습니다.
  • remaining-quota-tokens-variable-name 또는 remaining-quota-tokens-header-name 추정치이며 실제 토큰 사용량에 따라 예상보다 클 수 있습니다. 자세한 내용은 토큰 수 및 예측에 대한 고려 사항을 참조하세요.
  • API Management는 정책에 지정하는 각 counter-key 값에 대해 단일 카운터를 사용합니다. 카운터는 해당 키 값으로 정책이 구성된 모든 범위에서 업데이트됩니다. 서로 다른 범위(예: 특정 API 또는 제품)에서 별도의 카운터를 구성하려면 서로 다른 범위에서 서로 다른 키 값을 지정합니다. 예를 들어, 범위를 식별하는 문자열을 식 값에 추가합니다.
  • v2 계층은 클래식 계층의 슬라이딩 윈도우 알고리즘과는 다른 속도 제한에 토큰 버킷 알고리즘을 사용합니다. 이러한 구현 차이 때문에, v2 계층에서 여러 범위에서 동일한 counter-key를 사용하여 토큰 한도를 설정할 때는 모든 정책 인스턴스에서 값이 일관되게 유지되도록 하세요 tokens-per-minute . 값이 일관되지 않으면 예측 불가능한 행동이 발생할 수 있습니다. 자세한 내용은 Azure API Management
  • 이 정책은 다중 지역 배포작업 영역 게이트웨이 및 지역 게이트웨이를 포함하여 적용되는 각 게이트웨이에서 토큰 사용량을 독립적으로 추적합니다. 전체 인스턴스에서 토큰 수를 집계하지는 않습니다.

토큰 수 및 예측에 대한 고려 사항

정책은 LLM 엔드포인트에서 반환된 실제 토큰 사용량 현황 데이터를 사용하여 토큰 제한을 모니터링하고 적용합니다. 필요에 따라 프롬프트 토큰 추정을 사용하도록 설정하여 불필요한 백 엔드 요청을 줄일 수 있습니다. 다음 고려 사항이 적용됩니다.

  • 토큰 유형: 정책은 현재 프롬프트 및 완료 토큰만 계산합니다.
  • 프롬프트 토큰 예측 (estimate-prompt-tokens="false"): 정책은 LLM API 응답 섹션의 실제 토큰 사용량 값을 usage 사용합니다. 제한이 초과된 경우에도 프롬프트가 백 엔드로 전송될 수 있습니다. 이는 응답에서 검색되며, 그 후에는 제한이 다시 설정될 때까지 후속 요청이 차단됩니다.
  • 프롬프트 토큰 예측 (estimate-prompt-tokens="true"): 정책은 요청을 보내기 전에 API 정의의 프롬프트 스키마에서 프롬프트 토큰을 추정합니다. 이렇게 하면 제한이 이미 초과될 때 불필요한 백 엔드 요청을 줄일 수 있지만 성능이 저하될 수 있습니다.
  • 스트리밍: API 요청()stream: true에서 스트리밍을 사용하도록 설정하면 설정에 관계없이 estimate-prompt-tokens 프롬프트 토큰이 항상 예측됩니다. 응답이 스트리밍될 때 완료 토큰도 예측됩니다.
  • 이미지 입력: 이미지 입력을 허용하는 모델의 경우 이미지 토큰은 일반적으로 백 엔드 LLM에서 계산되며 제한 및 할당량 계산에 포함됩니다. 그러나 스트리밍을 사용하도록 설정하거나 estimate-prompt-tokens 설정 true하면 정책은 각 이미지를 최대 1,200개의 토큰으로 초과 계산합니다.
  • 동시성: 백 엔드에서 응답을 받을 때까지 사용된 토큰의 정확한 수를 확인할 수 없으므로 동시 또는 거의 동시 요청이 구성된 토큰 제한을 일시적으로 초과할 수 있습니다. 응답이 처리되고 제한이 초과되면 제한이 다시 설정될 때까지 후속 요청이 차단됩니다.
  • 남은 할당량 정확도: 실제 토큰 사용량에 따라 반환되거나 remaining-quota-tokens-header-name 예상 remaining-quota-tokens-variable-name 남은 토큰 할당량이 예상보다 클 수 있으며 할당량에 접근하면 더 정확해집니다.

예시

토큰 속도 제한

다음 예제에서는 분당 5000의 토큰 속도 제한이 호출자 IP 주소에 의해 키로 지정됩니다. 정책은 프롬프트에 필요한 토큰 수를 추정하지 않습니다. 각 정책 실행 후 해당 기간 동안 해당 호출자 IP 주소에 허용된 나머지 토큰은 변수 remainingTokens에 저장됩니다.

<policies>
    <inbound>
        <base />
        <llm-token-limit
            counter-key="@(context.Request.IpAddress)"
            tokens-per-minute="5000" estimate-prompt-tokens="false" remaining-tokens-variable-name="remainingTokens" />
    </inbound>
    <outbound>
        <base />
    </outbound>
</policies>

토큰 할당량

다음 예제에서 10000의 토큰 할당량은 구독 ID로 키 지정되고 매월 다시 설정됩니다. 각 정책 실행 후 해당 기간에 해당 구독 ID에 허용되는 나머지 토큰 수가 변수 remainingQuotaTokens에 저장됩니다.

<policies>
    <inbound>
        <base />
        <llm-token-limit
            counter-key="@(context.Subscription.Id)"
            token-quota="100000" token-quota-period="Monthly" remaining-quota-tokens-variable-name="remainingQuotaTokens" />
    </inbound>
    <outbound>
        <base />
    </outbound>
</policies>

정책 작업에 대한 자세한 내용은 다음을 참조하세요.