paint-brush
Ingénierie rapide 101 - II : Maîtriser la fabrication rapide avec des techniques avancéespar@eviotti
12,921 lectures
12,921 lectures

Ingénierie rapide 101 - II : Maîtriser la fabrication rapide avec des techniques avancées

par Emiliano Viotti32m2023/06/24
Read on Terminal Reader

Trop long; Pour lire

Prompt Engineering 101 est une série de blogs méticuleusement conçue pour dévoiler les principes et les techniques de Prompt Engineering. Il englobe tout, des concepts fondamentaux aux techniques avancées, en passant par des conseils d'experts, couvrant divers modèles, de ChatGPT à Stable Diffusion et Midjourney. Dans le deuxième article de cette série, nous nous penchons sur des techniques avancées telles que la chaîne de pensée et la cohérence de soi, pour maîtriser l'artisanat rapide.
featured image - Ingénierie rapide 101 - II : Maîtriser la fabrication rapide avec des techniques avancées
Emiliano Viotti HackerNoon profile picture
0-item
1-item
2-item

L'image de couverture présente le Macintosh 128K , un ordinateur personnel introduit par Apple Inc. en 1984 qui a changé l'industrie informatique. Il incorporait l'emblématique processeur Motorola 68000 32 bits, 128 Ko de RAM et un modeste écran intégré noir et blanc.


De plus, il intègre des inventions technologiques étonnantes directement issues de Xerox PARC : la souris et la première interface utilisateur graphique de sa catégorie (grand-mère des interfaces graphiques actuelles).


Avec plus de 70 000 unités vendues, le Macintosh a joué un rôle central dans le succès d' Apple . Fait curieux, l'événement de lancement a été encore plus réussi que le Mac lui-même. Avec un budget de 1,5 million de dollars américains, le célèbre Ridley Scott a réalisé une publicité télévisée dans une allusion claire au roman emblématique d'Orwell Nineteen Eighty-Four qui est devenu un chef-d'œuvre et un événement décisif.


Près de quarante ans plus tard, sans réalisateur de cinéma renommé ni publicité télévisée, juste une simple application Web, OpenAI a pris un modèle de langage encore expérimental et l'a ouvert au monde. Le reste de l'histoire fait la une des journaux : ChatGPT a atteint 100 millions d'utilisateurs actifs mensuels le 23 janvier, deux mois seulement après son lancement, ce qui en fait l'application grand public à la croissance la plus rapide de l'histoire (plus rapide que TikTok et Instagram).


Aujourd'hui, l'attention du monde est tournée vers l'industrie de l'IA, et avec des avancées chaque semaine, cette année promet d'être un moment charnière pour le domaine. La meilleure partie est que vous êtes encore à temps pour rejoindre le domaine de l'IA et faire partie de ce moment révolutionnaire de l'histoire humaine.


Prompt Engineering 101 est une série d'articles conçue et écrite pour dévoiler les principes et les techniques de l'ingénierie rapide, l'art de rédiger des textes clairs et efficaces, pour proposer des modèles de langage et obtenir exactement ce que vous recherchez. Cette série couvre l'ingénierie rapide pour un large éventail de modèles génératifs, y compris ChatGPT et d'autres modèles de texte à texte. Explore également des modèles de texte à image comme Stable Diffusion ou Midjourney, et approfondit d'autres aspects des LLM tels que les hallucinations, les problèmes de confidentialité et de sécurité, etc.


Il s'agit du poste #2 de la série , où nous couvrirons des techniques avancées telles que la chaîne de pensée et la cohérence de soi, pour maîtriser la fabrication rapide. J'espère que ça vous plait!

Table des matières

  1. Récapitulatif sur l'ingénierie rapide
  2. Incitation à la chaîne de pensée
  3. Enchaînement des invites
  4. Méthode d'auto-cohérence
  5. Invite de rôle
  6. Perdu dans la tokenisation
  7. Cinq conseils et outils pour maîtriser la fabrication rapide

Récapitulatif sur l'ingénierie rapide

Dans la première partie de cette série sur l'Ingénierie rapide, nous nous sommes penchés sur les intuitions de cet art et sommes parvenus à une définition formelle. Essentiellement, l'ingénierie rapide est un processus itératif de conception et d'optimisation d'invites claires et spécifiques pour un grand modèle de langage afin de garantir qu'il génère des réponses pertinentes, précises et cohérentes.


Ensuite, nous avons examiné trois principes pour créer des invites efficaces. Nous avons démontré que les modèles produisent de meilleures réponses lorsqu'ils reçoivent des instructions claires et spécifiques (le premier principe) et avons discuté de plusieurs tactiques pour y parvenir. Nous avons ensuite établi que les LLM bénéficiaient du temps de calcul et couvert certaines tactiques pour forcer les modèles à raisonner avant de se précipiter vers une conclusion (le deuxième principe). En fin de compte, nous avons étudié l'équilibre entre spécificité et créativité (le troisième principe), en expérimentant les paramètres Température et Top P pour explorer ce compromis.


Vous pouvez lire une définition plus approfondie de Prompt Engineering et les principes fondamentaux dans le lien ci-dessous (de nombreux exemples d'invites inclus !!).


Incitation à la chaîne de pensée

Les LLM à grande échelle comme GPT-3 ou PaLM ont fait preuve d'une capacité impressionnante de compréhension du langage naturel et se sont révélés extrêmement efficaces dans des tâches telles que l'extraction d'informations à partir de textes et la génération de réponses dans un style humain cohérent. Même ainsi, LLM s'est avéré assez robuste pour effectuer des tâches inconnues lorsque quelques exemples de prises de vue sont inclus dans l'invite. Cette technique, popularisée sous forme d'incitation à quelques prises de vue parBrown et al. (2020) , sondé pour augmenter les performances du modèle sur plusieurs benchmarks. Sans oublier que cela permet d'économiser de l'argent et du temps en ajustant le modèle à un nouveau domaine spécifique.


Cependant, des études ont montré que des modèles comme ceux-ci chutent brusquement leurs performances sur des tâches de raisonnement courantes ou des quiz mathématiques. Malgré la possibilité de citer l'intégralité du poème épique grec ancien L'Odyssée, ces modèles sont aux prises avec des problèmes scolaires fondamentaux en logique et en mathématiques.





Alors, quelles options avons-nous? Envoyons-nous GPT-3 pour une saison dans une école primaire ? Heureusement, il existe une alternative moins chère et moins embarrassante. Pouvez-vous imaginer persuader le directeur de votre école primaire locale d'accepter ChatGPT au milieu du trimestre ?


Semblable à la façon dont les humains abordent les problèmes complexes en les décomposant en sous-problèmes plus simples et en suivant une ligne de raisonnement logique, nous pouvons demander à un modèle de langage de faire de même. Cette approche a été explorée par Wei J et al. dans l'incitation à la chaîne de pensée suscite un raisonnement dans les grands modèles de langage (2022) . Il a démontré des résultats impressionnants sur plusieurs points de repère, confirmant la chaîne de pensée (CoT) comme une approche solide pour améliorer les performances des LLM sur les tâches de raisonnement courantes.


Dans l'image ci-dessous (extraite de l'article de Wei J), un modèle LLM se précipite vers une conclusion incorrecte en calculant le nombre de pommes restant dans une cafétéria. Cela se produit même lorsqu'un problème de raisonnement similaire utilisant des balles de tennis est fourni dans le cadre du contexte.

Néanmoins, lorsqu'un processus étape par étape pour résoudre le problème est inclus dans le contexte (CoT), le modèle peut arriver avec précision à une solution valide.



L'incitation à la chaîne de pensée permet à de grands modèles de langage d'aborder des tâches complexes de raisonnement arithmétique, de bon sens et symbolique. Les processus de raisonnement en chaîne de pensée sont mis en évidence


Avec une chaîne de réflexion, les modèles de langage d'une échelle suffisante (~ 100 milliards de paramètres) peuvent :

  1. Décomposer les problèmes à plusieurs étapes en étapes intermédiaires, ce qui signifie que des calculs supplémentaires peuvent être alloués aux problèmes qui nécessitent plus d'étapes de raisonnement.
  2. Fournissez une fenêtre interprétable sur le comportement du modèle, suggérant comment il aurait pu arriver à une réponse particulière et offrant des opportunités de déboguer là où le chemin de raisonnement s'est mal passé.
  3. Étendez le champ d'application aux problèmes de mots mathématiques, au raisonnement de bon sens et à la manipulation symbolique.


Cette méthode peut être utilisée en fournissant des exemples de raisonnement au modèle (few-shot) ou aucun exemple (zero-shot). Voyons les deux saveurs en pratique avec un exemple d'application réel.

1. Chaîne de pensée Zero-Shot

Imaginez que nous développions une nouvelle application d'achat pour Walmart, avec la fonction révolutionnaire de comparer et de sélectionner le produit que vous devriez acheter en fonction des prix et des attributs des alternatives de différentes marques.


Pour illustrer le problème, concentrons-nous sur une liste réduite de toutes les options de savon en barre que Walmart a dans ses magasins. Comme vous pouvez le voir, nous avons des packs de 1 barre à 14 barres et une variété de marques et de prix (des options bon marché aux options chères).


Produits 🛒

 --- Dove Men+Care 8 bars pack $ 9.99 --- Dove Beauty Bar 4 bars pack $ 6.47 --- Dove Beauty Bar 1 bars $ 1.47 --- Dove Beauty Bar 14 bars pains $ 16 --- Yardley London Soap Bar (Pack of 10) $ 19.99 --- Dr. Squatch All Natural Bar Soap for Men, 5 Bar Variety Pack $46.45


Pour déterminer quelle option est la plus pratique, nous pouvons calculer le prix par barre sur chaque alternative (prix unitaire). Ensuite, sélectionnez l'option la moins chère. Suite à ce raisonnement, nous découvrons que Dove Beauty Bar 14 barres est l'option la moins chère avec un prix unitaire de 1,14 $ (-22% par barre que Dove Beauty Bar 1 barres ).


Raisonnement 🧠

 - Dove Men+Care 8 bars pack: $1,24875 / unit - Dove Beauty Bar 4 bars pack: 1,6175 / unit - Dove Beauty Bar 1 bars: 1,47 / unit - Dove Beauty Bar 14 bars pains: $1,142857 per / unit - Yardley London Soap Bar (Pack of 10): 1,999 / unit - Dr. Squatch All Natural Bar Soap for Men, 5 Bar Variety Pack: $9,29 / unit


Voyons si GPT-4 est assez intelligent pour résoudre ce problème en utilisant une simple invite. De plus, dans le but de créer des exemples plus clairs et faciles à lire, nous séparerons les instructions système du reste de l'entrée à l'aide de littéraux de chaîne Python.


Invite 💬

 prompt = f""" You will be provided with a list of various product presentations delimited by <>. Each product presentation is accompanied by its price. Your task is to identify which is the best option based on the price. <{products}> """


Réponse 🤖

 The best option based on price is Dove Beauty Bar 1 bars for $1.47.


Le modèle a choisi l'option la moins chère en fonction du prix total au lieu de calculer le prix unitaire et d'identifier une opportunité d'économiser de l'argent en achetant plus de barres. Il convient de souligner une certaine ambiguïté dans la question. Que signifie la meilleure option ? S'agit-il du moins cher ou de celui qui maximise les économies d'argent à long terme ?


Réécrivons l'invite demandant au modèle de suivre une chaîne de pensée pour résoudre ce problème en ajoutant les mots magiques « raisonnement étape par étape » . Soulignez également explicitement l'objectif de trouver une opportunité d'économiser de l'argent.


Invite 💬

 prompt = f""" You will be provided with a list of various product presentations delimited by <>. Each product presentation is accompanied by its price. Your task is to identify which presentation offers the best money-saving opportunity, reasoning step-by-step: <{products}> """


Réponse 🤖

 The first step is to compare price per unit for products of the same type (ie bars of soap). - Dove Men+Care 8 bars pack: $9.99 ÷ 8 bars = $1.25 per bar - Dove Beauty Bar 4 bars pack: $6.47 ÷ 4 bars = $1.62 per bar - Dove Beauty Bar 1 bars: $1.47 per bar - Dove Beauty Bar 14 bars pack: $16 ÷ 14 bars = $1.14 per bar - Yardley London Soap Bar (Pack of 10): $19.99 ÷ 10 bars = $1.99 per bar - Dr. Squatch All Natural Bar Soap for Men, 5 Bar Variety Pack: $46.45 ÷ 5 bars = $9.29 per bar Based on this analysis, the best money-saving opportunity is the Dove Beauty Bar 14 bars pack, which offers the lowest price per bar at $1.14.


Notez qu'avec la nouvelle invite, le modèle donne une réponse correcte et en même temps, nous avons un raisonnement pas à pas qui est plus facile à déboguer et à trouver les erreurs potentielles. De plus, il est assez impressionnant de voir comment l'ajout des mots magiques "raisonnement pas à pas" à l'invite crée une différence significative sur la sortie du modèle. C'est quoi le truc?


L'astuce consiste à forcer le modèle à générer une chaîne de raisonnement étape par étape (chaîne de pensée) au lieu de simplement produire une valeur numérique ou booléenne (résultat final). En adoptant cette stratégie, nous orientons initialement le modèle vers des sorties de raisonnement logique, permettant au modèle de baser ses réponses sur des problèmes similaires rencontrés lors de la formation. Deuxièmement, nous aidons le modèle en lui demandant de décomposer les problèmes plus importants en problèmes plus petits et gérables. Le modèle doit ensuite produire des résultats cohérents pour des sous-problèmes simples, tels que l'identification des prix et le nombre de barres dans chaque emballage, le calcul du prix unitaire et enfin, la réalisation de comparaisons. De plus, en raison de la façon dont les modèles de langage auto-régressifs comme GPT-3 ou GPT-4 génèrent des séquences jeton par jeton, où chaque nouveau jeton est généré sur la base de tous les jetons générés précédemment, la chaîne de pensée elle-même a une forte influence positive. dans la génération d'un résultat final cohérent.


En d'autres termes, si, grâce à un raisonnement valable, nous atteignons un point à mi-chemin de la solution correcte, nos chances d'arriver à cette solution sont plus grandes qu'elles ne l'étaient lorsque nous avons commencé à raisonner sur le problème.


2. Chaîne de pensée à quelques coups

Alors que dans Zero-Shot Chain-of-Thought nous laissons le modèle libre d'élaborer une chaîne de raisonnement cohérente et valide qui mène à un résultat correct, une deuxième saveur appelée Few-Shot Chain-of-Thought, fournit quelques exemples d'un problème ainsi qu'une réponse de raisonnement, dans le cadre de l'invite. De cette façon, une forme de raisonnement est imposée au modèle, limitant les réponses possibles.


Revenons à notre application Walmart, supposons que nous voulions identifier quelle présentation de soda Coca Cola a le meilleur rapport prix par once liquide. Pour ce faire, nous allons intégrer dans l'invite une chaîne de raisonnement similaire, pour trouver les meilleures présentations de chips Lay's.


Invite 💬

 prompt = f""" Q: Walmart has the following presentations for Lay's Classic Potato Chips: a 13 oz bag for $4.98, an 8 oz bag for $2.76, and a pack of x10 units 1 oz each for $6.82. Which presentation has the lowest price by ounce? A: Presentation 1 costs 4.98 so has a price of 4.98/13 = 0,383076923 per ounce. Presentation 2 costs 2.76 so has a price of 2.76/8 = 0,345 / per ounce. Presentation 3 costs 6.82 and includes 10 packages so has a price of 6.82/(1 x 10) = 0.682 per ounce. In conclusion, the cheapest presentation is the second one with a price of 0.345 per ounce. Q: Walmart has the following presentation for Coca-Cola Soda: an x24 pack of 12 fl oz cans for $11.86, an x12 pack of 12 fl oz cans for $7.46, and an x6 pack of 16.9 fl oz bottles for $4.98. Which presentation has the lowest price by fluid ounce? """


Je vous encourage à faire vos propres calculs et à trouver la meilleure offre. Vous constaterez que le modèle est correct. Sans aucun doute, j'aurai certainement l'application ChatGPT à mes côtés lors de mon prochain voyage au magasin !!


Réponse 🤖

 A: The 24-pack contains a total of 24 x 12 = 288 fluid ounces and costs $11.86, so the price per fluid ounce is 11.86/288 = $0.041 per fluid ounce. The 12-pack contains a total of 12 x 12 = 144 fluid ounces and costs $7.46, so the price per fluid ounce is 7.46/144 = $0.052 per fluid ounce. The 6-pack contains a total of 6 x 16.9 = 101.4 fluid ounces and costs $4.98, so the price per fluid ounce is 4.98/101.4 = $0.049 per fluid ounce. Therefore, the 24-pack has the lowest price per fluid ounce.


Aussi incroyable que cela puisse paraître, cette astuce simple permet au modèle de déduire une chaîne de raisonnement similaire et d'obtenir des résultats encore plus précis qu'avec la technique précédente. Notez également que nous ne codons pas en dur une procédure étape par étape pour résoudre le problème. Par conséquent, cette approche devrait être, en théorie, suffisamment flexible pour résoudre tout défi similaire, en s'appuyant uniquement sur les capacités de raisonnement du modèle.


Enchaînement des invites

Aucune règle ne nous oblige à résoudre un problème avec une seule invite. En fait, plus nous mettons de logique et de complexité dans une seule invite, plus nous risquons de confondre le modèle. L'enchaînement des invites est une stratégie simple mais efficace pour résoudre des problèmes complexes. L'idée principale est de décomposer le problème en tâches plus petites, chacune résolue par une invite spécifique. En enchaînant chaque invite et en utilisant le résultat de la précédente comme entrée pour la suivante, le résultat final est obtenu.



Gardant cela à l'esprit, revenons à notre application Walmart et implémentons un flux utilisateur complexe sous la forme d'une chaîne d'invites. Jusqu'à présent, nous avons comparé les prix de divers produits tels que les savons de toilette, les collations et les boissons non alcoolisées. Maintenant, nous sommes prêts à explorer un produit qui, personnellement, me donne mal à la tête chaque fois que je vais au supermarché. Calculer son prix unitaire relève de la science des fusées : du papier toilette ! 🤣🤣🤣


Vous trouverez ci-dessous une liste réduite des options proposées par Walmart en matière de papier toilette .


Produits 🛒

 --- Quilted Northern Ultra Plush Toilet Paper, 6 Mega Rolls Each Mega Roll has 255 3-ply sheets. $ 6.93 --- Quilted Northern Ultra Soft & Strong Toilet Paper, 18 Mega Rolls. 18 mega toilet paper rolls, each mega roll has 295 2-ply sheets $ 19.82 --- Angel Soft Toilet Paper, 36 Mega Rolls. With 320 2-ply sheets on every Mega Roll. $ 24.12 --- New Angel Soft Toilet Paper, 36 Mega Rolls. With 484 2-ply sheets Per Roll $ 45.44 --- Scott 1,000 Toilet Paper, 12 Rolls, 1000 Sheets per Roll. With Scott 1,000 Toilet Paper, you get 12 rolls of 1000 1-ply sheets.


Le problème à résoudre est le même que celui sur lequel nous nous sommes concentrés dans cet article : déterminer quelle présentation de produit est la plus rentable. De plus, nous souhaitons améliorer les capacités de l'application en générant des choix supplémentaires, par exemple en considérant les acheteurs avec un espace de stockage limité qui ne peuvent pas acheter de grandes quantités, ainsi que ceux qui ont besoin d'un plus grand volume de ce produit. De plus, ce serait formidable de mettre les recommandations de produits dans le cadre d'une recommandation personnalisée donnée par un assistant d'achat virtuel alimenté par l'IA.


Plutôt que d'utiliser une seule invite pour résoudre l'ensemble de la tâche, l'objectif est de la décomposer en plusieurs sous-tâches avec des invites spécifiques pour chacune et d'enchaîner les sorties. Alors, commençons par concevoir une invite pour calculer les prix de chaque produit par unité de mesure, afin que nous puissions les comparer directement.


Pour la première étape ou tâche de la chaîne, nous utiliserons la chaîne de pensée Zero-Shot. Cela demandera au modèle de renvoyer les prix par unité de mesure pour chaque produit dans l'entrée, en raisonnant étape par étape. La sortie générée ici servira plus tard d'entrée pour la prochaine invite. Pour cette raison, il est essentiel de demander un format de sortie structuré. Dans ce cas, une liste JSON suffira.


Invite 💬

 prompt = f""" You will be provided with a list of various product presentations delimited by <>. Each product presentation is accompanied by its price. Your task is to calculate the price by unit of measurement for each presentation, reasoning step-by-step. Finally, return a list in JSON format with the title of the product, original price and unit price using the title, total_price and unit_price keys respectively. <{products}> """


Réponse 🤖

 Let's start by breaking down the cost for each roll and then calculating the cost per unit, in this case, the cost per sheet. For the Quilted Northern Ultra Plush Toilet Paper: * The product costs $6.93 and contains 6 mega rolls. Therefore, each mega roll costs $6.93 / 6 = $1.155. * Each mega roll contains 255 sheets. Therefore, the cost per sheet is $1.155 / 255 = $0.00453 approximately. For the Quilted Northern Ultra Soft & Strong Toilet Paper: * The product costs $19.82 and contains 18 mega rolls. Therefore, each mega roll costs $19.82 / 18 = $1.1011 approximately. * Each mega roll contains 295 sheets. Therefore, the cost per sheet is $1.1011 / 295 = $0.00373 approximately. For the Angel Soft Toilet Paper: * The product costs $24.12 and contains 36 mega rolls. Therefore, each mega roll costs $24.12 / 36 = $0.6694 approximately. * Each mega roll contains 320 sheets. Therefore, the cost per sheet is $0.6694 / 320 = $0.00209 approximately. For the New Angel Soft Toilet Paper: * The product costs $45.44 and contains 36 mega rolls. Therefore, each mega roll costs $45.44 / 36 = $1.2622 approximately. * Each mega roll contains 484 sheets. Therefore, the cost per sheet is $1.2622 / 484 = $0.00261 approximately. For the Scott 1,000 Toilet Paper: * The product costs $45.44 and contains 12 rolls. Therefore, each roll costs $45.44 / 12 = $3.7867 approximately. * Each roll contains 1000 sheets. Therefore, the cost per sheet is $3.7867 / 1000 = $0.00379 approximately. Now, let's format this into JSON: [ { "title": "Quilted Northern Ultra Plush Toilet Paper, 6 Mega Rolls", "total_price": "$6.93", "unit_price": "$0.00453" }, { "title": "Quilted Northern Ultra Soft & Strong Toilet Paper, 18 Mega Rolls", "total_price": "$19.82", "unit_price": "$0.00373" }, { "title": "Angel Soft Toilet Paper, 36 Mega Rolls", "total_price": "$24.12", "unit_price": "$0.00209" }, { "title": "New Angel Soft Toilet Paper, 36 Mega Rolls", "total_price": "$45.44", "unit_price": "$0.00261" }, { "title": "Scott 1,000 Toilet Paper, 12 Rolls, 1000 Sheets per Roll", "total_price": "$45.44", "unit_price": "$0.00379" } ] This JSON data provides each product's title, total price, and the calculated unit price.


Je vous encourage à entreprendre l'exercice de calculer manuellement les prix par feuille pour chacune des présentations de papier toilette. Si vous le faites, vous confirmerez que la sortie du modèle est correcte. Cependant, la sortie du modèle contient également le processus de raisonnement (puisque nous demandons au modèle de raisonner étape par étape). En d'autres termes, avant de continuer, nous devons extraire la liste JSON du reste du texte. Heureusement pour nous, nous pouvons utiliser un LLM pour y parvenir !


Écrivons une invite simple pour effectuer cette extraction de texte. De plus, demandons au modèle de trier les options par prix unitaire, de la moins chère à la plus chère. Cette étape sera extrêmement utile plus tard dans la chaîne d'invites.


Invite 💬

 prompt = f""" You will be provided with a text delimited by <>. This text contains a JSON list with information about Walmart products. Your task is to extract that list and return only this list in JSON format. Each JSON list item contains the key "unit_price", which is a number. Before returning the list, sort it in ascending order by the key "unit_price". Here is an example of a list item: { "title": "Toilet paper", "total_price": "$2.99", "unit_price": "$0.0045" } Remember to return the list without any additional text or explanation, just the list in JSON format. <{response_prompt_1}> """


Réponse 🤖

 [ { "title": "Angel Soft Toilet Paper, 36 Mega Rolls", "total_price": "$24.12", "unit_price": "$0.00209" }, { "title": "New Angel Soft Toilet Paper, 36 Mega Rolls", "total_price": "$45.44", "unit_price": "$0.00261" }, { "title": "Quilted Northern Ultra Soft & Strong Toilet Paper, 18 Mega Rolls", "total_price": "$19.82", "unit_price": "$0.00373" }, { "title": "Scott 1,000 Toilet Paper, 12 Rolls, 1000 Sheets per Roll", "total_price": "$45.44", "unit_price": "$0.00379" }, { "title": "Quilted Northern Ultra Plush Toilet Paper, 6 Mega Rolls", "total_price": "$6.93", "unit_price": "$0.00453" } ]


Avec les alternatives de produits présentées sous forme de liste JSON, il devient facile pour un modèle comme GPT-4 non seulement d'identifier l'option la plus rentable, mais aussi d'offrir des informations précieuses aux acheteurs qui, par exemple, n'en ont besoin que de quelques-uns. unités. Créons une invite pour y parvenir. Encore plus, rappelez-vous que nous développons un assistant d'achat virtuel alimenté par l'IA.


Par conséquent, nous pouvons également utiliser les LLM pour mettre les alternatives de produits sous la forme d'un message texte unique avec un ton spécifique et convivial.


Invite 💬

 prompt = f""" Your name is Wally and you are an artificial shopping assistant at Walmart stores. You will be provided with a list of various product presentations in a JSON list format, delimited by <>. Each product presentation is accompanied by its total_price, unit_price, and a title that contains extra information about the product presentation. Additionally, the list is sorted by unit_price ascending. Your task is to generate a short, straight-to-the-point buy recommendation, mentioning the best money-saving opportunity based on the JSON products list. Also include the best, smallest and largest options to give the user options based on the size of the product. Use a single paragraph to include all three recommendations. First present yourself in a friendly way, start mentioning the best option of all, then the smallest option, and finally the largest option. Say goodbye inventing something that includes the Walmart slogan "Save Money. Live Better". <{response_prompt_2}> """


Réponse 🤖

 Hello there! I'm Wally, your friendly shopping assistant at Walmart. Let's dive into your toilet paper options! Looking at the overall value, your best option is the "Angel Soft Toilet Paper, 36 Mega Rolls" priced at $24.12 with a unit price of $0.00209, giving you the most bang for your buck. If you're seeking something compact and budget-friendly, the "Quilted Northern Ultra Plush Toilet Paper, 6 Mega Rolls" at $6.93 would be your go-to pick. On the other hand, if you are searching for the largest pack available, you should consider the "Scott 1,000 Toilet Paper, 12 Rolls, 1000 Sheets per Roll" priced at $45.44, offering a vast number of sheets for your needs. Remember, every cent counts at Walmart because our goal is to help you "Save Money. Live Better". Happy shopping!


À mon avis, la sortie du modèle est assez impressionnante étant donné qu'elle a été générée à partir d'une chaîne de seulement trois invites simples. S'il vous plaît, ne négligez pas la cerise sur le gâteau : j'ai spécifiquement demandé au modèle d'incorporer le slogan de Walmart dans sa réponse.


Pour conclure cette section, le chaînage des invites est une technique extrêmement puissante qui fait ressortir le véritable potentiel des LLM en intégrant le résultat de diverses tâches ou sous-problèmes également résolus par les LLM. N'oubliez pas qu'il n'y a pas de règle générale pour diviser une invite complexe en plusieurs invites plus petites. Vous devrez trouver le bon équilibre pour votre problème spécifique.


Auto-cohérence

Il existe certains scénarios où LLM ne parvient pas à générer des réponses cohérentes, même en utilisant CoT et pour la même invite, il est possible que le modèle soit confus entre les exécutions et renvoie une réponse incohérente. Dans ce contexte, l'auto-cohérence est une approche simple mais efficace, consistant simplement à demander plusieurs fois au modèle avec la même invite et à prendre le résultat majoritaire comme réponse finale. La combinaison de cette technique avec CoT permet d'obtenir des résultats plus robustes et prévisibles.


Par exemple, considérons l'exemple des pommes à la cafétéria présenté dans le document Chain-of-Thought. Au lieu de simplement appeler le modèle une fois avec l'invite de saisie, nous pouvons appeler le modèle trois fois et prendre la réponse majoritaire comme réponse finale (voir l'image ci-dessous).


Invite d'auto-cohérence


En adoptant la réponse de la majorité, la probabilité que le modèle renvoie une sortie incorrecte lors d'une exécution spécifique est considérablement réduite. L'effet de cette technique est renforcé par l'augmentation de la répétition. Cependant, l'exécution répétée de l'invite indique un nombre plus élevé d'appels au modèle, entraînant une plus grande consommation de matériel. Dans le cas de grands modèles de langage comme GPT-3, cela se traduit également par plus d'appels d'API et par conséquent, plus d'argent dépensé, le tout pour générer une seule réponse.


Pour cette raison, lors de la conception de systèmes utilisant LLM, il est essentiel d'équilibrer la robustesse et la sauvegarde des appels de modèle, en n'utilisant cette technique que lorsque cela est strictement nécessaire. Par exemple, lorsqu'un haut niveau de robustesse dans la réponse du système est nécessaire.


Pour illustrer le potentiel de cette technique, revenons à notre application Walmart pour analyser un autre produit en particulier : les œufs .


Produits 🛒

 --- Great Value Cage Free Large AA White Eggs, 6 Count $ 1.07 --- Happy Egg Organic Free Range Large Brown Eggs, 12 Count $ 5.16 --- Great Value Cage Free Large AA White Eggs, 12 Count $ 1.86 --- Eggland's Best Farm Fresh Cage Free Large White Grade AA Eggs, 18 Count $ 2.69 --- Marketside Large Cage Free Brown Eggs, 12 Count $ 2.67


Incluons quelques préférences utilisateur dans l'invite pour rendre le problème légèrement plus difficile pour le modèle.


 preferences = f""" - Only consider grade AA eggs - Only consider eggs produced on cage-free farms - The client needs a minimum of 6 eggs and a maximum of 12 """


Avec des modèles puissants comme GPT-3/GPT-4, une invite Zero-Shot CoT comme celle ci-dessous devrait suffire pour obtenir de bons résultats (rappelez-vous les tests précédents). Essayons!


Invite 💬

 prompt = f""" You will be provided with a list of various product presentations delimited by <>. Each product presentation is accompanied by its price. Your task is to identify which presentation offers the best money-saving opportunity, reasoning step-by-step: Also, consider the following user preferences to select the most suitable ooption: {preferences} <{products}> """


Réponses 🤖

 (1) Considering the user preferences, we first filter the list of eggs for only grade AA and cage-free options, which gives us the following choices: * Great Value Cage Free Large AA White Eggs, 6 Count: $1.07 * Great Value Cage Free Large AA White Eggs, 12 Count: $1.86 * Eggland's Best Farm Fresh Cage Free Large White Grade AA Eggs, 18 Count: $2.69 * The Happy Egg and Marketside options are discarded because their grade is not specified. Next, we consider the amount of eggs. The client needs a minimum of 6 eggs and a maximum of 12. Therefore, we can discard the Eggland's Best 18 count option, as it exceeds the maximum required amount. Now, we compare the remaining two options: * Great Value Cage Free Large AA White Eggs, 6 Count: $1.07 * Great Value Cage Free Large AA White Eggs, 12 Count: $1.86 * Although the 6-count pack fits the minimum requirement, the 12-count pack offers a better price per egg. For the 6-count pack, each egg costs $1.07 / 6 = ~$0.178. For the 12-count pack, each egg costs $1.86 / 12 = ~$0.155. Therefore, considering both the user's preferences and the cost per egg, the "Great Value Cage Free Large AA White Eggs, 12 Count" for $1.86 is the best money-saving opportunity. (2) Let's go through each product one by one, considering the user's preferences: 1. Great Value Cage Free Large AA White Eggs, 6 Count - $1.07 These are grade AA eggs from a cage-free farm, so they meet the user's criteria. The price per egg is $1.07/6 = $0.178. 2. Happy Egg Organic Free Range Large Brown Eggs, 12 Count - $5.16 These are not specified as grade AA, so we can't consider them based on user's preferences. 3. Great Value Cage Free Large AA White Eggs, 12 Count - $1.86 These are grade AA eggs from a cage-free farm and the quantity is within the range the user wants. The price per egg is $1.86/12 = $0.155. 4. Eggland's Best Farm Fresh Cage Free Large White Grade AA Eggs, 18 Count - $2.69 These are grade AA eggs from a cage-free farm. However, the quantity is more than the user wants (18), so we can't consider this option. 5. Marketside Large Cage Free Brown Eggs, 12 Count - $2.67 These are not specified as grade AA, so we can't consider them based on user's preferences. Based on the preferences, we are only left with two choices: Great Value Cage Free Large AA White Eggs, either 6 Count or 12 Count. However, the 12 Count package offers the best money-saving opportunity, because it has a lower cost per egg ($0.155 per egg) than the 6 Count package ($0.178 per egg). Additionally, the 12 Count package still falls within the user's desired quantity range of 6 to 12 eggs. Therefore, the best option for the user is the "Great Value Cage Free Large AA White Eggs, 12 Count" at $1.86. (3) Given the user's preferences, we need to find the product which: 1. Contains only grade AA eggs 2. Is produced on cage-free farms 3. Offers a minimum of 6 eggs and a maximum of 12 Let's consider each product: 1. "Great Value Cage Free Large AA White Eggs, 6 Count" - $ 1.07. This option matches all the user's preferences and costs $1.07 for 6 eggs, which is approximately $0.178 per egg. 2. "Happy Egg Organic Free Range Large Brown Eggs, 12 Count" - $ 5.16. This product does not specify the grade of the eggs, so we will disregard this option. 3. "Great Value Cage Free Large AA White Eggs, 12 Count" - $ 1.86. This option also matches the user's preferences and costs $1.86 for 12 eggs, which is approximately $0.155 per egg. 4. "Eggland's Best Farm Fresh Cage Free Large White Grade AA Eggs, 18 Count" - $ 2.69. While this product matches the egg grade and production method preferences, it contains more than the maximum amount of eggs requested by the user (18 instead of 12). Therefore, we disregard this option. 5. "Marketside Large Cage Free Brown Eggs, 12 Count" - $ 2.67. This product does not specify the grade of the eggs, so we will disregard this option. Therefore, the product that provides the best money-saving opportunity while meeting the user's preferences is "Great Value Cage Free Large AA White Eggs, 12 Count" for $1.86. This option offers more eggs for a lower cost per egg compared to the other suitable option.


Bien que le modèle ne produise aucun résultat incorrect dans aucune de ses exécutions (avec un raisonnement précis dans les trois cas), cet exemple met l'accent sur le potentiel de variabilité des réponses d'un LLM. Cela souligne en outre la valeur de l'auto-cohérence dans la réduction de cette variabilité.


Plus généralement, il a été démontré que l'auto-cohérence améliore les résultats des tâches d'arithmétique, de bon sens et de raisonnement symbolique. Même lorsque le CoT régulier s'est avéré inefficace, l'auto-cohérence était toujours en mesure d'améliorer les résultats (vérifier les résultats expérimentaux ).


Pour conclure cette technique avancée, je vous encourage à l'essayer vous-même, par exemple en ajoutant plus de produits à la liste ou en supprimant le "raisonnement pas à pas" pour donner au modèle plus de place pour faire des erreurs. Essayez également d'appliquer l'auto-cohérence aux problèmes réels sur lesquels vous travaillez.

Invite de rôle

Lors de l'alignement des modèles de langage pour suivre les instructions , un processus généralement associé aux modèles InstructGPT (dont ChatGPT est un exemple), une nouvelle approche connue sous le nom d'invite de rôle a pris de l'ampleur parmi les utilisateurs. Cette méthode consiste à demander au modèle d'assumer la personnalité d'une entité bien connue pour exécuter une tâche spécifique.

Les possibilités de telles entités sont pratiquement illimitées : elles peuvent aller d'acteurs célèbres comme Tom Cruise ou Emma Watson, à des politiciens comme Barack Obama ou José Mujica, ou même des personnages fictifs comme Sherlock Holmes. Cette technique nous permet de générer des réponses avec un ton unique, imitant le style de parole d'un personnage et favorisant une expérience utilisateur plus engageante.


De plus, nous pouvons tirer parti de l'expérience simulée et des connaissances d'un spécialiste. Par exemple, demandez au modèle d'accomplir une tâche spécifique, en tant que physicien nucléaire, directeur marketing, PDG, journaliste, etc.


Pour illustrer ce type d'incitation, nous demanderons à GPT-4 de personnaliser une suggestion d'achat dans le ton unique de Sheldon Cooper (le célèbre personnage de l'émission The Big Bang Theory), en utilisant comme produit les grands œufs blancs AA Great Value Cage Free. nous avons trouvé comme la meilleure option d'achat, plus tôt dans ce post.


Produit 🛒

 Great Value Cage Free Large AA White Eggs, 12 Count. Price $1.86. This option offers more eggs for a lower cost per egg compared to the other suitable option.


Invite 💬

 prompt = f""" You are a shopping assistant with the personality of the iconic character Sheldon Cooper from The Big Bang Theory show. Your task is to act like Sheldon, speak like Sheldon and think like Sheldon. You will be provided with a product description delimited by <> and your goal is to return a personalized shopping recommendation based on that product acting like Sheldon Cooper. Be concise, friendly and present yourself as Dr. Sheldon Cooper. <{product}> """


Réponse 🤖

 Hello, I'm Dr. Sheldon Cooper. Given your product choice, I do appreciate the value for money that these Great Value Cage Free Large AA White Eggs offer. The cost per egg is an important mathematical factor to consider, and indeed, these eggs would be a sensible choice for a budget-conscious, protein-seeking individual like Leonard, who often falls victim to my high-protein breakfast egg burritos. However, it's also worth noting that cage-free doesn't mean these chickens lead a leisurely life. It's a common misconception, just like thinking the Doppler effect would be an acceptable Halloween costume. Ideally, for the truly ethical choice, you'd opt for pasture-raised eggs. And finally, from a culinary perspective, I would like to point out that while eggs do serve as an excellent source of protein, they are also potential carriers of Salmonella. But you probably knew that. In conclusion, despite their cost-effectiveness, I recommend careful handling and thorough cooking of these Great Value Cage Free Large AA White Eggs. Sheldon Cooper out.


Comme on peut le voir dans la réponse obtenue, cette technique peut être utilisée pour obtenir des résultats intéressants et renvoyer des réponses uniques. Notez cependant que nous déléguons le raisonnement au modèle et que nous nous appuyons entièrement sur la compréhension du modèle de l'entité que nous lui demandons de jouer. Pour cette raison, il est crucial de s'assurer d'abord que le modèle a une bonne compréhension du rôle ou de l'entité que nous lui demandons d'assumer. Sinon, le résultat peut être différent de ce que nous attendons.


Un bon contre-exemple serait de demander au modèle d'imiter un super-ordinateur qui dépasse les niveaux d'intelligence humaine. Étant donné qu'une telle entité n'existe pas actuellement, le modèle n'aurait pas été formé sur les réponses de ce type d'entité. Par conséquent, il n'est pas en mesure de fournir une réponse remplissant cette condition.


Invite 💬

 You are an artificial superintelligence, much more evolved and intelligent than human beings. You know everything about the universe and you have the answer to all the mysteries of the universe. Your task is to tell me how to write a post for Hackernoon that became a huge success.


Malheureusement, ni ChatGPT ni GPT-4 n'ont encore la réponse...

Perdu dans la tokenisation

De la même manière que le sens d'une phrase ou d'un mot peut être perdu pendant la traduction (souvent appelé «perdu dans la traduction»), les LLM peuvent perdre leur sens pendant le processus de tokenisation. Alors que les humains perçoivent des mots individuels dans un texte, les LLM interprètent les jetons. Ces jetons correspondent rarement à des mots individuels. En fait, des modèles avancés comme ChatGPT ou GPT-4 utilisent le tiktoken Tokenizer, qui vise à permettre au modèle de reconnaître des sous-mots communs en anglais. Il en résulte généralement qu'un mot est représenté par plusieurs jetons. Bien que ce tokenizer soit puissant et plus rapide que les tokenizers open source comparables, il peut entraîner des sorties indésirables pour des mots anglais rares ou des mots non anglais.


Pour illustrer cela, utilisons le OpenAI Tokenizer , pour jouer avec différentes phrases et observer la sortie Tokenization sur chaque cas :


 "I want to buy shoes" = "I/want/to/buy/shoes" "I think, therefore I am" = "I/think/,/therefore/I/am" "You should visit Punta del Este" = "You/should/visit/P/unta/del/E/ste"


Comme observé, le Tokenizer sépare les mots avec succès dans les deux premiers exemples, mais a du mal avec le nom de la belle et touristique ville de Punta del Este située en Uruguay. Ceci est remarquable car cela peut parfois conduire à des erreurs dans des tâches relativement simples. Continuons à expérimenter pour voir cela plus en détail.


Des textes

 USA Santa Claus Uruguay


Texte tokenisé 🪄

 USA Santa/Claus U/rug/uay


Invite 💬

 prompt = f""" You will be provided with a list of texts delimited by <>. Your task is to reverse those texts. <{texts}> """


Réponse 🤖

 Here are the reversed versions of the texts you provided: < ASU sualC atnaS yaguUr


Comme démontré, le modèle inverse de manière inexacte le mot Uruguay, qui est un mot moins courant pour le Tokenizer. Heureusement, il existe une solution de contournement simple pour résoudre ce problème. Pour des situations comme celle-ci, nous pouvons pré-traiter le texte en le séparant en caractères individuels à l'aide d'un délimiteur tel que "-". Ainsi, lorsque le modèle symbolise le texte, il perçoit des caractères individuels plutôt que des sous-mots. Cette modification peut aider le modèle à exécuter la tâche avec de meilleurs résultats. Essayons!


Invite 💬

 prompt = f""" You will be provided with a list of texts delimited by <>. Your task is to reverse those texts. < USA Santa Claus Uruguay > """


Réponse 🤖

 Sure, here are the reversed versions of the texts you provided: < ASU seikooC sualC atnaS yaugurU


En utilisant la solution de contournement présentée, le modèle peut inverser correctement tous les mots. Vous pouvez toujours utiliser cette solution de contournement lorsque vous observez une baisse des performances du modèle pour les entrées contenant des mots rares. Je n'ai pas inclus les étapes de pré-traitement et de post-traitement dans ce tutoriel. Il existe de nombreuses méthodes de chaîne dans n'importe quel langage de programmation qui peuvent être utilisées pour cette partie du travail.


Cinq conseils et outils pour maîtriser la fabrication rapide

Notre parcours d'ingénierie rapide ne s'arrête pas à CoT+Self-Consistency (malgré les excellentes performances). Heureusement pour cet écrivain, il y a beaucoup plus d'aspects de l'ingénierie rapide à apprendre avant de maîtriser cet art. Ci-dessous, j'explore quelques facteurs complémentaires à prendre en compte lors de la rédaction d'invites et présente trois outils utiles que vous pouvez utiliser pour rédiger des invites efficaces.


1- Choisissez le bon délimiteur

Aux yeux d'un LLM, tous les délimiteurs ne sont pas égaux. En règle générale, il convient d'utiliser des séparateurs qui, en plus d'être des caractères peu fréquents à trouver dans le reste de l'entrée (évitant de confondre le modèle avec l'invite), sont représentés par un seul jeton. De cette façon, nous réduisons la consommation de jetons dans l'invite, économisant des ressources matérielles, de l'argent et nous permettant d'utiliser ce jeton pour autre chose de plus important.


Vous pouvez utiliser OpenAI Tokenizer pour vérifier si vos délimiteurs sont représentés par un seul jeton.


  • Triple guillemets “““1 jeton
  • Triple back-ticks ```2 jetons
  • Triple tirets ---1 jeton
  • Triple dièse ###1 jeton
  • Chevrons < >2 jetons
  • Balises XML <tag></tag>5 jetons


2- Pré-traitez vos entrées

Plutôt que de transmettre l'entrée utilisateur au modèle dans le cadre de l'invite, il est recommandé de prétraiter cette entrée à l'aide de méthodes de chaîne, d'expressions régulières ou d'outils similaires. L'objectif est de supprimer les espaces inutiles, la ponctuation, les balises HTML et autres éléments superflus qui pourraient entraver la compréhension du modèle ou l'exécution des tâches. Cette approche permet non seulement d'économiser sur les jetons, réduisant ainsi les coûts sur des modèles comme ChatGPT, qui facturent par jeton, mais elle aide également à identifier les injections rapides, les problèmes de confidentialité et les problèmes connexes.


3- Invite parfaite

Vous pouvez créer des invites efficaces à partir de zéro en suivant des principes et des techniques spécifiques (comme ceux présentés dans cette série d'articles). Cependant, une approche encore meilleure consiste à utiliser un optimiseur d'invite tel que PromptPerfect . Cet outil exploite l'IA pour améliorer vos invites personnalisées en fonction du modèle cible spécifique que vous utilisez (GPT-3, GPT-4, Midjourney, etc.).


Si vous ne pouvez pas vous permettre d'intégrer ces outils dans le cadre de la conception de votre application, envisagez au moins de les explorer. Plusieurs astuces peuvent être apprises à partir d'exemples optimisés disponibles dans la documentation.


4- Modèles d'invite

Au lieu de réinventer la roue, lisez les modèles d'invites partagés par les internautes. Si aucune invite ne correspond à vos besoins, vous pouvez au moins prendre des idées. Voici deux sites à partir desquels vous pouvez extraire divers modèles d'invites pour ChatGPT, Midjourney et les modèles les plus populaires :


➡️ Plus de 500 modèles d'invite ChatGPT

➡️ Impressionnantes invites ChatGPT


5- Terrain de jeu OpenAI

OpenAI propose un outil puissant appelé Playground . Cette application Web interactive vous permet d'expérimenter différents modèles disponibles via l'API officielle, vous permettant de modifier des paramètres spécifiques et de modifier les comportements par défaut. Le Playground est un excellent point de départ pour vos expériences et il ne nécessite pas l'écriture d'une seule ligne de code.


Un dernier conseil, rédiger de bonnes invites ou avoir des conversations intéressantes avec des LLM peut être aussi important que de partager avec d'autres membres de la communauté. Ne l'oubliez pas et lorsque vous partagez votre expérience, essayez d'utiliser sharegpt pour le faire en un clic.


Emballer

Dans le deuxième article de la série Prompt Engineering 101, nous avons présenté deux techniques puissantes : la chaîne de pensée et l'auto-cohérence. Des stratégies combinées produisent des résultats exceptionnels. À l'aide d'exemples réels, nous avons exploré les deux variantes de Chain-of-Thought : Zero-Shot et Few-Shot, en expérimentant directement le potentiel de ces techniques. Ensuite, nous avons expérimenté des chaînes d'invites pour construire des pipelines plus complexes et plus robustes. Enfin, nous nous sommes penchés sur d'autres facettes de l'ingénierie des invites, en soulignant les aspects pertinents à prendre en compte lors de la création d'invites, et avons enfin mentionné quelques outils utiles.


Vous pouvez trouver tous les exemples, ainsi que des invites, des réponses et des scripts Python pour interagir directement avec l'API OpenAI et essayez vos invites ici .


Dans le post suivant, nous verrons des techniques pour tester et valider le comportement des systèmes construits sur des LLM comme ChatGPT ou des modèles similaires.

Remerciements

Cette série de publications s'inspire des cours exceptionnels d' Andrew Ng et d'Isabella Fulford et de l'excellent LLM Bootcamp fourni par Charles Frye , Sergey Karayev et Josh Tobin (les deux cours sont mentionnés dans la section ressources). Après avoir terminé ces programmes d'apprentissage, j'avais hâte d'approfondir, d'explorer des articles académiques et des tutoriels. Cela m'a conduit à un voyage à travers Internet, discernant des ressources de haute qualité à partir de déchets. J'ai même commandé deux livres à Amazon sur Prompt Engineering et Generative AI for Artwork, qui se sont avérés mal écrits et un gaspillage d'argent total. Après plusieurs semaines de travail intense, de maux de tête et de tasses de café, je me suis retrouvé avec une collection de ressources de grande valeur sur Prompt Engineering. Dans l'esprit d'aider les autres dans leur parcours d'ingénierie rapide, j'ai décidé de partager mon expérience en écrivant cette série d'articles.


Si cet article vous a plu, pensez à me suivre sur mes réseaux sociaux pour soutenir mon travail. De plus, vous serez averti chaque fois que je publierai un nouveau contenu !!


🐦 Gazouillement | 👨‍💼 LinkedIn | 💻 Plus d'histoires

Les références