Les roles : system, developer, user et assistant
Les quatre roles des messages
Chaque message envoye a l’endpoint Chat Completions possede un champ role qui determine comment le modele Grok l’interprete. Comprendre ces roles est essentiel pour structurer vos conversations et obtenir des reponses de qualite.
L’API xAI reconnait quatre roles : system, developer, user et assistant. Chacun a une position et un usage specifiques dans le tableau de messages.
Le role system (ou developer)
Le message system est place en premier dans le tableau de messages. Il definit le comportement global du modele pour toute la conversation : ton, format de reponse, limites, personnalite, langue, etc.
{
"role": "system",
"content": "Tu es un expert en cybersecurite. Reponds toujours en francais, de maniere concise et technique. Si tu ne connais pas la reponse, dis-le clairement."
}
Le role developer est un alias de system. Les deux sont interchangeables dans l’API xAI. OpenAI a introduit developer pour mieux refleter l’intention : ce sont les instructions du developpeur, pas du “systeme”.
Bonnes pratiques pour le message system
- Soyez specifique : “Reponds en 3 phrases maximum” est plus efficace que “Sois concis”
- Definissez le format : precisez si vous attendez du JSON, du Markdown, des listes a puces
- Etablissez les limites : indiquez ce que le modele ne doit pas faire
- Contextualisez : donnez le contexte metier (“Tu es un assistant pour une clinique veterinaire”)
Le role user
Les messages user representent les interventions de l’utilisateur final. Ce sont les questions, les demandes, les instructions envoyees par la personne qui interagit avec votre application.
{
"role": "user",
"content": "Quelles sont les 3 vulnerabilites web les plus courantes ?"
}
Un message user peut apparaitre n’importe ou dans la conversation apres le message system. Dans une conversation multi-tour, vous alternez generalement entre les messages user et assistant.
Le role assistant
Les messages assistant representent les reponses precedentes du modele. Quand vous renvoyez l’historique d’une conversation, chaque reponse de Grok est taguee avec ce role.
{
"role": "assistant",
"content": "Les trois vulnerabilites web les plus courantes sont :\n1. Injection SQL\n2. Cross-Site Scripting (XSS)\n3. Broken Authentication"
}
Vous pouvez aussi utiliser le role assistant pour du few-shot prompting : injecter des exemples de reponses souhaitees avant le vrai message utilisateur.
{
"messages": [
{"role": "system", "content": "Classifie le sentiment : positif, negatif ou neutre."},
{"role": "user", "content": "J'adore ce produit !"},
{"role": "assistant", "content": "positif"},
{"role": "user", "content": "Le service client est deplorable."},
{"role": "assistant", "content": "negatif"},
{"role": "user", "content": "La livraison est arrivee hier."}
]
}
Dans cet exemple, les deux premiers echanges user/assistant servent de demonstration. Le modele comprend le format attendu et appliquera la meme logique au troisieme message.
Structure complete d’une requete
Voici une requete type combinant les trois roles dans une conversation multi-tour :
{
"model": "grok-4.20-reasoning",
"messages": [
{
"role": "system",
"content": "Tu es un assistant pedagogique specialise en mathematiques. Explique les concepts etape par etape."
},
{
"role": "user",
"content": "Qu'est-ce qu'une derivee ?"
},
{
"role": "assistant",
"content": "Une derivee mesure le taux de variation instantane d'une fonction..."
},
{
"role": "user",
"content": "Donne-moi un exemple concret."
}
]
}
L’ordre est toujours le meme : system en premier, puis alternance user/assistant, avec le dernier message obligatoirement user (c’est la question a laquelle le modele doit repondre).
Points cles a retenir
- system/developer : instructions du developpeur, toujours en premier, definit le comportement global
- user : messages de l’utilisateur final, declenchent la generation de reponse
- assistant : reponses precedentes du modele, utiles pour l’historique et le few-shot prompting
- Les roles
systemetdevelopersont interchangeables dans l’API xAI - Le dernier message du tableau doit etre un message
user