Quelques méthodes pour tirer le meilleur des modèles GPT
Comment améliorer les résultats que fournissent les modèles GPT ? Voici quelques bonnes pratiques issues de la documentation d'OpenAI.
Extraire efficacement des connaissances ? Il y a la recherche vectorielle pour ça. En tout cas sur l'API d'OpenAI... qui liste d'autant plus logiquement la technique dans son guide de bonnes pratiques pour les modèles GPT.
Ledit guide se structure à l'image des frameworks de MITRE, qui segmentent l'analyse des menaces de sécurité informatique en « techniques » elles-mêmes divisées en « tactiques ». À ceci près que dans la nomenclature d'OpenAI, on parle, au premier niveau, de « stratégies ». Elles sont au nombre de six :
Donner des instructions claires
Fournir des sources
Diviser les tâches
Laisser « réfléchir » le modèle
Exploiter des outils externes
Tester systématiquement les changements
Délimiter, diviser, contextualiser
Sur la partie « Donner des instructions claires », le premier conseil est le plus évident : mettre des détails et du contexte. Parmi les exemples que donne OpenAI, « Écris du code pour calculer la suite de Fibonacci ». Les résultats seront meilleurs avec un prompt de type « Écris une fonction TypeScript pour calculer efficacement la suite de Fibonacci. Commente le code pour expliquer le rôle de chaque fragment et pourquoi tu l'as codé ainsi. »
On peut aussi demander au modèle de jouer un rôle (persona). Parmi les exemples que donne OpenAI, il y a le suivant, à transmettre en utilisant le rôle system : « Quand je demande de l'aide pour écrire quelque chose, tu répondras avec un document qui contient au moins une blague ou un commentaire espiègle par paragraphe. »
Utiliser des délimiteurs - à renseigner éventuellement, là aussi, par l'intermédiaire du rôle system - est une autre possibilité. Le choix peut être assez arbitraire aussi longtemps qu'on est précis dans les instructions. Dans les exemples qu'OpenAI fournit, des balises XML sont mises à contribution, tout comme des guillemets triples et des mots-clés de type « Titre:»/« Résumé: ».
Autre tactique : préciser les étapes requises pour réaliser une tâche. Cela peut donner un message system tel que :
Utilise les étapes suivantes pour répondre aux commandes
Étape 1 - L'utilisateur te fournira du texte entre guillemets triples. Résume ce texte en une phrase avec le préfixe « Résumé : »
Étape 2 - Traduis le résumé de l'étape 1 en espagnol, avec un préfixe « Traduction : »
Spécifier la longueur de réponse souhaitée peut également aider. Les modèles GPT ont toutefois du mal à se caler sur un nombre de mots. Cela fonctionne mieux avec un nombre de paragraphes ou de bullet points.
Apporter sa propre matière
Pour ce qui est de fournir des sources, OpenAI suggère deux éléments. D'une part, demander au modèle de répondre en utilisant un document de référence. De l'autre, associer à ses réponses des citations issues de ce même document. Dans le premier cas, cela peut donner le prompt suivant, communicable au rôle system :
Utilise les articles fournis, délimités par des guillemets triples, pour répondre aux questions. Si la réponse n'est pas dans les articles, écris « Je n'ai pas trouvé de réponse ».
La fenêtre de contexte des modèles GPT est limitée. La recherche vectorielle se prête ici idéalement à la récupération dynamique d'informations pertinentes par rapport aux questions.
Diviser le travail
Dans le cadre de tâches susceptibles d'occasionner des requêtes très variées, on peut mettre à profit les capacités de classification des modèles GPT pour catégoriser ces requêtes. On aura, au préalable, défini « en dur » une liste de catégories assortie des instructions utiles pour traiter les requêtes relevant de ces différentes catégories.
OpenAI donne l'exemple suivant :
On va te fournir des requêtes de service client. Classe chacune dans une catégorie principale et une catégorie secondaire. Réponds au format JSON avec les clés « principale » et « secondaire »
[Liste de catégories principales et secondaires ; et, pour chacune, les instructions associées]
Ce processus peut aussi être appliqué récursivement pour décomposer une tâche. Chaque requête ne contiendra ainsi que les instructions nécessaires pour réaliser l'étape suivante. Par rapport à une requête unique, cela peut faire baisser autant le taux d'erreurs que le coût.
Une autre tactique incluse dans le guide concerne les dialogues impliquant de longues conversations. Elle consiste à résumer ou filtrer l'historique. Là encore en raison de la fenêtre de contexte limitée. On peut faire en sorte que l'opération se réalise de façon asynchrone, en arrière-plan, pendant la discussion. Ou bien la déclencher lorsqu'on atteint un palier. Par exemple, quand une entrée dépasse une longueur donnée. Ou encore sélectionner dynamiquement les parties les plus pertinentes de l'historique - une solution qui passe à nouveau par la recherche vectorielle.
En miroir, on peut aussi résumer les documents fournis aux modèles GPT. Pour rester sur le modèle récursif, on peut procéder par sections à l'aide d'une suite de requêtes, puis concaténer les résultats... et les résumer.
Faire raisonner GPT
Les modèles GPT savent-ils évaluer la solution qu'un étudiant a donnée à un problème de maths ? OpenAI présente un cas dans lequel ils y arrivent... à condition d'avoir d'abord trouvé eux-mêmes la solution.
Pour éviter que le modèle ne révèle son raisonnement à l'utilisateur, OpenAI recommande la technique dite du « monologue intérieur ». Dans les grandes lignes, le modèle va adopter un format spécifique pour les éléments à masquer, puis procéder à un filtrage avant de présenter les résultats.
Lire aussi : Du RAG aux agents, les choix GenAI de Doctolib
Solution dérivée : s'appuyer sur une suite de requêtes dont toutes sauf la dernière masquent leur résultat.
GPT et au-delà
Outre la technique de la recherche vectorielle, OpenAI évoque le « réflexe API » pour faire appel à des services externes. Il en donne l'illustration sur une faiblesse bien connue des modèles génératifs : le raisonnement arithmétique. Option alternative : plutôt que de fournir un calcul, demander d'écrire du code qui pourra résoudre le calcul.
Quant à « tester les changements », OpenAI donne principalement une technique permettant aux modèles GPT d'évaluer leurs réponses par rapport à un standard. L'idée de base : donner au modèle des informations auxquelles il devrait faire référence et lui demander de vérifier si c'est bien le cas. Rien n'empêche d'entrer davantage dans les détails, par exemple en faisant vérifier aux modèles s'ils ont au moins une partie de la réponse.
Photo d'illustration © vladdeep - Adobe Stock
Sur le même thème
Voir tous les articles Data & IA