LanguageModelRateLimitingPlugin returns a billing error (insufficient_quota) instead of a rate limit error
Les mainteneurs répondent en général sous 1 jour
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 82/100
Piste de recherche
Commencez dans DevProxy.Plugins/Behavior/LanguageModelRateLimitingPlugin.cs et comparez la structure d’erreur attendue avec le preset openai-throttling dans pnp/proxy-samples. C’est terminé lorsque la réponse de throttle par défaut utilise type "tokens" et code "rate_limit_exceeded", inclut les compteurs de tokens du plugin et que Custom peut toujours simuler une erreur de quota.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Description
When LanguageModelRateLimitingPlugin throttles a request with whenLimitExceeded: "Throttle" (the default), it returns a 429 with this body (DevProxy.Plugins/Behavior/LanguageModelRateLimitingPlugin.cs):
{
"error": {
"message": "You exceeded your current quota, please check your plan and billing details.",
"type": "insufficient_quota",
"code": "insufficient_quota"
}
}
That's the body OpenAI uses for a billing or quota error, which means "stop, retrying won't help". OpenAI's docs say: "Retrying billing, spend, or quota errors won't restore API access." (Error codes)
The plugin simulates a token rate limit, which means "wait and retry". So an app that handles OpenAI errors correctly does the wrong thing under Dev Proxy:
- It stops retrying and shows "out of credits", when it should back off and retry.
- Its rate limit branch (
rate_limit_exceeded) never runs, so the test doesn't cover the code path the plugin is meant to test.
Steps to reproduce
- Enable
LanguageModelRateLimitingPluginwith a lowpromptTokenLimitforhttps://api.openai.com/*. - Send OpenAI requests until the limit is exceeded.
- Inspect the 429 body.
Expected behavior
A rate limit error that matches what OpenAI returns when you exceed tokens per minute, for example:
{
"error": {
"message": "Rate limit reached for <model> in organization <org> on tokens per min (TPM): Limit <limit>, Used <used>, Requested <requested>. Please try again in <n>s.",
"type": "tokens",
"param": null,
"code": "rate_limit_exceeded"
}
}
The openai-throttling preset in pnp/proxy-samples already uses this shape.
Actual behavior
The 429 body says insufficient_quota, which clients treat as a billing error.
Proposed fix
Change the default throttle body to rate_limit_exceeded with type: "tokens", and include the token numbers from the plugin's counters in the message. Keep whenLimitExceeded: "Custom" for anyone who wants to simulate a quota error on purpose.
- Langage dominant
- C#
- Étoiles
- 838
- Forks
- 90
- Merge moyen
- 2 j 11 h
- PR mergées (30 j)
- 59
Préparer son environnement
- Fournit un Dockerfile ou un fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de dotnet/dev-proxy
-
GetTokenizedUrl fails on parenthesized Graph URL segmentsPeut-être pris @waldekmastykarz l’a pris il y a 3 jours. Ouvertework in progress
dotnet/dev-proxy#2041 · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
-
Support discriminator for oneOf in OpenApiValidationPluginPeut-être pris @waldekmastykarz l’a pris il y a 3 jours. Ouvertework in progress
dotnet/dev-proxy#2040 · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
-
Validate language-model mock output against the schema in OpenApiMockResponsePluginPeut-être pris @waldekmastykarz l’a pris il y a 3 jours. Ouverteon hold
dotnet/dev-proxy#2039 · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
-
Support bring-your-own LLM (hosted OpenAI-compatible / Azure OpenAI) for language model integrationPeut-être pris @waldekmastykarz l’a pris il y a 3 jours. Ouvertework in progress
dotnet/dev-proxy#2034 · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
-
OpenApiSpecGeneratorPlugin omits parameters and response headers from generated specsPeut-être pris @waldekmastykarz l’a pris il y a 3 jours. Ouvertebug work in progress
dotnet/dev-proxy#2032 · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de dotnet/dev-proxy
Issues similaires
-
area/resource-registry status/triage
Difficulté 1/5 1-3 heures Accessibilité débutants 76/100
Altinn/altinn-auth#4821 ·
Les mainteneurs répondent en général sous 1 jour
-
a11y community:contribution
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
microsoft/fluentui-blazor#5590 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 79/100
JetBrains/resharper-unity#2510 ·
-
Difficulté 1/5 1-3 heures Accessibilité débutants 78/100
QuantConnect/Documentation#2838 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
AvaloniaUI/Avalonia#22697 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour