Compartilhar via


Limitar o uso de token da API OpenAI do Azure

APLICA-SE A: Desenvolvedor | Básico | Básico v2 | Padrão | Standard v2 | Premium | Premium v2

A azure-openai-token-limit política impede que o uso da API do Azure OpenAI no Foundry Models seja aumentado 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 403 Forbidden código de status de resposta.

Ao se basear em métricas de uso de tokens retornadas pelo endpoint Azure OpenAI, a política monitora 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 requisições desnecessárias 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 quanto do tamanho da conclusão (que varia conforme a solicitação), a política não pode prever o consumo total de tokens antecipadamente. Esse design poderia permitir que os limites de tokens fossem temporariamente ultrapassados quando múltiplas requisições fossem processadas simultaneamente.

Observação

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

Azure OpenAI com suporte em modelos do Azure AI Foundry

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

Tipo de API Modelos com suporte
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 (versão prévia) 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)

Observação

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

Para obter informações atuais sobre os modelos e suas funcionalidades, consulte Azure OpenAI em Modelos de Fundimento.

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 Obrigatório Padrão
counter-key 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. Expressões de política são permitidas. Sim N/D
tokens por minuto O número máximo de tokens consumidos por prompt e conclusão por minuto. Um limite de taxa (tokens-per-minute), uma cota (token-quota em vez de um token-quota-period) ou ambos devem ser especificados. N/D
cota de token O número máximo de tokens permitidos durante o intervalo de tempo especificado no token-quota-period. Expressões de política não são permitidas. Um limite de taxa (tokens-per-minute), uma cota (token-quota em vez de um token-quota-period) ou ambos devem ser especificados. N/D
token-quota-period O comprimento da janela fixa após a qual a redefinição token-quota . O valor deve ser um dos seguintes: Hourly,Daily, , Weekly, Monthly. Yearly 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. Um limite de taxa (tokens-per-minute), uma cota (token-quota em vez de um token-quota-period) ou ambos devem ser especificados. N/D
estimate-prompt-tokens Valor booliano que determina se é necessário 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 estimar 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 em prompts sendo enviados para o modelo que excedem o limite de tokens. Nesse caso, isso será detectado na resposta, e todas as solicitações sucessivas serão bloqueadas pela política até que o limite do token seja resetado.
Sim N/D
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/D
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/D
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/D
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/D
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/D
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/D
tokens-consumed-variable-name O nome de uma variável inicializada para o número estimado de tokens no prompt em backend seção do pipeline se estimate-prompt-tokens for true e zero de outra forma. A variável é atualizada com a contagem relatada ao receber a resposta na seção outbound. Não N/D

Uso

Observações de uso

  • Essa política pode ser usada várias vezes por definição de apólice
  • Essa política pode ser configurada opcionalmente ao adicionar uma API Azure OpenAI usando o portal.
  • Quando disponível quando estimate-prompt-tokens está 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últiplas requisições são enviadas simultaneamente ou com pequenos atrasos, a política pode permitir o consumo de tokens que exceda o limite configurado. Isso acontece porque a política não consegue determinar o número exato de tokens consumidos até que as respostas sejam recebidas do backend. Uma vez que as respostas são processadas e os limites de tokens são ultrapassados, as requisições subsequentes são bloqueadas até que o limite seja resetado.
  • Determinados pontos de extremidade do Azure OpenAI são compatíveis com o 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 atributo estimate-prompt-tokens. Os tokens de conclusão também são estimados quando as respostas são transmitidas.
  • O valor de remaining-quota-tokens-variable-name ou remaining-quota-tokens-header-name é uma estimativa para fins informativos, mas pode ser maior do que o esperado com base no consumo real de token. O valor é mais preciso à medida que a cota é abordada.
  • 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 conta demais cada imagem como uma contagem máxima de 1200 tokens.
  • O Gerenciamento de API usa um único contador para cada valor counter-key especificado na política. O contador é atualizado em todos os escopos nos quais a política está 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 em escopos diferentes. Por exemplo, acrescente uma cadeia de caracteres que identifica 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. Por causa dessa diferença de implementação, quando você configura limites de tokens nos níveis v2 em múltiplos escopos usando o mesmo counter-key, certifique-se de que o tokens-per-minute valor seja consistente entre todas as instâncias de políticas. Valores inconsistentes podem causar comportamentos imprevisíveis.
  • Essa política controla o uso de token de forma independente em cada gateway em que ele é aplicado, incluindo gateways de workspace 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 é definido 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 o endereço IP de chamador no período 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 é chaveada pela ID da assinatura e redefine 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: