다음을 통해 공유


Azure OpenAI API 토큰 사용 제한

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

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

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

참고 항목

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

지원되는 Azure OpenAI 서비스 모델

이 정책은 다음 유형의 Azure OpenAI Service에서 API Management에 추가된 API와 함께 사용됩니다.

API 형식 지원되는 모델
채팅 완료 gpt-3.5

gpt-4

gpt-4o

gpt-4o-mini

o1

o3
포함 text-embedding-3-large

text-embedding-3-small

text-embedding-ada-002
응답(미리 보기) gpt-4o(버전: 2024-11-20, 2024-08-062024-05-13)

gpt-4o-mini (버전: 2024-07-18)

gpt-4.1 (버전: 2025-04-14)

gpt-4.1-nano (버전: 2025-04-14)

gpt-4.1-mini (버전: 2025-04-14)

gpt-image-1 (버전: 2025-04-15)

o3 (버전: 2025-04-16)

o4-mini (버전: '2025-04-16)

참고 항목

기존 완성 API는 레거시 모델 버전에서만 사용할 수 있으며 지원은 제한적입니다.

모델 및 해당 기능에 대한 현재 정보는 Azure OpenAI 서비스 모델을 참조하세요.

정책 문

<azure-openai-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 섹션에서 응답을 받으면 보고된 수로 업데이트됩니다. 아니요 해당 없음

사용

사용법 참고 사항

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

예시

토큰 속도 제한

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

<policies>
    <inbound>
        <base />
        <azure-openai-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 />
        <azure-openai-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>

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