amazon-bedrock/models (Amazon Bedrock Examples)
You can run this example with:
npx promptfoo@latest init --example amazon-bedrock/models
cd amazon-bedrock/models
Prerequisites
-
Set up your AWS credentials:
export AWS_ACCESS_KEY_ID="your_access_key" export AWS_SECRET_ACCESS_KEY="your_secret_key"See authentication docs for other auth methods, including SSO profiles.
-
Request model access in your AWS region:
- Visit the AWS Bedrock Model Access page
- Switch to your desired region. We recommend us-west-2 and us-east-1 which tend to have the most models available.
- Enable the models you want to use.
-
Install required dependencies:
# For basic Bedrock models npm install @aws-sdk/client-bedrock-runtime # For Knowledge Base examples npm install @aws-sdk/client-bedrock-agent-runtime
Available Examples
This directory contains several example configurations for different Bedrock models:
promptfooconfig.claude.yaml- Claude 4.6 Opus, Claude 4.1 Opus, Claude 4 Opus/Sonnet, Claude Haiku 4.5promptfooconfig.openai.yaml- OpenAI GPT-OSS models (120B and 20B) with reasoning effortpromptfooconfig.openai-frontier.yaml- OpenAI frontier models (GPT-5.5 and GPT-5.4) with native reasoning effortpromptfooconfig.grok.yaml- xAI Grok 4.3 on the Bedrock Mantle endpoint (requiresAWS_BEARER_TOKEN_BEDROCK)promptfooconfig.mantle.yaml-bedrock:mantle:Chat Completions endpoint for mantle-only models like GLM 4.6 and DeepSeek V3.1 (requiresAWS_BEARER_TOKEN_BEDROCK)promptfooconfig.llama.yaml- Llama3promptfooconfig.mistral.yaml- Mistralpromptfooconfig.openai-compatible.yaml- OpenAI-compatible families: Z.AI GLM, MiniMax, Moonshot Kimi, NVIDIA Nemotron, Google Gemma, Writer Palmyrapromptfooconfig.nova.yaml- Amazon's Nova modelspromptfooconfig.nova.tool.yaml- Nova with tool usage examplespromptfooconfig.nova.multimodal.yaml- Nova with multimodal capabilitiespromptfooconfig.kb.yaml- Knowledge Base RAG example with citations and contextTransformpromptfooconfig.inference-profiles.yaml- Comprehensive Application Inference Profiles example with multiple model typespromptfooconfig.inference-profiles-simple.yaml- Simple production-ready inference profile setup for high availabilitypromptfooconfig.yaml- Combined evaluation across multiple providerspromptfooconfig.nova-sonic.yaml- Amazon Nova Sonic model for audiopromptfooconfig.converse.yaml- Converse API with extended thinking (ultrathink)promptfooconfig.converse-mcp.yaml- Converse API with Model Context Protocol (MCP) tools
Converse API Example
The Converse API example (promptfooconfig.converse.yaml) demonstrates the unified Bedrock Converse API with extended thinking (ultrathink) support.
Key Features
- Extended Thinking: Enable Claude's reasoning capabilities with configurable token budgets
- Unified Interface: Single API format works across Claude, Nova, Llama, Mistral, and more
- Show/Hide Thinking: Control whether thinking content appears in output with
showThinking
Configuration
providers:
- id: bedrock:converse:us.anthropic.claude-sonnet-4-6
label: Claude Sonnet 4.6 with Thinking
config:
region: us-west-2
maxTokens: 20000
thinking:
type: enabled
budget_tokens: 16000
showThinking: true
Run the Converse API example with:
promptfoo eval -c examples/amazon-bedrock/models/promptfooconfig.converse.yaml
Converse MCP Example
The Converse MCP example (promptfooconfig.converse-mcp.yaml) demonstrates how to attach Model Context Protocol (MCP) servers to a Bedrock Converse provider. MCP tools are discovered from the configured server, converted to Bedrock Converse tool definitions, and executed when the model requests a tool call.
Configuration
providers:
- id: bedrock:converse:us.anthropic.claude-sonnet-4-6
label: Claude Sonnet 4.6 with MCP
config:
region: us-east-1
maxTokens: 1024
temperature: 0
mcp:
enabled: true
servers:
- name: deepwiki
url: https://mcp.deepwiki.com/mcp
tools:
- ask_question
toolChoice: auto
Run the Converse MCP example with:
promptfoo eval -c examples/amazon-bedrock/models/promptfooconfig.converse-mcp.yaml
Replace the servers entry with a local command/args, path, or another remote url to use your own MCP server.
Note: When the model emits
tool_use, the provider executes the requested MCP tool and returns the raw tool result as the eval output. There is no follow-up Converse turn that feeds the tool result back to the model for a synthesized answer, so the assertions in this example match substrings present in the MCP server's response. If you need a model-summarized answer, wrap the provider in an agent harness or run a second eval over the captured tool output.
Knowledge Base Example
The Knowledge Base example (promptfooconfig.kb.yaml) demonstrates how to use AWS Bedrock Knowledge Base for Retrieval Augmented Generation (RAG).
Knowledge Base Setup
For this example, you'll need to:
- Create a Knowledge Base in AWS Bedrock
- Configure it to crawl or ingest content (the example assumes promptfoo documentation content)
- Use the Amazon Titan Embeddings model for vector embeddings
- Update the config with your Knowledge Base ID:
providers:
- id: bedrock:kb:us.anthropic.claude-sonnet-4-6
config:
region: 'us-east-2' # Change to your region
knowledgeBaseId: 'YOUR_KNOWLEDGE_BASE_ID' # Replace with your KB ID
When running the Knowledge Base example, you'll see:
- Responses from a Knowledge Base-enhanced model with citations
- Responses from a standard model for comparison
- Citations from source documents that show where information was retrieved from
- Example of
contextTransformfeature extracting context from citations for evaluation
The example includes questions about promptfoo configuration, providers, and evaluation techniques that work well with the embedded promptfoo documentation.
Note: You'll need to update the knowledgeBaseId with your actual Knowledge Base ID and ensure the Knowledge Base is configured to work with the selected Claude model.
For detailed Knowledge Base setup instructions, see the AWS Bedrock Knowledge Base Documentation.
Application Inference Profiles Example
The Application Inference Profiles example (promptfooconfig.inference-profiles.yaml) demonstrates how to use AWS Bedrock's inference profiles for multi-region failover and cost optimization.
Key Benefits of Inference Profiles
- Automatic Failover: If one region is unavailable, requests automatically route to another region
- Cost Optimization: Routes to the most cost-effective available model
- Simplified Management: Use a single ARN instead of managing multiple model IDs
- Cross-Region Availability: Access models across multiple regions with a single profile
Configuration Requirements
When using inference profiles, you must specify the inferenceModelType parameter:
providers:
- id: bedrock:arn:aws:bedrock:us-east-1:123456789012:application-inference-profile/my-profile
config:
inferenceModelType: 'claude' # Required!
region: 'us-east-1'
max_tokens: 1024
Supported Model Types
claude- Anthropic Claude modelsnova- Amazon Nova modelsllama- Defaults to Llama 4llama2,llama3,llama3.1,llama3.2,llama3.3,llama4- Specific Llama versionsmistral- Mistral modelscohere- Cohere modelsai21- AI21 modelstitan- Amazon Titan modelsdeepseek- DeepSeek models (with thinking capability)openai- OpenAI GPT-OSS modelszai- Z.AI GLM modelsminimax- MiniMax modelsmoonshot- Moonshot Kimi modelsnvidia- NVIDIA Nemotron modelswriter- Writer Palmyra modelsgemma- Google Gemma models
Running the Examples
We provide two inference profile examples:
-
Comprehensive Example (
promptfooconfig.inference-profiles.yaml):promptfoo eval -c examples/amazon-bedrock/models/promptfooconfig.inference-profiles.yamlThis includes:
- Multiple inference profiles for different model families
- Comparison with direct model IDs
- Use of inference profiles for grading assertions
- Various model-specific configurations
-
Simple Production Example (
promptfooconfig.inference-profiles-simple.yaml):promptfoo eval -c examples/amazon-bedrock/models/promptfooconfig.inference-profiles-simple.yamlThis demonstrates:
- A realistic customer support use case
- High availability setup with failover
- Comparison between inference profile and direct model access
- Consistent grading using inference profiles
Note: Replace the example ARNs with your actual application inference profile ARNs. To create an inference profile, visit the AWS Bedrock console and navigate to the "Application inference profiles" section.
OpenAI Models Example
The OpenAI example (promptfooconfig.openai.yaml) demonstrates OpenAI's GPT-OSS models available through AWS Bedrock:
- openai.gpt-oss-120b-1:0 - 120 billion parameter model with strong reasoning capabilities
- openai.gpt-oss-20b-1:0 - 20 billion parameter model, more cost-effective
Key Features
- Reasoning Effort: Control reasoning depth with
low,medium, orhighsettings - OpenAI API Format: Uses familiar OpenAI parameters like
max_completion_tokens - Available in us-west-2: Ensure you have model access in the correct region
Run the OpenAI example with:
promptfoo eval -c examples/amazon-bedrock/models/promptfooconfig.openai.yaml
OpenAI Frontier Models Example
The frontier example (promptfooconfig.openai-frontier.yaml) demonstrates OpenAI's GPT-5.x frontier models on Bedrock:
- openai.gpt-5.5 - Flagship frontier reasoning model (available in
us-east-2) - openai.gpt-5.4 - Frontier reasoning model (available in
us-east-2andus-west-2)
Key Features
-
Responses API: Frontier models are served through Bedrock's OpenAI-compatible Responses API (the mantle endpoint), not
InvokeModel. promptfoo routesbedrock:openai.gpt-5.xthere automatically, so output matches theopenai:responsesprovider. -
Bedrock API key auth: Unlike the gpt-oss models (AWS SDK credentials), the frontier models authenticate with an Amazon Bedrock API key. Export it first:
export AWS_BEARER_TOKEN_BEDROCK="your_bedrock_api_key" -
Native Reasoning Effort:
reasoning_effortsupportsnone,low,medium,high, andxhigh(minimalis not supported by these Bedrock models). -
Region-gated: Request model access in a supported region before running.
These are the same model IDs that back OpenAI's Codex coding agent when it is configured with the amazon-bedrock provider.
Run the frontier example with:
promptfoo eval -c examples/amazon-bedrock/models/promptfooconfig.openai-frontier.yaml
New Converse API Features (SDK 3.943+)
The Converse API supports additional stop reason handling:
malformed_model_output: Model produced invalid outputmalformed_tool_use: Model produced a malformed tool use request
These are returned as errors in the response with metadata.isModelError: true.
Nova Sonic Configuration
Nova Sonic now supports configurable timeouts:
providers:
- id: bedrock:nova-sonic:amazon.nova-sonic-v1:0
config:
region: us-east-1
sessionTimeout: 300000 # 5 minutes (default)
requestTimeout: 120000 # 2 minutes
Error responses include categorized error types in metadata.errorType:
connection: Network/AWS connectivity issuestimeout: Request or session timeoutapi: Authentication/authorization errorsparsing: Response parsing failuressession: Bidirectional stream session errors
Getting Started
-
Run the evaluation:
promptfoo eval -c [path/to/config.yaml] -
View the results:
promptfoo view