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 metrische gegevens over tokengebruik die worden geretourneerd vanuit het OpenAI-eindpunt, kan het beleid in realtime de limieten nauwkeurig bewaken en afdwingen. Het beleid maakt ook het vooraf berekenen van prompttokens door API Management mogelijk, waardoor onnodige aanvragen naar de OpenAI-back-end worden geminimaliseerd als de limiet al wordt overschreden.

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 Foundry Models-modellen

Het beleid wordt gebruikt met API's die zijn toegevoegd aan API Management vanuit de Azure OpenAI in 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 gedetecteerd in het antwoord en worden alle geslaagde aanvragen geblokkeerd door het beleid totdat de tokenlimiet weer vrijkomt.
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 aantal resterende tokens is dat overeenkomt met de toegestane token-quota waarde voor de token-quota-period. Beleidsexpressies zijn niet toegestaan. Nee N.v.t.
resterende quotatokens-variabele-naam De naam van een variabele die na elke beleidsuitvoering het 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 eventueel worden geconfigureerd bij het toevoegen van een API vanuit Azure OpenAI met behulp van de portal.
  • 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.
  • 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.
  • 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.
  • 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: