Aller au contenu principal

Prompts systeme

Quand vous construisez un chatbot IA pour un cas d’usage specifique, vous avez besoin d’un moyen de controler le comportement de l’assistant. Les prompts systeme sont la cle pour transformer une IA generaliste en un assistant specialise qui respecte des consignes precises.

Le probleme des instructions dans le message utilisateur

Vous pourriez inclure toutes vos exigences directement dans le message utilisateur : “mentionne les services AWS”, “ne cite pas de concurrents”. Cette approche a des limites serieuses :

  • Il faudrait anticiper chaque question et cas de figure possible
  • La liste d’instructions devient vite ingerable et repetitive
  • L’utilisateur voit toutes les instructions internes
  • Les exigences changent selon la question posee

Le prompt systeme : une meilleure approche

Le prompt systeme resout ce probleme en attribuant un role a Claude. Au lieu d’enumerer des regles specifiques, vous lui dites d’agir comme un certain type de professionnel. L’IA repond alors naturellement comme cette personne le ferait.

Avantages :

  • Claude recoit des consignes coherentes sur comment repondre
  • L’IA adopte l’etat d’esprit et les contraintes du role specifie
  • Les reponses restent centrees et professionnelles automatiquement
  • Pas besoin d’anticiper chaque scenario possible

Implementation

Le prompt systeme se passe en parametre de la fonction converse :

system_prompt = """
Vous etes un specialiste du support cloud AWS. Votre role est de repondre
aux questions des utilisateurs concernant les services d'hebergement cloud sur AWS.
"""

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

Le parametre system attend une liste contenant un dictionnaire avec une cle "text".

Fonction chat flexible

Voici une version reutilisable qui gere le prompt systeme de facon elegante :

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

    if system:
        params["system"] = [{"text": system}]

    response = client.converse(**params)

    return response["output"]["message"]["content"][0]["text"]

Sans prompt systeme, Claude repond en tant qu’assistant generaliste. Avec un prompt systeme, il adopte le role specifie.

En pratique

La difference est flagrante. Demandez “Comment heberger une base Postgres ?” sans prompt systeme : vous obtenez une reponse couvrant plusieurs fournisseurs cloud et l’auto-hebergement.

Avec le prompt systeme du specialiste AWS, la reponse se concentre exclusivement sur les solutions AWS (RDS, Aurora, EC2). Aucun concurrent mentionne.

Encore plus revelateur : posez une question hors-sujet comme une recette de pain. Claude decline poliment tout en restant dans son role.

Details techniques importants

  • Les prompts systeme ne peuvent pas etre des chaines vides (au moins un caractere)
  • Le parametre system attend une liste de dictionnaires avec des cles "text"
  • Les prompts systeme sont traites avant tout message utilisateur
  • Vous pouvez modifier le prompt systeme entre les conversations, mais pas en cours de conversation