Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
На первый взгляд
Цель: Проверка лимитов скорости токенов LLM
Время: 10 минут
Подключаемые модули:LanguageModelRateLimitingPlugin
Предварительные требования:настройка прокси-сервера разработки
При создании приложений, использующих языковые модели, необходимо проверить, как приложение обрабатывает ограничение скорости на основе маркеров. Dev Proxy позволяет имитировать ограничение токенов для API языковой модели с помощью LanguageModelRateLimitingPlugin.
Симуляция ограничений токенов для API языковых моделей
Чтобы начать, включите LanguageModelRateLimitingPlugin в вашем файле конфигурации.
Файл: 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/*"
]
}
]
}
Подсказка
Подключаемый модуль работает с любым API, совместимым с OpenAI, включая локальные языковые модели, такие как Ollama. Включите все конечные точки API языковой модели, которые необходимо протестировать в свойстве urlsToWatch .
Затем настройте подключаемый модуль с желаемыми ограничениями токенов и временным окном.
Файл: 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/*"
]
}
],
"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"
}
}
Эта конфигурация позволяет использовать до 1000 токенов запроса и 500 токенов завершения в 60-секундном окне. При превышении любого ограничения последующие запросы ограничиваются стандартным HTTP-ответом 429.
Запустите прокси-сервер разработки с файлом конфигурации и используйте приложение для выполнения запросов языковой модели. Подключаемый модуль отслеживает использование токенов из API в фактических ответах и ограничивает запросы при превышении лимитов.
Тестирование с использованием кастомных ответов об ошибках
Вы также можете настроить индивидуальные ответы в случае превышения ограничений маркеров, установив whenLimitExceeded в Custom и создав файл с пользовательским ответом.
Файл: devproxyrc.json (только раздел languageModelRateLimitingPlugin)
{
"languageModelRateLimitingPlugin": {
"promptTokenLimit": 500,
"completionTokenLimit": 300,
"resetTimeWindowSeconds": 120,
"whenLimitExceeded": "Custom",
"customResponseFile": "token-limit-response.json"
}
}
Создайте пользовательский файл ответа с нужным форматом ошибки:
Файл: 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"
}
}
}
}
Значение @dynamic для заголовков 'повторить через' автоматически рассчитывает количество секунд, оставшихся до сброса лимитов токена.
Тестирование различных сценариев
Сценарий 1. Низкие ограничения маркеров для частого тестирования
Файл: devproxyrc.json (только раздел languageModelRateLimitingPlugin)
{
"languageModelRateLimitingPlugin": {
"promptTokenLimit": 100,
"completionTokenLimit": 50,
"resetTimeWindowSeconds": 30
}
}
Используйте низкие ограничения с короткими временными интервалами, чтобы быстро активировать ограничение скорости во время разработки и тестирования.
Сценарий 2: Ограничения, подобные производственной среде
Файл: devproxyrc.json (только раздел languageModelRateLimitingPlugin)
{
"languageModelRateLimitingPlugin": {
"promptTokenLimit": 10000,
"completionTokenLimit": 5000,
"resetTimeWindowSeconds": 3600
}
}
Чтобы протестировать реалистичные шаблоны потребления токенов, настройте ограничения, аналогичные вашей производственной среде.
Сценарий 3. Асимметричные ограничения
Файл: devproxyrc.json (только раздел languageModelRateLimitingPlugin)
{
"languageModelRateLimitingPlugin": {
"promptTokenLimit": 2000,
"completionTokenLimit": 100,
"resetTimeWindowSeconds": 300
}
}
Тестовые сценарии с лимитами токена завершения, которые ниже лимитов запроса, имитируя API-планы, ориентированные на стоимость.
Следующий шаг
Узнать больше о LanguageModelRateLimitingPlugin.