Use AWS Bedrock to access various foundation models on AWS. Manage your access to models on the portal. See all the AWS Bedrock foundational models. Not all Bedrock models support all features. See the supported features for each model. We recommend experimenting to find the best-suited model for your use-case. Here are some general recommendations:
  • For a Mistral model with generally good performance, look at mistral.mistral-large-2402-v1:0.
  • You can play with Amazon Nova models. Use amazon.nova-pro-v1:0 for general purpose tasks.
  • For Claude models, see our Claude integration.

Authentication

For enhanced flexibility, Agno supports multiple authentication configuration mechanisms, including:
  • Pre-configured boto3 client
  • Custom boto3 sessions
  • Hardcoded environment variables (credentials stored in environment variables)

AwsBedrock class

The AwsBedrock class offers a set of parameters that enable you to interact with the Bedrock Converse API.

Examples

Using Hardcoded environment variables

Set your AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY and AWS_REGION environment variables. Get your keys from here.
export AWS_ACCESS_KEY_ID=***
export AWS_SECRET_ACCESS_KEY=***
export AWS_REGION=***
And then Use AwsBedrock with your Agent:
from agno.agent import Agent
from agno.models.aws import AwsBedrock

agent = Agent(
    model=AwsBedrock(id="mistral.mistral-large-2402-v1:0"),
    markdown=True
)

# Print the response on the terminal
agent.print_response("Share a 2 sentence horror story.")

Using a pre-configured boto3 client or session

To enhance flexibility with boto3 clients, you can instantiate a custom boto3 client configured for the bedrock-runtime API or a boto3 session and pass it to the AwsBedrock class.
from agno.agent import Agent
from agno.models.aws import AwsBedrock
import boto3
from botocore.config import Config

# Create the config with 4 retries (5 max_attempts = 1 initial + 4 retries)
my_config = Config(
    retries={
        'max_attempts': 5,
        'mode': 'standard'
    }
)

boto3_client = boto3.client('bedrock-runtime', config=my_config)

agent = Agent(
    model=AwsBedrock(
        id="anthropic.claude-3-5-sonnet-20240620-v1:0", 
        client=boto3_client
    ),
    markdown=True
)

# Print the response on the terminal
agent.print_response("Share a 2 sentence horror story.")

Passing additional parameters to the Bedrock API

By default, Agno allows you to configure the inferenceConfig parameter when using the bedrock-runtime API. To further customize your requests, you can include additional parameters - such as guardrailConfig, performanceConfig, and more - by passing them through the request_params field in the AwsBedrock class.
from agno.agent import Agent
from agno.models.aws import AwsBedrock

request_params = {
    "performanceConfig": {
        "latency": "optimized"
    }
}

agent = Agent(
    model=AwsBedrock(
        id="us.anthropic.claude-3-7-sonnet-20250219-v1:0", 
        request_params=request_params
    ),
    markdown=True
)

# Print the response on the terminal
agent.print_response("Share a 2 sentence horror story.")
View more examples here.

Parameters

ParameterTypeDefaultDescription
idstr"mistral.mistral-large-2402-v1:0"The specific model ID used for generating responses.
namestr"AwsBedrock"The name identifier for the AWS Bedrock agent.
providerstr"AwsBedrock"The provider of the model.
max_tokensint4096The maximum number of tokens to generate in the response.
temperatureOptional[float]"None"The sampling temperature to use, between 0 and 2. Higher values like 0.8 make the output more random, while lower values like 0.2 make it more focused and deterministic.
top_pOptional[float]"None"The nucleus sampling parameter. The model considers the results of the tokens with top_p probability mass.
stop_sequencesOptional[List[str]]"None"A list of sequences where the API will stop generating further tokens.
request_paramsOptional[Dict[str, Any]]"None"Additional parameters for the request, provided as a dictionary.
client_paramsOptional[Dict[str, Any]]"None"Additional client parameters for initializing the AwsBedrock client, provided as a dictionary.
AwsBedrock is a subclass of the Model class and has access to the same params.