Limitare l'utilizzo dei token dell'API OpenAI di Azure
SI APPLICA A: Developer | Basic | Basic v2 | Standard | Standard v2 | Premium
Il criterio azure-openai-token-limit
impedisce picchi di utilizzo dell'API del Servizio OpenAI di Azure per ogni chiave limitando l'utilizzo dei token del modello linguistico a un numero specificato al minuto. Quando il limite di utilizzo di token viene superato, il chiamante riceve il codice di stato della risposta 429 Too Many Requests
.
Basandosi sulle metriche di utilizzo dei token restituite dall'endpoint OpenAI, i criteri possono monitorare e applicare con precisione i limiti in tempo reale. Il criterio abilita anche il precalcolo dei token di richiesta da parte di Gestione API, riducendo al minimo le richieste non necessarie al back-end OpenAI se il limite è già stato superato.
Nota
Impostare gli elementi e gli elementi figlio del criterio nell'ordine specificato nell'istruzione del criterio. Altre informazioni su come impostare o modificare i criteri di Gestione API.
Modelli del Servizio OpenAI di Azure supportati
Il criterio viene usato usati con le API aggiunte a Gestione API dal Servizio OpenAI di Azure dei tipi seguenti:
Tipo di API | Modelli supportati |
---|---|
Completamento della chat | gpt-3.5 gpt-4 |
Completion | gpt-3.5-turbo-instruct |
Incorporamenti | text-embedding-3-large text-embedding-3-small text-embedding-ada-002 |
Per maggiori informazioni, vedere Modelli di servizio OpenAI di Azure..
Istruzione del criterio
<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" />
Attributi
Attributo | Descrizione | Richiesto | Valore predefinito |
---|---|---|---|
counter-key | Chiave da usare per i criteri di limite dei token. Per ogni valore di chiave, viene usato un singolo contatore per tutti gli ambiti in cui è configurato il criterio. Le espressioni di criteri sono consentite. | Sì | N/D |
tokens-per-minute | Numero massimo di token utilizzati dalla richiesta e dal completamento al minuto. | Sì | N/D |
estimate-prompt-tokens | Valore booleano che determina se stimare il numero di token necessari per una richiesta: - true : stimare il numero di token in base allo schema di richiesta nell'API. Può comportare la riduzione delle prestazioni. - false : non stimare i token di richiesta. Se impostato su false , i token rimanenti per counter-key vengono calcolati usando l'utilizzo effettivo del token dalla risposta del modello. Ciò potrebbe comportare l'invio di prompt al modello che superano il limite di token. In questo caso, verrà rilevato nella risposta e tutte le richieste successive verranno bloccate dal criterio fino a quando il limite di token non viene nuovamente liberato. |
Sì | N/D |
retry-after-header-name | Nome di un'intestazione di risposta personalizzata il cui valore è l'intervallo di ripetizione dei tentativi consigliato in secondi dopo il superamento del valore tokens-per-minute specificato. Le espressioni di criteri non sono consentite. |
No | Retry-After |
retry-after-variable-name | Nome di una variabile che archivia l'intervallo di ripetizione dei tentativi consigliato in secondi dopo il superamento del valore tokens-per-minute specificato. Le espressioni di criteri non sono consentite. |
No | N/D |
remaining-tokens-header-name | Nome di un'intestazione di risposta il cui valore dopo ogni esecuzione dei criteri è il numero di token rimanenti consentiti per l'intervallo di tempo. Le espressioni di criteri non sono consentite. | No | N/D |
remaining-tokens-variable-name | Nome di una variabile che dopo ogni esecuzione dei criteri archivia il numero di token rimanenti consentiti per l'intervallo di tempo. Le espressioni di criteri non sono consentite. | No | N/D |
tokens-consumed-header-name | Nome di un'intestazione di risposta il cui valore è il numero di token utilizzati sia dalla richiesta che dal completamento. L'intestazione viene aggiunta alla risposta solo dopo la ricezione della risposta dal back-end. Le espressioni di criteri non sono consentite. | No | N/D |
tokens-consumed-variable-name | Nome di una variabile inizializzata per il numero stimato di token nella richiesta nella sezione backend della pipeline se estimate-prompt-tokens è true e zero in caso contrario. La variabile viene aggiornata con il conteggio segnalato al momento della ricezione della risposta nella sezione outbound . |
No | N/D |
Utilizzo
- Sezioni del criterio: inbound
- Ambiti del criterio: globale, area di lavoro, prodotto, API, operazione
- Gateway: classico, v2, self-hosted, area di lavoro
Note sull'utilizzo
- Questo criterio può essere usato più volte per ogni definizione di criteri.
- Questo criterio può essere configurato facoltativamente quando si aggiunge un'API dal Servizio OpenAI di Azure usando il portale.
- Se disponibili quando
estimate-prompt-tokens
è impostato sufalse
, i valori nella sezione relativa all'utilizzo della risposta dall'API del Servizio OpenAI di Azure vengono usati per determinare le metriche dei token. - Certi endpoint di OpenAI di Azure supportano il flusso di risposte. Quando
stream
è impostato sutrue
nella richiesta API per abilitare lo streaming, i token di prompt vengono sempre stimati, indipendentemente dal valore dell'attributoestimate-prompt-tokens
. I token di completamento vengono stimati anche quando vengono trasmessi le risposte. - Gestione API usa un singolo contatore per ogni valore
counter-key
specificato nei criteri. Il contatore viene aggiornato in tutti gli ambiti in cui il criterio è configurato con tale valore della chiave. Se si vogliono configurare contatori separati in ambiti diversi, ad esempio, un'API o un prodotto specifico, specificare valori di chiave diversi nei diversi ambiti. Ad esempio, aggiungere una stringa che identifica l'ambito alla fine del valore di un'espressione.
Esempio
Nell'esempio seguente il limite di token pari a 5000 al minuto viene inserito dall'indirizzo IP del chiamante. Il criterio non stima il numero di token necessari per una richiesta. Dopo ogni esecuzione dei criteri, i token rimanenti consentiti per tale indirizzo IP chiamante nel periodo di tempo vengono archiviati nella variabile 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>
Criteri correlati
Contenuto correlato
Per ulteriori informazioni sull'utilizzo dei criteri, vedere:
- Esercitazione: trasformare e proteggere l'API
- Informazioni di riferimento sui criteri per un elenco completo delle istruzioni dei criteri e delle relative impostazioni
- Espressioni di criteri
- Impostare o modificare criteri
- Riutilizzare le configurazioni dei criteri
- Repository dei frammenti di criteri
- Creare criteri usando Microsoft Copilot in Azure