maybe fixes gemini's fucked error messages idk
This commit is contained in:
@@ -548,33 +548,57 @@ async function handleGoogleAIBadRequestError(
|
||||
errorPayload: ProxiedErrorPayload
|
||||
) {
|
||||
const error = errorPayload.error || {};
|
||||
const { message, status, details } = error;
|
||||
|
||||
if (status === "INVALID_ARGUMENT") {
|
||||
const reason = details?.[0]?.reason;
|
||||
if (reason === "API_KEY_INVALID") {
|
||||
req.log.warn(
|
||||
{ key: req.key?.hash, status, reason, msg: error.message },
|
||||
"Received `API_KEY_INVALID` error from Google AI. Check the configured API key."
|
||||
);
|
||||
keyPool.disable(req.key!, "revoked");
|
||||
errorPayload.proxy_note = `Assigned API key is invalid.`;
|
||||
}
|
||||
} else if (status === "FAILED_PRECONDITION") {
|
||||
if (message.match(/please enable billing/i)) {
|
||||
req.log.warn(
|
||||
{ key: req.key?.hash, status, msg: error.message },
|
||||
"Cannot use key due to billing restrictions."
|
||||
);
|
||||
keyPool.disable(req.key!, "revoked");
|
||||
errorPayload.proxy_note = `Assigned API key cannot be used.`;
|
||||
}
|
||||
// google changes this shit every few months
|
||||
// i don't want to deal with it
|
||||
const keyDeadMsgs = [
|
||||
/please enable billing/i,
|
||||
/API key not valid/i,
|
||||
/API key expired/i,
|
||||
/pass a valid API/i,
|
||||
];
|
||||
const text = JSON.stringify(error);
|
||||
if (keyDeadMsgs.some((msg) => text.match(msg))) {
|
||||
req.log.warn(
|
||||
{ key: req.key?.hash, error: text },
|
||||
"Google API key appears to be inoperative."
|
||||
);
|
||||
keyPool.disable(req.key!, "revoked");
|
||||
errorPayload.proxy_note = `Assigned API key cannot be used.`;
|
||||
} else {
|
||||
req.log.warn(
|
||||
{ key: req.key?.hash, status, msg: error.message },
|
||||
"Received unexpected 400 error from Google AI."
|
||||
{ key: req.key?.hash, error: text },
|
||||
"Unknown Google API error."
|
||||
);
|
||||
errorPayload.proxy_note = `Unrecognized error from Google AI.`;
|
||||
}
|
||||
|
||||
// const { message, status, details } = error;
|
||||
//
|
||||
// if (status === "INVALID_ARGUMENT") {
|
||||
// const reason = details?.[0]?.reason;
|
||||
// if (reason === "API_KEY_INVALID") {
|
||||
// req.log.warn(
|
||||
// { key: req.key?.hash, status, reason, msg: error.message },
|
||||
// "Received `API_KEY_INVALID` error from Google AI. Check the configured API key."
|
||||
// );
|
||||
// keyPool.disable(req.key!, "revoked");
|
||||
// errorPayload.proxy_note = `Assigned API key is invalid.`;
|
||||
// }
|
||||
// } else if (status === "FAILED_PRECONDITION") {
|
||||
// if (message.match(/please enable billing/i)) {
|
||||
// req.log.warn(
|
||||
// { key: req.key?.hash, status, msg: error.message },
|
||||
// "Cannot use key due to billing restrictions."
|
||||
// );
|
||||
// keyPool.disable(req.key!, "revoked");
|
||||
// errorPayload.proxy_note = `Assigned API key cannot be used.`;
|
||||
// }
|
||||
// } else {
|
||||
// req.log.warn(
|
||||
// { key: req.key?.hash, status, msg: error.message },
|
||||
// "Received unexpected 400 error from Google AI."
|
||||
// );
|
||||
// }
|
||||
}
|
||||
|
||||
//{"error":{"code":429,"message":"Resource has been exhausted (e.g. check quota).","status":"RESOURCE_EXHAUSTED"}
|
||||
|
||||
Reference in New Issue
Block a user