Comment fonctionne l’ingénierie de prompts
Du fait de la manière dont les modèles OpenAI sont entraînés, il existe des formats de prompt spécifiques qui fonctionnent particulièrement bien et conduisent à des sorties de modèle plus utiles.
Le guide officiel d’OpenAI sur l’ingénierie de prompts est généralement le meilleur point de départ pour des conseils de prompting.
Ci-dessous, nous présentons un certain nombre de formats de prompt qui, selon nous, fonctionnent bien, mais n’hésitez pas à explorer d’autres formats, qui peuvent mieux convenir à votre tâche.
Règles empiriques et exemples
Remarque : « {text input here} » est un espace réservé pour le texte/le contexte réel
1. Utiliser le modèle le plus récent
Pour de meilleurs résultats, nous recommandons généralement d’utiliser les modèles les plus récents et les plus performants. Les modèles plus récents ont tendance à être plus faciles à piloter via l’ingénierie de prompts.
Remarque : Il y a certaines différences à prendre en compte lorsqu’on rédige un prompt pour un modèle de raisonnement par rapport à un modèle GPT. Plus de détails ici.
2. Placer les instructions au début du prompt et utiliser ### ou « """ » pour séparer l’instruction du contexte
Moins efficace ❌ :
Résumez le texte ci-dessous sous forme d’une liste à puces des points les plus importants.
{text input here}Mieux ✅ :
Résumez le texte ci-dessous sous forme d’une liste à puces des points les plus importants.
Texte : """
{text input here}
"""3. Être spécifique, descriptif et aussi détaillé que possible sur le contexte, le résultat, la longueur, le format, le style, etc. souhaités
Soyez précis sur le contexte, le résultat, la longueur, le format, le style, etc.
Moins efficace ❌ :
Écrivez un poème sur OpenAI. Mieux ✅ :
Écrivez un court poème inspirant sur OpenAI, en mettant l’accent sur le récent lancement du produit DALL-E (DALL-E est un modèle de ML de génération d’images à partir de texte), dans le style de {famous poet}4. Exprimer le format de sortie souhaité au moyen d’exemples
Moins efficace ❌ :
Extrayez les entités mentionnées dans le texte ci-dessous. Extrayez les 4 types d’entités suivants : noms d’entreprises, noms de personnes, sujets spécifiques et thèmes.
Texte : {text}Montrez, et dites : les modèles répondent mieux quand on leur montre des exigences de format précises. Cela facilite aussi l’extraction et l’analyse programmatique de sorties multiples de manière fiable.
Mieux ✅ :
Extrayez les entités importantes mentionnées dans le texte ci-dessous. Commencez par extraire tous les noms d’entreprises, puis tous les noms de personnes, puis des sujets spécifiques correspondant au contenu, et enfin des thèmes généraux et transversaux
Format souhaité :
Noms d’entreprises : <liste_de_noms_d’entreprises_séparés_par_des_virgules>
Noms de personnes : -||-
Sujets spécifiques : -||-
Thèmes généraux : -||-
Texte : {text}5. Commencer par le zero-shot, puis le few-shot ; si aucun des deux ne fonctionne, alors affiner (fine-tune)
✅ Zero-shot
Extrayez des mots-clés du texte ci-dessous.
Texte : {text}
Mots-clés :✅ Few-shot — fournir quelques exemples
Extrayez des mots-clés des textes correspondants ci-dessous.
Texte 1 : Stripe fournit des API que les développeurs web peuvent utiliser pour intégrer le traitement des paiements à leurs sites web et applications mobiles.
Mots-clés 1 : Stripe, traitement des paiements, API, développeurs web, sites web, applications mobiles
##
Texte 2 : OpenAI a entraîné des modèles de langage de pointe qui sont très bons pour comprendre et générer du texte. Notre API donne accès à ces modèles et peut être utilisée pour résoudre pratiquement toute tâche impliquant le traitement du langage.
Mots-clés 2 : OpenAI, modèles de langage, traitement de texte, API.
##
Texte 3 : {text}
Mots-clés 3 :✅ Fine-tune : voir les bonnes pratiques d’affinage ici.
6. Réduire les descriptions “vaporeuses” et imprécises
Moins efficace ❌ :
La description de ce produit devrait être assez courte, quelques phrases seulement, et pas beaucoup plus.Mieux ✅ :
Utilisez un paragraphe de 3 à 5 phrases pour décrire ce produit.7. Au lieu de dire seulement quoi ne pas faire, dire quoi faire à la place
Moins efficace ❌ :
Voici une conversation entre un Agent et un Client. NE DEMANDEZ PAS DE NOM D’UTILISATEUR OU DE MOT DE PASSE. NE RÉPÉTEZ PAS.
Client : Je n’arrive pas à me connecter à mon compte.
Agent :Mieux ✅ :
Voici une conversation entre un Agent et un Client. L’agent va tenter de diagnostiquer le problème et de proposer une solution, tout en s’abstenant de poser des questions liées à des données personnelles (PII). Au lieu de demander des PII, comme un nom d’utilisateur ou un mot de passe, renvoyez l’utilisateur vers l’article d’aide www.samplewebsite.com/help/faq
Client : Je n’arrive pas à me connecter à mon compte.
Agent :8. Spécifique à la génération de code — Utiliser des “mots d’amorce” pour orienter le modèle vers un schéma particulier
Moins efficace ❌ :
# Écris une fonction Python simple qui
# 1. me demande un nombre en miles
# 2. convertit les miles en kilomètresDans l’exemple de code ci-dessous, ajouter « import » suggère au modèle qu’il doit commencer à écrire en Python. (De la même manière, « SELECT » est un bon indice pour le début d’une instruction SQL.)
Mieux ✅ :
# Écris une fonction Python simple qui
# 1. me demande un nombre en miles
# 2. convertit les miles en kilomètres
import9. Utiliser la fonctionnalité Generate Anything
Les développeurs peuvent utiliser la fonctionnalité « Generate Anything » pour décrire une tâche ou une sortie attendue en langage naturel et recevoir un prompt adapté.
En savoir plus sur l’utilisation de la fonctionnalité « Generate Anything ».
Paramètres
De manière générale, nous constatons que model et temperature sont les paramètres les plus couramment utilisés pour modifier la sortie du modèle.
model- Les modèles plus performants sont généralement plus chers et peuvent avoir une latence plus élevée.temperature- Une mesure de la fréquence à laquelle le modèle produit un token moins probable. Plus latemperatureest élevée, plus la sortie est aléatoire (et généralement créative). Cela dit, ce n’est pas la même chose que la « véracité ». Pour la plupart des cas d’usage factuels, comme l’extraction de données et les questions-réponses factuelles, unetemperatureà 0 est préférable.max_completion_tokens(longueur maximale) - Ne contrôle pas la longueur de la sortie, mais définit une limite de coupure stricte pour la génération de tokens. Idéalement, vous n’atteindrez pas souvent cette limite, car votre modèle s’arrêtera soit lorsqu’il estimera avoir terminé, soit lorsqu’il rencontrera une séquence d’arrêt que vous avez définie.stop(séquences d’arrêt) - Un ensemble de caractères (tokens) qui, lorsqu’ils sont générés, entraîneront l’arrêt de la génération de texte.
Pour d’autres descriptions de paramètres, voir la référence de l’API.
