Einschränken der Azure OpenAI-API-Tokennutzung

GILT FÜR: Developer | Basic | Basic v2 | Standard | Standard v2 | Premium

Die Richtlinie azure-openai-token-limit verhindert Nutzungsspitzen der Azure OpenAI Service-API pro Schlüssel, indem sie den Verbrauch von Sprachmodelltoken auf eine bestimmte Anzahl pro Minute begrenzt. Wenn der Grenzwert für die Tokennutzung überschritten wird, empfängt der Aufrufer den Antwortstatuscode 429 Too Many Requests.

Da sich die Richtlinie auf die vom OpenAI-Endpunkt zurückgegebenen Metriken zur Tokennutzung stützt, kann sie die Grenzwerte in Echtzeit genau überwachen und erzwingen. Die Richtlinie ermöglicht auch die Vorausberechnung von Eingabeaufforderungstoken durch das API Management, wodurch unnötige Anforderungen an das OpenAI-Back-End minimiert werden, wenn der Grenzwert bereits überschritten ist.

Hinweis

Legen Sie die Elemente und untergeordneten Elemente einer Richtlinie in der Reihenfolge fest, die in der Richtlinienanweisung angegeben ist. Erfahren Sie mehr darüber, wie Sie API Management-Richtlinien festlegen oder bearbeiten.

Unterstützte Azure OpenAI Service-Modelle

Die Richtlinie wird mit APIs der folgenden Typen verwendet, die dem API Management aus dem Azure OpenAI Service hinzugefügt werden:

API-Typ Unterstützte Modelle
Chatvervollständigung gpt-3.5

gpt-4
Completion gpt-3.5-turbo-instruct
Einbettungen text-embedding-3-large

text-embedding-3-small

text-embedding-ada-002

Weitere Informationen finden Sie unter Azure OpenAI Service-Modelle.

Richtlinienanweisung

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

Attribute

Attribut BESCHREIBUNG Erforderlich Standard
counter-key Der Schlüssel, der für die Ratenbegrenzungsrichtlinie verwendet werden soll Für jeden Schlüsselwert wird ein einzelner Indikator für alle Bereiche verwendet, in denen die Richtlinie konfiguriert ist. Richtlinienausdrücke sind zulässig. Ja N/V
tokens-per-minute Die maximale Anzahl von Token, die von Eingabeaufforderung und Abschluss pro Minute verbraucht werden. Ja N/V
estimate-prompt-tokens Boolescher Wert, der bestimmt, ob die Anzahl der für eine Eingabeaufforderung erforderlichen Token geschätzt werden soll:
- true: Die Anzahl der Token basierend auf dem Eingabeaufforderungsschema in der API schätzen; kann die Leistung beeinträchtigen.
- false: Eingabeaufforderungstoken nicht schätzen.

Bei Festlegung auf false werden die verbleibenden Token pro counter-key mithilfe der tatsächlichen Tokenverwendung aus der Antwort des Modells berechnet. Dies kann dazu führen, dass Prompts an das Modell gesendet werden, das den Tokengrenzwert überschreitet. Dies wird in der Antwort erkannt, und alle erfolgreichen Anforderungen werden von der Richtlinie blockiert, bis der Tokengrenzwert wieder unterschritten wird.
Ja
retry-after-header-name Der Name eines benutzerdefinierten Antwort-Headers, dessen Wert das empfohlene Wiederholungsintervall in Sekunden angibt, nachdem der für tokens-per-minute angegebene Wert überschritten wurde. Richtlinienausdrücke sind nicht zulässig. No Retry-After
retry-after-variable-name Der Name einer Variablen, in der das empfohlene Wiederholungsintervall in Sekunden gespeichert wird, nachdem der für tokens-per-minute angegebene Wert überschritten wurde. Richtlinienausdrücke sind nicht zulässig. Nein
remaining-tokens-header-name Der Name eines Antwortheaders, dessen Wert nach jeder Richtlinienausführung die Anzahl der verbleibenden, für den Zeitraum zulässigen Token angibt Richtlinienausdrücke sind nicht zulässig. Nein
remaining-tokens-variable-name Der Name einer Variablen, in der nach jeder Richtlinienausführung die Anzahl der vverbleibenden, für den Zeitraum zulässigen Token gespeichert wird Richtlinienausdrücke sind nicht zulässig. Nein
tokens-consumed-header-name Der Name eines Antwortheaders, dessen Wert die Anzahl der Token ist, die sowohl von der Eingabeaufforderung als auch vom Abschluss verbraucht werden Der Header wird der Antwort erst hinzugefügt, nachdem die Antwort vom Back-End empfangen wurde. Richtlinienausdrücke sind nicht zulässig. Nein
tokens-consumed-variable-name Der Name einer Variablen, die mit der geschätzten Anzahl von Token in der Eingabeaufforderung im backend-Abschnitt der Pipeline initialisiert wurde, wenn estimate-prompt-tokens gleich true ist, und andernfalls null ist. Nachdem die Antwort im outbound-Abschnitt empfangen wurde, wird die Variable mit der gemeldeten Anzahl aktualisiert. No

Verwendung

Hinweise zur Verwendung

  • Diese Richtlinie kann mehrmals pro Richtliniendefinition verwendet werden.
  • Diese Richtlinie kann optional konfiguriert werden, wenn eine API aus dem Azure OpenAI-Dienst über das Portal hinzugefügt wird.
  • Falls verfügbar, wenn estimate-prompt-tokens auf false eingestellt ist, werden Werte im Verwendungsbereich der Antwort aus der Azure OpenAI-Dienst-API verwendet, um die Tokennutzung zu bestimmen.
  • Bestimmte Azure OpenAI-Endpunkte unterstützen das Streaming von Antworten. Wenn stream in der API-Anforderung zum Aktivieren des Streamings auf true festgelegt ist, werden Prompttokens unabhängig vom Wert des Attributs estimate-prompt-tokens immer geschätzt. Abschlusstoken werden auch geschätzt, wenn Antworten gestreamt werden.
  • API Management verwendet einen einzelnen Zähler für jeden counter-key-Wert, den Sie in der Richtlinie angeben. Der Zähler wird für alle Bereiche aktualisiert, für die die Richtlinie mit diesem Schlüsselwert konfiguriert ist. Wenn Sie für verschiedene Bereiche separate Zähler konfigurieren möchten (z. B. eine bestimmte API oder ein bestimmtes Produkt), geben Sie für die verschiedenen Bereiche unterschiedliche Schlüsselwerte an. Fügen Sie beispielsweise eine Zeichenfolge an, die den Bereich auf den Wert eines Ausdrucks festlegt.

Beispiel

Im folgenden Beispiel wird der Tokengrenzwert von 5.000 pro Minute durch die IP-Adresse des Anrufers bestimmt. Die Richtlinie schätzt die für eine Eingabeaufforderung erforderliche Anzahl von Token nicht. Nach jeder Richtlinienausführung werden die verbleibenden Token, die in dem Zeitraum für diese aufrufende IP-Adresse zulässig sind, in der Variablen remainingTokens gespeichert.

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

Weitere Informationen zum Arbeiten mit Richtlinien finden Sie hier: