Ograniczanie użycia tokenu interfejsu API modelu języka

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

Zasady llm-token-limit uniemożliwiają wzrosty użycia interfejsu API modelu języka (LLM) na podstawie klucza przez ograniczenie użycia tokenów LLM 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 usługi LLM, 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 LLM, jeśli limit został już przekroczony.

Uwaga

Obecnie te zasady są dostępne w wersji zapoznawczej.

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

Użyj zasad z interfejsami API LLM dodanymi do usługi Azure API Management, które są dostępne za pośrednictwem interfejsu API wnioskowania modelu AI platformy Azure.

Instrukcja zasad

<llm-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.
  • Jeśli jest dostępna, gdy estimate-prompt-tokens jest ustawiona na falsewartość , wartości w sekcji użycia odpowiedzi z interfejsu API LLM są używane do określania użycia tokenu.
  • Niektóre punkty końcowe LLM 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 />
        <llm-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: