No more error user messages
This commit is contained in:
@@ -294,7 +294,8 @@ const handleUpstreamErrors: ProxyResHandlerWithBody = async (
|
||||
// Xai specific - insufficient balance
|
||||
if (service === "xai") {
|
||||
keyPool.disable(req.key!, "quota");
|
||||
errorPayload.proxy_note = `Assigned key has insufficient balance. Please try again.`;
|
||||
await reenqueueRequest(req);
|
||||
throw new RetryableError("XAI key has insufficient balance, retrying with different key.");
|
||||
}
|
||||
} else if (statusCode === 403) {
|
||||
switch (service) {
|
||||
@@ -318,7 +319,8 @@ const handleUpstreamErrors: ProxyResHandlerWithBody = async (
|
||||
case "UnrecognizedClientException":
|
||||
// Key is invalid.
|
||||
keyPool.disable(req.key!, "revoked");
|
||||
errorPayload.proxy_note = `Assigned API key is invalid or revoked, please try again.`;
|
||||
await reenqueueRequest(req);
|
||||
throw new RetryableError("AWS key is invalid, retrying with different key.");
|
||||
break;
|
||||
case "AccessDeniedException":
|
||||
const isModelAccessError =
|
||||
@@ -338,10 +340,13 @@ const handleUpstreamErrors: ProxyResHandlerWithBody = async (
|
||||
return;
|
||||
case "mistral-ai":
|
||||
case "gcp":
|
||||
keyPool.disable(req.key!, "revoked");
|
||||
await reenqueueRequest(req);
|
||||
throw new RetryableError("GCP key is invalid, retrying with different key.");
|
||||
case "moonshot":
|
||||
keyPool.disable(req.key!, "revoked");
|
||||
errorPayload.proxy_note = `Assigned API key is invalid or revoked, please try again.`;
|
||||
return;
|
||||
await reenqueueRequest(req);
|
||||
throw new RetryableError("Moonshot key is invalid, retrying with different key.");
|
||||
}
|
||||
} else if (statusCode === 429) {
|
||||
switch (service) {
|
||||
@@ -480,7 +485,8 @@ async function handleAnthropicAwsBadRequestError(
|
||||
"Anthropic key has hit spending limit and will be disabled."
|
||||
);
|
||||
keyPool.disable(req.key!, "quota");
|
||||
errorPayload.proxy_note = `Assigned key has hit its spending limit. ${error?.message}`;
|
||||
await reenqueueRequest(req);
|
||||
throw new RetryableError("Claude key hit spending limit, retrying with different key.");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -494,7 +500,8 @@ async function handleAnthropicAwsBadRequestError(
|
||||
"Anthropic/AWS key has been disabled."
|
||||
);
|
||||
keyPool.disable(req.key!, "revoked");
|
||||
errorPayload.proxy_note = `Assigned key has been disabled. (${error?.message})`;
|
||||
await reenqueueRequest(req);
|
||||
throw new RetryableError("Claude key has been disabled, retrying with different key.");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -655,17 +662,20 @@ async function handleOpenAIRateLimitError(
|
||||
case "invalid_request_error": // this is the billing_hard_limit_reached error seen in some cases
|
||||
// Billing quota exceeded (key is dead, disable it)
|
||||
keyPool.disable(req.key!, "quota");
|
||||
errorPayload.proxy_note = `Assigned key's quota has been exceeded. Please try again.`;
|
||||
await reenqueueRequest(req);
|
||||
throw new RetryableError("Google AI key quota exceeded, retrying with different key.");
|
||||
break;
|
||||
case "access_terminated":
|
||||
// Account banned (key is dead, disable it)
|
||||
keyPool.disable(req.key!, "revoked");
|
||||
errorPayload.proxy_note = `Assigned key has been banned by OpenAI for policy violations. Please try again.`;
|
||||
await reenqueueRequest(req);
|
||||
throw new RetryableError("Google AI key banned for policy violations, retrying with different key.");
|
||||
break;
|
||||
case "billing_not_active":
|
||||
// Key valid but account billing is delinquent
|
||||
keyPool.disable(req.key!, "quota");
|
||||
errorPayload.proxy_note = `Assigned key has been disabled due to delinquent billing. Please try again.`;
|
||||
await reenqueueRequest(req);
|
||||
throw new RetryableError("Google AI key billing not active, retrying with different key.");
|
||||
break;
|
||||
case "requests":
|
||||
case "tokens":
|
||||
@@ -724,7 +734,8 @@ async function handleGoogleAIBadRequestError(
|
||||
"Google API key appears to be inoperative."
|
||||
);
|
||||
keyPool.disable(req.key!, "revoked");
|
||||
errorPayload.proxy_note = `Assigned API key cannot be used.`;
|
||||
await reenqueueRequest(req);
|
||||
throw new RetryableError("Google API key inoperative, retrying with different key.");
|
||||
} else {
|
||||
req.log.warn(
|
||||
{ key: req.key?.hash, error: text },
|
||||
|
||||
Reference in New Issue
Block a user