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 false op, 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
- Beleidssecties: inkomend
- Beleidsbereik: globaal, werkruimte, product, API, bewerking
- Gateways: klassiek, v2, zelf-hostend, werkruimte
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 ingesteldfalse
op, 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 ingesteldtrue
op in de API-aanvraag om streaming in te schakelen, worden prompttokens altijd geschat, ongeacht de waarde van hetestimate-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>
Gerelateerd beleid
Gerelateerde inhoud
Zie voor meer informatie over het werken met beleid:
- Zelfstudie: Uw API transformeren en beveiligen
- Beleidsreferentie voor een volledige lijst met beleidsinstructies en hun instellingen
- Beleidsexpressies
- Beleid instellen of bewerken
- Beleidsconfiguraties opnieuw gebruiken
- Beleidsfragmentenopslagplaats
- Beleid ontwerpen met Behulp van Microsoft Copilot in Azure