Last reviewed:
What are system, user, and assistant roles? Definition and business implications
Conversation roles (system, user, assistant) are the labels assigned to each message in an exchange with an LLM. The system role defines the model's general behaviour, the user role carries the requests, the assistant role the model's past responses in the conversational history.
A call to a modern LLM is not a simple text query, but a list of messages, each labelled by its role. Three standard roles exist: system (a permanent behaviour instruction, invisible to the end user), user (the message sent by the user), and assistant (the model's previous responses, kept to allow conversation continuation). The system role is the most powerful and least used lever. It sets tone, format, ethical constraints, permanent context elements, and forbidden behaviours. Well written, it avoids repeating these instructions in every user message. Misused, it is ignored or contradicted by later user prompts. The assistant role often remains invisible but plays a key role for agents and multi-turn chatbots: it lets the model retain the context of previous exchanges without having to repeat them on every call.
Concrete example
A B2B software vendor deploys a support chatbot for its SME clients. Without a structured system role, the model changes tone depending on the question, occasionally discloses technical information not intended for the public, or cites competitor prices. With a precise system role (“You are the support assistant for [Name]. Reserved professional tone. Do not mention any competitor. Do not provide pricing without an explicit request. If the question exceeds your documentation, route to human support”) and a 500-conversation simulated test, these drifts dropped by 73% with no change of model.
See also
Further reading
Sources
- OpenAI Chat Completions API documentation, message roles, 2026. https://platform.openai.com/docs/api-reference/chat/create
- Anthropic Messages API documentation, system prompts. https://docs.anthropic.com/en/api/messages