Prompts

Comment écrire un prompt système pour Claude?

· Par Robert Scales · 4 min de lecture

Réponse courte

Un prompt système est le mandat permanent que vous donnez à Claude avant le début de la conversation : qui il est, quel travail il fait, quelles règles il suit et quels documents il doit utiliser. Écrivez-le en phrases simples, placez le matériel de référence dans des balises XML clairement nommées, avant la question de l’utilisateur, et envoyez-le par le paramètre system distinct de l’API.

Anthropic a ajouté les prompts système (system prompts) avec Claude 2.1 en novembre dernier. L’idée est simple : au lieu de répéter vos consignes dans chaque message de l’utilisateur, vous les définissez une fois, au-dessus de la conversation, et Claude les traite comme le cadre de tout ce qui suit. Anthropic dit qu’un prompt système bien écrit aide Claude à rester dans un rôle au fil de longues conversations et le rend plus susceptible de s’en tenir à ses règles et à sa tâche.

Les prompts système sont une fonction pour les développeurs. Vous les utilisez par l’API d’Anthropic, par le Workbench de sa Console ou par Amazon Bedrock. Le site de clavardage claude.ai ne les offre pas : tout ce qui suit suppose donc que vous appelez l’API.

Ce qu’on met dans un prompt système

Le guide d’Anthropic énumère les types d’éléments qu’un prompt système peut contenir. Regroupés en une liste de contrôle que vous pouvez suivre :

PartieQuoi écrireExemple
RôleQui est Claude dans ce travail« Tu es l’assistant du service d’aide du jardin communautaire Riverside. »
TâcheCe qu’il doit faire pour l’utilisateur« Réponds aux questions des membres sur les lots, les frais et les règlements. »
ContexteL’information de fond dont il a besoinQui sont les utilisateurs, ce qu’ils demandent habituellement
RèglesLimites et garde-fousRester dans le sujet, ne jamais inventer de frais, passer la main à une personne en cas de doute
StyleTon, longueur, format« Sympathique, langage simple, moins de 120 mots. »
ConnaissancesLes documents sur lesquels s’appuyerLes règlements et la grille tarifaire du jardin
VérificationsComment montrer son travail« Cite le règlement sur lequel tu t’appuies. »

Vous n’aurez pas besoin de chaque ligne chaque fois. Un court prompt système avec un rôle clair, une tâche et deux ou trois règles en fait souvent plus qu’un long prompt rempli de précautions.

Un prompt système complet

Voici un prompt système complet pour le service d’aide d’un jardin communautaire. Remarquez l’ordre : les documents d’abord, dans des balises, puis les consignes. Le guide d’Anthropic décrit le fait de placer les entrées avant la question comme essentiel pour obtenir de bons résultats avec Claude 2.1.

Prompt
Voici les documents que tu utiliseras pour répondre aux questions :

<documents>
<document index="1">
<source>Règlements du jardin communautaire Riverside, édition 2024</source>
<document_content>
[colle les règlements ici]
</document_content>
</document>
<document index="2">
<source>Frais des lots 2024</source>
<document_content>
[colle la grille tarifaire ici]
</document_content>
</document>
</documents>

Tu es l’assistant du service d’aide du jardin communautaire Riverside. Tu réponds aux questions des membres et des personnes qui songent à s’inscrire.

Règles :
- Réponds seulement à partir des documents ci-dessus. S’ils ne couvrent pas une question, dis-le et suggère d’écrire un courriel à la coordonnatrice du jardin.
- Ne devine jamais des frais, une date ou un règlement. Cite la ligne pertinente des documents dans des balises <quote>, puis donne ta réponse.
- Ne parle que des affaires du jardin. Décline poliment tout le reste.
- Écris dans un style sympathique et simple, en moins de 120 mots.

Et voici comment l’envoyer, avec la bibliothèque Python d’Anthropic et l’API Messages telle qu’elle est documentée cette semaine. Le prompt système va dans le paramètre system de premier niveau; l’API Messages n’a pas de rôle « system » dans la liste des messages.

import os
from anthropic import Anthropic

client = Anthropic(api_key=os.environ.get("ANTHROPIC_API_KEY"))

with open("garden_system_prompt.txt", encoding="utf-8") as f:
    system_prompt = f.read()

message = client.messages.create(
    model="claude-2.1",
    max_tokens=500,
    system=system_prompt,
    messages=[
        {"role": "user", "content": "Est-ce que je peux garder des poules sur mon lot?"}
    ],
)
print(message.content[0].text)

Chaque tour suivant s’ajoute à messages, en alternant user et assistant, le premier venant toujours de l’utilisateur. Le prompt système reste le même du début à la fin.

À essayer : écrivez un prompt système pour une petite tâche que vous connaissez bien, comme répondre aux questions sur les règlements de votre club. Posez-lui cinq questions, dont une à laquelle les documents ne répondent pas et une demande hors sujet. Ajustez une règle chaque fois que Claude fait quelque chose que vous n’aviez pas prévu, et gardez une copie de chaque version.

Tests et limites

Testez les cas limites, pas seulement les questions faciles. Demandez quelque chose que les documents ne couvrent pas, demandez-lui d’enfreindre une règle, et posez une question formulée comme la taperait un utilisateur pressé. Chaque échec vous indique quelle ligne du prompt système préciser.

Gardez des attentes réalistes quant au secret. Anthropic est claire : un prompt système rend Claude plus résistant aux abus, mais ne rend pas un prompt à l’épreuve des fuites. Vous pouvez placer des consignes privées dans des balises et dire à Claude de ne jamais les révéler, ce qui aide un peu, mais aucune méthode n’est garantie, et des règles de secret trop lourdes peuvent nuire au reste de la tâche. Ne mettez rien dans un prompt système qui causerait un tort réel si un utilisateur le voyait.

Pourquoi Claude réagit-il bien aux balises XML?

Les balises XML sont des étiquettes entre chevrons, comme <document> et </document>, qui marquent où un morceau de texte commence et finit. Ce n’est pas du code qui s’exécute; ce sont des panneaux indicateurs. Claude les utilise bien pour trois raisons pratiques.

D’abord, elles éliminent l’ambiguïté. Un long prompt mélange des consignes, du matériel de référence et la question de l’utilisateur. Les balises rendent les frontières explicites : une phrase à l’intérieur d’un document risque donc moins d’être prise pour une consigne de votre part. Cela compte pour les longues entrées : Claude 2.1 peut lire jusqu’à 200 000 jetons, environ 500 pages, et une structure claire l’aide à garder le fil de ce qu’est chaque partie.

Ensuite, les balises vous donnent des noms à désigner. Une fois les règlements placés dans <documents>, vous pouvez écrire « réponds seulement à partir des documents ci-dessus », et vous savez tous les deux exactement ce que cela veut dire. Le guide d’Anthropic recommande un format imbriqué précis pour plusieurs documents, avec les balises <document index>, <source> et <document_content>, pour que chaque passage porte une étiquette que vous pouvez citer.

Enfin, les balises rendent la sortie de Claude plus facile à traiter. Demander la ligne justificative dans des balises <quote>, ou une réponse finale dans des balises <answer>, permet à votre programme d’extraire chaque partie de façon fiable, et vous permet de vérifier d’un coup d’œil si le règlement cité appuie réellement la réponse. Anthropic utilise les balises de cette façon dans tous ses propres exemples : structurer un prompt avec elles, c’est donc travailler dans le format que recommandent les créateurs de Claude.

Sources

  1. How to use system prompts — Anthropic, 21 novembre 2023
  2. anthropic-sdk-python: README and message_create_params — Anthropic (GitHub), 1 mars 2024
  3. Introducing Claude 2.1 — Anthropic, 21 novembre 2023

Recevez gratuitement le Guide de l’intelligence artificielle

Abonnez-vous à l’infolettre hebdomadaire et recevez le guide gratuit : ce qui a changé en IA cette semaine, une leçon, un prompt à essayer. Désabonnement en un clic.

Ce que nous faisons de votre adresse

Retour en haut

Affichage

Vos choix sont enregistrés dans ce navigateur seulement. Aucune donnée n’est transmise.

Taille du texte
100 %
Couleurs
Lecture
Autres réglages
Déclaration d’accessibilité