다음을 통해 공유


Azure OpenAI API 토큰 사용 제한

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

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

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

참고 항목

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

지원되는 Azure OpenAI 서비스 모델

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

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

gpt-4
Completion gpt-3.5-turbo-instruct
포함 text-embedding-3-large

text-embedding-3-small

text-embedding-ada-002

자세한 내용은 Azure OpenAI 서비스 모델을 참조하세요.

정책 문

<azure-openai-token-limit counter-key="key value"
        tokens-per-minute="number"
        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-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" />

특성

특성 설명 필수 항목 기본값
counter-key 토큰 제한 정책에 사용할 키입니다. 각 키 값에 대해 정책이 구성된 모든 범위에 단일 카운터가 사용됩니다. 정책 식이 허용됩니다. 해당 없음
tokens-per-minute 프롬프트 및 분당 완료에 사용되는 최대 토큰 수입니다. 해당 없음
estimate-prompt-tokens 프롬프트에 필요한 토큰 수를 예측할지 여부를 결정하는 부울 값입니다.
- true: API의 프롬프트 스키마에 따라 토큰 수를 예측합니다. 성능을 저하시킬 수 있습니다.
- false: 프롬프트 토큰을 추정하지 않습니다.
해당 없음
retry-after-header-name 지정된 tokens-per-minute(이)가 초과한 후 값이 권장 재시도 간격(초)인 사용자 지정 응답 헤더의 이름입니다. 정책 식은 허용되지 않습니다. 아니요 Retry-After
retry-after-variable-name 지정된 tokens-per-minute(을)를 초과한 후 권장 재시도 간격을 초 단위로 저장하는 변수의 이름입니다. 정책 식은 허용되지 않습니다. 아니요 해당 없음
remaining-tokens-header-name 각 정책 실행 후 값이 시간 간격에 허용되는 나머지 토큰의 수인 응답 헤더의 이름입니다. 정책 식은 허용되지 않습니다. 아니요 해당 없음
remaining-tokens-variable-name 각 정책 실행 후에 시간 간격에 허용되는 나머지 토큰 수를 저장하는 변수의 이름입니다. 정책 식은 허용되지 않습니다. 아니요 해당 없음
tokens-consumed-header-name 해당 값이 프롬프트 및 완료 모두에서 사용되는 토큰 수인 응답 헤더의 이름입니다. 백 엔드에서 응답을 받은 후에만 헤더가 응답에 추가됩니다. 정책 식은 허용되지 않습니다. 아니요 해당 없음
tokens-consumed-variable-name estimate-prompt-tokens(이)가 true인 경우 파이프라인의 backend 섹션에서 프롬프트의 예상 토큰 수로 초기화된 변수의 이름이며, 그렇지 않으면 0입니다. 변수는 outbound 섹션에서 응답을 받으면 보고된 수로 업데이트됩니다. 아니요 해당 없음

사용

사용법 참고 사항

  • 이 정책은 정책 정의별로 여러 번 사용될 수 있습니다.
  • 포털을 사용하여 Azure OpenAI Service에서 API를 추가할 때 이 정책을 선택적으로 구성할 수 있습니다.
  • estimate-prompt-tokens(을)를 false(으)로 설정할 때 사용할 수 있는 경우 Azure OpenAI 서비스 API의 응답 사용 섹션에 있는 값을 사용하여 토큰 사용량을 결정합니다.
  • 특정 Azure OpenAI 엔드포인트는 응답 스트리밍을 지원합니다. 스트리밍을 사용하도록 설정하기 위해 API 요청에서 streamtrue로 설정하면 estimate-prompt-tokens 특성 값에 관계없이 프롬프트 토큰이 항상 예상됩니다.
  • 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>

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