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.
This commit is contained in:
Jonathan Wrede 2026-05-10 18:18:29 +00:00
parent b6a5c19ed9
commit dcba26c8aa
2 changed files with 24 additions and 10 deletions

View file

@ -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))

View file

@ -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