learn-prompt-engineering-with-phoebe / Builder session 7 of 10
Learn Prompt Engineering with Phoebe · Builder track · Session 7 of 10

Vendor deltas: Claude, GPT, Gemini side by side

The core techniques are shared. The words, the placement rules, the sampling params, and the per-model quirks are not - and pretending a prompt is a drop-in across vendors is how good systems quietly degrade. Today: the honest diff.

🟠 Builder track Practitioners Any model or API 35 min self-read · 45 min live
0-3 · Welcome 3-20 · The deltas 20-42 · Build-along: TriageBot x3 42-45 · Q&A
Part 0

Why a whole session on vendors

Sessions 1-6 taught the shared core: clarity, structure, examples, grounding, chains, agents. Every vendor agrees on that core - then names it differently, places context differently, and ships per-model pages that change your prompts materially. Teams lose real weeks to this: one engineer quotes the OpenAI guide, another quotes Anthropic's, both are right, and the prompt ships wrong. Today we map the deltas and port TriageBot v4 across all three vendors to feel the portability tax first-hand.

Live - presented in session Self-study - read after class ★ Build-along - do it with me Any model or API
★ What you walk out with today The terminology translation table that ends cross-vendor guide-quoting arguments, a tour of the per-model prompting pages (Fable 5, Sonnet 5, Opus 4.8, GPT-5.1, Gemini 3) and the habit of reading them before shipping, the real story of sampling params from whitepaper chapter to 400 error, a portability checklist, and three working variants of TriageBot v4 - Claude, GPT, and Gemini - with the delta list that IS your portability tax.
Part 1 · translation layer

Same ideas, different words 5 min live

Most cross-vendor confusion is vocabulary, not substance. The same concept wears three names, and two teammates quoting different guides can argue for an hour while agreeing completely. Pin this table where your team argues.

LiveThe divergence table4 min▶
ConceptAnthropic (Claude)OpenAI (GPT)Google (Gemini)
The standing instructionsSystem promptDeveloper messageSystem instructions
AI that improves your promptPrompt improver (Console)MetapromptingAPE (per the Boonstra whitepaper)
Answering from your documentsRAGRAGGrounding
Few-shot stance3-5 examples, a core techniqueZero-shot first; examples can HURT reasoning modelsPushed hardest - "always include examples"
Long-context placementQuery AFTER the docs (up to +30%)Instructions at BOTH ends (GPT-4.1)Data first, question LAST
Preferred delimitersXML tags as house idiomMarkdown headers first; XML fineFlexible; headers or tags
Step-by-step on reasoning modelsDo not prompt it - adaptive thinking + effortDo not say "think step by step"Do not - thinking is built in

Read the last row twice: on reasoning-era models, all three vendors now agree you should NOT prompt step-by-step thinking. Where they still genuinely disagree - few-shot stance and long-context placement - the disagreement reflects how each model family was trained, which is exactly why prompts do not port cleanly.

Real world

Meridian's week-long argument: a platform engineer insisted context goes "data first, question last" (he had read the Gemini docs); the Claude-side engineer insisted the same thing was "query after docs" (Anthropic's phrasing). They escalated to an architecture review before noticing they agreed. The third engineer, quoting GPT-4.1's "instructions at both ends", actually disagreed - and nobody noticed that.

Part 2 · per-model reality

The model-specific pages tour 7 min live

The biggest shift since 2024: every vendor now ships prompting pages per MODEL, not just per company - and they change your prompts materially. A prompt tuned for one generation can be actively wrong on the next. The habit this part installs: before shipping on a new model, read its page, then re-test.

"One prompt, three vendors - it's a drop-in, right?" TriageBot v4, sent unchanged to all three APIs Lane 1 · Claude Sonnet 5 Call REJECTED: temperature + top_p now return a 400 error. Query placed before the docs quietly costs grounding accuracy. Lane 2 · GPT-5.1 Runs - but ignores your sampling params and wants reasoning_effort. Long-context instructions missing from the top: adherence drifts. Lane 3 · Gemini 3 Runs - but your tuned temperature works against the defaults the docs say to leave alone. Question buried mid-prompt, not last. Same prompt, three different behaviors - one hard error, two silent degradations. Models are not drop-in replacements.
🔍 Click to zoom - the drop-in illusion: one unchanged prompt, three models, three different outcomes
LiveClaude's pages: Fable 5, Sonnet 5, Opus 4.83 min▶
  • Fable 5: a brief, clear instruction now beats a long enumerated list - over-specified prompts constrain it. It is steered to ground progress claims (no "done!" without evidence), and you set effort levels instead of coaxing depth with words.
  • Sonnet 5: the breaking change - temperature and top_p now return a 400 error. Adaptive thinking is the default; the old budget_tokens knob is gone in favor of effort. Prompts that shipped sampling params do not degrade, they crash.
  • Opus 4.8: has its own page too. The point is not memorizing each delta - it is that Anthropic maintains one page per model, and the deltas are real. Also live from Session 3: prefill returns a 400 on Claude 4.6 and later; the migration patterns replace it.
LiveOpenAI's GPT-5.1 page and Gemini 33 min▶
  • GPT-5.1: adds a none reasoning mode (a reasoning model that can skip reasoning - your model-class decision tree from Session 1 now has a toggle inside one model), personality shaping in the developer message, and first-class metaprompting: you can hand GPT-5.1 its own prompt and ask it to diagnose contradictions and ambiguities before you ship them.
  • Gemini 3: leave sampling defaults alone (the docs say it plainly), be precise and direct rather than persuasive or emotional, and control length with verbosity guidance. Long context stays data first, question last.
The habit that replaces memorizing this card Before shipping on a new model: 1) read its model-specific page, 2) re-run your eval set. Twenty minutes, every migration. Everything in this card will be stale within a year; the habit will not.
Part 3 · the dials

Sampling params: a history lesson 5 min live

Google's Boonstra whitepaper - still the best single PDF on prompting - devotes a whole chapter to temperature, top-K, and top-P. Learn the concepts: they explain why outputs vary and what "randomness" means mechanically. Then learn the 2026 reality: the vendors took the dials away.

The whitepaper era Boonstra: a full chapter on tuning three dials per task: · temperature - randomness · top-K - candidate pool size · top-P - probability mass cutoff Prompt engineering included config engineering. Gemini 3 Docs say: leave sampling defaults alone. Claude Sonnet 5 temperature / top_p in the call = 400 error. OpenAI reasoning models Ignore them; the dials are reasoning_effort + verbosity. The dials did not disappear - they moved up a level: effort and verbosity, set per call, named per vendor.
🔍 Click to zoom - sampling params, then and now: from a whitepaper chapter to rejected, ignored, or left alone
LiveThe portability checklist: what to re-verify when you switch vendors3 min▶

Everything this session covered, compressed into the checklist you run on every migration:

SurfaceRe-verify
PlacementWhere do instructions and documents go? Claude: query after docs. GPT-4.1: both ends. Gemini: data first, question last.
DelimitersXML house idiom on Claude; markdown headers first on GPT. Re-check your tags survive.
Few-shot stanceKeep 3-5 on Claude, push more on Gemini, strip them for OpenAI reasoning models and re-test.
ParamsRemove temperature/top_p (400 on Sonnet 5, ignored by OpenAI reasoning, leave-default on Gemini 3). Map to effort/verbosity equivalents.
Tool-call formatEach API's tools field differs in schema shape and naming rules. Re-declare, never string-replace.
EvalsRe-run the full set. The page tells you what changed; only your evals tell you what broke.
Self-studyOne card on open models (and one pointer past text)2 min read▶

Everything above assumed a hosted API. Run an open model - Llama and friends - and two more deltas appear. First, the chat format itself is yours to get right: Llama's chat template differs from hosted APIs, and a malformed template silently degrades output before your prompt is even read. Second, safety is a separate layer: hosted APIs bundle moderation; with open models you add it yourself, and Llama Guard is the standard classifier for filtering inputs and outputs. DeepLearning.AI's Prompt Engineering with Llama course covers both - self-study, not exam material.

And one pointer past text entirely: vision-model prompting (segmentation coordinates, diffusion negative prompts) is a real craft this course deliberately skips - see the course map's not-covered list.

Build-along

TriageBot goes multi-vendor ★ 22 min · build it with me

Meridian's platform team wants vendor optionality: TriageBot must run on Claude, GPT, and Gemini. Naive plan: copy the prompt three times. Real plan: port it properly, and write down every change you had to make. That list is the portability tax, and it goes in the repo next to the prompts.

Start from TriageBot v4 (Session 6): system prompt with agentic rules, lookup_order tool spec, policy manual, few-shot examples, JSON schema.

Write the Claude variant. XML delimiters for the manual and examples, query after the docs (ticket last), effort medium, no sampling params - Sonnet 5 would 400 the call.

Write the GPT variant. Markdown headers for structure, key instructions repeated at both ends of the long context, reasoning_effort set instead of any temperature, tools re-declared in OpenAI's schema.

Write the Gemini variant. Data first, question last - manual and ticket up top, the ask at the very end. All sampling defaults untouched. Consider one extra few-shot example; Gemini's docs push examples hardest.

Write down every delta. Placement, delimiters, example count, params, tool schema. That list is your portability tax - and your migration checklist for the next model generation.

TriageBot v4 - Claude variant (shown in full; deltas for the other two below)You are TriageBot, the support-ticket triage system for Meridian Retail. <policy_manual> [full returns + refunds policy, unchanged, cache-shaped] </policy_manual> <examples> [3 worked tickets with their exact output JSON] </examples> Agentic rules: - Keep going until the ticket is fully triaged; do not stop early. - If order status could change routing, use lookup_order. Never guess or invent an order status. - One-line plan before each tool call; reflect after each result. - At most 2 lookups per ticket, then set needs_human to true. Output: a single JSON object matching the schema in <schema> tags. Quote policy verbatim in the evidence field. <ticket> {{TICKET_TEXT}} </ticket> Classify the ticket above. (Query AFTER the docs - Claude's placement.)
LiveThe delta table - what actually changed per vendor4 min▶
SurfaceClaude variantGPT variantGemini variant
DelimitersXML tagsMarkdown headers (## Policy manual)Headers, kept simple
PlacementQuery after docs (ticket last)Key instructions at both endsData first, question literally last
Few-shot3 examples3 examples (standard model; strip and re-test if a reasoning variant)4 examples - docs push them hardest
Paramseffort: medium, nothing elsereasoning_effort, no temperatureAll defaults untouched
Toolstools field, Anthropic schematools field, OpenAI schematools field, Gemini schema

Five rows of change for one identical business task. Multiply by every prompt in your system: that is the real cost of "we will just swap vendors" - not impossible, but never free, and only safe with the eval set from Sessions 8-9 to prove each variant still passes.

Homework

Three things before Session 8 ◐ 30 min total

Source material

What this session covers

Builder-level coverage of the sources below. Vendor docs move fast - re-check the model pages before you ship; links live in the course map.

✓Terminology divergence mapPart 1 · system prompt / developer message / system instructions and friends
✓Claude model-specific pages (Fable 5, Sonnet 5, Opus 4.8)Part 2 · brief-beats-enumerated, grounded claims, effort; temp/top_p 400
✓GPT-5.1 prompting guidePart 2 · none reasoning mode, personality shaping, metaprompting
✓Gemini 3 prompting guidancePart 2 + 3 · leave defaults, precise + direct, verbosity control
✓Boonstra whitepaper - sampling config chapterPart 3 · temperature / top-K / top-P as concepts, then the 2026 reality
◐Prompt Engineering with Llama (Meta / DLAI)Part 3 · one card: chat format + Llama Guard; full course is self-study
◐Vision-model promptingPart 3 · pointer only; deliberately out of scope for this course
Check yourself

Three questions before you go 🎯 ◐ 90 seconds

1 · A teammate says "put it in the developer message". In Anthropic and Google terms, they mean...

One concept, three names: system prompt = developer message = system instructions. Half of cross-vendor arguments dissolve once the table is on the wall.

2 · Your prompt sets temperature=0.3. What happens across the 2026 model landscape?

The whitepaper-era dials moved: rejected on Sonnet 5, ignored by OpenAI reasoning models, leave-default on Gemini 3. Today you reach for effort and verbosity instead.

3 · Before shipping an existing prompt on a newly released model, the professional habit is...

Neither extreme. The core carries; the deltas (placement, delimiters, few-shot stance, params, tool format) need re-verification - and only your eval set proves what broke.

Builder session 7 cheat sheet · pin this

Translation tableSystem prompt = developer message = system instructions. Metaprompting = APE = prompt improver. RAG = grounding.
Placement warsClaude: query after docs (+30%). GPT-4.1: instructions both ends. Gemini: data first, question last.
Few-shot stancesClaude: 3-5. Gemini: pushes hardest. OpenAI reasoning models: examples can hurt - strip and re-test.
Per-model pagesFable 5: brief beats enumerated. Sonnet 5: temp/top_p = 400. GPT-5.1: none mode + metaprompting. Gemini 3: precise + direct.
Params, 2026Temp/top-K/top-P are history-class concepts. The live dials: effort (Claude), reasoning_effort + verbosity (OpenAI), defaults (Gemini).
The migration habitNew model = read its page + re-run evals. Twenty minutes. Models are not drop-in replacements.
Portability checklistPlacement, delimiters, few-shot stance, params, tool-call format, evals. Run all six per switch.
Open modelsChat template correctness + your own safety layer (Llama Guard). Self-study pointer, not exam material.