다음을 통해 공유


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

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

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

이 정책은 LLM 엔드포인트에서 반환된 토큰 사용 현황 메트릭을 사용하여 실시간으로 제한을 정확하게 모니터링하고 적용할 수 있습니다. 또한 이 정책을 사용하면 API Management에서 프롬프트 토큰을 미리 계산할 수 있으므로 제한이 이미 초과된 경우 LLM 백 엔드에 대한 불필요한 요청을 최소화할 수 있습니다.

참고 항목

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

지원되는 모델

Azure AI 모델 유추 API 또는 타사 유추 공급자를 통해 제공되는 OpenAI 호환 모델을 통해 사용할 수 있는 Azure API Management에 추가된 LLM API와 함께 정책을 사용합니다.

정책 문

<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: 프롬프트 토큰을 추정하지 않습니다.

false(으)로 설정하면 counter-key당 나머지 토큰은 모델의 응답에서 실제 토큰 사용량을 사용하여 계산됩니다. 이로 인해 토큰 제한을 초과하는 모델에 프롬프트가 전송될 수 있습니다. 이 경우 응답에서 검색되고 토큰 제한이 다시 해제될 때까지 성공한 모든 요청이 정책에 의해 차단됩니다.
해당 없음
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(이)가 estimate-prompt-tokens인 경우 파이프라인의 true 섹션에서 프롬프트의 예상 토큰 수로 초기화된 변수의 이름이며, 그렇지 않으면 0입니다. 변수는 outbound 섹션에서 응답을 받으면 보고된 수로 업데이트됩니다. 아니요 해당 없음

사용

사용법 참고 사항

  • 이 정책은 정책 정의별로 여러 번 사용될 수 있습니다.
  • estimate-prompt-tokensfalse로 설정된 경우 사용 가능한 경우 LLM API의 응답에서 사용 섹션의 값이 토큰 사용을 결정하는 데 사용됩니다.
  • 특정 LLM 엔드포인트는 응답 스트리밍을 지원합니다. 스트리밍을 사용하도록 설정하기 위해 API 요청에서 streamtrue로 설정하면 estimate-prompt-tokens 특성 값에 관계없이 프롬프트 토큰이 항상 예상됩니다.
  • 이미지 입력을 허용하는 모델의 경우 이미지 토큰은 일반적으로 백 엔드 언어 모델에 의해 계산되며 제한 및 할당량 계산에 포함됩니다. 그러나 스트리밍이 사용되거나 estimate-prompt-tokens 설정 true되면 정책은 현재 각 이미지를 최대 1,200개의 토큰 수로 과도하게 계산합니다.
  • API Management는 정책에 지정하는 각 counter-key 값에 대해 단일 카운터를 사용합니다. 카운터는 해당 키 값으로 정책이 구성된 모든 범위에서 업데이트됩니다. 서로 다른 범위(예: 특정 API 또는 제품)에서 별도의 카운터를 구성하려면 서로 다른 범위에서 서로 다른 키 값을 지정합니다. 예를 들어, 범위를 식별하는 문자열을 식 값에 추가합니다.
  • 이 정책은 다중 지역 배포작업 영역 게이트웨이 및 지역 게이트웨이를 포함하여 적용되는 각 게이트웨이에서 토큰 사용량을 독립적으로 추적합니다. 전체 인스턴스에서 토큰 수를 집계하지는 않습니다.

예시

토큰 속도 제한

다음 예제에서는 분당 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>

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