Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Sekilas
Tujuan: Menguji batas laju token LLM
Waktu: 10 menit
Plugins:LanguageModelRateLimitingPlugin
Prasyarat:Menyiapkan Proksi Dev
Saat membuat aplikasi yang menggunakan model bahasa, Anda harus menguji bagaimana aplikasi Anda menangani pembatasan tarif berbasis token. Dev Proxy memungkinkan Anda mensimulasikan batas token pada API model bahasa menggunakan LanguageModelRateLimitingPlugin.
Menyimulasikan batas token pada API model bahasa
Untuk memulai, aktifkan LanguageModelRateLimitingPlugin dalam file konfigurasi Anda.
File: devproxyrc.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/rc.schema.json",
"plugins": [
{
"name": "LanguageModelRateLimitingPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "languageModelRateLimitingPlugin",
"urlsToWatch": [
"https://api.openai.com/*",
"http://localhost:11434/*"
]
}
]
}
Tip
Plugin ini berfungsi dengan API yang kompatibel dengan OpenAI, termasuk model bahasa lokal seperti Ollama. Sertakan semua titik akhir API model bahasa yang ingin Anda uji di urlsToWatch properti .
Selanjutnya, konfigurasikan plugin dengan batas token dan jendela waktu yang Anda inginkan.
File: devproxyrc.json (lengkap dengan batas token)
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/rc.schema.json",
"plugins": [
{
"name": "LanguageModelRateLimitingPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "languageModelRateLimitingPlugin",
"urlsToWatch": [
"https://api.openai.com/*",
"http://localhost:11434/*"
]
}
],
"languageModelRateLimitingPlugin": {
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/languagemodelratelimitingplugin.schema.json",
"promptTokenLimit": 1000,
"completionTokenLimit": 500,
"resetTimeWindowSeconds": 60,
"whenLimitExceeded": "Throttle"
}
}
Konfigurasi ini memungkinkan hingga 1.000 token prompt dan 500 token penyelesaian dalam jendela 60 detik. Ketika salah satu batas terlampaui, permintaan berikutnya dibatasi dengan respons standar 429.
Mulai Dev Proxy dengan file konfigurasi Anda dan gunakan aplikasi Anda untuk membuat permintaan model bahasa. Plugin melacak konsumsi token dari respons API aktual dan membatasi permintaan ketika batas terlampaui.
Uji dengan respons kesalahan kustom
Anda juga dapat mengonfigurasi respons kustom saat batas token terlampaui dengan mengatur whenLimitExceeded ke Custom dan membuat file respons kustom.
File: devproxyrc.json (hanya bagian languageModelRateLimitingPlugin)
{
"languageModelRateLimitingPlugin": {
"promptTokenLimit": 500,
"completionTokenLimit": 300,
"resetTimeWindowSeconds": 120,
"whenLimitExceeded": "Custom",
"customResponseFile": "token-limit-response.json"
}
}
Buat file respons kustom dengan format kesalahan yang Anda inginkan:
File: token-limit-response.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/languagemodelratelimitingplugin.customresponsefile.schema.json",
"statusCode": 429,
"headers": [
{
"name": "retry-after",
"value": "@dynamic"
},
{
"name": "content-type",
"value": "application/json"
}
],
"body": {
"error": {
"message": "Token quota exceeded. Your application has consumed all available tokens for this time period.",
"type": "quota_exceeded",
"code": "TOKENS_EXHAUSTED",
"details": {
"quota_type": "tokens",
"retry_after_seconds": "@dynamic"
}
}
}
}
Nilai @dynamic untuk header retry-after secara otomatis menghitung sisa detik hingga batas token direset.
Menguji skenario yang berbeda
Skenario 1: Batas token rendah untuk pengujian yang sering
File: devproxyrc.json (hanya bagian languageModelRateLimitingPlugin)
{
"languageModelRateLimitingPlugin": {
"promptTokenLimit": 100,
"completionTokenLimit": 50,
"resetTimeWindowSeconds": 30
}
}
Gunakan batas rendah dengan jendela waktu singkat untuk memicu pembatasan dengan cepat selama pengembangan dan pengujian.
Skenario 2: Batas seperti produksi
File: devproxyrc.json (hanya bagian languageModelRateLimitingPlugin)
{
"languageModelRateLimitingPlugin": {
"promptTokenLimit": 10000,
"completionTokenLimit": 5000,
"resetTimeWindowSeconds": 3600
}
}
Untuk menguji pola konsumsi token realistis, konfigurasikan batas yang mirip dengan lingkungan produksi Anda.
Skenario 3: Batas asimetris
File: devproxyrc.json (hanya bagian languageModelRateLimitingPlugin)
{
"languageModelRateLimitingPlugin": {
"promptTokenLimit": 2000,
"completionTokenLimit": 100,
"resetTimeWindowSeconds": 300
}
}
Skenario pengujian di mana batas token penyelesaian lebih rendah daripada batas awalan, mensimulasikan rencana API yang hemat biaya.
Langkah selanjutnya
Pelajari selengkapnya tentang LanguageModelRateLimitingPlugin.