Dela via


Begränsa användningen av Azure OpenAI API-token

GÄLLER FÖR: Utvecklare | Grundläggande | Basic v2 | Standard | Standard v2 | Premie

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 falsepå 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

Användning

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å falseanvä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 till true i API-begäran för att aktivera strömning beräknas alltid prompttoken, oavsett värdet för estimate-prompt-tokens attributet.
  • 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>

Mer information om hur du arbetar med principer finns i: