Udostępnij za pośrednictwem


Ograniczanie użycia tokenu interfejsu API usługi Azure OpenAI

DOTYCZY: Developer | Podstawowa | Podstawowa wersja 2 | Standardowa | Standardowa, wersja 2 | Premia

Zasady azure-openai-token-limit uniemożliwiają wzrost użycia interfejsu API usługi Azure OpenAI na podstawie klucza przez ograniczenie użycia tokenów modelu języka do określonej liczby na minutę. Gdy użycie tokenu zostanie przekroczone, obiekt wywołujący otrzyma 429 Too Many Requests kod stanu odpowiedzi.

Korzystając z metryk użycia tokenu zwróconych z punktu końcowego interfejsu OpenAI, zasady mogą dokładnie monitorować i wymuszać limity w czasie rzeczywistym. Zasady umożliwiają również wstępne obliczanie tokenów monitów przez usługę API Management, minimalizując niepotrzebne żądania do zaplecza openAI, jeśli limit został już przekroczony.

Uwaga

Ustaw elementy zasad i elementy podrzędne w kolejności podanej w instrukcji zasad. Dowiedz się więcej na temat ustawiania lub edytowania zasad usługi API Management.

Obsługiwane modele usługi Azure OpenAI Service

Zasady są używane z interfejsami API dodanymi do usługi API Management z poziomu usługi Azure OpenAI Service następujących typów:

Typ API Obsługiwane modele
Uzupełnianie czatu gpt-3.5

gpt-4
Zakończenie gpt-3.5-turbo-poinstruowanie
Osadzanie osadzanie tekstu —3 — duże

osadzanie tekstu — 3 małe

text-embedding-ada-002

Aby uzyskać więcej informacji, zobacz Modele usługi Azure OpenAI Service.

Instrukcja zasad

<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" />

Atrybuty

Atrybut opis Wymagani Wartość domyślna
counter-key Klucz do użycia dla zasad limitu tokenów. Dla każdej wartości klucza jest używany pojedynczy licznik dla wszystkich zakresów, w których skonfigurowano zasady. Wyrażenia zasad są dozwolone. Tak Nie dotyczy
tokeny na minutę Maksymalna liczba tokenów używanych przez monit i ukończenie na minutę. Tak Nie dotyczy
estimate-prompt-tokens Wartość logiczna określająca, czy oszacować liczbę tokenów wymaganych dla monitu:
- true: oszacować liczbę tokenów na podstawie schematu monitu w interfejsie API; może zmniejszyć wydajność.
- false: nie szacuj tokenów monitów.

W przypadku ustawienia falsewartości pozostałe tokeny na są obliczane counter-key przy użyciu rzeczywistego użycia tokenu z odpowiedzi modelu. Może to spowodować wysłanie monitów do modelu, który przekracza limit tokenu. W takim przypadku zostanie to wykryte w odpowiedzi, a wszystkie pomyślne żądania zostaną zablokowane przez zasady do momentu ponownego zwolnienia limitu tokenu.
Tak Nie dotyczy
retry-after-header-name Nazwa niestandardowego nagłówka odpowiedzi, którego wartość jest zalecanym interwałem ponawiania prób w sekundach po przekroczeniu określonego tokens-per-minute parametru. Wyrażenia zasad nie są dozwolone. Nie. Retry-After
retry-after-variable-name Nazwa zmiennej, która przechowuje zalecany interwał ponawiania prób w sekundach po przekroczeniu określonej tokens-per-minute wartości. Wyrażenia zasad nie są dozwolone. Nie. Nie dotyczy
remaining-tokens-header-name Nazwa nagłówka odpowiedzi, którego wartość po każdym wykonaniu zasad jest liczbą pozostałych tokenów dozwolonych przez interwał czasu. Wyrażenia zasad nie są dozwolone. Nie. Nie dotyczy
remaining-tokens-variable-name Nazwa zmiennej, która po każdym wykonaniu zasad przechowuje liczbę pozostałych tokenów dozwolonych przez przedział czasu. Wyrażenia zasad nie są dozwolone. Nie. Nie dotyczy
tokens-consumed-header-name Nazwa nagłówka odpowiedzi, którego wartość to liczba tokenów używanych zarówno przez monit, jak i ukończenie. Nagłówek jest dodawany do odpowiedzi dopiero po odebraniu odpowiedzi z zaplecza. Wyrażenia zasad nie są dozwolone. Nie. Nie dotyczy
tokens-consumed-variable-name Nazwa zmiennej zainicjowanej do szacowanej liczby tokenów w wierszu polecenia w backend sekcji potoku, jeśli estimate-prompt-tokens jest true i zero w przeciwnym razie. Zmienna jest aktualizowana z zgłoszoną liczbą po otrzymaniu odpowiedzi w outbound sekcji . Nie. Nie dotyczy

Użycie

  • Sekcje zasad: ruch przychodzący
  • Zakresy zasad: globalny, obszar roboczy, produkt, interfejs API, operacja
  • Bramy: klasyczne, wersja 2, self-hosted, obszar roboczy

Uwagi dotyczące użycia

  • Te zasady mogą być używane wiele razy na definicję zasad.
  • Te zasady można opcjonalnie skonfigurować podczas dodawania interfejsu API z usługi Azure OpenAI Przy użyciu portalu.
  • Jeśli jest dostępna, gdy estimate-prompt-tokens jest ustawiona na falsewartość , wartości w sekcji użycia odpowiedzi z interfejsu API usługi Azure OpenAI są używane do określania użycia tokenu.
  • Niektóre punkty końcowe usługi Azure OpenAI obsługują przesyłanie strumieniowe odpowiedzi. Gdy stream parametr jest ustawiony na true wartość w żądaniu interfejsu API w celu włączenia przesyłania strumieniowego, tokeny monitu są zawsze szacowane, niezależnie od wartości atrybutu estimate-prompt-tokens .
  • Usługa API Management używa pojedynczego licznika dla każdej counter-key wartości określonej w zasadach. Licznik jest aktualizowany we wszystkich zakresach, w których zasady są skonfigurowane przy użyciu tej wartości klucza. Jeśli chcesz skonfigurować oddzielne liczniki w różnych zakresach (na przykład określony interfejs API lub produkt), określ różne wartości klucza w różnych zakresach. Na przykład dołącz ciąg identyfikujący zakres do wartości wyrażenia.

Przykład

W poniższym przykładzie limit tokenu 5000 na minutę jest kluczem adresu IP obiektu wywołującego. Zasady nie szacują liczby tokenów wymaganych do wyświetlenia monitu. Po każdym wykonaniu zasad pozostałe tokeny dozwolone dla tego adresu IP obiektu wywołującego w okresie są przechowywane w zmiennej 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>

Aby uzyskać więcej informacji na temat pracy z zasadami, zobacz: