Omezení využití tokenů rozhraní API pro velký jazykový model

PLATÍ PRO: Vývojář | Základní | Basic v2 | Standardní | Standard v2 | Premium | Premium v2

Zásady llm-token-limit brání špičkám využití rozhraní API pro velký jazykový model (LLM) na základě klíče omezením spotřeby tokenů jazykového modelu na zadanou sazbu (počet za minutu), kvótu za zadané období nebo obojí. Při překročení zadaného limitu rychlosti tokenu obdrží volající stavový 429 Too Many Requests kód odpovědi. Když je překročena zadaná kvóta, volající obdrží stavový 403 Forbidden kód odpovědi.

Poznámka:

Nastavte prvky zásad a podřízené prvky v pořadí uvedeném v prohlášení o zásadách. Přečtěte si další informace o tom, jak nastavit nebo upravit zásady služby API Management.

Podporovaná rozhraní API modelu

Tato zásada funguje s rozhraními API LLM přidanými do služby API Management, která odpovídají jednomu z následujících schémat rozhraní API:

  • Rozhraní API pro dokončování chatu OpenAI nebo odpovědi
  • Anthropic rozhraní API pro zprávy (aktuálně podporované ve vrstvách SLUŽBY API Management v2)
  • Google Vertex AI API

Prohlášení o zásadách

<llm-token-limit counter-key="key value"
        tokens-per-minute="number"
        token-quota="number"
        token-quota-period="Hourly | Daily | Weekly | Monthly | Yearly"
        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-quota-tokens-header-name="header name"  
        remaining-quota-tokens-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" />

Atributy

Atribut Popis Požaduje se Výchozí
counter-key Klíč, který se má použít pro zásady omezení tokenu. Pro každou hodnotu klíče se pro všechny obory, ve kterých je zásada nakonfigurovaná, používá jeden čítač. Výrazy zásad jsou povolené. Ano
tokeny za minutu Maximální počet tokenů spotřebovaných výzvou a dokončením za minutu. Je třeba zadat buď limit sazby (tokens-per-minute), kvótu (token-quota nad ) token-quota-periodnebo obojí.
kvóta tokenů Maximální počet tokenů povolených během časového intervalu zadaného v sadě token-quota-period. Výrazy zásad jsou povolené. Je třeba zadat buď limit sazby (tokens-per-minute), kvótu (token-quota nad ) token-quota-periodnebo obojí.
token-quota-period Délka pevného okna, po kterém se token-quota resetuje. Hodnota musí být jedna z následujících hodnot: Hourly,Daily, Weekly, Monthly, Yearly. Počáteční čas období kvóty se vypočítá jako časové razítko UTC zkrácené na jednotku (hodinu, den atd.). Výrazy zásad jsou povolené. Je třeba zadat buď limit sazby (tokens-per-minute), kvótu (token-quota nad ) token-quota-periodnebo obojí.
estimate-prompt-tokens Logická hodnota, která určuje, jestli se má odhadnout počet tokenů požadovaných pro výzvu:
- true: Odhad tokenů výzvy předem na základě schématu výzvy v rozhraní API.
- false: Nevyhodnotujte tokeny výzvy; použijte skutečné využití tokenu z odpovědi modelu.

Informace o počítání a odhadech tokenů najdete v tématu Důležité informace o počtech a odhadech tokenů.
Ano
retry-after-header-name Název vlastní hlavičky odpovědi, jejíž hodnota je doporučený interval opakování v sekundách po zadaném tokens-per-minute nebo token-quota překročení. Výrazy zásad nejsou povolené. Ne Retry-After
retry-after-variable-name Název proměnné, která ukládá doporučený interval opakování v sekundách po zadaném tokens-per-minute nebo token-quota překročení. Výrazy zásad nejsou povolené. Ne
remaining-quota-tokens-header-name Název hlavičky odpovědi, jejíž hodnota po každém spuštění zásady odpovídá odhadovanému počtu zbývajících tokenů odpovídajících token-quota povolenému token-quota-period. Výrazy zásad nejsou povolené. Ne
remaining-quota-tokens-variable-name Název proměnné, která po každém spuštění zásady ukládá odhadovaný počet zbývajících tokenů odpovídajících token-quota povolenému token-quota-period. Výrazy zásad nejsou povolené. Ne
remaining-tokens-header-name Název hlavičky odpovědi, jejíž hodnota po každém spuštění zásady je počet zbývajících tokenů odpovídajících tokens-per-minute povolenému časovému intervalu. Výrazy zásad nejsou povolené. Ne
remaining-tokens-variable-name Název proměnné, která po každém spuštění zásady ukládá počet zbývajících tokenů odpovídajících tokens-per-minute povolenému časovému intervalu. Výrazy zásad nejsou povolené. Ne
tokens-consumed-header-name Název hlavičky odpovědi, jejíž hodnota je počet tokenů spotřebovaných výzvou i dokončením. Hlavička se přidá do odpovědi až po přijetí odpovědi z back-endu. Výrazy zásad nejsou povolené. Ne
tokens-consumed-variable-name Název proměnné inicializované na odhadovaný počet tokenů výzvy v oddílu backend (nebo nula, pokud estimate-prompt-tokens je false), se aktualizuje o skutečný hlášený počet v oddílu outbound . Ne

Využití

Poznámky k využití

  • Tuto zásadu je možné použít vícekrát pro každou definici zásady.
  • Tuto politiku lze volitelně nastavit při přidání LLM API pomocí portálu.
  • Hodnota remaining-quota-tokens-variable-name nebo remaining-quota-tokens-header-name odhad může být větší, než se čekalo na základě skutečné spotřeby tokenů. Další informace najdete v tématu Důležité informace o počtech a odhadech tokenů.
  • Služba API Management používá pro každou counter-key hodnotu, kterou zadáte v zásadách, jeden čítač. Čítač se aktualizuje ve všech oborech, ve kterých je zásada nakonfigurovaná s danou hodnotou klíče. Pokud chcete nakonfigurovat samostatné čítače v různých oborech (například konkrétní rozhraní API nebo produkt), zadejte různé hodnoty klíče v různých oborech. Připojte například řetězec, který identifikuje obor k hodnotě výrazu.
  • Úrovně v2 používají algoritmus kontejneru tokenů pro omezování rychlosti, který se liší od algoritmu posuvného okna v klasických úrovních. Kvůli této implementaci rozdílu, když konfigurujete limity tokenů ve v2 úrovních na více úrovních pomocí stejného counter-key, ujistěte se, že tokens-per-minute hodnota je konzistentní napříč všemi instancemi politik. Nekonzistentní hodnoty mohou způsobit nepředvídatelné chování. Další informace najdete v tématu Advanced request throttling with Azure API Management
  • Tato zásada sleduje využití tokenů nezávisle na každé bráně, ve které se používá, včetně bran pracovních prostorů a regionálních bran v nasazení ve více oblastech. Neagreguje počty tokenů v celé instanci.

Důležité informace o počtech a odhadech tokenů

Zásady monitorují a vynucují limity tokenů pomocí skutečných dat o využití tokenů vrácených z koncového bodu LLM. Volitelně můžete povolit odhad tokenu výzvy, abyste snížili nepotřebné požadavky back-endu. Platí následující aspekty.

  • Typy tokenů: Zásady aktuálně počítá pouze tokeny výzvy a dokončení.
  • Bez odhadu tokenu výzvy (estimate-prompt-tokens="false"): Zásada používá skutečné hodnoty využití tokenů z usage části odpovědi rozhraní LLM API. Výzvy mohou být odeslány do back-endu i v případě překročení limitu; to se zjistí z odpovědi, po které se následné požadavky zablokují, dokud se limit resetuje.
  • Při odhadu tokenu výzvy (estimate-prompt-tokens="true"): Zásady před odesláním požadavku odhadují tokeny výzvy ze schématu výzvy v definici rozhraní API. To může snížit nepotřebné požadavky back-endu, pokud už je limit překročen, ale může snížit výkon.
  • Streamování: Pokud je v požadavku rozhraní API povolené streamování (stream: true), vždy se odhadují tokeny výzvy bez ohledu na estimate-prompt-tokens nastavení. Tokeny dokončení se také odhadují při streamování odpovědí.
  • Vstup obrázku: U modelů, které přijímají vstup image, se tokeny obrázků obecně počítají back-endovým LLM a zahrnují se do výpočtů limitu a kvóty. Pokud je ale povolené streamování nebo estimate-prompt-tokens je nastavené na true, zásada přepočítá každou image jako maximálně 1200 tokenů.
  • Souběžnost: Vzhledem k tomu, že přesný počet spotřebovaných tokenů nelze určit, dokud nebudou odpovědi přijaty z back-endu, souběžné nebo téměř souběžné požadavky dočasně překročí nakonfigurovaný limit tokenu. Po zpracování odpovědí a překročení limitu se následující požadavky zablokují, dokud se limit resetuje.
  • Zbývající přesnost kvóty: Odhadovaná zbývající kvóta tokenu vrácená nebo remaining-quota-tokens-variable-nameremaining-quota-tokens-header-name může být větší, než se čekalo na základě skutečné spotřeby tokenů, a bude přesnější, jak se kvóta blíží.

Příklady

Limit rychlosti tokenů

V následujícím příkladu je limit rychlosti tokenu 5000 za minutu klíčován IP adresou volajícího. Zásada nehodnotuje počet tokenů požadovaných pro výzvu. Po každém spuštění zásad jsou zbývající tokeny povolené pro danou IP adresu volajícího v časovém období uloženy v proměnné 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>

Kvóta tokenů

V následujícím příkladu je kvóta tokenu 10000 klíč podle ID předplatného a resetuje se měsíčně. Po každém spuštění zásad se počet zbývajících tokenů povolených pro toto ID předplatného v časovém období uloží do proměnné remainingQuotaTokens.

<policies>
    <inbound>
        <base />
        <llm-token-limit
            counter-key="@(context.Subscription.Id)"
            token-quota="100000" token-quota-period="Monthly" remaining-quota-tokens-variable-name="remainingQuotaTokens" />
    </inbound>
    <outbound>
        <base />
    </outbound>
</policies>

Další informace o práci se zásadami najdete v tématech: