Dans Casino Royale (2006), James Bond précise les ingrédients précis de son Vesper martini : 3 mesures de Gordons, 1 de Vodka, une demi-mesure de Kina Lillet, shaker sur glace avec une fine tranche de zeste de citron.
En détaillant les composants, Bond assure une boisson de qualité supérieure. De même, lors de l'interaction avec des modèles de langage étendus (LLM), la spécificité et la clarté de vos invites déterminent la qualité du résultat.
Ce processus, connu sous le nom d'ingénierie rapide, est essentiel pour obtenir des réponses précises et pertinentes de la part des systèmes d'IA.
L'ingénierie rapide implique l'élaboration d'instructions précises pour optimiser les réponses LLM. Plus l'invite de saisie est détaillée et spécifique, plus la sortie sera pertinente et alignée sur vos besoins.
Exemple :
Si vous demandez à un LLM « Résumer l'ingénierie rapide », la réponse peut être vague. Cependant, en précisant la demande comme ceci :
Invite : « Donnez un résumé de 100 mots de l'ingénierie des invites, destiné aux utilisateurs non techniques. »
Le LLM est désormais guidé pour donner une réponse concise et spécifique au public.
Sortie :
"L'ingénierie rapide consiste à créer des instructions efficaces pour les systèmes d'IA comme ChatGPT afin d'obtenir les meilleurs résultats. Cela implique d'être spécifique, de fournir un contexte et de décomposer des questions complexes. En spécifiant des formats, en fournissant des exemples ou en fixant des limites, l'ingénierie rapide garantit une communication claire avec un Assistant IA."
Cette méthode de demande de résultats spécifiques montre comment « concevoir » une invite pour obtenir un résultat souhaité et précis.
1 Contexte : Le contexte fournit au LLM des informations supplémentaires qui l'aident à mieux comprendre votre demande. En intégrant un contexte pertinent, l'IA peut générer des réponses plus précises et adaptées.
Exemple :
Supposons que vous travaillez sur un projet C# et que vous souhaitiez modifier une définition de classe. Le contexte ici pourrait être un extrait de code.
Invite avec contexte :
"Étant donné ce code C# :
public class User { public int UserId { get; ensemble; } chaîne publique Nom { get; ensemble; } chaîne publique Email { get; ensemble; } chaîne publique PhoneNumber {get; ensemble; } >
Modifiez la classe pour rendre UserId et Name en lecture seule et définissez-les dans le constructeur."
Sortie :
public class User { public int UserId { get; } public string Name { get; } public string Email { get; set; } public string PhoneNumber { get; set; } public User(int userId, string name) { UserId = userId; Name = name; } }
Cet exemple illustre l'importance de fournir un contexte pertinent pour guider le LLM dans la génération de la réponse correcte.
Exemple :
Si vous souhaitez créer une classe d'utilisateurs en C# avec certains champs, spécifiez clairement les champs et le comportement requis.
Question vague :
"Créer une classe d'utilisateurs."
Question spécifique :
"Créez une classe d'utilisateurs C# avec des champs : UserId, Name, PhoneNumber. Définissez UserId en lecture seule et ajoutez un constructeur pour définir ces champs."
Sortie :
public class User { public int UserId { get; } public string Name { get; } public string Email { get; set; } public string PhoneNumber { get; set; } public User(int userId, string name) { UserId = userId; Name = name; } }
Exemple :
Si vous devez générer des données factices pour une classe User, fournissez un exemple de ce à quoi devraient ressembler les données.
Invite avec des exemples :
"Générez 5 instances de la classe User avec ces champs : UserId, Name, Email, PhoneNumber. Utilisez le format suivant pour des exemples :
var user1 = new User(1, "John Doe", "john.doe@example.com", "555-555-5555");
Voici quelques exemples :
var user2 = new User(2, "Jane Doe", "jane.doe@example.com", "555-555-5556");
Générez maintenant 5 instances."
Sortie :
public class User { public int UserId { get; } public string Name { get; set; } public string PhoneNumber { get; set; } public User(int userId, string name, string phoneNumber) { UserId = userId; Name = name; PhoneNumber = phoneNumber; } }
Exemple :
Invite : "Créez un test unitaire pour la classe User à l'aide de xUnit en C#."
Sortie :
var user1 = new User(1, "John Smith", "john.smith@example.com", "555-555-5555"); var user2 = new User(2, "Jane Doe", "jane.doe@example.com", "555-555-5556"); var user3 = new User(3, "Mary Johnson", "mary.johnson@example.com", "555-555-5557"); var user4 = new User(4, "David Lee", "david.lee@example.com", "555-555-5558"); var user5 = new User(5, "Linda White", "linda.white@example.com", "555-555-5559");
Exemple :
Pour générer des données pour une classe User, vous pouvez utiliser quelques exemples de points de données pour guider le format de sortie.
Invite avec quelques exemples de prises de vue :
"Voici quelques instances de la classe User :
var user1 = new User(1, "John Smith", "john.smith@example.com", "555-555-5555");
var user2 = new User(2, "Jane Doe", "jane.doe@example.com", "555-555-5556");
Créez maintenant 3 instances supplémentaires en suivant le même modèle."
Sortie :
public class UserTests { [Fact] public void UserConstructor_SetsProperties() { // Arrange var user = new User(1, "John Doe", "john.doe@example.com", "555-555-5555"); // Act & Assert Assert.Equal(1, user.UserId); Assert.Equal("John Doe", user.Name); Assert.Equal("john.doe@example.com", user.Email); Assert.Equal("555-555-5555", user.PhoneNumber); } }
Exemple :
Commencez par une simple invite et modifiez-la progressivement.
Première invite :
"Créez une classe utilisateur de base en Python."
Sortie :
public class User { public int UserId { get; } public string Name { get; } public string Email { get; set; } public string PhoneNumber { get; set; } public User(int userId, string name) { UserId = userId; Name = name; } }
Invite de suivi :
"Convertir cette classe en C#."
Sortie :
public class User { public int UserId { get; } public string Name { get; set; } public string PhoneNumber { get; set; } public User(int userId, string name, string phoneNumber) { UserId = userId; Name = name; PhoneNumber = phoneNumber; } }
Invite finale :
"Rendez la propriété Mot de passe privée et ajoutez une propriété DateTime CreatedAt initialisée dans le constructeur."
Sortie :
var user1 = new User(1, "John Smith", "john.smith@example.com", "555-555-5555"); var user2 = new User(2, "Jane Doe", "jane.doe@example.com", "555-555-5556"); var user3 = new User(3, "Mary Johnson", "mary.johnson@example.com", "555-555-5557"); var user4 = new User(4, "David Lee", "david.lee@example.com", "555-555-5558"); var user5 = new User(5, "Linda White", "linda.white@example.com", "555-555-5559");
Exemple :
Invite :
*"Créez un ensemble de tests unitaires pour la classe C# suivante :
public class User { public int UserId { get; ensemble; } chaîne publique Nom { get; ensemble; } chaîne publique PhoneNumber {get; ensemble; } >
Réfléchissez étape par étape :
Sortie :
public class UserTests { [Fact] public void UserConstructor_SetsProperties() { // Arrange var user = new User(1, "John Doe", "john.doe@example.com", "555-555-5555"); // Act & Assert Assert.Equal(1, user.UserId); Assert.Equal("John Doe", user.Name); Assert.Equal("john.doe@example.com", user.Email); Assert.Equal("555-555-5555", user.PhoneNumber); } }
L'article a été rédigé à l'origine par Jim, responsable de Devreal chez Pieces for Developers. Vous pouvez trouver plus d'exemples et de nuances dans cet article https://pieces.app/blog/llm-prompt-engineering
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!