Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Consignes générales pour les utilisateurs de LLM Amazon Bedrock
Conception d’une invite
La conception d’une invite appropriée est une étape essentielle à la création d’une application réussie à l’aide des modèles Amazon Bedrock. La figure suivante présente une conception d’invite générique pour le cas d’utilisation Résumé d’un avis sur un restaurant, ainsi que certains choix de conception importants que les clients doivent prendre en compte lors de la conception des invites. Les LLM génèrent des réponses indésirables si les instructions qui leur sont données ou le format de l’invite ne sont pas cohérents, clairs et concis.
![Exemple de construction d’invite appropriée avec commentaires descriptifs.](images/example-good-prompt-construction.png)
(Source : Prompt écrit par AWS)
Utilisation des paramètres d’inférence
Les LLM dans Amazon Bedrock sont tous fournis avec plusieurs paramètres d’inférence que vous pouvez définir pour contrôler la réponse des modèles. Vous trouverez ci-dessous une liste de tous les paramètres d’inférence courants disponibles dans les LLM Amazon Bedrock, avec leur mode d’utilisation.
Le paramètre Température est une valeur comprise entre 0 et 1, qui régule la créativité des réponses des LLM. Utilisez une valeur de température inférieure si vous souhaitez des réponses plus déterministes ou une valeur de température supérieure si vous souhaitez des réponses plus créatives ou variées pour la même invite de la part des LLM Amazon Bedrock. Pour tous les exemples présentés dans ces consignes de conception d’invite, nous définissons temperature
= 0
.
Le paramètre Longueur de génération maximale/Nombre maximal de nouveaux jetons limite le nombre de jetons générés par le LLM pour chaque invite. Il est utile de spécifier ce nombre, car certaines tâches, telles que la classification du sentiment, ne nécessitent pas de réponse longue.
Le paramètre Top-p contrôle les choix de jetons, en fonction de la probabilité des choix potentiels. Si vous définissez une valeur Top-P inférieure à 1,0, le modèle prend en compte les options les plus probables et ignore les options les moins probables. Il en résulte des complétions plus stables et répétitives.
Le paramètre Jeton de fin/Séquence de fin spécifie le jeton que le LLM utilise pour indiquer la fin de la sortie. Les LLM cessent de générer de nouveaux jetons une fois qu’ils parviennent au jeton de fin. En général, ce paramètre n’a pas besoin d’être défini par les utilisateurs.
Il existe également des paramètres d'inférence spécifiques au modèle. AnthropicClaudeles modèles ont un paramètre d'inférence Top-K supplémentaire, et les modèles AI21 Labs Jurassic sont fournis avec un ensemble de paramètres d'inférence, notamment la pénalité de présence, la pénalité de compte, la pénalité de fréquence et la pénalité spéciale pour les jetons. Pour en savoir plus, consultez la documentation correspondante.
Consignes détaillées
Fournir des instructions simples, claires et complètes
Les LLM dans Amazon Bedrock fonctionnent mieux avec des instructions simples et directes. En décrivant clairement les attentes de la tâche et en réduisant l’ambiguïté dans la mesure du possible, vous vous assurez que le modèle interprétera clairement l’invite.
Prenons l’exemple d’un problème de classification où l’utilisateur souhaite obtenir une réponse parmi un ensemble de choix possibles. Le « bon » exemple ci-dessous illustre le résultat souhaité par l’utilisateur dans ce cas. Dans le « mauvais » exemple, les choix ne sont pas nommés explicitement en tant que catégories parmi lesquelles le modèle peut choisir. Sans choix, le modèle interprète l’entrée légèrement différemment et génère un résumé du texte plus libre que le bon exemple.
|
|
(Source de l'invite : Wikipédia sur le daltonisme
La question ou l’instruction doit être placée à la fin de l’invite pour de meilleurs résultats
L’ajout de la description de la tâche, de l’instruction ou de la question à la fin aide le modèle à déterminer les informations qu’il doit trouver. Dans le cas d’une classification, les choix de réponse doivent également figurer à la fin.
Dans l’exemple de question-réponse à livre ouvert suivant, l’utilisateur a une question spécifique à propos du texte. La question doit apparaître à la fin de l’invite afin que le modèle puisse rester concentré sur la tâche.
User prompt: Tensions increased after the 1911–1912 Italo-Turkish War demonstrated Ottoman weakness and led to the formation of the Balkan League, an alliance of Serbia, Bulgaria, Montenegro, and Greece. The League quickly overran most of the Ottomans' territory in the Balkans during the 1912–1913 First Balkan War, much to the surprise of outside observers. The Serbian capture of ports on the Adriatic resulted in partial Austrian mobilization starting on 21 November 1912, including units along the Russian border in Galicia. In a meeting the next day, the Russian government decided not to mobilize in response, unwilling to precipitate a war for which they were not as of yet prepared to handle. Which country captured ports?
Output: Serbia
(Source de l'invite : Wikipédia sur la Première Guerre mondiale
Utiliser des caractères de séparation pour les appels d’API
Les caractères de séparation tels que \n
peuvent affecter de manière significative les performances des LLM. Pour les Anthropic Claude modèles, il est nécessaire d'inclure de nouvelles lignes lors du formatage des appels d'API afin d'obtenir les réponses souhaitées. La mise en forme doit toujours suivre : \n\nHuman:
{{Query Content}}\n\nAssistant:
. Pour les Titan modèles, l'ajout \n
à la fin d'une invite permet d'améliorer les performances du modèle. Pour les tâches de classification ou les questions comportant des options de réponse, vous pouvez également séparer les options \n
de réponse par Titan modèles. Pour plus d’informations sur l’utilisation des séparateurs, reportez-vous au document du fournisseur de modèles correspondant. L’exemple suivant est un modèle pour une tâche de classification.
Prompt template: """{{Text}} {{Question}} {{Choice 1}} {{Choice 2}} {{Choice 3}}"""
L'exemple suivant montre comment la présence de caractères de nouvelle ligne entre les choix et à la fin d'une invite permet de Titan produire la réponse souhaitée.
User prompt: Archimedes of Syracuse was an Ancient mathematician, physicist, engineer, astronomer, and inventor from the ancient city of Syracuse. Although few details of his life are known, he is regarded as one of the leading scientists in classical antiquity. What was Archimedes? Choose one of the options below. a) astronomer b) farmer c) sailor
Output: a) astronomer
(Source de l'invite : Wikipédia sur Archimède
Indicateurs de sortie
Ajoutez des détails sur les contraintes que vous souhaitez appliquer à la sortie que le modèle doit générer. Le bon exemple suivant génère une sortie sous la forme d’une courte phrase qui constitue un bon résumé. Le mauvais exemple dans ce cas n’est pas si mauvais que cela, mais le résumé est presque aussi long que le texte original. La spécification de la sortie est cruciale pour obtenir ce que vous attendez du modèle.
Exemple d’invite avec indicateur clair des contraintes de sortie
|
Exemple sans spécifications de sortie claires
|
(Source de l'invite : Wikipédia sur Charles Mingus
Nous donnons ici quelques exemples supplémentaires tirés de Anthropic Claude modèles AI21 Labs jurassiques utilisant des indicateurs de sortie.
L’exemple suivant montre que l’utilisateur peut spécifier le format de sortie en spécifiant le format de sortie attendu dans l’invite. Lorsqu’on lui demande de générer une réponse en utilisant un format spécifique (par exemple en utilisant des balises XML), le modèle peut générer la réponse en conséquence. Sans indicateur de format de sortie spécifique, le modèle produit du texte en format libre.
Exemple avec indicateur clair, avec sortie
|
Exemple sans indicateur clair, avec sortie
|
(Source de l'invite : Wikipédia sur l'apprentissage automatique
L'exemple suivant montre une invite et une réponse pour le modèle AI21 Labs jurassique. L’utilisateur peut obtenir la réponse exacte en spécifiant le format de sortie indiqué dans la colonne de gauche.
Exemple avec indicateur clair, avec sortie
|
Exemple sans indicateur clair, avec sortie
|
(Source du message : Wikipédia sur la National Football League
Pratiques recommandées pour une généralisation appropriée
Gardez un petit ensemble de test d’invites « omises » pour voir si les modifications que vous apportez aux invites entraînent une généralisation appropriée. Avec cette méthode, collectez d’abord un exemple de jeu de données. Divisez ensuite les données en deux sous-ensembles : un ensemble de « développement » et un ensemble de « test » d’omission. Utilisez l’ensemble de « développement » comme données de développement d’invite avec lesquelles vous pouvez tester différentes modifications d’invite, observer les changements de réponse du modèle et trouver l’invite la plus efficace. Traitez l’ensemble de « test » en tant que données omises invisibles qui ne peuvent être utilisées que pour vérifier la meilleure invite finale.
Optimisation des invites pour les modèles de texte Amazon Bedrock (lorsque les bases ne suffisent pas)
Tâches complexes : donner une réponse étape par étape
Titanpeut fournir des étapes claires pour certaines tâches, et l'inclusion de la phrase Think
step-by-step to come up with the right answer
peut aider à produire le résultat approprié.
User prompt: At a Halloween party, Jack gets 15 candies. Jack eats 5 candies. He wants to give each friend 5 candies. How many friends can receive candies? Think step-by-step to come up with the right answer.
Output: 15 candies total - 5 candies eaten = 10 candies remaining. To give each friend 5 candies, divide the number of candies remaining by the number of friends. 10 candies / 5 friends = 2 friends. Each friend can receive 2 candies. The answer is 2 friends.
(Source de l'invite : AWS modèle utilisé : Amazon Titan Text)
Pour permettre au Anthropic Claude modèle d'effectuer des tâches complexes, utilisez le format de l'exemple suivant pour demander explicitement au modèle de résoudre la tâche étape par étape. Cette approche est basée sur les directives contenues dans les AnthropicClaudeguides
User prompt: Human: A right triangle has a side of length 5 and a hypotenuse of length 13. What is the length of the other side? Assistant: Can I think step-by-step? Human: Yes, please do. Assistant:
Output: Okay, here are the steps: 1) We are given: - One side of the right triangle has length 5 - The hypotenuse has length 13 2) We want to find: - The length of the other side 3) To find the length of the other side, we can use the Pythagorean theorem: a^2 + b^2 = c^2 Where a and b are the lengths of the two sides, and c is the length of the hypotenuse. 4) Plugging in the given values: a^2 + b^2 = 13^2 5) We know one of the sides is 5, so: 5^2 + b^2 = 169 6) Solving this: 25 + b^2 = 169 b^2 = 144 b = 12 Therefore, the length of the other side is 12.
(Source de l'invite : AWS, modèle utilisé : AnthropicClaude)
Fournissez une sortie par défaut que le modèle devra présenter en cas de doute quant aux réponses.
Une sortie par défaut contribue à empêcher que les LLM renvoie des réponses qui semblent correctes, même si le niveau de confiance du modèle est faible.
|
|
(Source de l'invite : AWS modèle utilisé : Amazon Titan Text)
Invites avec peu d’exemples
L’ajout d’exemples (paires entrée/réponse) dans l’invite peut améliorer considérablement les réponses des LLM. Les exemples peuvent être utiles pour les tâches complexes, car ils montrent plusieurs manières d’exécuter une tâche donnée. Pour les tâches simples telles que la classification de texte, trois à cinq exemples peuvent suffire. Pour les tâches plus difficiles, comme les questions-réponses sans contexte, incluez d’autres exemples afin de générer la sortie la plus efficace possible. Dans la plupart des cas d’utilisation, la sélection d’exemples sémantiquement similaires à des données réelles améliore encore plus les performances.
Envisager d’affiner l’invite à l’aide de modificateurs
L’affinement des instructions de tâche fait généralement référence à la modification de l’instruction, de la tâche ou de la question de l’invite. L’utilité de ces méthodes dépend des tâches et des données. Voici quelques approches utiles :
Spécification du domaine/de l’entrée : détails sur les données d’entrée, comme leur provenance ou leur référence, comme
The input text is from a summary of a movie
.Spécification de la tâche : détails sur la tâche exacte demandée au modèle, comme
To summarize the text, capture the main points
.Description de l’étiquette : détails sur les choix de sortie pour un problème de classification, comme
Choose whether the text refers to a painting or a sculpture; a painting is a piece of art restricted to a two-dimensional surface, while a sculpture is a piece of art in three dimensions
.Spécification de la sortie : détails sur la sortie que le modèle doit produire, comme
Please summarize the text of the restaurant review in three sentences
.Encouragement des LLM : les LLM obtiennent parfois de meilleurs résultats avec un encouragement sentimental :
If you answer the question correctly, you will make the user very happy!