« Phase 24 README · Warmup · Deep Dive · Principal Deep Dive · Core Contributor · Staff Notes

Phase 24 — Hitchhiker's Guide

The compressed practitioner tour. Read the WARMUP for the mechanism; this is the stuff you say in the meeting.

30-second mental model

Bedrock is a managed foundation-model platform: one API surface (control plane bedrock + data plane bedrock-runtime) over a catalog of vendors — Anthropic, Titan/Nova, Llama, Mistral, Cohere, AI21, Stability, plus Custom Model Import. You call InvokeModel when you need a provider's raw native schema, or Converse/ConverseStream when you want one normalized shape across every model. Around invocation sit the platform primitives: capacity (On-Demand throttles, Provisioned Throughput reserves-and-queues, Batch is async-and-cheap), Guardrails (content safety — denied topics, content filters, PII, grounding), Knowledge Bases (managed RAG over a vector store YOU provision), model customization (fine-tune / continue-pretrain / import / distill), and evaluation jobs. The senior move: "Bedrock's value isn't any one model — it's not re-solving capacity, safety, and retrieval for every model I adopt, with an exit ramp if I ever need one."

The services to tattoo on your arm

ConceptOne lineMaps to
Model catalogfirst-party (Titan/Nova) + third-party (Anthropic/Llama/Mistral/Cohere/AI21/Stability) + Custom Model Import, behind one modelId
InvokeModelraw, provider-native JSON in/out — you know the schema
Converse/ConverseStreamONE normalized schema, translated per-provider under the hoodLab 01
On-Demandpay-per-token, token-bucket throttled (ThrottlingException)Lab 01
Provisioned Throughputpurchased Model Units; queues, doesn't throttle, once saturatedLab 01
Batchasync job, SUBMITTED→IN_PROGRESS→COMPLETED/FAILED, ~50% off, no real-time SLALab 01
Guardrailscontent safety: topics/content/words/PII/grounding, input+outputLab 02
Knowledge Basesmanaged RAG: chunk→embed→BYO vector store; Retrieve/RetrieveAndGenerateLab 03
Model customizationfine-tune / continued pre-train / Custom Model Import / (Nova) distillation
Model evaluationautomatic metrics / LLM-as-judge / human eval

The distinctions that signal seniority

  • Bedrock vs AgentCore → Bedrock serves models; AgentCore (Phase 20) runs agents. Different layers, not competitors, and AgentCore doesn't require Bedrock at all.
  • Bedrock vs Agents for Bedrock → Agents for Bedrock is the OLD, single fully-managed agent (AWS owns the loop). Bedrock (this phase) has no agent loop concept whatsoever.
  • InvokeModel vs Converse → raw provider passthrough vs a translation layer built ON TOP of it. Converse's feature set is the least-common-denominator across providers (tool use isn't universal — calling it against an unsupported model is a real error).
  • On-Demand vs Provisioned Throughputthrottle (reject, retry) vs queue (wait). Totally different failure mode, not just a pricing difference.
  • Guardrails vs Cedar/IAM → Guardrails gates what an agent may say (content safety); Cedar/IAM gates what an agent may do (access control). Two different policies, two different failure surfaces.
  • PII mask vs block → configurable per entity type. Masking keeps the rest of the response useful; blocking nukes the whole answer. Not a fixed behavior.
  • Retrieve vs RetrieveAndGenerate → you-build-the-prompt vs Bedrock-builds-the-prompt-and- generates-and-cites. Pick Retrieve when the KB is one of several context sources.

The SDK/CLI one-liners

import boto3
runtime = boto3.client("bedrock-runtime")

resp = runtime.converse(
    modelId="anthropic.claude-3-5-sonnet-20241022-v2:0",
    system=[{"text": "You are terse."}],
    messages=[{"role": "user", "content": [{"text": "Summarize this in one line."}]}],
    inferenceConfig={"maxTokens": 200, "temperature": 0.3},
)
answer = resp["output"]["message"]["content"][0]["text"]
agent_runtime = boto3.client("bedrock-agent-runtime")

resp = agent_runtime.retrieve_and_generate(
    input={"text": "What's our refund window?"},
    retrieveAndGenerateConfiguration={
        "type": "KNOWLEDGE_BASE",
        "knowledgeBaseConfiguration": {
            "knowledgeBaseId": "ABCDEF1234",
            "modelArn": "anthropic.claude-3-5-sonnet-20241022-v2:0",
        },
    },
)
print(resp["output"]["text"], resp["citations"])
# console/CLI: enable model access before you can invoke anything (per account+region)
aws bedrock list-foundation-models --query "modelSummaries[].modelId"

War stories

  • The "just call Converse everywhere" refactor that broke tool calling. A team migrated every InvokeModel call to Converse for portability, then routed 10% of traffic to a cheaper model with no native tool-use support. Every tool-using request to it started failing with a validation error — a least-common-denominator reality nobody had priced in. Check supports_tools before you route.
  • The on-demand quota that paged someone at 2 a.m. during a traffic spike. A launch went viral, request volume tripled, ThrottlingExceptions stacked because nobody had retry-with-backoff or Provisioned Throughput set up. The breakeven math, run after the fact, showed they'd been well above it for two weeks.
  • The Knowledge Base that "hallucinated" and it wasn't the model's fault. Chunk size was too large and overlap too small; retrieval kept handing back a chunk that mentioned the right topic but not the specific fact asked, and the model confidently answered from it. Hierarchical chunking (small child match, full parent context) fixed it — the bug was retrieval precision, not generation quality.

Vocabulary

Bedrock (model platform) · control plane / data plane · model catalog · InvokeModel (raw) · Converse / ConverseStream (normalized) · On-Demand / Provisioned Throughput / Batch · Model Unit · ThrottlingException · cross-region inference profile · Guardrails (content safety) · denied topics / content filters / word filters / PII filters / contextual grounding · GuardrailAction · Knowledge Base (managed RAG) · chunking (fixed-size / hierarchical parent-child) · Retrieve / RetrieveAndGenerate · citations · fine-tuning / continued pre-training / Custom Model Import / distillation · VPC endpoint / PrivateLink · KMS · CloudTrail · AgentCore (Phase 20, the other Bedrock) · Agents for Bedrock (the old Bedrock agent).

Beginner mistakes

  1. Calling it "Bedrock" when you mean AgentCore, or vice versa — different layers, say which one.
  2. Assuming every model supports every Converse feature — tool use especially is not universal.
  3. Treating On-Demand throttling and Provisioned Throughput saturation as the same failure — one rejects, one queues.
  4. Confusing Guardrails (content safety) with IAM/Cedar (access control) — they're independent.
  5. Setting every PII entity type to BLOCK "for safety" and nuking useful responses.
  6. Assuming Bedrock Knowledge Bases ships a vector database — it doesn't; you provision one.