test(translation): recapture azure ai claude bases after usage speed field (#47117)

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
devin-ai-integration[bot] 2026-10-17 09:30:34 -07:00 • committed by GitHub
parent b578dcf278
commit 0c3087eb20
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 119 additions and 47 deletions

View file

@ -43,7 +43,7 @@ CLAUDE_HAIKU_4_5_TEST_CASE: Final = TranslationTestCase(
},
mock_provider_response={
"model": "claude-haiku-4-5-20251001",
"id": "msg_011Cfjax6mBrNVhFGQopmVCp",
"id": "msg_011Cg7uyAiPY51HN4rSYzQW5",
"type": "message",
"role": "assistant",
"content": [{"type": "text", "text": "Hello."}],
@ -59,6 +59,7 @@ CLAUDE_HAIKU_4_5_TEST_CASE: Final = TranslationTestCase(
"output_tokens": 5,
"service_tier": "standard",
"inference_geo": "not_available",
"speed": "standard",
},
"diagnostics": None,
},
@ -94,6 +95,7 @@ CLAUDE_HAIKU_4_5_TEST_CASE: Final = TranslationTestCase(
"cache_read_input_tokens": 0,
"inference_geo": "not_available",
"service_tier": "standard",
"speed": "standard",
},
},
)
@ -144,6 +146,7 @@ CLAUDE_FABLE_5_TEST_CASE: Final = TranslationTestCase(
"output_tokens_details": {"thinking_tokens": 0},
"service_tier": "standard",
"inference_geo": "not_available",
"speed": "standard",
},
"diagnostics": None,
},
@ -193,6 +196,7 @@ CLAUDE_FABLE_5_TEST_CASE: Final = TranslationTestCase(
"cache_read_input_tokens": 0,
"inference_geo": "not_available",
"service_tier": "standard",
"speed": "standard",
},
},
)
@ -224,10 +228,10 @@ CLAUDE_SONNET_4_6_TEST_CASE: Final = TranslationTestCase(
},
mock_provider_response={
"model": "claude-sonnet-4-6",
"id": "msg_011CfjaxGKedCbjtb7HuAUBC",
"id": "msg_011Cg7uzQ1rtYRwCd9aeTyoF",
"type": "message",
"role": "assistant",
"content": [{"type": "text", "text": "Hello!"}],
"content": [{"type": "text", "text": "Hello! How can I help you?"}],
"container": None,
"stop_reason": "end_turn",
"stop_sequence": None,
@ -237,9 +241,10 @@ CLAUDE_SONNET_4_6_TEST_CASE: Final = TranslationTestCase(
"cache_creation_input_tokens": 0,
"cache_read_input_tokens": 0,
"cache_creation": {"ephemeral_5m_input_tokens": 0, "ephemeral_1h_input_tokens": 0},
"output_tokens": 5,
"output_tokens": 11,
"service_tier": "standard",
"inference_geo": "not_available",
"speed": "standard",
},
"diagnostics": None,
},
@ -253,17 +258,17 @@ CLAUDE_SONNET_4_6_TEST_CASE: Final = TranslationTestCase(
"finish_reason": "stop",
"index": 0,
"message": {
"content": "Hello!",
"content": "Hello! How can I help you?",
"role": "assistant",
"provider_specific_fields": {"citations": None, "thinking_blocks": None},
},
}
],
"usage": {
"completion_tokens": 5,
"completion_tokens": 11,
"prompt_tokens": 18,
"total_tokens": 23,
"completion_tokens_details": {"reasoning_tokens": 0, "text_tokens": 5},
"total_tokens": 29,
"completion_tokens_details": {"reasoning_tokens": 0, "text_tokens": 11},
"prompt_tokens_details": {
"cached_tokens": 0,
"text_tokens": 18,
@ -275,6 +280,7 @@ CLAUDE_SONNET_4_6_TEST_CASE: Final = TranslationTestCase(
"cache_read_input_tokens": 0,
"inference_geo": "not_available",
"service_tier": "standard",
"speed": "standard",
},
},
)
@ -389,7 +395,7 @@ CLAUDE_OPUS_4_8_TEST_CASE: Final = TranslationTestCase(
},
mock_provider_response={
"model": "claude-opus-4-8",
"id": "msg_011CfjaxUiYCUsqMC4iqfc2U",
"id": "msg_011Cg7uyf9RNvQWkpJobt6JU",
"type": "message",
"role": "assistant",
"content": [{"type": "text", "text": "Hello."}],
@ -406,6 +412,7 @@ CLAUDE_OPUS_4_8_TEST_CASE: Final = TranslationTestCase(
"output_tokens_details": {"thinking_tokens": 0},
"service_tier": "standard",
"inference_geo": "global",
"speed": "standard",
},
"diagnostics": None,
},
@ -441,6 +448,7 @@ CLAUDE_OPUS_4_8_TEST_CASE: Final = TranslationTestCase(
"cache_read_input_tokens": 0,
"inference_geo": "global",
"service_tier": "standard",
"speed": "standard",
},
},
)
@ -674,6 +682,7 @@ CLAUDE_HAIKU_5_5_TEST_CASE: Final = TranslationTestCase(
"output_tokens_details": {"thinking_tokens": 167},
"service_tier": "standard",
"inference_geo": "global",
"speed": "standard",
},
},
expected_litellm_response={
@ -697,7 +706,7 @@ CLAUDE_HAIKU_5_5_TEST_CASE: Final = TranslationTestCase(
},
"id": "toolu_01M68cqREYA4WqXBUK8rqcEq",
"type": "function",
},
}
],
"reasoning_content": "I need to read shop/validation.py next, keeping in mind edge cases like zero, "
"negative, or non-integer quantities since the validation logic likely handles those. "
@ -709,7 +718,7 @@ CLAUDE_HAIKU_5_5_TEST_CASE: Final = TranslationTestCase(
"negative, or non-integer quantities since the validation logic likely handles those. "
"I'll look at the function starting around line 18 to understand its scope.\n\n",
"signature": CLAUDE_HAIKU_5_5_THINKING_SIGNATURE_0,
},
}
],
"provider_specific_fields": {
"citations": None,
@ -720,11 +729,11 @@ CLAUDE_HAIKU_5_5_TEST_CASE: Final = TranslationTestCase(
"negative, or non-integer quantities since the validation logic likely handles those. "
"I'll look at the function starting around line 18 to understand its scope.\n\n",
"signature": CLAUDE_HAIKU_5_5_THINKING_SIGNATURE_0,
},
}
],
},
},
},
}
],
"usage": {
"completion_tokens": 324,
@ -742,6 +751,7 @@ CLAUDE_HAIKU_5_5_TEST_CASE: Final = TranslationTestCase(
"cache_read_input_tokens": 0,
"inference_geo": "global",
"service_tier": "standard",
"speed": "standard",
},
},
)
@ -763,10 +773,7 @@ CLAUDE_FABLE_5_1_TEST_CASE: Final = TranslationTestCase(
"model": "claude-fable-5-1",
"id": "msg_011Cg37NcfzdXibtC3dWhVWi",
"content": [
{
"type": "text",
"text": "I'll read the validation code and the test together since they are independent.",
},
{"type": "text", "text": "I'll read the validation code and the test together since they are independent."},
{
"type": "tool_use",
"id": "toolu_01LxkeKf9WX9BVpiWrvfKUyc",
@ -791,6 +798,7 @@ CLAUDE_FABLE_5_1_TEST_CASE: Final = TranslationTestCase(
"output_tokens_details": {"thinking_tokens": 0},
"service_tier": "standard",
"inference_geo": "not_available",
"speed": "standard",
},
},
expected_litellm_response={
@ -827,7 +835,7 @@ CLAUDE_FABLE_5_1_TEST_CASE: Final = TranslationTestCase(
],
"provider_specific_fields": {"citations": None, "thinking_blocks": None},
},
},
}
],
"usage": {
"completion_tokens": 216,
@ -845,6 +853,7 @@ CLAUDE_FABLE_5_1_TEST_CASE: Final = TranslationTestCase(
"cache_read_input_tokens": 0,
"inference_geo": "not_available",
"service_tier": "standard",
"speed": "standard",
},
},
)

View file

@ -2,10 +2,7 @@ from dataclasses import replace
from typing import Final
from integration._support.client import list_value, object_value
from integration.translation.case import (
SSEFrame,
StreamingTranslationTestCase,
)
from integration.translation.case import SSEFrame, StreamingTranslationTestCase
from integration.translation.chat_completions.cross_model.contracts import followup_request
from integration.translation.chat_completions.bases.azure_ai import (
CLAUDE_FABLE_5_1_TEST_CASE,
@ -18,9 +15,41 @@ from integration.translation.chat_completions.templates import (
coding_agent_stream_message,
CODING_AGENT_RESPONSE,
)
from integration.translation.templates.anthropic import (
ANTHROPIC_AGENT_REQUEST,
ANTHROPIC_AGENT_RESPONSE,
from integration.translation.templates.anthropic import ANTHROPIC_AGENT_REQUEST, ANTHROPIC_AGENT_RESPONSE
CLAUDE_FABLE_5_CROSS_MODEL_TEST_CASE: Final = replace(
CLAUDE_FABLE_5_TEST_CASE,
mock_provider_response={
**CLAUDE_FABLE_5_TEST_CASE.mock_provider_response,
"usage": {
**object_value(ANTHROPIC_AGENT_RESPONSE["usage"]),
"input_tokens": 1184,
"output_tokens": 105,
"output_tokens_details": {"thinking_tokens": 0},
"service_tier": "standard",
"inference_geo": "not_available",
},
},
expected_litellm_response={
**CLAUDE_FABLE_5_TEST_CASE.expected_litellm_response,
"usage": {
"completion_tokens": 105,
"prompt_tokens": 1184,
"total_tokens": 1289,
"completion_tokens_details": {"reasoning_tokens": 0, "text_tokens": 105},
"prompt_tokens_details": {
"cached_tokens": 0,
"text_tokens": 1184,
"cache_write_tokens": 0,
"cache_creation_tokens": 0,
"cache_creation_token_details": {"ephemeral_5m_input_tokens": 0, "ephemeral_1h_input_tokens": 0},
},
"cache_creation_input_tokens": 0,
"cache_read_input_tokens": 0,
"inference_geo": "not_available",
"service_tier": "standard",
},
},
)
CLAUDE_FABLE_5_1_AGENT_TEST_CASE: Final = replace(
@ -349,7 +378,7 @@ CLAUDE_FABLE_5_1_AGENT_STREAMING_TEST_CASE: Final = StreamingTranslationTestCase
SSEFrame(data={"type": "message_stop"}, event="message_stop"),
),
expected_litellm_message=coding_agent_stream_message(
("toolu_01PfMSQLj6cQzebc2vGbdsV8", "toolu_01SVc4RwmEaMiDK33hUEbTZW"),
("toolu_01PfMSQLj6cQzebc2vGbdsV8", "toolu_01SVc4RwmEaMiDK33hUEbTZW")
),
expected_litellm_usage={
"prompt_tokens": 1184,
@ -593,7 +622,7 @@ CLAUDE_FABLE_5_AGENT_STREAMING_TEST_CASE: Final = StreamingTranslationTestCase(
SSEFrame(data={"type": "message_stop"}, event="message_stop"),
),
expected_litellm_message=coding_agent_stream_message(
("toolu_01DprHn2GeJDAWFEyTqBzy2Z", "toolu_016kava9hqtKw71W4vBEedfW"),
("toolu_01DprHn2GeJDAWFEyTqBzy2Z", "toolu_016kava9hqtKw71W4vBEedfW")
),
expected_litellm_usage={
"prompt_tokens": 1184,

View file

@ -196,7 +196,7 @@ HIGH: Final[tuple[AgentCases, ...]] = (
azure_ai.CLAUDE_FABLE_5_1_AGENT_STREAMING_TEST_CASE,
),
(
azure_ai.CLAUDE_FABLE_5_TEST_CASE,
azure_ai.CLAUDE_FABLE_5_CROSS_MODEL_TEST_CASE,
azure_ai.CLAUDE_FABLE_5_AGENT_FOLLOWUP_TEST_CASE,
azure_ai.CLAUDE_FABLE_5_AGENT_STREAMING_TEST_CASE,
),

View file

@ -1,6 +1,7 @@
from collections.abc import Mapping
from typing import Final
from integration._support.client import object_value
from integration.translation.case import TranslationTestCase
from integration.translation.messages.templates import MESSAGES_REQUEST, MESSAGES_RESPONSE
from integration.translation.templates.anthropic import ANTHROPIC_MESSAGES_REQUEST, ANTHROPIC_MESSAGES_RESPONSE
@ -31,10 +32,10 @@ CLAUDE_HAIKU_4_5_TEST_CASE: Final = TranslationTestCase(
},
mock_provider_response={
"model": "claude-haiku-4-5-20251001",
"id": "msg_011Cfjax2zxeHkddgerkEGRY",
"id": "msg_011Cg7vB62SdiZVj3M7xJXpr",
"type": "message",
"role": "assistant",
"content": [{"type": "text", "text": "Hello."}],
"content": [{"type": "text", "text": "Hello!"}],
"container": None,
"stop_reason": "end_turn",
"stop_sequence": None,
@ -47,15 +48,16 @@ CLAUDE_HAIKU_4_5_TEST_CASE: Final = TranslationTestCase(
"output_tokens": 5,
"service_tier": "standard",
"inference_geo": "not_available",
"speed": "standard",
},
"diagnostics": None,
},
expected_litellm_response={
"model": "azure_ai/claude-haiku-4-5",
"id": "msg_011Cfjax2zxeHkddgerkEGRY",
"id": "msg_011Cg7vB62SdiZVj3M7xJXpr",
"type": "message",
"role": "assistant",
"content": [{"type": "text", "text": "Hello."}],
"content": [{"type": "text", "text": "Hello!"}],
"container": None,
"stop_reason": "end_turn",
"stop_sequence": None,
@ -68,6 +70,7 @@ CLAUDE_HAIKU_4_5_TEST_CASE: Final = TranslationTestCase(
"output_tokens": 5,
"service_tier": "standard",
"inference_geo": "not_available",
"speed": "standard",
},
"diagnostics": None,
},
@ -98,7 +101,7 @@ CLAUDE_SONNET_4_6_TEST_CASE: Final = TranslationTestCase(
},
mock_provider_response={
"model": "claude-sonnet-4-6",
"id": "msg_011CfjaxAknNm3ZLkVxQRj8M",
"id": "msg_011Cg7vCCFGaPEhwGwoS6VPy",
"type": "message",
"role": "assistant",
"content": [{"type": "text", "text": "Hello!"}],
@ -114,12 +117,13 @@ CLAUDE_SONNET_4_6_TEST_CASE: Final = TranslationTestCase(
"output_tokens": 5,
"service_tier": "standard",
"inference_geo": "not_available",
"speed": "standard",
},
"diagnostics": None,
},
expected_litellm_response={
"model": "azure_ai/claude-sonnet-4-6",
"id": "msg_011CfjaxAknNm3ZLkVxQRj8M",
"id": "msg_011Cg7vCCFGaPEhwGwoS6VPy",
"type": "message",
"role": "assistant",
"content": [{"type": "text", "text": "Hello!"}],
@ -135,6 +139,7 @@ CLAUDE_SONNET_4_6_TEST_CASE: Final = TranslationTestCase(
"output_tokens": 5,
"service_tier": "standard",
"inference_geo": "not_available",
"speed": "standard",
},
"diagnostics": None,
},
@ -234,7 +239,7 @@ CLAUDE_OPUS_4_8_TEST_CASE: Final = TranslationTestCase(
},
mock_provider_response={
"model": "claude-opus-4-8",
"id": "msg_011CfjaxPE8FBKSJ9KbtQzDE",
"id": "msg_011Cg7vBVpRK6kd1kkYXJXyb",
"type": "message",
"role": "assistant",
"content": [{"type": "text", "text": "Hello."}],
@ -251,12 +256,13 @@ CLAUDE_OPUS_4_8_TEST_CASE: Final = TranslationTestCase(
"output_tokens_details": {"thinking_tokens": 0},
"service_tier": "standard",
"inference_geo": "global",
"speed": "standard",
},
"diagnostics": None,
},
expected_litellm_response={
"model": "azure_ai/claude-opus-4-8",
"id": "msg_011CfjaxPE8FBKSJ9KbtQzDE",
"id": "msg_011Cg7vBVpRK6kd1kkYXJXyb",
"type": "message",
"role": "assistant",
"content": [{"type": "text", "text": "Hello."}],
@ -273,6 +279,7 @@ CLAUDE_OPUS_4_8_TEST_CASE: Final = TranslationTestCase(
"output_tokens_details": {"thinking_tokens": 0},
"service_tier": "standard",
"inference_geo": "global",
"speed": "standard",
},
"diagnostics": None,
},
@ -483,11 +490,13 @@ CLAUDE_HAIKU_5_5_TEST_CASE: Final = TranslationTestCase(
**ANTHROPIC_MESSAGES_RESPONSE,
**CLAUDE_HAIKU_5_5_RESPONSE_FIELDS,
"model": "claude-haiku-5-5",
"usage": {**object_value(CLAUDE_HAIKU_5_5_RESPONSE_FIELDS["usage"]), "speed": "standard"},
},
expected_litellm_response={
**MESSAGES_RESPONSE,
**CLAUDE_HAIKU_5_5_RESPONSE_FIELDS,
"model": "azure_ai/claude-haiku-5-5",
"usage": {**object_value(CLAUDE_HAIKU_5_5_RESPONSE_FIELDS["usage"]), "speed": "standard"},
},
)
@ -541,10 +550,12 @@ CLAUDE_FABLE_5_1_TEST_CASE: Final = TranslationTestCase(
**ANTHROPIC_MESSAGES_RESPONSE,
**CLAUDE_FABLE_5_1_RESPONSE_FIELDS,
"model": "claude-fable-5-1",
"usage": {**object_value(CLAUDE_FABLE_5_1_RESPONSE_FIELDS["usage"]), "speed": "standard"},
},
expected_litellm_response={
**MESSAGES_RESPONSE,
**CLAUDE_FABLE_5_1_RESPONSE_FIELDS,
"model": "azure_ai/claude-fable-5-1",
"usage": {**object_value(CLAUDE_FABLE_5_1_RESPONSE_FIELDS["usage"]), "speed": "standard"},
},
)

View file

@ -8,6 +8,19 @@ from integration.translation.case import TranslationTestCase
from integration.translation.messages.bases.azure_ai import CLAUDE_SONNET_4_6_TEST_CASE
from integration.translation.runner import assert_translation
CLAUDE_SONNET_4_6_SERVICE_TIER_RESPONSE_FIELDS: Final = {
"content": [{"type": "text", "text": "Hello!"}],
"usage": {
"input_tokens": 18,
"cache_creation_input_tokens": 0,
"cache_read_input_tokens": 0,
"cache_creation": {"ephemeral_5m_input_tokens": 0, "ephemeral_1h_input_tokens": 0},
"output_tokens": 5,
"service_tier": "standard",
"inference_geo": "not_available",
},
}
CLAUDE_SONNET_4_6_SERVICE_TIER_TEST_CASE: Final = replace(
CLAUDE_SONNET_4_6_TEST_CASE,
scenario="service_tier",
@ -16,9 +29,14 @@ CLAUDE_SONNET_4_6_SERVICE_TIER_TEST_CASE: Final = replace(
**CLAUDE_SONNET_4_6_TEST_CASE.expected_provider_request,
"service_tier": "standard_only",
},
mock_provider_response={**CLAUDE_SONNET_4_6_TEST_CASE.mock_provider_response, "id": "msg_011Cg1SnrstCdzZPwmTk2qQa"},
mock_provider_response={
**CLAUDE_SONNET_4_6_TEST_CASE.mock_provider_response,
**CLAUDE_SONNET_4_6_SERVICE_TIER_RESPONSE_FIELDS,
"id": "msg_011Cg1SnrstCdzZPwmTk2qQa",
},
expected_litellm_response={
**CLAUDE_SONNET_4_6_TEST_CASE.expected_litellm_response,
**CLAUDE_SONNET_4_6_SERVICE_TIER_RESPONSE_FIELDS,
"id": "msg_011Cg1SnrstCdzZPwmTk2qQa",
},
)

View file

@ -31,7 +31,7 @@ CLAUDE_HAIKU_4_5_TEST_CASE: Final = TranslationTestCase(
},
mock_provider_response={
"model": "claude-haiku-4-5-20251001",
"id": "msg_011Cfjax6mBrNVhFGQopmVCp",
"id": "msg_011Cg7vB393hLWW1Xxq6d6vm",
"type": "message",
"role": "assistant",
"content": [{"type": "text", "text": "Hello."}],
@ -47,6 +47,7 @@ CLAUDE_HAIKU_4_5_TEST_CASE: Final = TranslationTestCase(
"output_tokens": 5,
"service_tier": "standard",
"inference_geo": "not_available",
"speed": "standard",
},
"diagnostics": None,
},
@ -127,7 +128,7 @@ CLAUDE_SONNET_4_6_TEST_CASE: Final = TranslationTestCase(
},
mock_provider_response={
"model": "claude-sonnet-4-6",
"id": "msg_011CfjaxGKedCbjtb7HuAUBC",
"id": "msg_011Cg7vCAx8gxwjwBr2R1kxz",
"type": "message",
"role": "assistant",
"content": [{"type": "text", "text": "Hello!"}],
@ -143,6 +144,7 @@ CLAUDE_SONNET_4_6_TEST_CASE: Final = TranslationTestCase(
"output_tokens": 5,
"service_tier": "standard",
"inference_geo": "not_available",
"speed": "standard",
},
"diagnostics": None,
},
@ -320,7 +322,7 @@ CLAUDE_OPUS_4_8_TEST_CASE: Final = TranslationTestCase(
},
mock_provider_response={
"model": "claude-opus-4-8",
"id": "msg_011CfjaxUiYCUsqMC4iqfc2U",
"id": "msg_011Cg7vBUGeH2HFZFTDxVdBh",
"type": "message",
"role": "assistant",
"content": [{"type": "text", "text": "Hello."}],
@ -337,6 +339,7 @@ CLAUDE_OPUS_4_8_TEST_CASE: Final = TranslationTestCase(
"output_tokens_details": {"thinking_tokens": 0},
"service_tier": "standard",
"inference_geo": "global",
"speed": "standard",
},
"diagnostics": None,
},
@ -620,7 +623,7 @@ CLAUDE_HAIKU_5_5_TEST_CASE: Final = TranslationTestCase(
"suggesting a fix. Explain which file you need next, then call a read-only tool. "
"Never change files. Use the responses client for this project review. Consider zero, "
"negative and non-integer quantities before choosing the next file to inspect.",
},
}
],
},
mock_provider_response={
@ -656,6 +659,7 @@ CLAUDE_HAIKU_5_5_TEST_CASE: Final = TranslationTestCase(
"output_tokens_details": {"thinking_tokens": 73},
"service_tier": "standard",
"inference_geo": "global",
"speed": "standard",
},
},
expected_litellm_response={
@ -673,7 +677,7 @@ CLAUDE_HAIKU_5_5_TEST_CASE: Final = TranslationTestCase(
"text": "I need to look at shop/validation.py to understand its contents, so I'll read "
"through the first chunk of the file.\n\n",
"annotations": [],
},
}
],
"phase": None,
"encrypted_content": json.dumps(
@ -683,7 +687,7 @@ CLAUDE_HAIKU_5_5_TEST_CASE: Final = TranslationTestCase(
"thinking": "I need to look at shop/validation.py to understand its contents, so I'll read "
"through the first chunk of the file.\n\n",
"signature": CLAUDE_HAIKU_5_5_THINKING_SIGNATURE_0,
},
}
],
separators=(",", ":"),
),
@ -699,7 +703,7 @@ CLAUDE_HAIKU_5_5_TEST_CASE: Final = TranslationTestCase(
"text": "I'll read `shop/validation.py`, starting with the `validate_quantity` function found "
"in the search.",
"annotations": [],
},
}
],
"phase": None,
},
@ -737,7 +741,7 @@ CLAUDE_HAIKU_5_5_TEST_CASE: Final = TranslationTestCase(
"thinking": "I need to look at shop/validation.py to understand its contents, so I'll read "
"through the first chunk of the file.\n\n",
"signature": CLAUDE_HAIKU_5_5_THINKING_SIGNATURE_0,
},
}
],
},
},
@ -764,7 +768,7 @@ CLAUDE_FABLE_5_1_TEST_CASE: Final = TranslationTestCase(
"suggesting a fix. Explain which file you need next, then call a read-only tool. "
"Never change files. Use the responses client for this project review. Consider zero, "
"negative and non-integer quantities before choosing the next file to inspect.",
},
}
],
},
mock_provider_response={
@ -801,6 +805,7 @@ CLAUDE_FABLE_5_1_TEST_CASE: Final = TranslationTestCase(
"output_tokens_details": {"thinking_tokens": 0},
"service_tier": "standard",
"inference_geo": "not_available",
"speed": "standard",
},
},
expected_litellm_response={
@ -818,7 +823,7 @@ CLAUDE_FABLE_5_1_TEST_CASE: Final = TranslationTestCase(
"text": "I'll read the validation function; reading the test file at the same time is "
"independent of it, so I'll fetch both now.",
"annotations": [],
},
}
],
"phase": None,
},