Prompt Chain

Analyze and Summarize Model Performance

Nineteen promptfoo configs for AWS Bedrock - Claude, Nova, Llama, Converse with thinking/MCP, Knowledge Base RAG, and inference profiles.

Works with githubamazon bedrock

92
Spark score
out of 100
Updated 4 months ago
Version 1.0.0
Models
claudeclaude 3 5 haikuclaude 3 5 sonnetclaude 3 opus

Add to Favorites

Why it matters

This prompt chain helps you analyze and summarize the performance of different AI models. It's designed to extract key information and generate concise summaries, potentially aiding in model selection or evaluation.

Outcomes

What it gets done

01

Fetch model performance data from specified sources.

02

Extract relevant metrics and insights.

03

Summarize findings into a readable format.

04

Generate code snippets based on analysis (if applicable).

Install

Add it to your toolbox

Run in your project directory:

curl -fsSL https://spark.entire.vc/get/pfoo-models | bash

Steps

Steps in the chain

01
Set up AWS credentials
02
Request model access in AWS region
03
Install required dependencies
04
Create a Knowledge Base in AWS Bedrock
05
Configure Knowledge Base with Titan Embeddings
06
Update Knowledge Base config with KB ID
07
Specify inferenceModelType for inference profiles
08
Replace example ARNs with actual inference profile ARNs
09
Export Bedrock API key for frontier models

Overview

Models

This directory provides reference configs for testing AWS Bedrock capabilities - model families, Converse extended thinking, MCP tools, Knowledge Base RAG, and multi-region inference profiles - with promptfoo. Use it when evaluating a specific AWS Bedrock capability rather than a general example; requires model access requested per-region in the Bedrock console first.

What it does

This directory bundles example configs for testing AWS Bedrock model access through promptfoo: per-family configs for Claude (4.6/4.1/4 Opus, 4 Sonnet, Haiku 4.5), OpenAI GPT-OSS (120B/20B) and OpenAI frontier models (GPT-5.5/5.4), xAI Grok 4.3 and mantle-only models like GLM 4.6 and DeepSeek V3.1 via the Bedrock Mantle endpoint, Llama3, Mistral, OpenAI-compatible families (Z.AI GLM, MiniMax, Moonshot Kimi, NVIDIA Nemotron, Google Gemma, Writer Palmyra), and Amazon Nova including tool use, multimodal, and Nova Sonic audio - plus the unified Converse API with extended thinking, Converse with MCP tools, Knowledge Base RAG, and Application Inference Profiles for multi-region failover.

When to use - and when NOT to

Use it as a reference for a specific Bedrock capability - extended thinking via Converse, MCP tool integration, Knowledge Base RAG with citations, or multi-region inference profiles - rather than building the config from scratch. Do not use it without first requesting model access in your target AWS region (us-west-2/us-east-1 tend to have the most models available) via the Bedrock console; Mantle-hosted models like Grok, GLM, and DeepSeek additionally require AWS_BEARER_TOKEN_BEDROCK, not just standard AWS credentials.

Inputs and outputs

Requires AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY (or SSO), plus @aws-sdk/client-bedrock-runtime for basic models or @aws-sdk/client-bedrock-agent-runtime for Knowledge Base. Converse extended-thinking config sets thinking: {type: enabled, budget_tokens: 16000} and showThinking: true. Converse MCP config attaches a server, e.g. DeepWiki, and an ask_question tool via mcp: {enabled: true, servers: [...], tools: [...]} - the provider returns the MCP tool's raw result as eval output, with no follow-up Converse turn to synthesize an answer, so assertions must match the tool's raw response directly. Knowledge Base config requires a real knowledgeBaseId and uses Amazon Titan Embeddings, returning citations plus a contextTransform-extracted context for evaluation. Inference profiles require inferenceModelType (claude, nova, llama or a version-specific variant, mistral, cohere, ai21, titan, deepseek, openai, zai, minimax, moonshot, nvidia, writer, gemma) and route requests across regions for automatic failover and cost optimization using a single ARN. The Converse API additionally handles two new stop reasons - malformed_model_output and malformed_tool_use - both surfaced as errors in the response with metadata.isModelError: true. Nova Sonic supports configurable sessionTimeout (5 minutes by default) and requestTimeout (2 minutes), and categorizes its error responses under metadata.errorType into five types: connection (network/AWS connectivity issues), timeout (request or session timeout), api (authentication/authorization errors), parsing (response parsing failures), and session (bidirectional stream session errors).

Integrations

Set up via npx promptfoo@latest init --example amazon-bedrock/models, then promptfoo eval -c against the relevant config file - promptfooconfig.converse.yaml, .converse-mcp.yaml, .kb.yaml, .inference-profiles.yaml (comprehensive) or .inference-profiles-simple.yaml (production-realistic customer-support failover), .openai.yaml, and more, or promptfooconfig.yaml for a combined multi-provider evaluation.

Who it's for

Teams evaluating specific AWS Bedrock capabilities - a particular model family, extended thinking, MCP tools, RAG with Knowledge Base, or multi-region inference profiles - who want a working reference config per feature rather than building each from the Bedrock API docs alone.

Source README

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

  1. 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.

  2. 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.
  3. 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:

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:

  1. Create a Knowledge Base in AWS Bedrock
  2. Configure it to crawl or ingest content (the example assumes promptfoo documentation content)
  3. Use the Amazon Titan Embeddings model for vector embeddings
  4. 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 contextTransform feature 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 models
  • nova - Amazon Nova models
  • llama - Defaults to Llama 4
  • llama2, llama3, llama3.1, llama3.2, llama3.3, llama4 - Specific Llama versions
  • mistral - Mistral models
  • cohere - Cohere models
  • ai21 - AI21 models
  • titan - Amazon Titan models
  • deepseek - DeepSeek models (with thinking capability)
  • openai - OpenAI GPT-OSS models
  • zai - Z.AI GLM models
  • minimax - MiniMax models
  • moonshot - Moonshot Kimi models
  • nvidia - NVIDIA Nemotron models
  • writer - Writer Palmyra models
  • gemma - Google Gemma models

Running the Examples

We provide two inference profile examples:

  1. Comprehensive Example (promptfooconfig.inference-profiles.yaml):

    promptfoo eval -c examples/amazon-bedrock/models/promptfooconfig.inference-profiles.yaml
    

    This includes:

    • Multiple inference profiles for different model families
    • Comparison with direct model IDs
    • Use of inference profiles for grading assertions
    • Various model-specific configurations
  2. Simple Production Example (promptfooconfig.inference-profiles-simple.yaml):

    promptfoo eval -c examples/amazon-bedrock/models/promptfooconfig.inference-profiles-simple.yaml
    

    This 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, or high settings
  • 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-2 and us-west-2)

Key Features

  • Responses API: Frontier models are served through Bedrock's OpenAI-compatible Responses API (the mantle endpoint), not InvokeModel. promptfoo routes bedrock:openai.gpt-5.x there automatically, so output matches the openai:responses provider.

  • 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_effort supports none, low, medium, high, and xhigh (minimal is 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 output
  • malformed_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 issues
  • timeout: Request or session timeout
  • api: Authentication/authorization errors
  • parsing: Response parsing failures
  • session: Bidirectional stream session errors

Getting Started

  1. Run the evaluation:

    promptfoo eval -c [path/to/config.yaml]
    
  2. View the results:

    promptfoo view
    

FAQ

Common questions

Discussion

Questions & comments · 0

Sign In Sign in to leave a comment.