Begränsa användningen av Azure OpenAI API-token
GÄLLER FÖR: Utvecklare | Grundläggande | Basic v2 | Standard | Standard v2 | Premium | Premium v2
Principen azure-openai-token-limit
förhindrar användningstoppar för Azure OpenAI Service API per nyckel genom att begränsa förbrukningen av språkmodelltoken till ett angivet tal per minut. När tokenanvändningen har överskridits får anroparen en 429 Too Many Requests
svarsstatuskod.
Genom att förlita sig på tokenanvändningsmått som returneras från OpenAI-slutpunkten kan principen övervaka och tillämpa gränser i realtid korrekt. Principen möjliggör också förberäkning av prompttoken från API Management, vilket minimerar onödiga begäranden till OpenAI-serverdelen om gränsen redan har överskridits.
Kommentar
Ange principens element och underordnade element i den ordning som anges i principbeskrivningen. Läs mer om hur du anger eller redigerar API Management-principer.
Azure OpenAI-tjänstmodeller som stöds
Principen används med API:er som lagts till i API Management från Azure OpenAI-tjänsten av följande typer:
API-typ | Modeller som stöds |
---|---|
Chatten har slutförts | gpt-3.5 gpt-4 |
Fullbordande | gpt-3.5-turbo-instruct |
Inbäddningar | text-embedding-3-large text-embedding-3-small text-embedding-ada-002 |
Mer information finns i Azure OpenAI Service-modeller.
Principuttryck
<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" />
Attribut
Attribut | beskrivning | Obligatoriskt | Standardvärde |
---|---|---|---|
counter-key | Nyckeln som ska användas för tokengränsprincipen. För varje nyckelvärde används en enskild räknare för alla omfång där principen har konfigurerats. Principuttryck tillåts. | Ja | Ej tillämpligt |
tokens per minut | Det maximala antalet token som förbrukas av prompt och slutförande per minut. | Ja | Ej tillämpligt |
estimate-prompt-tokens | Booleskt värde som avgör om du vill uppskatta antalet token som krävs för en fråga: - true : beräkna antalet token baserat på promptschemat i API; kan minska prestandan. - false : beräkna inte prompttoken. När de är inställda false på beräknas de återstående token per counter-key med den faktiska tokenanvändningen från modellens svar. Detta kan leda till att prompter skickas till modellen som överskrider tokengränsen. I sådana fall identifieras detta i svaret och alla efterföljande begäranden blockeras av principen tills tokengränsen frigörs igen. |
Ja | Ej tillämpligt |
retry-after-header-name | Namnet på ett anpassat svarshuvud vars värde är det rekommenderade återförsöksintervallet i sekunder efter att angivet tokens-per-minute har överskridits. Principuttryck tillåts inte. |
Nej | Retry-After |
retry-after-variable-name | Namnet på en variabel som lagrar det rekommenderade återförsöksintervallet i sekunder efter att den angivna tokens-per-minute har överskridits. Principuttryck tillåts inte. |
Nej | Ej tillämpligt |
remaining-tokens-header-name | Namnet på en svarsrubrik vars värde efter varje principkörning är antalet återstående token som tillåts för tidsintervallet. Principuttryck tillåts inte. | Nej | Ej tillämpligt |
remaining-tokens-variable-name | Namnet på en variabel som efter varje principkörning lagrar antalet återstående token som tillåts för tidsintervallet. Principuttryck tillåts inte. | Nej | Ej tillämpligt |
tokens-consumed-header-name | Namnet på en svarsrubrik vars värde är antalet token som förbrukas av både prompt och slutförande. Huvudet läggs till i svaret först när svaret har tagits emot från serverdelen. Principuttryck tillåts inte. | Nej | Ej tillämpligt |
tokens-consumed-variable-name | Namnet på en variabel som initierats till det uppskattade antalet token i prompten i backend avsnittet av pipelinen om estimate-prompt-tokens är true och noll annars. Variabeln uppdateras med det rapporterade antalet när svaret tas emot i outbound avsnittet. |
Nej | Ej tillämpligt |
Förbrukning
- Principavsnitt: inkommande
- Principomfattningar: global, arbetsyta, produkt, API, åtgärd
- Gatewayer: klassisk, v2, lokalt installerad, arbetsyta
Användningsanteckningar
- Den här principen kan användas flera gånger per principdefinition.
- Du kan också konfigurera den här principen när du lägger till ett API från Azure OpenAI-tjänsten med hjälp av portalen.
- Om tillgängligt när
estimate-prompt-tokens
är inställt påfalse
används värden i användningsavsnittet i svaret från Azure OpenAI Service-API:et för att fastställa tokenanvändning. - Vissa Azure OpenAI-slutpunkter stöder strömning av svar. När
stream
anges tilltrue
i API-begäran för att aktivera strömning beräknas alltid prompttoken, oavsett värdet förestimate-prompt-tokens
attributet. Slutförandetoken uppskattas också när svar strömmas. - API Management använder en enskild räknare för varje
counter-key
värde som du anger i principen. Räknaren uppdateras i alla omfång där principen har konfigurerats med det nyckelvärdet. Om du vill konfigurera separata räknare i olika omfång (till exempel ett specifikt API eller en specifik produkt) anger du olika nyckelvärden i de olika omfången. Du kan till exempel lägga till en sträng som identifierar omfånget till värdet för ett uttryck.
Exempel
I följande exempel styrs tokengränsen på 5 000 per minut av anroparens IP-adress. Principen uppskattar inte antalet token som krävs för en fråga. Efter varje principkörning lagras de återstående token som tillåts för anroparens IP-adress under tidsperioden i variabeln 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>
Relaterade principer
Relaterat innehåll
Mer information om hur du arbetar med principer finns i:
- Självstudie: Transformera och skydda ditt API
- Principreferens för en fullständig lista över principinstruktioner och deras inställningar
- Principuttryck
- Ange eller redigera principer
- Återanvända principkonfigurationer
- Lagringsplats för principfragment
- Principverktyg för Azure API Management
- Skapa principer med Microsoft Copilot i Azure