System/user separation divides stable instructions from changing input. System messages define behavior; user messages supply requests and context; assistant messages contain generated responses. section 6.5 section 6.1.1
Place each component by asking: “Does this configure the system, or does the user provide it?”
- Put roles, instructions, procedures, constraints, output formats, and static context in the system message. section 6.5
- Put questions, requests, context changes, and input parameters in the user message, often using delimited template variables. section 6.5
Use separation for repeated production applications, conversational or multiturn systems, and requests that need consistent behavior. A combined prompt is simpler for one-off tasks, prototypes, or work run only a handful of times. section 6.4.4
Customer-service email generation
For a high-volume service, keep the role, brand voice, apology guidance, and tone constraints in the system message. Put customer name, order number, issue, and resolution details in a user template, so standards can change in one place. For five to ten emails, a combined prompt may be sufficient. section 6.4.4
