Partilhar via


Limitar o uso do token da API OpenAI do Azure

APLICA-SE A: Developer | Básico | Básico v2 | Padrão | Padrão v2 | Prémio | Premium v2

A azure-openai-token-limit política impede picos de uso da API do Azure OpenAI em Modelos de Fundição por chave, limitando o consumo de tokens de modelo de idioma a uma taxa especificada (número por minuto), uma cota durante um período especificado ou ambos. Quando um limite de taxa de token especificado é excedido, o chamador recebe um código de status de 429 Too Many Requests resposta. Quando uma cota especificada é excedida, o chamador recebe um código de status de 403 Forbidden resposta.

Ao basear-se em métricas de utilização de tokens retornadas do endpoint Azure OpenAI, a política monitoriza e aplica limites com base no consumo real de tokens. A política também permite a estimativa antecipada dos tokens de prompt pela API Management, minimizando pedidos desnecessários para o backend do Azure OpenAI caso o limite já seja ultrapassado. No entanto, como o número real de tokens consumidos depende tanto do tamanho do prompt como do tamanho da conclusão (que varia consoante o pedido), a política não pode prever o consumo total de tokens antecipadamente. Este design poderia permitir que os limites dos tokens fossem temporariamente ultrapassados quando múltiplos pedidos são processados em simultâneo.

Nota

Defina os elementos da política e os elementos filho na ordem fornecida na declaração de política. Saiba mais sobre como definir ou editar políticas de Gerenciamento de API.

Azure OpenAI suportado em modelos do Azure AI Foundry

A política é usada com APIs adicionadas ao Gerenciamento de API do Azure OpenAI em modelos do AI Foundry dos seguintes tipos:

Tipo de API Modelos suportados
Conclusão do chat gpt-3.5

gpt-4

gpt-4o

gpt-4o-mini

o1

o3
Incorporações text-embedding-3-large

text-embedding-3-small

text-embedding-ada-002
Respostas (pré-visualização) gpt-4o (Versões: 2024-11-20, 2024-08-06, 2024-05-13)

gpt-4o-mini (Versão: 2024-07-18)

gpt-4.1 (Versão: 2025-04-14)

gpt-4.1-nano (Versão: 2025-04-14)

gpt-4.1-mini (Versão: 2025-04-14)

gpt-image-1 (Versão: 2025-04-15)

o3 (Versão: 2025-04-16)

o4-mini (Versão: '2025-04-16)

Nota

As APIs de conclusão tradicionais só estão disponíveis com versões de modelos legados e o suporte é limitado.

Para obter informações atuais sobre os modelos e seus recursos, consulte Azure OpenAI em modelos de fundição.

Declaração de política

<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" />

Atributos

Atributo Descrição Necessário Predefinição
contra-chave A chave a ser usada para a política de limite de token. Para cada valor de chave, um único contador é usado para todos os escopos nos quais a política está configurada. São permitidas expressões de política. Sim N/A
tokens por minuto O número máximo de tokens consumidos por prompt e conclusão por minuto. Deve ser especificado um limite de taxa (tokens-per-minute), um contingente (token-quota sobre um token-quota-period), ou ambos. N/A
cota de token O número máximo de tokens permitido durante o intervalo de tempo especificado no token-quota-period. Expressões de política não são permitidas. Deve ser especificado um limite de taxa (tokens-per-minute), um contingente (token-quota sobre um token-quota-period), ou ambos. N/A
período de cota de token O comprimento da janela fixa após a qual as token-quota redefinições. O valor deve ser um dos seguintes: ,, , , HourlyDaily. WeeklyMonthlyYearly A hora de início de um período de cota é calculada usando o carimbo de data/hora UTC truncado para a unidade (hora, dia, etc.) usada para o período. Deve ser especificado um limite de taxa (tokens-per-minute), um contingente (token-quota sobre um token-quota-period), ou ambos. N/A
estimativa-prompt-tokens Valor booleano que determina se deve estimar o número de tokens necessários para um prompt:
- true: estimar o número de tokens com base no esquema de prompt na API; pode reduzir o desempenho.
- false: não estime tokens de prompt.

Quando definido como false, os tokens restantes por counter-key são calculados usando o uso real do token da resposta do modelo. Isso pode resultar no envio de prompts para o modelo que excedem o limite de token. Nesse caso, isto será detetado na resposta, e todos os pedidos sucessivos serão bloqueados pela política até que o limite do token seja reiniciado.
Sim N/A
retry-after-header-name O nome de um cabeçalho de resposta personalizado cujo valor é o intervalo de repetição recomendado em segundos após o especificado tokens-per-minute ou token-quota é excedido. Expressões de política não são permitidas. Não Retry-After
retry-after-variable-name O nome de uma variável que armazena o intervalo de repetição recomendado em segundos após o especificado tokens-per-minute ou token-quota é excedido. Expressões de política não são permitidas. Não N/A
remaining-quota-tokens-header-name O nome de um cabeçalho de resposta cujo valor após cada execução de política é o número estimado de tokens restantes correspondentes ao token-quota permitido para o token-quota-period. Expressões de política não são permitidas. Não N/A
remaining-quota-tokens-variable-name O nome de uma variável que, após cada execução de política, armazena o número estimado de tokens restantes correspondentes ao token-quota permitido para o token-quota-period. Expressões de política não são permitidas. Não N/A
remaining-tokens-header-name O nome de um cabeçalho de resposta cujo valor após cada execução de política é o número de tokens restantes correspondentes ao tokens-per-minute permitido para o intervalo de tempo. Expressões de política não são permitidas. Não N/A
remaining-tokens-variable-name O nome de uma variável que, após cada execução de política, armazena o número de tokens restantes correspondentes ao tokens-per-minute permitido para o intervalo de tempo. Expressões de política não são permitidas. Não N/A
tokens-consumed-header-name O nome de um cabeçalho de resposta cujo valor é o número de tokens consumidos pelo prompt e pela conclusão. O cabeçalho é adicionado à resposta somente depois que a resposta é recebida do back-end. Expressões de política não são permitidas. Não N/A
tokens-consumed-variable-name O nome de uma variável inicializada para o número estimado de tokens no prompt na backend seção do pipeline se estimate-prompt-tokens for true e zero caso contrário. A variável é atualizada com a contagem relatada ao receber a resposta na outbound seção. Não N/A

Utilização

Notas de utilização

  • Esta apólice pode ser utilizada várias vezes por definição de apólice
  • Esta política pode ser configurada opcionalmente ao adicionar uma API Azure OpenAI através do portal.
  • Quando disponível quando estimate-prompt-tokens definido como false, os valores na seção de uso da resposta da API OpenAI do Azure são usados para determinar o uso do token.
  • Quando múltiplos pedidos são enviados em simultâneo ou com ligeiros atrasos, a política pode permitir o consumo de tokens que exceda o limite configurado. Isto acontece porque a política não consegue determinar o número exato de tokens consumidos até que as respostas sejam recebidas do backend. Depois de as respostas serem processadas e os limites dos tokens ultrapassados, os pedidos subsequentes são bloqueados até que o limite seja reiniciado.
  • Determinados pontos de extremidade do Azure OpenAI oferecem suporte ao streaming de respostas. Quando stream definido como true na solicitação de API para habilitar o streaming, os tokens de prompt são sempre estimados, independentemente do valor do estimate-prompt-tokens atributo. Os tokens de conclusão também são estimados quando as respostas são transmitidas.
  • O valor de ou remaining-quota-tokens-variable-name é uma estimativa para fins informativos, mas pode ser maior do que o esperado com base no consumo real de remaining-quota-tokens-header-name tokens. O valor é mais preciso à medida que a quota se aproxima.
  • Para modelos que aceitam entrada de imagem, os tokens de imagem geralmente são contados pelo modelo de linguagem de back-end e incluídos nos cálculos de limite e cota. No entanto, quando o streaming é usado ou estimate-prompt-tokens definido como true, a política atualmente superconta cada imagem como uma contagem máxima de 1200 tokens.
  • O Gerenciamento de API usa um único contador para cada counter-key valor especificado na política. O contador é atualizado em todos os escopos nos quais a política é configurada com esse valor de chave. Se desejar configurar contadores separados em escopos diferentes (por exemplo, uma API ou produto específico), especifique valores de chave diferentes nos escopos diferentes. Por exemplo, acrescente uma cadeia de caracteres que identifique o escopo ao valor de uma expressão.
  • Os níveis v2 utilizam um algoritmo de balde de token para limitação de taxa, que difere do algoritmo de janela deslizante nos níveis clássicos. Devido a esta diferença de implementação, quando configuras limites de tokens nos níveis v2 em múltiplos escopos usando o mesmo counter-key, certifica-te de que o tokens-per-minute valor é consistente em todas as instâncias de políticas. Valores inconsistentes podem causar comportamentos imprevisíveis.
  • Essa política rastreia o uso do token independentemente em cada gateway em que ele é aplicado, incluindo gateways de espaço de trabalho e gateways regionais em uma implantação de várias regiões. Ele não agrega contagens de token em toda a instância.

Exemplos

Limite de taxa de token

No exemplo a seguir, o limite de taxa de token de 5000 por minuto é digitado pelo endereço IP do chamador. A política não estima o número de tokens necessários para um prompt. Após cada execução de política, os tokens restantes permitidos para esse endereço IP do chamador no período de tempo são armazenados na variável 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>

Cota de token

No exemplo a seguir, a cota de token de 10000 é inserida pela ID da assinatura e redefinida mensalmente. Após cada execução de política, o número de tokens restantes permitidos para essa ID de assinatura no período de tempo é armazenado na variável 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>

Para obter mais informações sobre como trabalhar com políticas, consulte: