A first prompt often comes back wrong, and it's rarely the model being dumb. The answer is usually a fair response to a request that didn't say enough. Once you can name why an attempt missed, fixing it is quick. Almost every weak first prompt falls into one of four buckets.
The prompt leaves the important choices open, so the model picks for you. Ask
Tell me about Docker and you might get a history lesson, a feature list, or a
install guide - whatever the model guesses you meant. You had something specific
in mind, but the prompt never said what, so the answer drifts. The earlier topic
on being specific was aimed straight at this failure.
The model only knows what's in the prompt. If the answer depends on who it's for, what tools you're using, or what you already tried, and none of that is in the request, the model fills the gap with generic assumptions. Ask for a fix without saying you're on a Mac and you may get Linux commands that don't apply.
The content is fine but the shape is wrong. You wanted a short bullet list and got five paragraphs, or you wanted a table and got prose. The model had no reason to guess the format you needed, because you didn't ask for one. The controlling output topic covered how to pin the format down.
The prompt asks for several things in one breath: explain the concept, compare three options, write example code, and summarize the trade-offs. The model tries to do all of it and does each part thinly. A request crammed with jobs gets a crammed, shallow answer.
Notice the theme: in every case the gap is on the input side, not the model side. The model answered the prompt you actually wrote. That's good news, because the input is the part you control. The next node is about reading a weak answer and working out which of these four it is.
Your lab setup
This VM comes preconfigured with your AI keys - just type claude to get started. Your key and URL are already set as $OPENAI_BASE_URL and $OPENAI_API_KEY.