Delen via


Gebruik van Azure OpenAI API-token beperken

VAN TOEPASSING OP: Ontwikkelaar | Basic | Basic v2 | Standaard | Standard v2 | Premium | Premium v2

Het azure-openai-token-limit beleid voorkomt dat Azure OpenAI in Foundry Models API-gebruik pieken per sleutel gebruikt door het verbruik van taalmodeltokens te beperken tot een opgegeven snelheid (aantal per minuut), een quotum gedurende een opgegeven periode of beide. Wanneer een opgegeven tokensnelheidslimiet wordt overschreden, ontvangt de aanroeper een 429 Too Many Requests antwoordstatuscode. Wanneer een opgegeven quotum wordt overschreden, ontvangt de aanroeper een 403 Forbidden antwoordstatuscode.

Door te vertrouwen op tokengebruikstatistieken die worden teruggegeven door het Azure OpenAI-endpoint, monitort en handhaaft het beleid limieten op basis van het daadwerkelijke tokenverbruik. Het beleid maakt het ook mogelijk om prompttokens vooraf te schatten door API Management, waardoor onnodige verzoeken aan de Azure OpenAI-backend worden geminimaliseerd als de limiet al is overschreden. Omdat het daadwerkelijke aantal verbruikte tokens afhangt van zowel de promptgrootte als de voltooiingsgrootte (die per verzoek varieert), kan het beleid het totale tokenverbruik niet vooraf voorspellen. Dit ontwerp zou het mogelijk kunnen maken dat tokenlimieten tijdelijk worden overschreden wanneer meerdere verzoeken gelijktijdig worden verwerkt.

Notitie

Stel de elementen en onderliggende elementen van het beleid in de volgorde in die in de beleidsverklaring is opgegeven. Meer informatie over het instellen of bewerken van API Management-beleid.

Ondersteunde Azure OpenAI in Azure AI Foundry-modellen

Het beleid wordt gebruikt met API's die zijn toegevoegd aan API Management vanuit de Azure OpenAI in AI Foundry-modellen van de volgende typen:

API-type Ondersteunde modellen
Chatvoltooiing gpt-3.5

gpt-4

gpt-4o

gpt-4o-mini

o1

o3
Insluitingen text-embedding-3-large

text-embedding-3-small

text-embedding-ada-002
Antwoorden (preview) gpt-4o (Versies: 2024-11-20, 2024-08-06, 2024-05-13)

gpt-4o-mini (Versie: 2024-07-18)

gpt-4.1 (Versie: 2025-04-14)

gpt-4.1-nano (Versie: 2025-04-14)

gpt-4.1-mini (Versie: 2025-04-14)

gpt-image-1 (Versie: 2025-04-15)

o3 (Versie: 2025-04-16)

o4-mini (Versie: '2025-04-16)

Notitie

Traditionele voltooiings-API's zijn alleen beschikbaar met verouderde modelversies en ondersteuning is beperkt.

Zie Azure OpenAI in Foundry Models voor actuele informatie over de modellen en hun mogelijkheden.

Beleidsinstructie

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

Kenmerken

Kenmerk Beschrijving Vereist Standaardinstelling
tellertoets De sleutel die moet worden gebruikt voor het tokenlimietbeleid. Voor elke sleutelwaarde wordt één teller gebruikt voor alle bereiken waarop het beleid is geconfigureerd. Beleidsexpressies zijn toegestaan. Ja N.v.t.
tokens per minuut Het maximum aantal tokens dat wordt verbruikt door prompt en voltooiing per minuut. Een frequentielimiet (), een quotum (tokens-per-minutetoken-quotaboven eentoken-quota-period), of beide moeten worden opgegeven. N.v.t.
tokenquotum Het maximum aantal tokens dat is toegestaan tijdens het tijdsinterval dat is opgegeven in de token-quota-period. Beleidsexpressies zijn niet toegestaan. Een frequentielimiet (), een quotum (tokens-per-minutetoken-quotaboven eentoken-quota-period), of beide moeten worden opgegeven. N.v.t.
tokenquotumperiode De lengte van het vaste venster waarna het token-quota opnieuw wordt ingesteld. De waarde moet een van de volgende zijn: Hourly,Daily, Weekly, , Monthly. Yearly De begintijd van een quotumperiode wordt berekend met behulp van de UTC-tijdstempel afgekapt tot de eenheid (uur, dag, enzovoort) die voor de periode wordt gebruikt. Een frequentielimiet (), een quotum (tokens-per-minutetoken-quotaboven eentoken-quota-period), of beide moeten worden opgegeven. N.v.t.
schattingsprompttokens Booleaanse waarde die bepaalt of het aantal tokens moet worden geschat dat is vereist voor een prompt:
- true: schat het aantal tokens op basis van promptschema in API; kan de prestaties verminderen.
- false: stel geen prompttokens in.

Als dit is ingesteld falseop, worden de resterende tokens per counter-key berekend met behulp van het werkelijke tokengebruik van het antwoord van het model. Dit kan ertoe leiden dat er prompts naar het model worden verzonden die de tokenlimiet overschrijden. In dat geval wordt dit in de respons gedetecteerd en worden alle volgende verzoeken door het beleid geblokkeerd totdat de tokenlimiet wordt gereset.
Ja N.v.t.
naam na koptekst opnieuw proberen De naam van een aangepaste antwoordheader waarvan de waarde het aanbevolen interval voor opnieuw proberen is in seconden nadat de opgegeven tokens-per-minute waarde token-quota is overschreden. Beleidsexpressies zijn niet toegestaan. Nee Retry-After
naam na variabele opnieuw proberen De naam van een variabele waarin het aanbevolen interval voor opnieuw proberen wordt opgeslagen in seconden nadat de opgegeven tokens-per-minute waarde is overschreden.token-quota Beleidsexpressies zijn niet toegestaan. Nee N.v.t.
resterende quotatokens-header-name De naam van een antwoordheader waarvan de waarde na elke beleidsuitvoering het geschatte aantal resterende tokens is dat overeenkomt met token-quota het token-quota-periodtoegestane aantal . Beleidsexpressies zijn niet toegestaan. Nee N.v.t.
resterende quotatokens-variabele-naam De naam van een variabele die na elke beleidsuitvoering het geschatte aantal resterende tokens opslaat dat overeenkomt met token-quota het token-quota-periodtoegestane aantal . Beleidsexpressies zijn niet toegestaan. Nee N.v.t.
resterende tokens-header-name De naam van een antwoordheader waarvan de waarde na elke beleidsuitvoering het aantal resterende tokens is dat overeenkomt met tokens-per-minute het toegestane tijdsinterval. Beleidsexpressies zijn niet toegestaan. Nee N.v.t.
resterende tokens-variabele-naam De naam van een variabele die na elke beleidsuitvoering het aantal resterende tokens opslaat dat overeenkomt met tokens-per-minute het toegestane tijdsinterval. Beleidsexpressies zijn niet toegestaan. Nee N.v.t.
tokens-consumed-header-name De naam van een antwoordheader waarvan de waarde het aantal tokens is dat wordt gebruikt door prompt en voltooiing. De header wordt pas toegevoegd aan het antwoord nadat het antwoord is ontvangen van de back-end. Beleidsexpressies zijn niet toegestaan. Nee N.v.t.
tokens-verbruikt-variabele-naam De naam van een variabele die is geïnitialiseerd voor het geschatte aantal tokens in de prompt in backend de sectie van de pijplijn, indien estimate-prompt-tokens dat niet het enige is true . De variabele wordt bijgewerkt met het gerapporteerde aantal wanneer het antwoord in outbound de sectie wordt ontvangen. Nee N.v.t.

Gebruik

Gebruiksnotities

  • Dit beleid kan meerdere keren per beleidsdefinitie worden gebruikt
  • Dit beleid kan optioneel worden geconfigureerd bij het toevoegen van een Azure OpenAI API via het portaal.
  • Indien beschikbaar wanneer estimate-prompt-tokens deze is ingesteld falseop, worden waarden in het gebruiksgedeelte van het antwoord van de Azure OpenAI-API gebruikt om het tokengebruik te bepalen.
  • Wanneer meerdere verzoeken gelijktijdig of met kleine vertragingen worden verzonden, kan het beleid tokenverbruik toestaan dat de geconfigureerde limiet overschrijdt. Dit gebeurt omdat het beleid het exacte aantal gebruikte tokens niet kan bepalen totdat er antwoorden van de backend zijn ontvangen. Zodra antwoorden zijn verwerkt en tokenlimieten zijn overschreden, worden volgende verzoeken geblokkeerd totdat de limiet wordt gereset.
  • Bepaalde Azure OpenAI-eindpunten ondersteunen het streamen van antwoorden. Wanneer stream deze is ingesteld true op in de API-aanvraag om streaming in te schakelen, worden prompttokens altijd geschat, ongeacht de waarde van het estimate-prompt-tokens kenmerk. Voltooiingstokens worden ook geschat wanneer reacties worden gestreamd.
  • De waarde van of remaining-quota-tokens-variable-name is een schatting voor informatieve doeleinden, maar kan groter zijn dan verwacht op basis van remaining-quota-tokens-header-name het werkelijke tokenverbruik. De waarde is nauwkeuriger omdat het quotum nadert.
  • Voor modellen die afbeeldingsinvoer accepteren, worden afbeeldingstokens over het algemeen geteld door het back-endtaalmodel en opgenomen in limiet- en quotumberekeningen. Wanneer streaming echter wordt gebruikt of estimate-prompt-tokens is ingesteld op true, telt het beleid momenteel elke afbeelding als een maximumaantal van 1200 tokens.
  • API Management gebruikt één teller voor elke counter-key waarde die u in het beleid opgeeft. De teller wordt bijgewerkt op alle bereiken waarop het beleid is geconfigureerd met die sleutelwaarde. Als u afzonderlijke tellers wilt configureren voor verschillende bereiken (bijvoorbeeld een specifieke API of een specifiek product), geeft u verschillende sleutelwaarden op voor de verschillende bereiken. Voeg bijvoorbeeld een tekenreeks toe waarmee het bereik wordt geïdentificeerd aan de waarde van een expressie.
  • De v2-tiers gebruiken een token bucket-algoritme voor snelheidslimiet, wat verschilt van het sliding window-algoritme in klassieke tiers. Vanwege dit implementatieverschil, wanneer je tokenlimieten configureert in de v2-tiers op meerdere scopes door dezelfde counter-keyte gebruiken, zorg ervoor dat de tokens-per-minute waarde consistent is over alle beleidsinstanties. Inconsistente waarden kunnen onvoorspelbaar gedrag veroorzaken.
  • Met dit beleid wordt het tokengebruik onafhankelijk bijgehouden bij elke gateway waarop het wordt toegepast, inclusief werkruimtegateways en regionale gateways in een implementatie met meerdere regio's. Het aggregaat geen tokenaantallen voor het hele exemplaar.

Voorbeelden

Tokensnelheidslimiet

In het volgende voorbeeld wordt de limiet voor tokensnelheid van 5000 per minuut bepaald door het IP-adres van de beller. Het beleid maakt geen schatting van het aantal tokens dat is vereist voor een prompt. Na elke beleidsuitvoering worden de resterende tokens die zijn toegestaan voor dat aanroeper-IP-adres in de periode opgeslagen in de variabele 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>

Tokenquotum

In het volgende voorbeeld wordt het tokenquotum van 10000 door de abonnements-id bepaald en wordt het maandelijks opnieuw ingesteld. Na elke uitvoering van het beleid wordt het aantal resterende tokens dat is toegestaan voor die abonnements-id in de periode opgeslagen in de variabele 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>

Zie voor meer informatie over het werken met beleid: