Aller au contenu principal

Les Rôles : System, User et Assistant

Comprendre le système de rôles

L’API Chat Completions de Mistral structure chaque conversation autour de rôles attribués aux messages. Chaque message envoyé au modèle doit obligatoirement comporter un rôle qui définit sa fonction dans l’échange. Maîtriser ces rôles est fondamental pour construire des prompts performants.

Mistral reconnaît quatre rôles distincts, chacun avec une fonction précise :

Rôle Description Exemple
system Définit la personnalité, le comportement et le contexte global du modèle « Vous êtes un expert juridique français spécialisé en droit du travail. »
user Contient la requête ou l'instruction de l'utilisateur « Quelles sont les obligations de l'employeur en cas de licenciement économique ? »
assistant Représente les réponses du modèle, ou permet de pré-remplir le début d'une réponse « Voici les 5 obligations principales : 1. ... »
tool Retourne le résultat d'un appel de fonction (function calling) Résultat JSON d'une recherche en base de données

Le rôle system : la fondation de votre prompt

Le message system est placé en tout premier dans la liste des messages. Il agit comme une directive permanente qui influence l’ensemble de la conversation. C’est ici que vous définissez :

  • La personnalité : le ton, le niveau de formalité, la langue
  • Le domaine d’expertise : le champ de connaissances à privilégier
  • Les règles : ce que le modèle doit ou ne doit pas faire
  • Le format par défaut : la structure attendue des réponses
messages = [
    {
        "role": "system",
        "content": """Vous êtes un rédacteur technique senior spécialisé dans la documentation API.
Règles :
- Utilisez un français technique précis
- Incluez toujours des exemples de code Python
- Structurez vos réponses avec des titres et des listes
- Ne dépassez jamais 500 mots par réponse"""
    },
    {
        "role": "user",
        "content": "Expliquez comment gérer les erreurs HTTP dans une API REST."
    }
]

Le system prompt est géré par le développeur, pas par l’utilisateur final. Il constitue le cadre dans lequel toute la conversation se déroule.

Le rôle user : la requête concrète

Le message user contient la demande spécifique. C’est le rôle le plus intuitif : il représente ce que l’humain dit au modèle. Chaque nouvelle question ou instruction de l’utilisateur est un message avec le rôle user.

Bonnes pratiques pour les messages user :

  • Soyez précis dans votre demande
  • Indiquez le format souhaité si différent du défaut
  • Fournissez les données nécessaires directement dans le message

Le rôle assistant : guider la réponse

Le rôle assistant a deux usages distincts :

1. Historique de conversation

Dans une conversation multi-tours, les réponses précédentes du modèle sont insérées avec le rôle assistant pour maintenir le contexte :

messages = [
    {"role": "user", "content": "Quelle est la capitale de la France ?"},
    {"role": "assistant", "content": "La capitale de la France est Paris."},
    {"role": "user", "content": "Et sa population ?"}
]

2. Pré-remplissage (prefix)

Vous pouvez utiliser le rôle assistant pour commencer la réponse du modèle. Le modèle continuera à partir de ce point. C’est une technique puissante pour contrôler le format de sortie :

messages = [
    {"role": "user", "content": "Listez 3 frameworks Python pour le web."},
    {"role": "assistant", "content": "```json\n["}
]

Ici, le modèle comprendra qu’il doit produire du JSON et complétera le tableau commencé.

Le rôle tool : résultats de fonctions

Le rôle tool est utilisé dans le cadre du function calling. Lorsque le modèle décide d’appeler une fonction externe (recherche web, requête API, calcul), le résultat de cette fonction est renvoyé au modèle sous forme de message tool. Ce rôle est plus avancé et sera abordé dans des formations dédiées.

Construire une conversation complète

Voici un exemple complet combinant tous les rôles principaux :

response = client.chat.complete(
    model="mistral-large-latest",
    messages=[
        {
            "role": "system",
            "content": "Vous êtes un assistant culinaire français. Répondez de manière concise."
        },
        {
            "role": "user",
            "content": "Comment faire une vinaigrette classique ?"
        },
        {
            "role": "assistant",
            "content": "Pour une vinaigrette classique, mélangez 1 cuillère de moutarde, 3 cuillères d'huile d'olive et 1 cuillère de vinaigre."
        },
        {
            "role": "user",
            "content": "Et pour une version allégée ?"
        }
    ]
)

Points clés à retenir

  • Le rôle system cadre le comportement global du modèle — c’est votre levier le plus puissant
  • Le rôle user porte la requête concrète de l’utilisateur
  • Le rôle assistant sert à la fois d’historique et de guide pour le format de réponse
  • Le rôle tool gère les retours de function calling
  • L’ordre des messages est crucial : system en premier, puis alternance user/assistant