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. Interfaces differ between vendors: at Anthropic, the system instruction goes in a system parameter separate from the message list; at OpenAI, the developer role carries the developer's instructions and takes priority over the user's.
Concrete example
Illustrative case. 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 became much rarer, with no change of model.
FAQ
What are conversation roles?
They are the labels assigned to each message in an exchange with an LLM. A call is not a simple text query, but a list of labelled messages: system (the model's general behaviour), user (the requests) and assistant (the model's past responses in the history).
What is the system role for?
It 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 message; misused, it is ignored or contradicted by later user prompts.
Why is the system role a governance issue?
Because its content legally and operationally commits your company. The right questions to ask: is it documented, versioned and validated by the business functions concerned, or hidden in a developer's code? And who validates its changes? If the answer is the developer of the moment, it is a matter to formalise.
Does the system role resist bypasses?
Not automatically: it must be tested. Role-evasion attempts, such as prompt injections or contradictory requests, are a documented operational risk. Testing the system role against these bypasses is part of framing it.
What is the assistant role for?
It often stays invisible but plays a key role for agents and multi-turn chatbots: it keeps the model's previous responses, which lets it retain the context of earlier exchanges without having to repeat them on every call.
See also
Further reading
Text generation, developer, user and assistant roles, OpenAI documentation
Sources
- Text generation, developer, user and assistant roles, OpenAI documentation. https://developers.openai.com/api/docs/guides/text
- Anthropic Messages API documentation, system prompts. https://platform.claude.com/docs/en/api/messages
- Text generation, developer, user and assistant roles, OpenAI documentation. https://developers.openai.com/api/docs/guides/text