Bagikan melalui


Membatasi penggunaan token Api Azure OpenAI

BERLAKU UNTUK: Pengembang | Dasar | Dasar v2 | Standar | Standar v2 | Premium | Premium v2

Kebijakan ini azure-openai-token-limit mencegah Azure OpenAI dalam lonjakan penggunaan API Model Foundry per kunci dengan membatasi konsumsi token model bahasa ke tarif tertentu (angka per menit), kuota selama periode tertentu, atau keduanya. Ketika batas tarif token yang ditentukan terlampaui, pemanggil menerima 429 Too Many Requests kode status respons. Ketika kuota tertentu terlampaui, pemanggil menerima 403 Forbidden kode status respons.

Dengan mengandalkan metrik penggunaan token yang dikembalikan dari titik akhir Azure OpenAI, kebijakan memantau dan memberlakukan batas berdasarkan konsumsi token aktual. Kebijakan ini juga memungkinkan estimasi token prompt terlebih dahulu oleh API Management, meminimalkan permintaan yang tidak perlu ke backend Azure OpenAI jika batas sudah terlampaui. Namun, karena jumlah token aktual yang digunakan bergantung pada ukuran prompt dan ukuran penyelesaian (yang bervariasi menurut permintaan), kebijakan tidak dapat memprediksi total konsumsi token sebelumnya. Desain ini dapat memungkinkan batas token untuk dilampaui sementara ketika beberapa permintaan diproses secara bersamaan.

Catatan

Tetapkan elemen kebijakan dan elemen turunan dalam urutan yang disediakan dalam pernyataan kebijakan. Pelajari lebih lanjut cara mengatur atau mengedit kebijakan API Management.

Azure OpenAI yang didukung di model Azure AI Foundry

Kebijakan ini digunakan dengan API yang ditambahkan ke API Management dari Azure OpenAI dalam model AI Foundry dari jenis berikut:

Tipe API Model yang didukung
Penyelesaian obrolan gpt-3.5

gpt-4

gpt-4o

gpt-4o-mini

o1

o3
Penyematan text-embedding-3-large

text-embedding-3-small

text-embedding-ada-002
Respons (pratinjau) gpt-4o (Versi: 2024-11-20, 2024-08-06, 2024-05-13)

gpt-4o-mini (Versi: 2024-07-18)

gpt-4.1 (Versi: 2025-04-14)

gpt-4.1-nano (Versi: 2025-04-14)

gpt-4.1-mini (Versi: 2025-04-14)

gpt-image-1 (Versi: 2025-04-15)

o3 (Versi: 2025-04-16)

o4-mini (Versi: '2025-04-16)

Catatan

API penyelesaian tradisional hanya tersedia dengan versi model lama dan dukungan terbatas.

Untuk informasi saat ini tentang model dan kemampuannya, lihat Azure OpenAI di Model Foundry.

Pernyataan kebijakan

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

Atribut

Atribut Deskripsi Wajib diisi Bawaan
penghitung-kunci Kunci yang digunakan untuk kebijakan batas token. Untuk setiap nilai kunci, penghitung tunggal digunakan untuk semua cakupan tempat kebijakan dikonfigurasi. Ekspresi kebijakan diizinkan. Ya T/A
token per menit Jumlah maksimum token yang dikonsumsi oleh perintah dan penyelesaian per menit. Batas tarif (tokens-per-minute), kuota (token-quota melalui token-quota-period), atau keduanya harus ditentukan. T/A
token-kuota Jumlah maksimum token yang diizinkan selama interval waktu yang ditentukan dalam token-quota-period. Ekspresi kebijakan tidak diizinkan. Batas tarif (tokens-per-minute), kuota (token-quota melalui token-quota-period), atau keduanya harus ditentukan. T/A
periode kuota token Panjang jendela tetap setelah reset token-quota . Nilainya harus salah satu dari yang berikut ini: Hourly,Daily, , WeeklyMonthly, Yearly. Waktu mulai periode kuota dihitung menggunakan tanda waktu UTC yang dipotong ke unit (jam, hari, dll.) yang digunakan untuk periode tersebut. Batas tarif (tokens-per-minute), kuota (token-quota melalui token-quota-period), atau keduanya harus ditentukan. T/A
estimate-prompt-tokens Nilai Boolean yang menentukan apakah akan memperkirakan jumlah token yang diperlukan untuk permintaan:
- true: memperkirakan jumlah token berdasarkan skema prompt dalam API; dapat mengurangi performa.
- false: jangan perkirakan token perintah.

Ketika diatur ke false, token yang tersisa per counter-key dihitung menggunakan penggunaan token aktual dari respons model. Ini dapat mengakibatkan perintah dikirim ke model yang melebihi batas token. Dalam kasus seperti itu, ini akan terdeteksi dalam respons, dan semua permintaan berikutnya akan diblokir oleh kebijakan hingga batas token diatur ulang.
Ya T/A
coba lagi-setelah-header-nama Nama header respons kustom yang nilainya adalah interval coba lagi yang disarankan dalam hitungan detik setelah yang ditentukan tokens-per-minute atau token-quota terlampaui. Ekspresi kebijakan tidak diizinkan. Tidak. Retry-After
coba lagi-setelah-nama-variabel Nama variabel yang menyimpan interval coba lagi yang direkomendasikan dalam hitungan detik setelah yang ditentukan tokens-per-minute atau token-quota terlampaui. Ekspresi kebijakan tidak diizinkan. Tidak. T/A
remaining-quota-tokens-header-name Nama header respons yang nilainya setelah setiap eksekusi kebijakan adalah perkiraan jumlah token yang tersisa yang sesuai dengan token-quota yang diizinkan untuk token-quota-period. Ekspresi kebijakan tidak diizinkan. Tidak. T/A
remaining-quota-tokens-variable-name Nama variabel yang setelah setiap eksekusi kebijakan menyimpan perkiraan jumlah token yang tersisa yang sesuai dengan token-quota yang diizinkan untuk token-quota-period. Ekspresi kebijakan tidak diizinkan. Tidak. T/A
remaining-tokens-header-name Nama header respons yang nilainya setelah setiap eksekusi kebijakan adalah jumlah token yang tersisa yang sesuai dengan tokens-per-minute yang diizinkan untuk interval waktu. Ekspresi kebijakan tidak diizinkan. Tidak. T/A
remaining-tokens-variable-name Nama variabel yang setelah setiap eksekusi kebijakan menyimpan jumlah token yang tersisa yang sesuai dengan tokens-per-minute yang diizinkan untuk interval waktu. Ekspresi kebijakan tidak diizinkan. Tidak. T/A
tokens-consumed-header-name Nama header respons yang nilainya adalah jumlah token yang digunakan oleh perintah dan penyelesaian. Header ditambahkan ke respons hanya setelah respons diterima dari backend. Ekspresi kebijakan tidak diizinkan. Tidak. T/A
tokens-consumed-variable-name Nama variabel yang diinisialisasi ke perkiraan jumlah token dalam perintah di backend bagian alur jika estimate-prompt-tokens adalah true dan nol sebaliknya. Variabel diperbarui dengan jumlah yang dilaporkan setelah menerima respons di outbound bagian . Tidak. T/A

Penggunaan

Catatan penggunaan

  • Kebijakan ini dapat digunakan beberapa kali per definisi kebijakan
  • Kebijakan ini dapat dikonfigurasi secara opsional saat menambahkan API Azure OpenAI menggunakan portal.
  • Jika tersedia saat estimate-prompt-tokens diatur ke false, nilai di bagian penggunaan respons dari Azure OpenAI API digunakan untuk menentukan penggunaan token.
  • Ketika beberapa permintaan dikirim secara bersamaan atau dengan sedikit penundaan, kebijakan dapat mengizinkan konsumsi token yang melebihi batas yang dikonfigurasi. Hal ini terjadi karena kebijakan tidak dapat menentukan jumlah pasti token yang digunakan hingga respons diterima dari backend. Setelah respons diproses dan batas token terlampaui, permintaan berikutnya diblokir hingga batas diatur ulang.
  • Titik akhir Azure OpenAI tertentu mendukung streaming respons. Ketika stream diatur ke true dalam permintaan API untuk mengaktifkan streaming, token prompt selalu diperkirakan, terlepas dari estimate-prompt-tokens nilai atribut. Token penyelesaian juga diperkirakan saat respons dialirkan.
  • Nilai remaining-quota-tokens-variable-name atau remaining-quota-tokens-header-name adalah perkiraan untuk tujuan informasi tetapi bisa lebih besar dari yang diharapkan berdasarkan konsumsi token aktual. Nilainya lebih akurat karena kuota didekati.
  • Untuk model yang menerima input gambar, token gambar umumnya dihitung oleh model bahasa backend dan disertakan dalam perhitungan batas dan kuota. Namun, ketika streaming digunakan atau estimate-prompt-tokens diatur ke true, kebijakan saat ini menghitung setiap gambar secara berlebihan sebagai jumlah maksimum 1200 token.
  • API Management menggunakan satu penghitung untuk setiap counter-key nilai yang Anda tentukan dalam kebijakan. Penghitung diperbarui di semua cakupan di mana kebijakan dikonfigurasi dengan nilai kunci tersebut. Jika Anda ingin mengonfigurasi penghitung terpisah pada cakupan yang berbeda (misalnya, API atau produk tertentu), tentukan nilai kunci yang berbeda pada cakupan yang berbeda. Misalnya, tambahkan string yang mengidentifikasi cakupan ke nilai ekspresi.
  • Tingkat v2 menggunakan algoritme bucket token untuk pembatasan kecepatan, yang berbeda dari algoritme jendela geser di tingkat klasik. Karena perbedaan implementasi ini, saat Anda mengonfigurasi batas token di tingkat v2 di beberapa cakupan dengan menggunakan yang sama counter-key, pastikan nilainya tokens-per-minute konsisten di semua instans kebijakan. Nilai yang tidak konsisten dapat menyebabkan perilaku yang tidak dapat diprediksi.
  • Kebijakan ini melacak penggunaan token secara independen di setiap gateway tempatnya diterapkan, termasuk gateway ruang kerja dan gateway regional dalam penyebaran multi-wilayah. Ini tidak menghitung token agregat di seluruh instans.

Contoh

Batas tarif token

Dalam contoh berikut, batas tarif token 5000 per menit dikunci oleh alamat IP pemanggil. Kebijakan ini tidak memperkirakan jumlah token yang diperlukan untuk perintah. Setelah setiap eksekusi kebijakan, token yang tersisa yang diizinkan untuk alamat IP pemanggil tersebut dalam periode waktu disimpan dalam variabel 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>

Kuota token

Dalam contoh berikut, kuota token 10000 kunci oleh ID langganan dan direset setiap bulan. Setelah setiap eksekusi kebijakan, jumlah token yang tersisa yang diizinkan untuk ID langganan tersebut dalam periode waktu disimpan dalam variabel remainingQuotaTokens.

<policies>
    <inbound>
        <base />
        <azure-openai-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>

Untuk informasi selengkapnya tentang bekerja dengan kebijakan, lihat: