L'incitation et l'ingénierie rapide sont de loin les compétences les plus demandées en 2023. La croissance rapide des grands modèles linguistiques LLM n'a vu l'émergence que de cette nouvelle discipline de l'IA appelée ingénierie rapide. Dans cet article, examinons brièvement ce qu'est l'invite, ce que font les ingénieurs d'invite et également les différents éléments d'une invite avec lesquels un ingénieur d'invite travaille.
L'invite est simplement l'entrée que vous fournissez à un modèle "formé". Lorsque je parle de modèle entraîné, les poids du modèle sont fixes ou figés et ne changeront pas pendant le processus d'incitation. Vous pouvez maintenant vous demander en quoi est-ce différent de l'inférence, car nous avons formé des modèles, déployé et exécuté l'inférence sur des modèles d'apprentissage automatique. Le fait est qu'avec l'inférence, l'entrée est fixe. Nous ne le modifions jamais et quoi que le modèle donne en sortie, nous l'acceptons comme résultat. Considérez la classification des images comme un exemple de tâche.
Cependant, avec les invites, vous n'êtes pas limité à une seule entrée. Vous pouvez adapter l'entrée à vos besoins pour améliorer le comportement du modèle. Il s'agit plutôt d'instruire le modèle avec l'intention de l'orienter vers la bonne réponse. Pendant que vous acceptez le modèle pour acquis en matière d'inférence, avec des invites, vous étudiez les capacités et les limites du modèle.
L'art de concevoir ou d'élaborer ces intrants en fonction du problème à résoudre afin de vous servir au mieux donne naissance à une discipline relativement nouvelle appelée ingénierie rapide .
Avant de plonger dans l'ingénierie rapide, comprenons la motivation ou le besoin de créer des invites avec des exemples. Disons que je veux résumer un passage donné. Je donne donc un gros passage de wikipedia en entrée et à la fin dis, " résumez le paragraphe ci-dessus ". Cette façon de fournir des instructions simples dans l'invite pour obtenir une réponse du LLM est connue sous le nom d'invite d'instructions .
Passons à un cas de mathématiques un peu plus compliqué et demandons au LLM de multiplier deux nombres. Essayons l'invite, " qu'est-ce que 2343*1232". La réponse que nous obtenons est " 23431232 ", ce qui n'est évidemment pas la multiplication des deux nombres mais les deux mis ensemble.
Maintenant, permettez-moi de modifier l'invite et d'ajouter une ligne supplémentaire dans l'invite pour être plus précis, " ce qui est 2343 multiplié par 1232. Donnez-moi la réponse exacte après multiplication ". Nous obtenons maintenant, " 2886576 " la bonne réponse du LLM.
Ainsi, il est clair que la qualité de la sortie du modèle est déterminée par la qualité de l'invite. C'est là que l'ingénierie rapide entre en jeu. L'objectif d'un ingénieur prompt est d' évaluer la qualité de la sortie d'un modèle et d'identifier les domaines d'amélioration de l'invite pour obtenir de meilleurs résultats. L'ingénierie rapide est donc une discipline hautement expérimentale consistant à étudier les capacités et les limites du LLM par essais et erreurs dans le but à la fois de comprendre le LLM et de concevoir de bonnes invites.
Afin de concevoir ou de concevoir les invites, nous devons comprendre les différents éléments d'une invite. Une invite peut contenir un ou plusieurs des éléments suivants.
Les invites peuvent être des instructions où vous demandez au modèle de faire quelque chose. Dans notre exemple, nous avons fourni un énorme corps de texte et avons demandé au modèle de le résumer.
Les invites peuvent éventuellement inclure un contexte pour que le modèle vous serve mieux. Par exemple, si j'ai des questions sur, par exemple, les sites du patrimoine anglais, je peux d'abord fournir un contexte tel que : "Le patrimoine anglais s'occupe de plus de 400 monuments, bâtiments et lieux historiques - des sites préhistoriques de renommée mondiale aux grands châteaux médiévaux, des forts romains … " et puis posez ma question comme, " quel est le plus grand site du patrimoine anglais? ”
Dans le cadre de l'invite, vous pouvez également indiquer le format dans lequel vous souhaitez voir la sortie. Ainsi, une invite peut éventuellement avoir un indicateur de sortie . Par exemple, vous pouvez demander « Je veux une liste de tous les sites du patrimoine anglais en Angleterre, leur emplacement et leur spécialité » . Je veux les résultats sous forme de tableau .
Ou si vous souhaitez une réponse encore meilleure, vous pouvez saisir le format souhaité avec cette syntaxe pour indiquer que vous souhaitez voir les colonnes et les lignes dans la sortie :
Desired format:
Company names: <comma_separated_list_of_sites>
Sites: -||-Location: -||-Speciality: -||-
Une invite peut inclure une ou plusieurs données d'entrée où nous fournissons des exemples d'entrées pour ce qui est attendu du modèle. Dans le cas de la classification des sentiments, jetez un œil à cette invite où nous commençons à fournir des exemples pour montrer nos intentions et spécifions également que nous ne voulons aucune explication dans la réponse :
Text: Today I saw a movie. It was amazing.
sentiment: Positive
Text: I don't very good after seeing that incident.
sentiment:
Cette façon de donner des exemples dans l'invite est similaire à la façon dont nous expliquons aux humains en montrant des exemples. Dans le monde de l'incitation, c'est ce qu'on appelle l'incitation à quelques coups . Nous fournissons des exemples de haute qualité ayant à la fois l'entrée et la sortie de la tâche. De cette façon, le modèle comprend ce que vous recherchez et répond donc beaucoup mieux.
En développant notre exemple, si je veux connaître le sentiment d'un passage, au lieu de simplement demander "quel est le sentiment du passage", je peux fournir quelques exemples couvrant les classes possibles dans la sortie. Dans ce cas positif et négatif :
Text: Today I saw a movie. It was amazing.
sentiment: Positive
Text: I don't very good after seeing that incident.
sentiment: Negative
Text: Lets party this weekend to celebrate your anniversary.
sentiment: Positive
Text: Walking in that neighbourhood is quite dangerous.sentiment: Negative
Text: I love watching tennis all day long
sentiment:
Et je peux alors laisser le modèle répondre au dernier texte que j'ai saisi. En règle générale, 5 à 8 exemples devraient être suffisants pour une invite en quelques prises de vue. Comme vous pouvez le deviner maintenant, l'inconvénient de cette approche est qu'il y aura trop de jetons dans votre invite. Si vous souhaitez commencer simplement, vous n'avez pas besoin de fournir d'exemples, mais passez directement au problème comme cette invite :
Text: I love watching tennis all day long
sentimet:
Il s'agit d'une invite de tir zéro où vous ne fournissez aucun exemple mais attendez toujours que le modèle vous réponde correctement. En règle générale, lors de l'ingénierie rapide, vous commencez par des tirs zéro car c'est plus simple et en fonction de la réponse, vous passez à quelques tirs en fournissant des exemples pour obtenir une meilleure réponse.
Si vous souhaitez passer à un sujet spécialisé avec le LLM, vous pouvez immédiatement le diriger pour qu'il soit un expert dans un domaine en lui attribuant un rôle et c'est ce qu'on appelle l'incitation au rôle .
Vous commencerez généralement l'invite avec le rôle d'expert que le LLM doit jouer. Suivez ensuite les instructions pour ce qu'il doit faire. À titre d'exemple simple, le rôle pourrait être de demander au LLM d'être un poète et l'instruction pourrait être simplement d'écrire un poème sur AI Bites.
Ou cela pourrait être un peu plus compliqué en demandant au LLM d'agir comme un terminal Linux . Et fournir des instructions spécifiques pour copier les 10 premières lignes d'un fichier dans un autre fichier et pour l'enregistrer. Vous pouvez même l'empêcher d'inclure tout autre texte dans la sortie en mentionnant explicitement de ne donner aucune explication.
You are a poet.
Write a poem about AI Bites
Act as a linux terminalI want you to provide the shell command to read the contents of a file named "input.txt".Copy the first 10 lines to a different file with the name "new.txt" and save it.Do not give any explanations.
Différents éléments possibles d'une invite que nous pouvons entrer dans un LLM
Cela dit, si vous voulez que je formalise la structure d'une invite, je procéderais ainsi. Une invite commence généralement par un rôle que le modèle doit jouer si votre invite concerne un sujet spécialisé. Ensuite, il peut contenir toutes les instructions que vous souhaitez donner au LLM. En plus de cela, si vous souhaitez fournir des informations supplémentaires au LLM, il peut également aller après l'instruction.
Peu de temps après, vous pouvez fournir des exemples de haute qualité si vous effectuez des invites en quelques prises de vue. Ces exemples peuvent ensuite être suivis de tout contexte que vous souhaitez fournir au modèle. Si vous souhaitez poser une question et faire une tâche aq et A, vous pouvez inclure vos questions à la fin
Maintenant que nous avons vu ce qui constitue une invite, c'est encore mieux si nous savons comment formater ces invites. Par exemple, il est préférable de mentionner explicitement le format souhaité, puis de fournir le format.
Extract locations from the below textDesired format:Cities: <comma_separated_list_of_cities>Countries: <comma_separated_list_of_countries>Input: Although the exact age of Aleppo in Syria is unknown,an ancient temple discovered in the city dates to around 3,000 BC Excavations in the1990s unearthed evidence of 5,000 years of civilization,dating Beirut, which is now Lebanon's capital, to around 3,000 BC
De même, pour l'entrée ou le contexte, il est préférable de dire entrée suivie de deux-points, puis de fournir votre entrée.
Lorsque vous fournissez des exemples, il est préférable de les séparer par quelques hachages comme dans cet exemple.
Text: Today I saw a movie. It was amazing.sentiment: Positive
Text: I don't very good after seeing that incident.sentiment: Negative
Text: Lets party this weekend to celebrate your anniversary.sentiment: PositiveText: Walking in that neighbourhood is quite dangerous.sentiment: Negative
Si vous fournissez une entrée, vous pouvez l'entourer de guillemets comme cet exemple :
Text: """{text input here}"""
Ensuite, il y a quelque chose appelé la séquence d'arrêt qui indique au modèle d'arrêter de produire du texte parce que c'est fini avec la sortie. Vous pouvez choisir une séquence d'arrêt avec n'importe quel symbole de votre choix. Mais la nouvelle ligne semble être l'option habituelle ici.
Text: "Banana",
Output: "yellow \\n"
Text: "Tomato",
Output: "red \\n"
Text: "Apple",
Output: "red \\n"
Si vous travaillez avec, par exemple, la génération de code, il est préférable de fournir des commentaires en fonction de la langue dans laquelle vous souhaitez voir le code de sortie à générer.
/*
Get the name of the use as input and print it
*/
# get the name of the user as input and print it
Si vous avez lu jusqu'ici, je suppose que vous avez aimé l'article ou que vous êtes curieux de connaître l'IA. Quoi qu'il en soit, pourquoi ne pas regarder notre vidéo sur Prompt Engineering . Il s'agit de la première vidéo d'une série de vidéos sur les invites. Alors pourquoi ne pas vous abonner et rester à l'écoute !
Avec toute cette introduction sur les invites, l'ingénierie des invites et leurs types, nous n'avons fait qu'effleurer la surface ici. Par exemple, comment demander au LLM de raisonner sur une situation donnée ? Il existe des moyens plus avancés d'inviter comme la chaîne de pensée, la cohérence de soi, les connaissances générales, etc. Jetons un coup d'œil à ceux-ci dans les prochains articles et vidéos. S'il vous plaît restez à l'écoute!