Ask "was this output good?" and you'll get arguments. Ask "who consumes this output, and did it serve them?" and the answer is usually obvious. A JSON payload with a friendly preamble is bad output for a parser and fine output for a chat window. A terse three-line answer is bad for an executive briefing and perfect as input to the next pipeline stage. Before tuning a single prompt word, classify the destination — machine, human, or another model call — because each wants different detail, register (level of formality), and structure.
Destination one: an API or parser
When code consumes the output, the priorities are exact shape and nothing extra. Don't prompt your way there — enforce it. Structured outputs (output_config: {"format": {"type": "json_schema", ...}}, with additionalProperties: false on objects) guarantee schema-valid JSON, and are supported across the Claude API, Claude Platform on AWS, Vertex AI, Bedrock (subset), and Microsoft Foundry. The Python SDK's client.messages.parse() pairs this with Pydantic models and validates client-side.
Two operational notes from the official docs: a refusal still returns HTTP 200 with stop_reason: "refusal" (and the output may not match the schema), and stop_reason: "max_tokens" can leave the JSON truncated — check both before parsing. Machine destinations should also spend the fewest tokens: detail that no parser reads is pure cost, so schemas beat "include everything just in case."
Destination two: a human reader
Humans need calibrated register and length, and this is where prompts do the work. Say who is reading and why — "a claims adjuster scanning 50 of these per day" wants three bullets; "a board pre-read" wants structured prose. Anthropic's guidance to explain why an instruction matters applies directly: "this will be read aloud by a text-to-speech engine, so never use ellipses" is the documented example of context making format instructions stick. Giving Claude a role in the system prompt — even a single sentence — focuses tone, and the best-practices reference has dedicated sections on communication style, verbosity, and response format control.
Two API-level levers matter for human destinations. Streaming ("stream": true) makes long answers feel responsive by delivering text as server-sent events instead of after a full-response wait. And the effort parameter shapes thoroughness: per the official docs, lower effort produces direct action without preamble and terse confirmations, higher effort produces plans and detailed summaries. high is the default; medium or low suits quick interactive replies.
Destination three: another model call
In multi-step pipelines — summarize, then classify, then draft — the intermediate audience is the next prompt. Optimize for lossless handoff, not readability: keep entities, figures, and qualifiers; drop rhetorical polish; use tagged or structured formats the next stage can reference precisely. Politeness padding ("Certainly! Here is the summary…") is noise the next prompt must ignore, and every intermediate token is billed twice — once as this step's output, once as the next step's input. Terse, structured intermediates compound savings across the chain.
| Destination | Optimize for | Primary mechanism |
|---|---|---|
| API / parser | Exact shape, minimal tokens | Structured outputs; parse() helpers |
| Human reader | Register, length, scannability | Audience-and-purpose prompts; role; streaming; effort |
| Next model call | Lossless, compact handoff | Tagged/structured intermediates; no padding |
One task, several destinations
When the same analysis feeds both a dashboard and an email, resist one compromise output. Either generate the machine-readable form and render the human version with code (templates are free and deterministic), or make it two calls — with prompt caching, the second call over the same cached context pays 0.1x on the shared prefix, so dual-destination generation costs far less than it appears.
Calibration claims belong in your eval criteria too: a summary that's accurate but twice the requested length should fail the eval, because it fails the reader.
Where to go next
See output format control, tone and style, and structured outputs for each mechanism in depth; streaming UX and timeouts covers the human-facing delivery layer.