Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Ao criar aplicativos que usam modelos de linguagem, você deve testar como seu aplicativo lida com a limitação de taxa baseada em token. Dev Proxy permite simular limitações de token em APIs de modelo de linguagem usando o LanguageModelRateLimitingPlugin.
Simular limites de token em APIs de modelo de idioma
Para iniciar, habilite o LanguageModelRateLimitingPlugin no seu arquivo de configuração.
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.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/*"
]
}
]
}
Dica
O plug-in funciona com qualquer API compatível com OpenAI, incluindo modelos de linguagem local como o Ollama. Inclua todos os pontos de extremidade de API do modelo de linguagem que você quer testar na propriedade urlsToWatch.
Em seguida, configure o plug-in com os limites de token desejados e a janela de tempo.
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.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/v1.0.0/languagemodelratelimitingplugin.schema.json",
"promptTokenLimit": 1000,
"completionTokenLimit": 500,
"resetTimeWindowSeconds": 60,
"whenLimitExceeded": "Throttle"
}
}
Essa configuração permite até 1.000 tokens de solicitação e 500 tokens de conclusão em uma janela de 60 segundos. Quando um dos limites é excedido, as solicitações subsequentes são limitadas com uma resposta padrão 429.
Inicie o Proxy de Desenvolvimento com o arquivo de configuração e use seu aplicativo para fazer solicitações de modelo de idioma. O plug-in controla o consumo de token de respostas reais da API e limita as solicitações quando os limites são excedidos.
Realizar testes com respostas de erro personalizadas
Você também pode configurar respostas personalizadas quando os limites de token são excedidos definindo whenLimitExceededCustom e criando um arquivo de resposta personalizado.
{
"languageModelRateLimitingPlugin": {
"promptTokenLimit": 500,
"completionTokenLimit": 300,
"resetTimeWindowSeconds": 120,
"whenLimitExceeded": "Custom",
"customResponseFile": "token-limit-response.json"
}
}
Crie o arquivo de resposta personalizado com o formato de erro desejado:
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/languagemodelratelimitingplugincustomresponse.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"
}
}
}
}
O valor de @dynamic para os cabeçalhos retry-after calcula automaticamente os segundos restantes até a redefinição dos limites do token.
Testar cenários diferentes
Cenário 1: limites de token baixos para testes frequentes
{
"languageModelRateLimitingPlugin": {
"promptTokenLimit": 100,
"completionTokenLimit": 50,
"resetTimeWindowSeconds": 30
}
}
Utilize limites baixos com janelas de tempo curtas para acionar rapidamente a limitação durante o desenvolvimento e os testes.
Cenário 2: limites semelhante aos de produção
{
"languageModelRateLimitingPlugin": {
"promptTokenLimit": 10000,
"completionTokenLimit": 5000,
"resetTimeWindowSeconds": 3600
}
}
Para testar padrões de consumo de token realistas, configure limites semelhantes ao seu ambiente de produção.
Cenário 3: limites assimétricos
{
"languageModelRateLimitingPlugin": {
"promptTokenLimit": 2000,
"completionTokenLimit": 100,
"resetTimeWindowSeconds": 300
}
}
Cenários de teste em que os limites de token de conclusão são inferiores aos limites de prompt, simulando planos de API conscientes do custo.
Próxima etapa
Saiba mais sobre o LanguageModelRateLimitingPlugin.