How is a system prompt different from a prompt?
Both are text you give the model, but they sit in different places. The user message is the question for this turn. The system prompt is the standing instruction that sits above the whole conversation and tells the model who it is and how to behave: its role, its tone, the rules it should follow, the shape its answers should take. You set it once, and it frames every turn that follows rather than just the next one.
That separation is the point. It lets you keep the model’s character and rules in one stable place while the user asks about whatever they like. The same model becomes a terse code reviewer or a patient explainer depending on the system prompt in front of it, with no change to the questions being asked.
What can a system prompt actually do?
A good system prompt is specific about role and format. Tell the model what it is, the tone to hold, and how to lay out an answer, and keep per-request details out of it, those belong in the user message. Be honest about the limit, though: a system prompt steers behaviour strongly, but it does not lock it absolutely. A determined or confusing user message can pull the model off the frame you set, and a very long system prompt spends tokens, the chunks of text a model reads, from the same context budget your actual conversation needs. Set the role firmly, keep it tight, and do not treat it as an unbreakable contract.