Edit

Amazon Bedrock

Amazon Bedrock provides managed inference for foundation models through AWS. Agent Framework can wrap a Bedrock IChatClient or use the Python BedrockChatClient while keeping the standard agent, session, middleware, and tool APIs.

Important

Amazon Bedrock is a third-party system. Review AWS service terms, data handling, regional availability, model access, and usage costs before sending application data.

Install the packages

dotnet add package AWSSDK.Extensions.Bedrock.MEAI
dotnet add package Microsoft.Agents.AI --prerelease

Configuration

AWS_REGION="us-east-1"
BEDROCK_MODEL_ID="anthropic.claude-3-5-sonnet-20241022-v2:0"

Authentication uses the standard AWS credential chain, including environment variables, shared profiles, workload identity, and IAM roles.

Create the AWS Bedrock runtime client, convert it to IChatClient, and then create an Agent Framework agent.

var awsRegion = Environment.GetEnvironmentVariable("AWS_REGION") ?? "us-east-1";
var modelId = Environment.GetEnvironmentVariable("BEDROCK_MODEL_ID") ?? "anthropic.claude-3-5-sonnet-20241022-v2:0";
// Create the Bedrock runtime client.
var bedrockRuntime = new AmazonBedrockRuntimeClient(RegionEndpoint.GetBySystemName(awsRegion));
IChatClient chatClient = bedrockRuntime.AsIChatClient(modelId);
AIAgent agent = chatClient.AsAIAgent(
    instructions: "You are a helpful assistant.",
    name: "BedrockAgent");

AWS credentials follow the standard AWS credential chain. Grant only the Bedrock model actions the application needs.

Install the package

pip install agent-framework-bedrock --pre

Configuration

BEDROCK_REGION="us-east-1"
BEDROCK_CHAT_MODEL="anthropic.claude-3-5-sonnet-20241022-v2:0"
AWS_ACCESS_KEY_ID="<access-key>"
AWS_SECRET_ACCESS_KEY="<secret-key>"
# Optional temporary credentials:
AWS_SESSION_TOKEN="<session-token>"
# Optional shared profile:
AWS_PROFILE="<profile>"

BedrockChatClient reads the model, region, and AWS credentials from its settings or explicit constructor values.

async def main() -> None:
    """Run a Bedrock-backed agent with one tool call."""
    # 1. Create an agent with Bedrock chat client and one tool.
    agent = Agent(
        client=BedrockChatClient(),
        instructions="You are a concise travel assistant.",
        name="BedrockWeatherAgent",
        tools=[get_weather],
        default_options=BedrockChatOptions(tool_choice="auto"),
    )

    # 2. Run a query that uses the weather tool.
    query = "Use the weather tool to check the forecast for New York."
    print(f"User: {query}")
    response = await agent.run(query)
    print(f"Assistant: {response.text}")

Use BedrockChatOptions for Bedrock-specific request options and BedrockGuardrailConfig when your deployment uses Bedrock guardrails.

Generate embeddings

BedrockEmbeddingClient generates embeddings with Amazon Titan embedding models. Configure BEDROCK_EMBEDDING_MODEL and BEDROCK_REGION, then use the same AWS credential chain as BedrockChatClient.

No runnable Agent Framework embedding sample is currently published for this client.

Note

Amazon Bedrock integration isn't currently available for Agent Framework Go. See the Agent Framework Go repository for the latest status.

Tools

Bedrock supports locally invoked Agent Framework tools but doesn't expose provider-hosted tool factories.

Tool C# Python Notes
Function Tools Model support varies by the selected Bedrock model.
Tool Approval Applied by the Agent Framework function-invocation loop.
Code Interpreter No Bedrock-hosted code interpreter integration.
File Search No Bedrock-hosted file-search integration.
Web Search No Bedrock-hosted web-search integration.
Hosted MCP Tools No Bedrock-hosted MCP integration.
Local MCP Tools Runs in the application process.

Next steps