From db40cddc175e9a5e900292e75a2c3a7d925b736e Mon Sep 17 00:00:00 2001 From: Ryan Crabbe Date: Tue, 28 Apr 2026 22:52:20 -0700 Subject: [PATCH] chore(tests): extend env-var migration to additional Bedrock Anthropic live-call sites MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Migrate 8 additional sonnet-routed live test call sites to read the model path from the existing `BEDROCK_ANTHROPIC_MODEL` / `BEDROCK_ANTHROPIC_INVOKE_MODEL` env vars introduced in e10b14a17d. Future Anthropic-on-Bedrock EOL bumps now take fewer file edits than they did under PR #26721. Sites (4 files): tests/llm_translation/test_bedrock_completion.py 478, 605, 633, 942, 2890 bedrock/ → BEDROCK_ANTHROPIC_MODEL tests/local_testing/test_exceptions.py 474 bedrock/ → BEDROCK_ANTHROPIC_MODEL tests/local_testing/test_streaming.py 1244 bedrock/ → BEDROCK_ANTHROPIC_MODEL tests/pass_through_unit_tests/test_bedrock_tool_use_beta_header.py 27 bedrock/invoke/ → BEDROCK_ANTHROPIC_INVOKE_MODEL Route prefix is preserved at every site (no cross-routing). Deliberately not migrated: - haiku-pinned tests (env vars resolve to sonnet) — see test_bedrock_completion.py haiku sites and tests/local_testing/test_timeout.py:79 - test_bedrock_govcloud.py — uses completion_cost(), pure utility, never hits AWS - test_bedrock_completion.py:2038 (_transform_request), 2526 (decoder), 664 (@pytest.mark.skip) - test_bedrock_completion.py:3145, 3152, 3247, 3300, 3352 — passthrough tests with hardcoded `endpoint=` alongside `model=`; would need a 4th env var or string-derivation - test_bedrock_anthropic_messages_test.py and test_websearch_interception_e2e.py — multi-site router-config refactors; deferred - all tests/test_litellm/* — strict unit / mocked transformation tests; the hardcoded model string never reaches AWS so EOLs don't break them --- tests/llm_translation/test_bedrock_completion.py | 10 +++++----- tests/local_testing/test_exceptions.py | 2 +- tests/local_testing/test_streaming.py | 2 +- .../test_bedrock_tool_use_beta_header.py | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/tests/llm_translation/test_bedrock_completion.py b/tests/llm_translation/test_bedrock_completion.py index 15f950224d2..ae1d52a615d 100644 --- a/tests/llm_translation/test_bedrock_completion.py +++ b/tests/llm_translation/test_bedrock_completion.py @@ -475,7 +475,7 @@ def test_bedrock_claude_3(image_url): ], } response: ModelResponse = completion( - model="bedrock/anthropic.claude-3-sonnet-20240229-v1:0", + model=os.environ["BEDROCK_ANTHROPIC_MODEL"], num_retries=3, **data, ) # type: ignore @@ -602,7 +602,7 @@ def test_bedrock_claude_3_tool_calling(): } ] response: ModelResponse = completion( - model="bedrock/anthropic.claude-3-sonnet-20240229-v1:0", + model=os.environ["BEDROCK_ANTHROPIC_MODEL"], messages=messages, tools=tools, tool_choice="auto", @@ -630,7 +630,7 @@ def test_bedrock_claude_3_tool_calling(): ) # In the second response, Claude should deduce answer from tool results second_response = completion( - model="bedrock/anthropic.claude-3-sonnet-20240229-v1:0", + model=os.environ["BEDROCK_ANTHROPIC_MODEL"], messages=messages, tools=tools, tool_choice="auto", @@ -939,7 +939,7 @@ def test_bedrock_tool_calling(): """ litellm.set_verbose = True response = litellm.completion( - model="bedrock/anthropic.claude-3-sonnet-20240229-v1:0", + model=os.environ["BEDROCK_ANTHROPIC_MODEL"], fallbacks=["bedrock/meta.llama3-1-8b-instruct-v1:0"], messages=[ { @@ -2887,7 +2887,7 @@ async def test_bedrock_stream_thinking_content_openwebui(): ``` """ response = await litellm.acompletion( - model="bedrock/us.anthropic.claude-sonnet-4-5-20250929-v1:0", + model=os.environ["BEDROCK_ANTHROPIC_MODEL"], messages=[{"role": "user", "content": "Hello who is this?"}], stream=True, max_tokens=1080, diff --git a/tests/local_testing/test_exceptions.py b/tests/local_testing/test_exceptions.py index e02d9e21171..2deeb983b08 100644 --- a/tests/local_testing/test_exceptions.py +++ b/tests/local_testing/test_exceptions.py @@ -471,7 +471,7 @@ def test_completion_bedrock_invalid_role_exception(): try: litellm.set_verbose = True response = completion( - model="bedrock/anthropic.claude-3-sonnet-20240229-v1:0", + model=os.environ["BEDROCK_ANTHROPIC_MODEL"], messages=[{"role": "very-bad-role", "content": "hello"}], ) print(f"response: {response}") diff --git a/tests/local_testing/test_streaming.py b/tests/local_testing/test_streaming.py index bc3c34b1a5d..e2edc9284ae 100644 --- a/tests/local_testing/test_streaming.py +++ b/tests/local_testing/test_streaming.py @@ -1241,7 +1241,7 @@ def test_bedrock_claude_3_streaming(): try: litellm.set_verbose = True response: ModelResponse = completion( # type: ignore - model="bedrock/anthropic.claude-3-sonnet-20240229-v1:0", + model=os.environ["BEDROCK_ANTHROPIC_MODEL"], messages=messages, max_tokens=10, # type: ignore stream=True, diff --git a/tests/pass_through_unit_tests/test_bedrock_tool_use_beta_header.py b/tests/pass_through_unit_tests/test_bedrock_tool_use_beta_header.py index ed7f38cba4b..9d58e5c51f3 100644 --- a/tests/pass_through_unit_tests/test_bedrock_tool_use_beta_header.py +++ b/tests/pass_through_unit_tests/test_bedrock_tool_use_beta_header.py @@ -24,7 +24,7 @@ async def test_bedrock_sonnet_4_5_with_advanced_tool_use_beta_header(): """ litellm._turn_on_debug() response = await litellm.anthropic.messages.acreate( - model="bedrock/invoke/us.anthropic.claude-sonnet-4-5-20250929-v1:0", + model=os.environ["BEDROCK_ANTHROPIC_INVOKE_MODEL"], messages=[{"role": "user", "content": "What is 2+2?"}], max_tokens=100, provider_specific_header={