Aller au contenu principal
Leçon 6 sur 67 · Claude sur Amazon Bedrock

Prompts système

Leçon 6 sur 67 Mis à jour le 5 novembre 2026 Développeur
Sur cette page
  1. Pourquoi pas dans le message utilisateur
  2. Donner un rôle
  3. Le paramètre system
  4. Une fonction chat plus souple
  5. En pratique
  6. Détails techniques
  7. À vous de jouer
  8. Points clés à retenir

Quand vous construisez un assistant pour un usage précis, il vous faut un moyen de cadrer ses réponses : pas question qu’un support AWS recommande la concurrence ou se lance dans les recettes de cuisine. Le prompt système transforme un assistant généraliste en spécialiste qui suit vos consignes, conversation après conversation.

Pourquoi pas dans le message utilisateur

L’approche naïve consiste à glisser toutes les exigences dans le message de l’utilisateur : « parle des services AWS », « ne cite pas de concurrents ». Elle a vite ses limites. Il faudrait anticiper chaque question, la liste de consignes devient ingérable, et l’utilisateur voit vos instructions internes. Les consignes de l’application n’ont rien à faire dans le canal de l’utilisateur.

Donner un rôle

Le prompt système attribue un rôle à Claude. Au lieu d’énumérer des règles, vous lui dites d’agir comme un certain professionnel, et il répond comme cette personne le ferait. Un rôle contient implicitement beaucoup de règles : « spécialiste du support cloud AWS » implique de parler d’AWS, de ne pas vanter la concurrence, de rester professionnel et de décliner le hors-sujet, sans qu’aucune de ces règles soit écrite. Le rôle généralise là où une liste de règles ne couvre que le cas prévu.

Le paramètre system

Le prompt système passe par le paramètre system de converse, séparé des messages :

system_prompt = """Vous êtes un spécialiste du support cloud AWS.
Votre rôle est de répondre aux questions des utilisateurs sur l'hébergement cloud avec AWS."""

response = client.converse(
    modelId=model_id,
    messages=messages,
    system=[{"text": system_prompt}],
)

Comme content, system attend une liste de blocs, ici un seul bloc de texte. Cette séparation a du sens : le prompt système n’appartient pas à la conversation, l’utilisateur ne le voit pas, et il s’applique à chaque tour.

Une fonction chat plus souple

Intégrons-le à la fonction de la leçon 5, avec un dictionnaire de paramètres construit par étapes :

def chat(messages, system=None):
    params = {"modelId": model_id, "messages": messages}
    if system:
        params["system"] = [{"text": system}]

    response = client.converse(**params)
    content = response["output"]["message"]["content"]
    return "".join(block["text"] for block in content if "text" in block)

L’appelant passe une simple chaîne et la fonction l’emballe au bon format. Sans prompt système, le paramètre est absent de la requête et Claude répond en généraliste. Ce dictionnaire construit par étapes accueillera chaque nouvelle option : séquences d’arrêt, sorties structurées, outils.

En pratique

Le même assistant, avec et sans rôle Deux colonnes : sans prompt système, la question sur Postgres reçoit une réponse multi-fournisseurs et la recette de pain une recette ; avec le rôle de spécialiste AWS, la réponse se limite à RDS, Aurora ou EC2 et la recette est poliment déclinée. PROMPTS SYSTÈME Le même assistant, avec et sans rôle Sans prompt système « Héberger Postgres ? » Plusieurs fournisseurs cloud et l'auto-hébergement. « Une recette de pain ? » Une recette. Spécialiste du support AWS « Héberger Postgres ? » RDS, Aurora ou EC2, sans concurrent cité. « Une recette de pain ? » Un refus poli, dans le rôle. Le rôle implique des règles qu'aucune ligne du prompt n'écrit.
D'après la leçon « System prompts » (Claude Academy, Claude with Amazon Bedrock).

Demandez « Comment héberger une base Postgres ? » sans prompt système : la réponse couvre plusieurs fournisseurs cloud et l’auto-hébergement. Avec le rôle de spécialiste AWS, elle se concentre sur les solutions d’AWS, comme RDS, Aurora ou une installation sur EC2, et ne cite aucun concurrent. Plus révélateur encore, demandez une recette de pain : Claude décline poliment en restant dans son rôle. Personne ne lui a interdit les recettes ; le rôle l’implique.

Détails techniques

  • Le texte d’un bloc système ne peut pas être vide : au moins un caractère.
  • system attend une liste de dictionnaires, chacun avec une clé "text".
  • Le prompt système est lu avant tous les messages de la conversation.
  • Vous pouvez changer le prompt système d’une requête à l’autre, mais pas au milieu d’une même liste de messages.

Sur l’API Claude directe, certains modèles récents acceptent aussi des messages système au milieu de la conversation. Avec l’API Converse, les consignes système passent uniquement par le paramètre system ; d’après la documentation d’Anthropic, cette fonctionnalité n’existe sur Bedrock que par l’API InvokeModel, pour certains modèles.

À vous de jouer

Avant, après. Posez les trois questions de la leçon (Postgres, une recette de pain, puis une question de votre choix) sans prompt système, puis avec celui du spécialiste AWS. Comparez les réponses.

Votre propre rôle. Écrivez le prompt système d’un assistant pour votre métier, en trois phrases au plus. Testez-le sur une question dans son domaine et sur une question hors sujet : décline-t-il comme vous le souhaitez ?

Sources officielles : System prompts (Claude Academy) · API Converse (documentation AWS) · Claude on Amazon Bedrock (Opus 4.6 and earlier) et Mid-conversation system messages (documentation Claude)

Points clés à retenir

  • Les consignes de l’application vont dans le prompt système, jamais dans les messages de l’utilisateur.
  • Un rôle bien choisi implique beaucoup de règles sans les écrire et généralise aux cas imprévus.
  • Format Converse : system=[{"text": ...}], ajouté à la requête seulement s’il existe.
  • Le prompt système se change entre deux requêtes, pas au milieu d’une liste de messages.