fix: 区分 provider responses 失败分类
This commit is contained in:
@@ -1160,7 +1160,9 @@ function classifyMessageFailureKind(message: string, fallback: FailureKind): Fai
|
||||
if (/invalid[_ -]?prompt/u.test(text) && /invalid function arguments json string|tool_call_id/u.test(text)) return "provider-invalid-tool-call";
|
||||
if (/invalid function arguments json string/u.test(text)) return "provider-invalid-tool-call";
|
||||
if (/rate.?limit|too many requests|\b429\b/u.test(text)) return "provider-rate-limited";
|
||||
if (/\b401\b|\b403\b|unauthori[sz]ed|forbidden|invalid api key|authentication|auth failed|oauth|access token/u.test(text)) return "provider-auth-failed";
|
||||
if (/\b401\b|\b403\b|unauthori[sz]ed|forbidden|invalid api key|api key (?:is )?(?:required|missing)|authentication|auth failed|oauth|access token/u.test(text)) return "provider-auth-failed";
|
||||
if (isProviderStreamDisconnectedMessage(text)) return "provider-stream-disconnected";
|
||||
if (isProviderHttpErrorMessage(text)) return "provider-http-error";
|
||||
if (isProviderUnavailableMessage(text)) return "provider-unavailable";
|
||||
if (/timed out|timeout|idle timeout/u.test(text)) return "backend-timeout";
|
||||
if (/invalid json|json parse/u.test(text)) return "backend-json-parse-error";
|
||||
@@ -1171,6 +1173,16 @@ function isProviderCompactUnsupportedMessage(text: string): boolean {
|
||||
return /responses\/compact|\/compact\b/u.test(text) && /\b404\b|not found|unsupported|no route|not implemented/u.test(text);
|
||||
}
|
||||
|
||||
function isProviderStreamDisconnectedMessage(text: string): boolean {
|
||||
return /responsestreamdisconnected|response stream disconnected|stream disconnected before completion|disconnected before completion/u.test(text);
|
||||
}
|
||||
|
||||
function isProviderHttpErrorMessage(text: string): boolean {
|
||||
if (/\b(?:http(?:\s+status)?|status(?:\s+code)?|unexpected status|status|code)\s*[:=]?\s*[45]\d\d\b/u.test(text)) return true;
|
||||
if (/\b[45]\d\d\b/u.test(text) && /http|status|service unavailable|bad gateway|gateway timeout|internal server error|not found|provider|upstream/u.test(text)) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
function isProviderUnavailableMessage(text: string): boolean {
|
||||
if (/\b(?:http(?:\s+status)?|status(?:\s+code)?|code)\s*[:=]?\s*5\d\d\b/u.test(text)) return true;
|
||||
if (/\b5\d\d\b/u.test(text) && /service unavailable|bad gateway|gateway timeout|internal server error|provider|upstream|response\s*stream\s*disconnected|responsestreamdisconnected/u.test(text)) return true;
|
||||
|
||||
Reference in New Issue
Block a user