Delen via


Gebruik van Azure OpenAI API-token beperken

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

Het azure-openai-token-limit beleid voorkomt pieken in het gebruik van azure OpenAI-service-API's per sleutel door het verbruik van taalmodeltokens te beperken tot een opgegeven aantal per minuut. Wanneer het tokengebruik wordt overschreden, ontvangt de aanroeper een 429 Too Many Requests 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 Service-modellen

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

API-type Ondersteunde modellen
Chatvoltooiing gpt-3.5

gpt-4
Voltooiing gpt-3.5-turbo-instruct
Insluitingen tekst-insluiten-3-groot

tekst-insluiten-3-klein

tekst-insluiten-ada-002

Zie Azure OpenAI Service-modellen voor meer informatie.

Beleidsinstructie

<azure-openai-token-limit counter-key="key value"
        tokens-per-minute="number"
        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-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. Ja 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 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. 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 is toegestaan voor het 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 is toegestaan voor het 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 de Azure OpenAI-service 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-service-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.
  • 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.

Opmerking

In het volgende voorbeeld wordt de tokenlimiet 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>

Zie voor meer informatie over het werken met beleid: