Fonctionnement de l’ingénierie de prompts
En raison de la façon dont les modèles OpenAI sont entraînés, certains formats de prompts fonctionnent particulièrement bien et produisent des sorties de modèle plus utiles. Le guide officiel d’ingénierie de prompts d’OpenAI est généralement le meilleur point de départ pour obtenir des conseils sur les prompts.
Ci-dessous, nous présentons plusieurs formats de prompts que nous jugeons efficaces, mais n’hésitez pas à explorer d’autres formats, qui pourraient mieux convenir à votre tâche.
Règles pratiques et exemples
Remarque : « {text input here} » est un espace réservé pour le texte/contexte réel
1. Utilisez 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 à optimiser par ingénierie de prompts.
Remarque : certaines différences sont à prendre en compte lorsque l’on crée un prompt pour un modèle de raisonnement plutôt que pour un modèle GPT. Plus de détails ici.
2. Placez les instructions au début du prompt et utilisez ### ou """ pour séparer l’instruction du contexte
Moins efficace ❌ :
Résumez le texte ci-dessous sous forme de liste à puces des points les plus importants.
{text input here}Mieux ✅ :
Résumez le texte ci-dessous sous forme de liste à puces des points les plus importants.
Texte : """
{text input here}
"""3. Soyez aussi précis, descriptif et 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, axé sur le lancement récent du produit DALL-E (DALL-E est un modèle de ML texte-image), dans le style de {famous poet}4. Exprimez 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}Montrer et expliquer : les modèles répondent mieux lorsqu’on leur présente des exigences de format précises. Cela facilite également l’analyse programmatique fiable de plusieurs sorties.
Mieux ✅ :
Extrayez les entités importantes mentionnées dans le texte ci-dessous. Extrayez d’abord tous les noms d’entreprises, puis tous les noms de personnes, puis les sujets spécifiques correspondant au contenu et, enfin, les thèmes généraux transversaux
Format souhaité :
Noms d’entreprises : <comma_separated_list_of_company_names>
Noms de personnes : -||-
Sujets spécifiques : -||-
Thèmes généraux : -||-
Texte : {text}5. Commencez par le zero-shot, puis le few-shot ; si aucun des deux ne fonctionne, procédez à un affinage
✅ Zero-shot
Extrayez les mots-clés du texte ci-dessous.
Texte : {text}
Mots-clés :✅ Few-shot - fournissez quelques exemples
Extrayez les 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 comprennent et génèrent très bien 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 du texte, API.
##
Texte 3 : {text}
Mots-clés 3 :✅Affinage : consultez les bonnes pratiques de l’affinage ici.
6. Réduisez les descriptions « creuses » et imprécises
Moins efficace ❌ :
La description de ce produit doit ê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 ce qu’il ne faut pas faire, indiquez quoi faire à la place
Moins efficace ❌ :
Ce qui suit est une conversation entre un agent et un client. NE DEMANDEZ PAS DE NOM D’UTILISATEUR NI DE MOT DE PASSE. NE RÉPÉTEZ PAS.
Client : Je n’arrive pas à me connecter à mon compte.
Agent :Mieux ✅ :
Ce qui suit est une conversation entre un agent et un client. L’agent tentera de diagnostiquer le problème et de suggérer une solution, tout en s’abstenant de poser des questions liées aux données personnelles. Au lieu de demander des données personnelles, 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 : utilisez des « mots de départ » pour orienter le modèle vers un schéma particulier
Moins efficace ❌ :
# Écrire 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, l’ajout de « import » indique au modèle qu’il doit commencer à écrire en Python. (De même, « SELECT » est un bon indice pour le début d’une instruction SQL.)
Mieux ✅ :
# Écrire une fonction Python simple qui
# 1. Me demande un nombre en miles
# 2. Convertit les miles en kilomètres
import9. Utilisez la fonctionnalité Générer n’importe quoi
Les développeurs peuvent utiliser la fonctionnalité 'Générer n’importe quoi' pour décrire une tâche ou une sortie en langage naturel attendue, et recevoir un prompt adapté.
En savoir plus sur l’utilisation de la fonctionnalité 'Générer n’importe quoi'.
Paramètres
En général, 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 coûteux et peuvent présenter une latence plus élevée.
`temperature` - Une mesure de la fréquence à laquelle le modèle produit un token moins probable. Plus la
temperatureest élevée, plus la sortie est aléatoire (et généralement créative). Cela ne correspond toutefois pas à la « véracité ». Pour la plupart des cas d’usage factuels, comme l’extraction de données et les questions-réponses véridiques, unetemperaturede 0 est préférable.`max_completion_tokens` (longueur maximale) - Ne contrôle pas la longueur de la sortie, mais fixe une limite stricte à la génération de tokens. Idéalement, vous atteindrez rarement cette limite, car votre modèle s’arrêtera soit lorsqu’il estimera avoir terminé, soit lorsqu’il atteindra une séquence d’arrêt que vous avez définie.
`stop` (séquences d’arrêt) - Un ensemble de caractères (tokens) qui, une fois générés, arrêtent la génération du texte.
Pour les descriptions des autres paramètres, consultez la référence de l’API.
