Het gebruik van api-token voor het grote taalmodel beperken

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

Het llm-token-limit beleid voorkomt pieken in het api-gebruik van grote talen (LLM) per sleutel 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.

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 model-API's

Dit beleid werkt met LLM-API's die zijn toegevoegd aan API Management die voldoen aan een van de volgende API-schema's:

  • OpenAI Chat-voltooiingen of antwoorden-API
  • Anthropic Berichten-API (momenteel ondersteund in API Management v2-lagen)

Beleidsinstructie

<llm-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 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 als de UTC-tijdstempel afgekapt tot de eenheid (uur, dag, enzovoort) die voor de periode wordt gebruikt. Beleidsexpressies zijn toegestaan. 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: schatting van prompttokens vooraf op basis van promptschema in API.
- false: stel geen prompttokens in; gebruik van het werkelijke tokengebruik van het modelantwoord.

Zie Overwegingen voor tokenaantallen en schattingen voor het tellen en schatten van tokens.
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 naar het geschatte aantal prompttoken in de backend sectie (of nul als estimate-prompt-tokens dat is false), bijgewerkt met de werkelijke gerapporteerde telling in de outbound sectie. 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 LLM-API via het portaal.
  • De waarde van remaining-quota-tokens-variable-name of remaining-quota-tokens-header-name is een schatting en kan groter zijn dan verwacht op basis van het werkelijke tokenverbruik. Zie Overwegingen voor tokenaantallen en schattingen voor meer informatie.
  • 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-lagen maken gebruik van een tokenbucket-algoritme voor snelheidsbeperking, wat verschilt van het schuifvenster-algoritme in klassieke lagen. 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. Zie Advanced-aanvraagbeperking met Azure API Management voor meer informatie
  • 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.

Overwegingen voor tokenaantallen en schattingen

Het beleid bewaakt en dwingt tokenlimieten af met behulp van werkelijke tokengebruiksgegevens die worden geretourneerd vanaf het LLM-eindpunt. U kunt eventueel een schatting van prompttoken inschakelen om onnodige back-endaanvragen te verminderen. De volgende overwegingen zijn van toepassing.

  • Tokentypen: Het beleid telt momenteel alleen prompt- en voltooiingstokens.
  • Zonder prompttokenraming (estimate-prompt-tokens="false"): Het beleid gebruikt werkelijke tokengebruikswaarden uit de usage sectie van het ANTWOORD van de LLM-API. Prompts kunnen naar de back-end worden verzonden, zelfs wanneer de limiet wordt overschreden; dit wordt gedetecteerd vanuit het antwoord, waarna volgende aanvragen worden geblokkeerd totdat de limiet opnieuw wordt ingesteld.
  • Met schatting van prompttoken (estimate-prompt-tokens="true"): Het beleid schat prompttokens uit het promptschema in de API-definitie voordat de aanvraag wordt verzonden. Dit kan onnodige back-endaanvragen verminderen wanneer de limiet al wordt overschreden, maar kan de prestaties verminderen.
  • Streaming: wanneer streaming is ingeschakeld in de API-aanvraag (stream: true), worden prompttokens altijd geschat, ongeacht de estimate-prompt-tokens instelling. Voltooiingstokens worden ook geschat wanneer reacties worden gestreamd.
  • Afbeeldingsinvoer: Voor modellen die afbeeldingsinvoer accepteren, worden afbeeldingstokens over het algemeen geteld door de back-end-LLM en opgenomen in limiet- en quotumberekeningen. Wanneer streaming echter is ingeschakeld of estimate-prompt-tokens is ingesteld trueop, wordt elk installatiekopieën met een maximum van 1200 tokens door het beleid overschreden.
  • Gelijktijdigheid: omdat het exacte aantal verbruikte tokens niet kan worden bepaald totdat antwoorden van de back-end worden ontvangen, kunnen gelijktijdige of bijna-gelijktijdige aanvragen de geconfigureerde tokenlimiet tijdelijk overschrijden. Zodra antwoorden zijn verwerkt en de limiet wordt overschreden, worden volgende aanvragen geblokkeerd totdat de limiet opnieuw wordt ingesteld.
  • Resterende nauwkeurigheid van het quotum: het geschatte resterende tokenquotum dat wordt geretourneerd in remaining-quota-tokens-variable-name of remaining-quota-tokens-header-name kan groter zijn dan verwacht op basis van het werkelijke tokenverbruik en wordt nauwkeuriger naarmate het quotum wordt benaderd.

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

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 />
        <llm-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: