diff --git a/src/agents/pi-embedded-helpers.isbillingerrormessage.test.ts b/src/agents/pi-embedded-helpers.isbillingerrormessage.test.ts index 8b4b23ac6..f4ae781e8 100644 --- a/src/agents/pi-embedded-helpers.isbillingerrormessage.test.ts +++ b/src/agents/pi-embedded-helpers.isbillingerrormessage.test.ts @@ -201,6 +201,20 @@ describe("isContextOverflowError", () => { } }); + it("matches Chinese context overflow error messages from proxy providers", () => { + const samples = [ + "上下文过长", + "错误:上下文过长,请减少输入", + "上下文超出限制", + "上下文长度超出模型最大限制", + "超出最大上下文长度", + "请压缩上下文后重试", + ]; + for (const sample of samples) { + expect(isContextOverflowError(sample)).toBe(true); + } + }); + it("ignores normal conversation text mentioning context overflow", () => { // These are legitimate conversation snippets, not error messages expect(isContextOverflowError("Let's investigate the context overflow bug")).toBe(false); diff --git a/src/agents/pi-embedded-helpers/errors.ts b/src/agents/pi-embedded-helpers/errors.ts index b4ccfa943..80ba22198 100644 --- a/src/agents/pi-embedded-helpers/errors.ts +++ b/src/agents/pi-embedded-helpers/errors.ts @@ -81,7 +81,13 @@ export function isContextOverflowError(errorMessage?: string): boolean { lower.includes("exceeds the model's maximum context") || (lower.includes("max_tokens") && lower.includes("exceed") && lower.includes("context")) || (lower.includes("input length") && lower.includes("exceed") && lower.includes("context")) || - (lower.includes("413") && lower.includes("too large")) + (lower.includes("413") && lower.includes("too large")) || + // Chinese proxy error messages for context overflow + errorMessage.includes("上下文过长") || + errorMessage.includes("上下文超出") || + errorMessage.includes("上下文长度超") || + errorMessage.includes("超出最大上下文") || + errorMessage.includes("请压缩上下文") ); }