Five places to put words
- System — operator's constitutive frame. Persistent.
- Developer — app-level instructions (OpenAI explicit, others implicit inside system).
- User — human input. Untrusted.
- Assistant — what the model said. Reused as context next turn.
- Assistant prefill — you start the assistant's reply for them. The model continues from there.
What prefill is good for
- Forcing JSON outputs without strict mode (start with
{). - Skipping preambles (start with the actual answer).
- Persona enforcement (start in voice).
- Format anchoring (start with the table header, the bullet, the heading).
Provider quirks
Anthropic supports prefill via the last assistant message in the conversation. OpenAI supports it via the prior assistant turn (not as a first-class param). Gemini supports it via the model role. The mechanism is the same; the API surface differs.