« 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
| Concept | One line | Maps to |
|---|---|---|
| Model catalog | first-party (Titan/Nova) + third-party (Anthropic/Llama/Mistral/Cohere/AI21/Stability) + Custom Model Import, behind one modelId | — |
| InvokeModel | raw, provider-native JSON in/out — you know the schema | — |
| Converse/ConverseStream | ONE normalized schema, translated per-provider under the hood | Lab 01 |
| On-Demand | pay-per-token, token-bucket throttled (ThrottlingException) | Lab 01 |
| Provisioned Throughput | purchased Model Units; queues, doesn't throttle, once saturated | Lab 01 |
| Batch | async job, SUBMITTED→IN_PROGRESS→COMPLETED/FAILED, ~50% off, no real-time SLA | Lab 01 |
| Guardrails | content safety: topics/content/words/PII/grounding, input+output | Lab 02 |
| Knowledge Bases | managed RAG: chunk→embed→BYO vector store; Retrieve/RetrieveAndGenerate | Lab 03 |
| Model customization | fine-tune / continued pre-train / Custom Model Import / (Nova) distillation | — |
| Model evaluation | automatic 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 Throughput → throttle (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
InvokeModelcall toConversefor 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. Checksupports_toolsbefore 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
- Calling it "Bedrock" when you mean AgentCore, or vice versa — different layers, say which one.
- Assuming every model supports every Converse feature — tool use especially is not universal.
- Treating On-Demand throttling and Provisioned Throughput saturation as the same failure — one rejects, one queues.
- Confusing Guardrails (content safety) with IAM/Cedar (access control) — they're independent.
- Setting every PII entity type to
BLOCK"for safety" and nuking useful responses. - Assuming Bedrock Knowledge Bases ships a vector database — it doesn't; you provision one.