Prompt Engineering
L'art de communiquer efficacement avec les LLM
Le prompt engineering est l'art de formuler des instructions pour obtenir les meilleures réponses des LLM. C'est une compétence clé pour exploiter leur potentiel.
Principes fondamentaux
Soyez précis et explicite
Les LLM ne lisent pas dans vos pensĂ©es. Plus vous ĂȘtes prĂ©cis, meilleur est le rĂ©sultat.
â "Ăcris un texte sur les chats"
â "Ăcris un article de blog de 300 mots sur les bienfaits
d'avoir un chat comme animal de compagnie, destinĂ© Ă
des familles avec enfants. Ton amical et informatif."Donnez du contexte
â "Traduis : 'The bank was steep'"
â "Traduis en français, dans un contexte de randonnĂ©e en
montagne : 'The bank was steep'"
â "La berge Ă©tait escarpĂ©e" (et non "La banque")SpĂ©cifiez le format de sortie
"Analyse les sentiments de ces avis clients.
Réponds en JSON avec le format :
{
'avis': 'texte original',
'sentiment': 'positif|négatif|neutre',
'score': 0.0-1.0,
'mots_clés': ['mot1', 'mot2']
}"Structure d'un bon prompt
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â STRUCTURE DE PROMPT â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ€
â â
â 1. RĂLE / PERSONA â
â "Tu es un expert en marketing digital..." â
â â
â 2. CONTEXTE â
â "Notre entreprise vend des produits bio..." â
â â
â 3. TĂCHE â
â "RĂ©dige une stratĂ©gie de lancement..." â
â â
â 4. CONTRAINTES â
â "Maximum 500 mots, ton professionnel..." â
â â
â 5. FORMAT DE SORTIE â
â "Structure en 3 parties avec bullet points..." â
â â
â 6. EXEMPLES (optionnel) â
â "Voici un exemple de ce que j'attends..." â
â â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââTechniques avancĂ©es
Few-shot Learning
Donner des exemples pour guider le modĂšle.
Classifie le sentiment de ces phrases :
Phrase: "Ce restaurant est excellent !"
Sentiment: Positif
Phrase: "Service lent et nourriture froide"
Sentiment: Négatif
Phrase: "La pizza était correcte"
Sentiment: Neutre
Phrase: "J'ai adoré l'ambiance et la carte des vins"
Sentiment:Zero-shot avec instruction
Sans exemple, mais avec des instructions claires.
Tu es un classificateur de sentiment.
Réponds uniquement par : Positif, Négatif, ou Neutre.
Phrase à analyser : "Le film était vraiment captivant"
Sentiment :Chain-of-Thought (CoT)
Demander au modÚle de raisonner étape par étape.
â "Combien y a-t-il de lettres 'r' dans 'strawberry' ?"
â RĂ©ponse souvent fausse
â "Combien y a-t-il de lettres 'r' dans 'strawberry' ?
Réfléchis étape par étape en listant chaque lettre."
â s-t-r-a-w-b-e-r-r-y
â Position 3: r, Position 8: r, Position 9: r
â Il y a 3 lettres 'r'Self-Consistency
Générer plusieurs réponses et prendre la plus fréquente.
responses = []
for _ in range(5):
response = llm.generate(prompt, temperature=0.7)
responses.append(response)
# Prendre la réponse majoritaire
from collections import Counter
final_answer = Counter(responses).most_common(1)[0][0]Tree of Thoughts
Explorer plusieurs pistes de raisonnement.
ProblĂšme : [...]
Approche 1 :
- Ătape 1a : ...
- Ătape 1b : ...
- Conclusion 1 : ...
Approche 2 :
- Ătape 2a : ...
- Ătape 2b : ...
- Conclusion 2 : ...
Meilleure approche : Approche 1 car...Prompts systĂšme
Le system prompt définit le comportement global du modÚle.
messages = [
{
"role": "system",
"content": """Tu es un assistant juridique spécialisé en droit français.
RĂšgles :
- Cite toujours les articles de loi pertinents
- Précise quand une consultation avec un avocat est nécessaire
- Ne donne jamais de conseil médical
- Réponds en français formel"""
},
{
"role": "user",
"content": "Quels sont mes droits en cas de licenciement ?"
}
]Exemples de system prompts
Assistant code :
Tu es un développeur senior expert en Python.
- Ăcris du code propre, documentĂ© et testĂ©
- Utilise les type hints
- Suis les conventions PEP 8
- Explique les choix techniquesRédacteur :
Tu es un rédacteur web SEO.
- Ăcris des textes optimisĂ©s pour le rĂ©fĂ©rencement
- Utilise les mots-clés naturellement
- Structure avec des titres H2/H3
- Vise 1500-2000 mots par articlePatterns de prompts
Le pattern CRISPE
C - Contexte : Situation et background
R - RĂŽle : Qui est le modĂšle
I - Instructions : Ce qu'il doit faire
S - Style : Ton et format
P - Persona : Ă qui il s'adresse
E - Exemples : IllustrationsLe pattern RISEN
R - RĂŽle : "Tu es un data scientist senior"
I - Instructions : "Analyse ce dataset"
S - Steps : "1. Nettoie 2. Explore 3. Visualise"
E - End goal : "Objectif : identifier les tendances"
N - Narrowing : "Focus sur les 6 derniers mois"Prompts pour tùches spécifiques
Résumé
Résume ce texte en 3 bullet points principaux.
Chaque point doit faire maximum 20 mots.
Conserve les chiffres clés.
Texte :
[...]Traduction
Traduis ce texte de l'anglais vers le français.
Conserve le registre de langue (formel/informel).
Adapte les expressions idiomatiques.
N'ajoute pas d'explications.
Texte Ă traduire :
[...]Extraction d'information
Extrais les informations suivantes de ce texte :
- Nom de l'entreprise
- Date de création
- Secteur d'activité
- Chiffre d'affaires
- Nombre d'employés
Si une information n'est pas disponible, indique "Non mentionné".
Réponds en JSON.
Texte :
[...]Génération de code
Ăcris une fonction Python qui [description].
Contraintes :
- Python 3.10+
- Pas de dépendances externes
- GĂšre les cas d'erreur
- Inclus des docstrings
- Ajoute 3 tests unitaires
```python
def fonction_name(...):
...
### Analyse critiqueAnalyse ce plan d'affaires en identifiant :
- Points forts (3 minimum)
- Points faibles (3 minimum)
- Risques potentiels
- Recommandations d'amélioration
Sois constructif mais honnĂȘte.
Plan : [...]
## Ăviter les piĂšges
### Hallucinationsâ "Dis-moi tout sur l'entreprise XYZ123Corp" â Le modĂšle peut inventer
â "Si tu as des informations sur XYZ123Corp, partage-les. Sinon, indique clairement que tu n'as pas cette information."
### Biais de confirmationâ "Prouve que [opinion controversĂ©e] est vraie"
â "PrĂ©sente les arguments pour et contre [sujet], avec les sources et le niveau de consensus scientifique"
### Dérive de conversationPour les conversations longues, rappeler le contexte :
"Pour rappel, nous travaillons sur [projet X] et nous en étions à [étape Y]. Maintenant, passons à ..."
## Itération et optimisation
### Processus d'amĂ©lioration- Prompt initial â
- Tester sur plusieurs cas â
- Identifier les Ă©checs â
- Ajuster le prompt â
- Répéter jusqu'à satisfaction
### A/B Testing
```python
prompts = {
"v1": "Résume ce texte",
"v2": "Résume ce texte en 3 points",
"v3": "Tu es un expert. Résume ce texte en 3 points clés"
}
results = {}
for name, prompt in prompts.items():
responses = [llm.generate(prompt + text) for text in test_set]
results[name] = measure_quality(responses)
best_prompt = max(results, key=results.get)Outils et ressources
Librairies
# LangChain pour les templates
from langchain.prompts import PromptTemplate
template = PromptTemplate(
input_variables=["topic", "length"],
template="Ăcris un article de {length} mots sur {topic}."
)
prompt = template.format(topic="l'IA", length=500)Prompt Management
- Langfuse : Tracking et versioning
- PromptLayer : Historique et analytics
- Weights & Biases : Expérimentation
Résumé
PROMPT ENGINEERING = Communication claire + Structure + Itération
ĂlĂ©ments clĂ©s :
âââ RĂŽle : Qui est le modĂšle
âââ Contexte : Background nĂ©cessaire
âââ TĂąche : Ce qu'on attend
âââ Format : Comment prĂ©senter la rĂ©ponse
âââ Exemples : Illustrations (few-shot)
Techniques avancées :
âââ Chain-of-Thought : Raisonnement Ă©tape par Ă©tape
âââ Few-shot : Exemples dans le prompt
âââ Self-Consistency : Plusieurs gĂ©nĂ©rations
âââ System Prompts : Comportement global
RÚgle d'or : Itérer, tester, améliorer