From dcba26c8aa99fdf02e7b146318340a9d5d789c58 Mon Sep 17 00:00:00 2001 From: Jonathan Wrede Date: Sun, 10 May 2026 18:18:29 +0000 Subject: [PATCH] handle OpenAI list format for context_management beta detection The direct Anthropic path supports context_management as either a dict with an "edits" key or a plain list of edit objects. Mirror that logic in get_anthropic_beta_list so Bedrock/Vertex paths also inject the correct beta headers when the OpenAI list format is used. --- litellm/llms/anthropic/common_utils.py | 22 ++++++++++--------- .../anthropic/test_anthropic_common_utils.py | 12 ++++++++++ 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/litellm/llms/anthropic/common_utils.py b/litellm/llms/anthropic/common_utils.py index 944b43123d7..0803b76ea52 100644 --- a/litellm/llms/anthropic/common_utils.py +++ b/litellm/llms/anthropic/common_utils.py @@ -420,17 +420,19 @@ class AnthropicModelInfo(BaseLLMModelInfo): if optional_params: context_management = optional_params.get("context_management") + edits: list = [] if isinstance(context_management, dict) and "edits" in context_management: - for edit in context_management.get("edits", []): - edit_type = edit.get("type", "") - if edit_type in ("compact_20260112", "compaction"): - betas.append( - ANTHROPIC_BETA_HEADER_VALUES.COMPACT_2026_01_12.value - ) - else: - betas.append( - ANTHROPIC_BETA_HEADER_VALUES.CONTEXT_MANAGEMENT_2025_06_27.value - ) + edits = context_management.get("edits", []) + elif isinstance(context_management, list): + edits = context_management + for edit in edits: + edit_type = edit.get("type", "") + if edit_type in ("compact_20260112", "compaction"): + betas.append(ANTHROPIC_BETA_HEADER_VALUES.COMPACT_2026_01_12.value) + else: + betas.append( + ANTHROPIC_BETA_HEADER_VALUES.CONTEXT_MANAGEMENT_2025_06_27.value + ) return list(set(betas)) diff --git a/tests/test_litellm/llms/anthropic/test_anthropic_common_utils.py b/tests/test_litellm/llms/anthropic/test_anthropic_common_utils.py index edf49b0b0b8..d9c1f13afa0 100644 --- a/tests/test_litellm/llms/anthropic/test_anthropic_common_utils.py +++ b/tests/test_litellm/llms/anthropic/test_anthropic_common_utils.py @@ -1318,6 +1318,18 @@ class TestGetAnthropicBetaListContextManagement: ) assert "context-management-2025-06-27" in betas + def test_openai_list_format_adds_compact_beta(self): + from litellm.llms.anthropic.common_utils import AnthropicModelInfo + + info = AnthropicModelInfo() + betas = info.get_anthropic_beta_list( + model="claude-sonnet-4-6", + optional_params={ + "context_management": [{"type": "compaction"}], + }, + ) + assert "compact-2026-01-12" in betas + def test_no_context_management_no_extra_betas(self): from litellm.llms.anthropic.common_utils import AnthropicModelInfo