Agentic AI · Development Practice

The instructions are
the product.

An agent's system prompt isn't a one-off message — it's a specification that has to hold up across dozens of LLM calls, adversarial user turns, tool failures, and every provider it might run on. This is what separates prompt engineering for a chatbot from prompt engineering for an agent that has to keep working.

SLIDE 01 — AGENT DEVELOPMENT & PROMPT ENGINEERING Cover slide: Agent Development and Prompt Engineering
Quick answer

Agent prompt engineering is the practice of writing system instructions that reliably guide an autonomous agent through multi-step tasks — tool use, decision-making, and error recovery — rather than a single bounded response. It differs from standard prompt engineering in three ways: persistence (the same prompt governs dozens or hundreds of LLM calls, not one), tool-use logic (the prompt has to specify when and how to call a tool, not just what to say), and error recovery (the prompt has to define what the agent does when a step fails, not assume everything succeeds). Because the same instructions run repeatedly across unpredictable inputs, the discipline that works best treats a system prompt like production code — versioned, tested against edge cases, and monitored after it ships, not written once and left alone.

SLIDE 02 — THREE PROPERTIES THAT CHANGE EVERYTHING Three properties that separate agent prompting from chatbot prompting
Why "just write a good prompt" isn't enough

A chatbot prompt runs once. An agent prompt runs for days.

Standard prompt engineering optimizes for a single bounded exchange: one instruction in, one response out, done. Agent prompting has to hold up across a fundamentally different shape of interaction.

  • Persistence — the same instructions govern dozens or hundreds of LLM calls across minutes, hours, or days, not one exchange
  • Tool-use decisions — the prompt must specify when a tool should be called, how to interpret its result, and what "done" looks like
  • Error recovery — the prompt has to define what the agent does when a step fails, a tool errors out, or an assumption turns out wrong
The building blocks

What actually goes into a system prompt

A system prompt is written once and evaluated against many different user inputs — which means it has to be general, unambiguous, and robust to adversarial phrasing in a way a single user message never has to be.

SLIDE 03 — ANATOMY OF A SYSTEM PROMPT Diagram: the parts of a system prompt — persona, behavior, constraints, tools, output contract
Everything meant to stay constant

Persona, behavior, constraints, tools, contract

A system prompt is the instruction block the model receives before any user message — it defines persona, behavior, constraints, available tools, and the output contract: everything meant to hold steady across an entire conversation, not just the current turn.

A user prompt, by contrast, is disposable and task-specific — written for one exchange and then gone. Confusing the two is one of the most common sources of unreliable agent behavior: instructions that belong in the stable system layer end up re-litigated, inconsistently, in every user turn.

One prompt, three very different models

Providers don't treat the system slot the same way

Writing one system prompt and shipping it unchanged to every provider is one of the most common failures in production agent development.

SLIDE 04 — SYSTEM PROMPT CONVENTIONS BY PROVIDER System prompt conventions across Claude, GPT, and Gemini
Same intent, different formatting rules

What each provider actually rewards

The formatting choice isn't cosmetic — it measurably changes how reliably instructions get followed on each provider.

Anthropic
Claude

A genuinely privileged system parameter, harder to override from the user turn. Follows XML-style tags reliably and rewards structured prompts. For extended-thinking models, keep the system prompt short and let the model's own reasoning carry complexity.

OpenAI
GPT-5 / GPT-4o

The system role exists but is less privileged — a determined user prompt can override it. Numbered lists and section headers tend to outperform XML here; developer messages and response-format constraints are the better place for hard contracts.

Google
Gemini

Uses a dedicated systemInstruction field and handles long contexts well, but is more sensitive to contradictions between the system and user message — a conflicting user ask can visibly destabilize its behavior.

SLIDE 05 — AS LONG AS NECESSARY, AS SHORT AS POSSIBLE Core prompt-writing principles: brevity, structure, and clear constraints
Every word should earn its place

Precision beats verbosity, almost every time

The strongest prompts tend to run under a hundred words; the weakest run past five hundred. The difference isn't length for its own sake — it's that every sentence in a good prompt carries either a constraint or context the model actually needs. Anything decorative gets cut.

Structure matters as much as brevity: clear sections, explicit constraints, and — for many models — a small number of well-chosen examples over an exhaustive list of edge cases. Zero-shot is often enough when a model's instruction-following is already strong; add examples only once zero-shot demonstrably falls short.

SLIDE 06 — TOOL-USE RULES INSIDE THE PROMPT Rules governing when and how an agent uses tools, written into the system prompt
Where agent prompts diverge most from chatbot prompts

Telling the agent when to reach for a tool

A chatbot prompt only ever has to say what to say. An agent prompt has to say when to act: which tool applies to which situation, what arguments to pass, how to interpret a result, and — critically — what counts as "done" so the agent doesn't keep calling tools past the point of usefulness.

Permission boundaries belong here too: which actions the agent can take autonomously, and which require explicit confirmation before executing, written as an explicit rule rather than left to the model's judgment alone.

Beyond manual chat testing

Golden prompts aren't enough at scale

Manual refinement is fine for early experimentation. It stops holding up the moment an agent connects to real tools, memory, and customer-facing workflows.

SLIDE 07 — TESTING & EVALUATION Testing and evaluation workflow for agent prompts, including adversarial cases
Measure the change, don't just feel it

Test edge cases like you'd test code

Every potential failure point grows with the agent's surface area: more tools, more memory, more customer-facing workflows, more ways for a prompt change to quietly break something. Include adversarial coverage from the start — jailbreak attempts, direct conflicts between the system and user prompt — rather than treating them as a later hardening pass.

Connecting prompt changes to measured outcomes is what separates teams that ship reliable agents from teams that discover regressions from angry users: a single prompt edit can cause a working tool-selection rule to quietly fail, and without evaluation against real data, that failure surfaces in production instead of in a test run.

SLIDE 08 — HOW PROMPTS FAIL IN PRODUCTION Common ways prompts fail once an agent reaches production
The same handful of failures, repeatedly

What actually breaks, once real users show up

  • Prompt drift — a prompt that performed well in development degrades unnoticed as real-world inputs diverge from the cases it was tuned on
  • System/user contradictions — a user request conflicts with a system instruction, and the model resolves the conflict inconsistently, or in the user's favor when it shouldn't
  • Jailbreak and adversarial framing — a determined user rephrases a disallowed request until something slips past a weakly-worded constraint
  • Undetected regressions — a prompt edit meant to fix one case quietly breaks tool selection or output formatting in another, unnoticed until a user hits it
SLIDE 09 — TREAT PROMPTS LIKE PRODUCTION CODE Summary: version, test, and monitor prompts like production code
The discipline that survives contact with production

Version it. Test it. Watch it after it ships.

The gap between prompts that work in a demo and prompts that hold up in production almost always comes down to discipline, not cleverness: a system prompt that's been through version control, tested against adversarial and edge cases before release, and monitored for drift after it ships behaves nothing like one that was written once and left alone.

The move underway across the field is a shift in framing — from "prompt engineering" as wordsmithing toward something closer to requirement architecture: encoding domain knowledge and constraints once, precisely, so the same specification keeps working across every session that follows.

Frequently asked

Agent development & prompt engineering FAQ

Regular prompt engineering optimizes a single bounded exchange — one input, one output. Agent prompt engineering has to hold up across persistence (dozens or hundreds of LLM calls over an extended task), tool-use decisions (when and how to call a tool), and error recovery (what happens when a step fails) — none of which a standard chatbot prompt needs to address.

Not reliably. Claude's system parameter is genuinely privileged and responds well to XML-style structure; GPT's system role is less privileged and tends to perform better with numbered lists and section headers; Gemini uses a dedicated systemInstruction field and is more sensitive to contradictions between system and user messages. Shipping one unmodified prompt to all three is a common source of inconsistent behavior.

As long as necessary and no longer — strong prompts are often under a hundred words, with every sentence carrying either a constraint or context the model needs. Padding a prompt with decorative language or redundant instructions tends to dilute the parts that actually matter, rather than reinforcing them.

It should specify which tool applies to which situation, what arguments to pass and how to interpret the result, what counts as task completion so the agent stops calling tools appropriately, and which actions require explicit human confirmation rather than autonomous execution.

Usually because testing relied on a small set of golden prompts rather than adversarial and edge-case coverage. Real users phrase requests unpredictably, occasionally in direct conflict with system instructions, and a prompt tuned only against clean test cases has no defense built in for either.

It means version-controlling every prompt change, testing it against real and adversarial data before release, and monitoring its behavior after it ships — rather than editing a live prompt directly and discovering regressions only when users report them.

Get started

Ready to write a prompt that holds up in production?

Start from the three properties that make agent prompting different — persistence, tool-use logic, and error recovery — and test against adversarial cases before you ship, not after.