fix(agents): detect Anthropic 'exceed context limit' error for auto-compaction
Add detection for Anthropic's 'input length and max_tokens exceed context limit' error message to trigger auto-compaction. Without this fix, extended thinking sessions with large contexts would fail without attempting compaction. Fixes cases like: - 'input length and max_tokens exceed context limit: 156321 + 48384 > 200000' - JSON wrapped versions of the same error
This commit is contained in:
parent
01e0d3a320
commit
2194d21124
@ -40,6 +40,20 @@ describe("isContextOverflowError", () => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("matches Anthropic 'input length and max_tokens exceed context limit' error", () => {
|
||||||
|
// Anthropic returns this error when input_tokens + max_tokens > context_window.
|
||||||
|
// This typically happens when extended thinking is enabled with a large context.
|
||||||
|
// Without this fix, auto-compaction is NOT triggered.
|
||||||
|
const samples = [
|
||||||
|
"input length and max_tokens exceed context limit: 156321 + 48384 > 200000, decrease input length or max_tokens and try again",
|
||||||
|
'{"type":"invalid_request_error","message":"input length and max_tokens exceed context limit: 158984 + 48384 > 200000"}',
|
||||||
|
"LLM request rejected: input length and max_tokens exceed context limit",
|
||||||
|
];
|
||||||
|
for (const sample of samples) {
|
||||||
|
expect(isContextOverflowError(sample)).toBe(true);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
it("ignores unrelated errors", () => {
|
it("ignores unrelated errors", () => {
|
||||||
expect(isContextOverflowError("rate limit exceeded")).toBe(false);
|
expect(isContextOverflowError("rate limit exceeded")).toBe(false);
|
||||||
expect(isContextOverflowError("request size exceeds upload limit")).toBe(false);
|
expect(isContextOverflowError("request size exceeds upload limit")).toBe(false);
|
||||||
|
|||||||
@ -21,6 +21,7 @@ export function isContextOverflowError(errorMessage?: string): boolean {
|
|||||||
lower.includes("exceeds model context window") ||
|
lower.includes("exceeds model context window") ||
|
||||||
(hasRequestSizeExceeds && hasContextWindow) ||
|
(hasRequestSizeExceeds && hasContextWindow) ||
|
||||||
lower.includes("context overflow") ||
|
lower.includes("context overflow") ||
|
||||||
|
lower.includes("exceed context limit") || // Anthropic: "input length and max_tokens exceed context limit"
|
||||||
(lower.includes("413") && lower.includes("too large"))
|
(lower.includes("413") && lower.includes("too large"))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user