Wiki IA
LLM et IA Générative

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 techniques

Ré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 article

Patterns 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 : Illustrations

Le 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 critique

Analyse ce plan d'affaires en identifiant :

  1. Points forts (3 minimum)
  2. Points faibles (3 minimum)
  3. Risques potentiels
  4. 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 conversation

Pour 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
  1. Prompt initial ↓
  2. Tester sur plusieurs cas ↓
  3. Identifier les Ă©checs ↓
  4. Ajuster le prompt ↓
  5. 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

On this page