LLM Prompting Best Practices Start With Just Asking
LLM prompting best practices for builders, from the ask vs scaffold decision to prompting with real artifacts and auditing answers for sycophancy.

In this article
- 1.What a Direct Ask Is in Engineering Terms
- 2.The Decision Boundary: Ask, Retrieve, Scaffold, or Fine-Tune
- 3.Ask With Artifacts, Not Prose Descriptions
- 4.The Full Cost Ledger of an Ask Versus a Pipeline
- 5.Four Failure Modes Most LLM Prompting Best Practices Skip
- 6.Turning One-Off Asks Into a Reviewable Team Practice
- 7.Where the Ask-First Playbook Stops Working
- 8.The Ask-First Checklist
Search for LLM prompting best practices and you will mostly find tip lists: be specific, give examples, ask for step-by-step reasoning. All reasonable, and mostly beside the point for builders. The expensive habit in engineering organizations looks different. Someone hits a hard problem, describes it in prose, gets a generic answer, concludes the model cannot help, and starts building scaffolding: a retrieval pipeline, an agent framework, a fine-tune. Most of that scaffolding is compensation for a weak question. The model was rarely incapable; it was starved of context and asked to debug from a paraphrase.
Stay in the loop.
Get the latest posts and exclusive content delivered to your inbox.
Join 10 readers. No spam. Unsubscribe in one click, anytime.
The claim worth testing: for a large share of builder problems, one well-constructed ask carrying real artifacts, meaning logs, diffs, traces, and contract snippets, resolves what would otherwise become a pipeline. Treating asking as a shortcut is exactly what keeps it unreliable. Treat it as a discipline instead, with a decision boundary, an input format, a cost ledger, and named failure modes you audit every answer against.
What a Direct Ask Is in Engineering Terms
A direct ask is an engineering artifact, not a chat message you hope works. It has four parts a reviewer can point at:
- Curated inputs. The exact artifacts the answer depends on, pasted verbatim and trimmed to the relevant window.
- A precise task. The question you actually want answered, phrased so a colleague could answer it from the same evidence.
- Stated constraints. Versions, environment, what to assume, and, more importantly, what not to assume.
- A verification step. How you will check the answer: a test that should pass, a log line that should appear, a command that should run.
That last part separates asking from folklore. Tip lists treat the prompt as an incantation tuned by feel. Engineering treats it as a function signature: given this evidence, answer this question, under these constraints, in this format, verified like any other tool's output. Vendor documentation points the same direction; Anthropic's prompting overview frames prompt engineering as structured practice rather than a bag of tricks.
Prompt engineering for developers keeps getting reduced to trivia partly because the ask is invisible afterward. Only the pipeline shows up in the diff. The discipline is to make the ask visible too.
The Decision Boundary: Ask, Retrieve, Scaffold, or Fine-Tune
The question of when to prompt vs build a RAG pipeline has a real answer, and two problem properties decide most cases: where the ground truth lives, and how often the task repeats.
| Problem property | First move | Why |
|---|---|---|
| Ground truth sits in an artifact you can paste | Ask | Judgment over provided context is the model's strongest mode |
| Ground truth sits in a private or fast-changing corpus | Retrieve | An ask cannot inject facts it never saw |
| The task needs repeated actions across systems | Scaffold with tools | Orchestration is code's job |
| One stable input-to-output mapping, thousands of runs per day | Fine-tune or a smaller model | Behavior and form at volume |
Concrete versions of each branch:
- Ask. Intermittent 502s from an upstream service. Paste the log window plus the retry code and ask which lines rule out which causes.
- Retrieve. Answering support questions from a runbook corpus that changes weekly. The truth is real but lives outside any single paste.
- Scaffold. Nightly triage that queries CI, comments on pull requests, and files tickets. Each step is trivial; the wiring is the product.
- Fine-tune. Classifying inbound tickets into a fixed forty-label schema at millions per month. The mapping is stable and the volume pays for the training.
The ask has one hard boundary that no phrasing fixes. Models have fixed training cutoffs and no access to your private systems; OpenAI's knowledge cutoff article states plainly that its models lack knowledge of post-cutoff events. Any task whose ground truth lives outside the context window and outside the training data needs retrieval or tooling. That is a property of the architecture, not a prompt you have not found yet.
The prompting vs fine-tuning confusion usually runs the other direction. Fine-tuning reliably changes behavior and output form: style, format, classification habits, cost at volume. It is generally a poor mechanism for adding fresh facts, which is why retrieval remains the default answer for knowledge freshness and private data. Fine-tune to lock in a behavior you can already elicit with a good ask. If a behavior is not elicitable by asking, fine-tuning rarely discovers it either.
Ask With Artifacts, Not Prose Descriptions

Paraphrase destroys exactly what a debugging answer needs: exact identifiers, structure, and error strings. "The payments service keeps timing out under load, I think the retry logic is broken" is a summary of evidence with the evidence removed. Prose also smuggles your hypothesis into the place where facts should be.
Before:
Our payments service keeps timing out under load and users see failures.
I think the retry logic is broken. Can you help debug?
After:
Task: explain the most likely cause of the errors below using only the
evidence provided.
Artifact (verbatim log, trimmed for length):
09:12:03.114 payment-svc WARN retry 3/5 upstream=charge-api latency_ms=8212
09:12:03.115 payment-svc ERROR upstream=charge-api status=502 key=8f3a91c2
09:12:06.902 payment-svc WARN retry 4/5 upstream=charge-api latency_ms=3789
09:12:06.903 payment-svc ERROR upstream=charge-api status=502 key=8f3a91c2
Questions:
1. Which two explanations fit every line above?
2. Which single line would most change your answer if removed?
Constraints: do not assume library or service versions I have not pasted.
If you need another artifact, name it rather than guessing. Flag any claim
you are uncertain about.
Three things changed. The artifact arrives verbatim, so identifiers survive. The question asks for discrimination between explanations instead of agreement with one. The constraints block forbids assumed versions and requests uncertainty flags, which does half the failure-mode audit up front. This is how to prompt an LLM with logs and diffs: the artifact does the describing, the ask does the aiming.
The obvious overcorrection is pasting everything. Resist it, because long inputs are used unevenly. Lost in the Middle documents that models answering from long contexts do reliably worse when the decisive evidence sits in the middle of the input rather than near the edges. Anthropic's long-context guidance makes the same point from practice: put long source material before the question and keep instructions near the edges, not buried mid-context. So a good ask curates. Paste the failing request's window, not the whole day. Trim the diff to the hunks on the failure path. This is context engineering at its smallest and cheapest, and the token and latency cost of long context prompts gives you a budget you should want to stay under anyway.
The Full Cost Ledger of an Ask Versus a Pipeline
Per-call price comparisons mislead because they only count tokens. The honest comparison is total cost of ownership per answer.
Run the numbers with assumptions visible. A serious debugging ask might carry 6,000 input tokens and return 1,000 output tokens. At illustrative frontier pricing of $3 per million input tokens and $15 per million output tokens, that ask costs roughly 3 cents and half a minute. Prices move constantly; the order of magnitude is the point. Cents, seconds, zero standing infrastructure.
| Cost line | Direct ask | RAG pipeline | Fine-tune |
|---|---|---|---|
| Build | minutes | days of ingest, chunking, indexing, retrieval | days plus dataset preparation |
| Evaluation | you verify one answer | labeled eval set and retrieval metrics | train and validation splits |
| Maintenance | none | index freshness, chunking regressions | retraining on drift |
| Failure debugging | rewrite the ask | retriever, chunks, prompt, or model? | data, hyperparameters, or drift? |
| Marginal cost | cents per ask | infrastructure plus tokens per call | training run plus serving |
Cost per answer favors the direct ask only when the full ledger is counted: build time, evaluation setup, ongoing maintenance, and failure debugging. Pipelines amortize at volume and tax you below it. A task that runs twenty times a year makes the maintenance line dominate everything else.
There is also a debugging asymmetry. When an ask is wrong, the whole mechanism is visible: your inputs and its answer, side by side. When a pipeline is wrong, the cause is distributed across the retriever, the index, the prompt, and the model, and every layer is a place the bug can hide. Hours per incident is the normal unit.
Four Failure Modes Most LLM Prompting Best Practices Skip

Most LLM prompting best practices content stops at construction and never covers auditing. The ask is half the discipline; the other half is checking the answer. Four LLM failure modes account for most bad outcomes, and each has a cheap tell.
| Failure mode | Observable tell | Countermeasure |
|---|---|---|
| Sycophancy | answer adopts your framing, validates without evidence | withhold your hypothesis, invite disagreement |
| Stale knowledge | old API flags or package versions, cited confidently | paste current docs, pin versions |
| Confident wrong code | plausible invented signatures and flags | paste real headers, compile or test |
| Verbosity drift | preamble, restated questions, bullet sprawl | output budget, ask for a patch |
Sycophancy. Sycophancy in language models is documented and measurable: models can shift their answer toward a position the user has already stated. Detection is cheap. Ask the same question once with your hypothesis and once with the opposite framing; if the answer follows you both times, you are reading agreement, not analysis. The structural fix belongs in the ask: leave your theory out, let the artifact talk, and explicitly request the strongest evidence against the leading explanation.
Stale knowledge. The tell is confidence about things that have moved: an API flag that no longer exists, a package version several majors old, a library idiom from a different era. Fix it at the input. Paste the current changelog line, the real function signature, the contract snippet, and require the model to mark anything it is recalling rather than reading from your evidence.
Confident wrong code.Code generation survey research treats hallucinated dependencies and invented API signatures as recurring, measured behavior rather than an occasional glitch. The tell is fluency: wrong code reads exactly like right code. Give real types and signatures in the ask, require uncertainty flags on shaky lines, and run the result. The compiler is part of the audit.
Verbosity drift. Long conversations drift toward preamble and restatement, and information density drops while length grows. Enforce an output contract, "reply as a diff plus at most three bullets, no preamble," and start a fresh conversation when drift sets in.
Audit rule: if you cannot name which evidence in your ask supports the answer's key claim, ask again before acting on it.
Turning One-Off Asks Into a Reviewable Team Practice
Individual skill does not scale; shared artifacts do. Keep an ask-log as a directory in the repo, one markdown file per consequential ask, committed like code:
# asks/payment-502.md
Problem: intermittent charge-api 502s under load
Artifact: 40-line log window from payment-svc (dashboard link)
Ask: the ask, verbatim
Verification: replayed the retry with backoff in staging, 502 persisted
Outcome: first ask missed idempotency-key reuse; second ask with the
key column included found the loop. Saved as a template.
Review asks like code, with three checks: artifact present and verbatim, hypothesis withheld, verification named. Standardize vocabulary so reviews argue about evidence rather than phrasing; OpenAI's prompting guide and Google's prompt engineering whitepaper work well as shared baselines. The payoff compounds. Strong asks become templates, new hires inherit patterns instead of rediscovering them, and the team builds an empirical map of where asking works, which sharpens the decision boundary in practice.
Where the Ask-First Playbook Stops Working
Four conditions legitimately end the ask-first approach:
- Reproducibility and compliance. Regulated workflows need versioned, tested, auditable pipelines. A chat transcript is not a compliance boundary, and an ask-log improves review, not audit.
- Volume. When the task runs thousands of times a day, the human verification built into every ask becomes the most expensive line item, and the economics flip toward infrastructure and tuned or smaller models.
- Orchestration. If the answer must trigger actions across CI, tickets, and repositories, you need code with tools, and the ask becomes one function inside that system rather than the whole solution.
- Measurable evals. Shipping to users means regression testing on labeled sets. That is an eval harness, and eval harnesses are infrastructure by definition.
None of this weakens the original point. Scaffolding should be a decision with a written justification, not a reflex. Teams that ask well also build the right pipelines, because they can name exactly which problem properties escaped the ask.
The Ask-First Checklist
Before you open a ticket for that pipeline, run the sequence:
- Where does the ground truth live: in a pastable artifact, in a private corpus, or outside both?
- Is the artifact pasted verbatim and curated to the relevant window?
- Is your hypothesis withheld from the ask?
- Is there an output contract and a verification step?
- Did you audit the answer against the four failure modes?
- Is this ask worth logging for the team?
The half-life of any specific prompting trick is short. The discipline transfers: classify the problem, feed it evidence, count the real ledger, audit the answer, and leave the next team one artifact better than a vibe.
Stay in the loop.
Get the latest posts and exclusive content delivered to your inbox.
Join 10 readers. No spam. Unsubscribe in one click, anytime.
About the author
David Moreno
Applied AI Strategist
David helps teams put AI to work in real businesses. He writes teardowns of how companies actually deploy models: the architectures, the trade-offs, and the results that survive contact with the real world.
Related Posts
Prompt Dependency Graphs That Shrink Your Retest Set
Build a prompt dependency graph to compute the blast radius of any prompt change and rerun only the evals your multi-prompt LLM system needs.
Fine-Tuning vs RAG vs Prompt Engineering Decision Framework
Fine-tuning vs RAG vs prompt engineering: run this eval-gated framework before training a custom model and inheriting its hidden maintenance tax.
RAG Chunking Strategy, Decided by a 50-Pair Eval
Stop copying 512-token defaults. Build a small retrieval eval on your own corpus and let decision gates and cost math pick your RAG chunking strategy.


