Prompter efficacement (Partie 3)

À la une : DeepSeek-V3-0324 prend la tête des classements

 

Au menu d’aujourd’hui :

  • 🎓 Prompter efficacement (Partie 3)

  • 🗞️ À la une : DeepSeek-V3-0324 prend la tête des classements

  • 📮 7 autres news en bref

  • 💎 5 ressources de la semaine

Dernière partie de cette série sur le prompt engineering !

🎓 Prompter efficacement (Partie 3)

Dans les parties 1 et 2 de cette série sur le prompt engineering, on a vu les bonnes pratiques suivantes :

  • 1️⃣ Écris tes prompts en anglais (même si ton besoin est en français)

  • 2️⃣ Donne un rôle (ou un persona) au LLM

  • 3️⃣ Structure ton prompt avec des délimiteurs clairs

  • 4️⃣ Adapte ton prompt au modèle utilisé

  • 5️⃣ Reste en maîtrise de la mémoire de travail

  • 6️⃣ Demande au LLM qu’il te pose des questions

Voici les liens pour accéder aux parties 1 et 2.

On continue avec les 4 derniers conseils de cette série pour faire des prompts efficaces.

Allez, c’est parti 👇

7️⃣ Répète les instructions importantes à la fin du prompt

Tu l’as peut-être déjà expérimenté.

Tu écris un prompt avec de belles instructions, tu le lances, le LLM a quasiment tout bien fait, sauf un petit détail qui n’a pas été respecté.

Dans cet exemple, le texte renvoyé par le LLM ne commençait pas par une balise <h3> alors qu’on l’a bien demandé dans les instructions.

Tu recommences avec le même prompt mais en répétant l’instruction qu’il n’a pas suivi à la fin du prompt et là…

Ça marche !

Alors pourquoi ça marche ?

Il y a deux raisons principales qui expliquent ce phénomène :

1/ L'instruction n'était pas assez clairement formulée

Elle était peut-être noyée dans d'autres instructions, et le fait de l'ajouter explicitement dans sa propre phrase simplifie la compréhension pour le LLM.

Dans notre exemple, on n'avait peut-être pas assez explicitement demandé de commencer par une balise <h3> dans les instructions initiales.

2/ L’instruction a été “Lost in the middle”

Plusieurs études ont démontré que les LLM accordent plus de poids aux instructions les plus récentes qu'ils ont vues — c’est ce qu'on appelle le biais de récence.

L’utilisation de l’expression “Lost in the middle” provient du papier de recherche “Lost in the Middle : How Language Models Use Long Contexts” où des chercheurs de Stanford ont mis en évidence ce biais de récence déjà présent sur GPT-3.5.

L'expérience consistait à donner au LLM un contexte (des documents avec du texte) et une question précise sur ce contexte.

La partie en gras correspond au document contenant la bonne réponse

Ils ont fait varier la position de la bonne réponse dans le contexte et ont observé ceci :

“Changer l'emplacement d'une information pertinente (dans ce cas, la position du passage répondant à une question donnée) au sein du contexte d'entrée du modèle de langage entraîne une courbe de performance en forme de U : les modèles exploitent mieux les informations pertinentes situées au tout début (biais de primauté) ou à la toute fin (biais de récence) de leur contexte d'entrée, et leurs performances diminuent considérablement lorsqu'ils doivent accéder à une information placée au milieu de ce contexte.”

Et voilà la courbe en forme de “U” :

Cette étude nous montre donc que les LLM ont plus de facilité à exploiter l'information donnée au début ou à la fin d'un prompt, en particulier lorsque le contexte est long.

💡 À noter : Il est difficile de trouver des études statistiques sur les modèles les plus récents, et il est probable que ce biais de récence soit moins marqué voire complètement corrigé sur les dernières générations. En pratique, on observe quand même que remettre les instructions importantes à la fin améliore les résultats.

Comment faire en pratique ?

Personnellement j’utilise souvent une section # Important Notes à la fin de mes prompts où je remets les instructions importantes, en particulier celles concernant le format.

C’est aussi cette section que je vais modifier en premier lorsque j’itère sur mon prompt.

Voilà à quoi ça pourrait ressembler :

# Role

# Context

# Task

* Write a text in french explaining the concept of Retrieval-Augmented-Generation, simple to understand using the raw notes provided etc.

# Exemples

# Output format

# Important notes

* Write in french
* Make sure to use simple and educational langage
* etc.

# Raw notes

---
* L’astérisque "* est l’équivalent du bullet point en langage markdown (cf partie 1)

💡 Conseil pratique : Remets systématiquement les instructions importantes à la fin de ton prompt pour maximiser leurs chances d'être respectées.

8️⃣ Fait du prompt chaining pour les cas complexes

Le prompt chaining consiste à créer une chaîne de prompts où l'output du premier prompt devient une partie de l'input du second, et ainsi de suite.

Voici un exemple concret : pour l'écriture d'un récit, on commence par générer un résumé, puis à partir de ce résumé on génère des personnages, ensuite à partir du résumé et des personnages, on développe une trame... jusqu'à l'obtention d'un dialogue complet.

Décomposer une tâche complexe en plusieurs prompts à plusieurs avantages :

  • Précision : Le LLM se concentre pleinement sur chaque sous-tâche, ce qui limite les risques d’erreurs.

  • Clarté : En découpant en petites tâches simples, tu donnes des consignes plus précises et obtiens des résultats plus ciblés.

  • Traçabilité : Tu peux facilement repérer et corriger les problèmes à chaque étape de ta chaîne de prompts.

Un exemple pratique tiré de la documentation d'Anthropic

Imaginons que nous voulions analyser un contrat légal et rédiger le brouillon d'un email avec des suggestions de modification sur ce contrat.

Version sans prompt chaining : On demande au LLM de tout faire en un seul prompt.

La réponse nous donne une analyse du contrat et le brouillon d'email combinés :

Version avec prompt chaining : On découpe la tâche en 3 prompts distincts :

1️⃣ Premier prompt pour analyser le contrat :

2️⃣ Deuxième prompt pour rédiger le brouillon d'email :

3️⃣ Troisième prompt pour améliorer la forme :

Le résultat est beaucoup plus détaillé et convaincant.

Quand utiliser le prompt chaining ?

Je te propose une règle simple : si en faisant la tâche toi-même tu aurais tendance à la découper en plusieurs sous-tâches, c'est probablement une bonne idée de faire du prompt chaining.

Cette technique est particulièrement efficace pour :

  • Les tâches de recherche et de synthèse

  • L'analyse de documents complexes

  • La création de contenu élaboré

💡 Conseil pratique : Décompose tes tâches complexes en prompts séparés et indépendants pour gagner en précision et en contrôle.

9️⃣ Utilise un LLM pour améliorer ton prompt

Et oui ! Les LLM sont particulièrement doués pour générer des prompts, car un prompt n'est rien d'autre que du texte, leur spécialité.

Cette approche meta peut considérablement améliorer tes prompts et te faire gagner beaucoup de temps.

Plusieurs stratégies possibles :

1/ Le mode “rapide”

Tu prends ton prompt (finalisé ou non) et tu demandes à un modèle de langage de l’améliorer.

Tu peux rester généraliste avec une formulation du type “improve the following prompt :” ou lui demander d’améliorer une partie spécifique, comme :

  • Ajouter des exemples pertinents

  • Améliorer la section "Instructions" en fonction de ton objectif

  • Traduire en anglais pour une meilleure performance

  • etc.

2/ Créer son propre GPT de création de prompt

Si tu souhaites que tes prompts soient toujours structurés de la même manière en respectant certaines recommandations, tu peux créer un GPT personnalisé qui encapsule toutes ces règles.

Cette technique est particulièrement utile pour écrire des prompts d'orchestration d'agents (sur Relevance.ai par exemple) où la structure est systématiquement la même.

💡 À noter : Avec cette technique, il faut s'assurer d'être bien à jour sur les bonnes pratiques de création de prompts. Par exemple, avant l'arrivée des modèles de raisonnement, il était recommandé de demander aux LLMs d'expliquer leur raisonnement étape par étape pour imiter le "chain of thought". Aujourd'hui, ce serait contre-productif avec un modèle de raisonnement puisqu'il le fait déjà intrinsèquement.

3/ Utiliser les générateurs de prompt de OpenAI et Anthropic

La plupart des créateurs de LLMs proposent désormais des outils de génération de prompts qui intègrent toutes les bonnes pratiques spécifiques à leurs modèles.

OpenAI : Accessible via le Playground sur platform.openai.com

Anthropic : Disponible sur console.anthropic.com avec deux options principales

  • Générer un prompt à partir d’une description du résultat souhaité

  • Améliorer un prompt existant

💡 Conseil pratique: N'hésite pas à demander aux LLM d'améliorer tes prompts, ils excellent dans cette tâche.

1️⃣0️⃣ Itère et affine le prompt progressivement

Le prompt engineering est une discipline naissante qui comporte :

  • Un peu de théorie sur les grands principes à connaître (si tu as lu jusqu'ici, tu maîtrises déjà 95% de ce qu'il faut savoir)

  • Et beaucoup de pratique pour trouver le style qui te convient personnellement

Il suffit parfois de petits changements sur un prompt pour obtenir les résultats attendus.

Deux contextes d'amélioration distincts :

  1. L'optimisation d'un prompt pour un usage personnel (quand tu utilises ChatGPT au quotidien)

  2. L'optimisation d'un prompt destiné à être utilisé en production de manière répétée

Pour les prompts de production, il est fortement recommandé d'utiliser des outils qui permettent d'évaluer tes prompts sur des jeux de données de test.

Le principe est simple :

  • Le dataset de test contient des paires d'inputs et d'outputs attendus

  • L'outil de comparaison exécute ton prompt sur ces données d'input et compare les résultats obtenus avec les résultats attendus

  • Un score objectif est attribué à chaque version de ton prompt

💡 À noter : On peut évaluer non seulement différentes versions de prompts, mais aussi l'impact des changements de modèles ou de paramètres (température, top P, etc.)

Certains créateurs de LLM comme OpenAI proposent des outils d’évaluation natifs (qui fonctionnent exclusivement avec leurs modèles) :

D’autres outils (comme Basalt ou PromptLayer) sont spécialisés sur cette étape d’évaluation et fonctionnent avec tous les principaux modèles du marché.

Récapitulons…

 📌 Les 10 commandements du prompt engineering

  • 1️⃣ Écris tes prompts en anglais (même si ton besoin est en français)

  • 2️⃣ Donne un rôle (ou un persona) au LLM pour orienter ses réponses

  • 3️⃣ Structure ton prompt avec des délimiteurs clairs pour une meilleure lisibilité

  • 4️⃣ Adapte ton prompt au modèle utilisé pour exploiter ses forces

  • 5️⃣ Reste en maîtrise de la mémoire de travail pour des réponses cohérentes

  • 6️⃣ Demande au LLM qu'il te pose des questions pour affiner sa compréhension

  • 7️⃣ Répète les instructions importantes à la fin pour profiter du biais de récence

  • 8️⃣ Utilise le prompt chaining pour décomposer les tâches complexes

  • 9️⃣ Fais appel aux LLM pour améliorer tes prompts (c'est méta, mais ça fonctionne !)

  • 1️⃣0️⃣ Itère progressivement en testant et en affinant tes prompts

Si tu as manqué les précédents épisodes, tu peux consulter la première partie et la deuxième partie de cette série sur le prompt engineering.

Si ces conseils t'ont été utiles, n'hésite pas à partager cette newsletter avec tes collègues et amis passionnés d'IA.

🗞️ À la une

  • DeepSeek vient de dévoiler DeepSeek-V3-0324, un modèle de langage surpassant ses concurrents en raisonnement et programmation, notamment Claude 3.7 Sonnet, tout en étant beaucoup plus économique avec un coût de $0.14 par million de tokens contre $3 pour Claude.

  • Utilisant une architecture "Mixture-of-Experts" innovante de 685B paramètres dont seulement 37B sont activés simultanément, le modèle est disponible en open source sous licence MIT sur Hugging Face et accessible via OpenRouter pour des tests directs.

📮 Autres news en bref

💎 Ressources

🎤 À toi le micro

Voilà, c’est la fin de cette 20ème édition de A Kind of Magic, j’espère qu’elle t’a été utile.

N’hésite pas à la partager si c’était le cas.

Dispo pour échanger en réponse à cet e-mail ou sur Linkedin.

À jeudi !

Jean-Charles