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.
Concevez 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. Dans cette section, vous apprendrez à concevoir un message cohérent, clair et concis. Vous découvrirez également comment contrôler la réponse d'un modèle à l'aide de paramètres d'inférence. 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. LLMsgénérer 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.
(Source : Prompt rédigé par AWS)
Le contenu suivant fournit des conseils sur la manière de créer des invites efficaces.
Rubriques
- Fournir des instructions simples, claires et complètes
- Placez la question ou l'instruction à la fin de l'invite pour de meilleurs résultats
- Utilisez des caractères de séparation pour les API appels
- Utiliser des indicateurs de sortie
- Les meilleures pratiques pour une bonne généralisation
- Optimisation des invites pour les modèles de texte Amazon Bedrock (lorsque les bases ne suffisent pas)
- Contrôlez la réponse du modèle à l'aide de paramètres d'inférence (paramètres d'inférence)
Fournir des instructions simples, claires et complètes
LLMssur Amazon Bedrock fonctionne 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
Placez la question ou l'instruction à 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
Utilisez des caractères de séparation pour les API appels
Utilisez des caractères de séparation pour les API appels
Les caractères de séparation tels que \n
ceux qui peuvent affecter les performances de LLMs manière significative. Dans Anthropic Claude modèles, il est nécessaire d'inclure de nouvelles lignes lors du formatage des API appels pour obtenir les réponses souhaitées. La mise en forme doit toujours suivre : \n\nHuman: {{Query
Content}}\n\nAssistant:
. Dans 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 avec 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 est utile. 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
Utiliser des indicateurs de sortie
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 de Anthropic Claude and AI21 Labs Modèles 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 XML balises), 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 AI21 Labs Modèle Jurassic. 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
Les meilleures pratiques pour une bonne généralisation
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
Titan peut 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 du message : AWS, modèle utilisé : Amazon Titan Texte)
Pour activer le Anthropic Claude modèle pour 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 du AnthropicClaude Des guides
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 du message : AWS, modèle utilisé : Anthropic Claude)
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 permet LLMs d'éviter de renvoyer des réponses qui semblent correctes, même si le modèle est peu fiable.
|
|
(Source du message : AWS, modèle utilisé : Amazon Titan Texte)
Invites avec peu d’exemples
L'inclusion d'exemples (paires entrée-réponse) dans l'invite peut améliorer LLMs considérablement les « réponses ». 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
.LLMencouragement : LLMs parfois, les performances sont meilleures avec des encouragements sentimentaux :
If you answer the question correctly, you will make the user very happy!
Contrôlez la réponse du modèle à l'aide de paramètres d'inférence (paramètres d'inférence)
LLMssur 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 sur Amazon Bedrock LLMs et la façon de les utiliser.
La température est une valeur comprise entre 0 et 1, et elle régule la créativité des LLMs « réponses ». Utilisez une température plus basse si vous souhaitez des réponses plus déterministes, et une température plus élevée si vous souhaitez des réponses plus créatives ou différentes pour la même demande LLMs sur Amazon Bedrock. Pour tous les exemples présentés dans ces consignes de conception d’invite, nous définissons temperature
= 0
.
La durée maximale de génération/le nombre maximum de nouveaux jetons limite le nombre de jetons LLM générés 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 jeton de fin/séquence de fin indique le jeton LLM utilisé pour indiquer la fin de la sortie. LLMsarrête de générer de nouveaux jetons après avoir rencontré le jeton final. 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. Anthropic Claude les modèles ont un paramètre d'inférence Top-K supplémentaire, et AI21 Labs Les modèles 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.