대규모 언어 모델 API 토큰 사용 제한
적용 대상: 개발자 | 기본 | 기본 v2 | 표준 | 표준 v2 | 프리미엄 | 프리미엄 v2
llm-token-limit
정책은 분당 지정된 수의 LLM 토큰 사용량을 제한하여 키 기준으로 LLM(대규모 언어 모델) API 사용량 급증을 방지합니다. 토큰 사용량을 초과하면 호출자는 429 Too Many Requests
응답 상태 코드를 받습니다.
이 정책은 LLM 엔드포인트에서 반환된 토큰 사용 현황 메트릭을 사용하여 실시간으로 제한을 정확하게 모니터링하고 적용할 수 있습니다. 또한 이 정책을 사용하면 API Management에서 프롬프트 토큰을 미리 계산할 수 있으므로 제한이 이미 초과된 경우 LLM 백 엔드에 대한 불필요한 요청을 최소화할 수 있습니다.
참고 항목
현재 이 정책은 미리 보기 상태입니다.
참고 항목
정책 문에 제공된 순서대로 정책의 요소 및 자식 요소를 설정합니다. API Management 정책을 설정하거나 편집하는 방법에 대해 자세히 알아봅니다.
지원되는 모델
Azure AI 모델 유추 API를 통해 사용할 수 있는 Azure API Management에 추가된 LLM API와 함께 정책을 사용합니다.
정책 문
<llm-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 : 프롬프트 토큰을 추정하지 않습니다. false (으)로 설정하면 counter-key 당 나머지 토큰은 모델의 응답에서 실제 토큰 사용량을 사용하여 계산됩니다. 이로 인해 토큰 제한을 초과하는 모델에 프롬프트가 전송될 수 있습니다. 이 경우 응답에서 검색되고 토큰 제한이 다시 해제될 때까지 성공한 모든 요청이 정책에 의해 차단됩니다. |
예 | 해당 없음 |
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 섹션에서 응답을 받으면 보고된 수로 업데이트됩니다. |
아니요 | 해당 없음 |
사용
사용법 참고 사항
- 이 정책은 정책 정의별로 여러 번 사용될 수 있습니다.
estimate-prompt-tokens
가false
로 설정된 경우 사용 가능한 경우 LLM API의 응답에서 사용 섹션의 값이 토큰 사용을 결정하는 데 사용됩니다.- 특정 LLM 엔드포인트는 응답 스트리밍을 지원합니다. 스트리밍을 사용하도록 설정하기 위해 API 요청에서
stream
을true
로 설정하면estimate-prompt-tokens
특성 값에 관계없이 프롬프트 토큰이 항상 예상됩니다. - 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>
관련 정책
관련 콘텐츠
정책 작업에 대한 자세한 내용은 다음을 참조하세요.
- 자습서: API 변환 및 보호
- 정책 문 및 해당 설정에 대한 전체 목록에 대한 정책 참조
- 정책 식
- 정책 설정 또는 편집
- 정책 구성 재사용
- 정책 코드 조각 리포지토리
- Azure API Management 정책 도구 키트
- Azure의 Microsoft Copilot을 사용하는 작성자 정책