Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions src/strands/models/bedrock.py
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,10 @@ class BedrockConfig(TypedDict, total=False):
model_id: The Bedrock model ID (e.g., "us.anthropic.claude-sonnet-4-20250514-v1:0")
include_tool_result_status: Flag to include status field in tool results.
True includes status, False removes status, "auto" determines based on model_id. Defaults to "auto".
service_tier: Service tier for the request, controlling the trade-off between latency and cost.
Valid values: "default" (standard), "priority" (faster, premium), "flex" (cheaper, slower).
Please check https://docs.aws.amazon.com/bedrock/latest/userguide/service-tiers-inference.html for all
valid tiers.
stop_sequences: List of sequences that will stop generation when encountered
streaming: Flag to enable/disable streaming. Defaults to True.
temperature: Controls randomness in generation (higher = more random)
Expand All @@ -117,6 +121,7 @@ class BedrockConfig(TypedDict, total=False):
max_tokens: int | None
model_id: str
include_tool_result_status: Literal["auto"] | bool | None
service_tier: str | None
stop_sequences: list[str] | None
streaming: bool | None
temperature: float | None
Expand Down Expand Up @@ -243,6 +248,7 @@ def _format_request(
"modelId": self.config["model_id"],
"messages": self._format_bedrock_messages(messages),
"system": system_blocks,
**({"serviceTier": {"type": self.config["service_tier"]}} if self.config.get("service_tier") else {}),
**(
{
"toolConfig": {
Expand Down
14 changes: 14 additions & 0 deletions tests/strands/models/test_bedrock.py
Original file line number Diff line number Diff line change
Expand Up @@ -379,6 +379,20 @@ def test_format_request_guardrail_config_without_trace_or_stream_processing_mode
assert tru_request == exp_request


def test_format_request_with_service_tier(model, messages, model_id):
model.update_config(service_tier="flex")
tru_request = model._format_request(messages)
exp_request = {
"inferenceConfig": {},
"modelId": model_id,
"messages": messages,
"serviceTier": {"type": "flex"},
"system": [],
}

assert tru_request == exp_request


def test_format_request_inference_config(model, messages, model_id, inference_config):
model.update_config(**inference_config)
tru_request = model._format_request(messages)
Expand Down