Maison > interface Web > js tutoriel > techniques pour une ingénierie rapide efficace

techniques pour une ingénierie rapide efficace

Susan Sarandon
Libérer: 2025-01-06 16:35:39
original
905 Les gens l'ont consulté

echniques for Effective Prompt Engineering

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.

Qu'est-ce que l'ingénierie rapide ?

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.

Composants d'une bonne invite LLM

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;
    }
}
Copier après la connexion
Copier après la connexion
Copier après la connexion

Cet exemple illustre l'importance de fournir un contexte pertinent pour guider le LLM dans la génération de la réponse correcte.

  1. Question utilisateur : la question est la partie principale de l'invite. Il doit être à but unique, spécifique et concis.

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;
    }
}
Copier après la connexion
Copier après la connexion
Copier après la connexion
  1. Orientation de sortie : vous pouvez guider la sortie du modèle en fournissant des exemples du format souhaité.

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;
    }
}
Copier après la connexion
Copier après la connexion

Techniques pour une ingénierie rapide efficace

  1. Zero-shot Prompting : Le LLM génère une réponse basée sur ses données d'entraînement sans exemples explicites. Ceci est efficace pour générer des solutions ou des réponses génériques basées sur des modèles établis.

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");
Copier après la connexion
Copier après la connexion
  1. Invites en quelques étapes : fournissez plusieurs exemples pour guider le modèle dans la génération du format de sortie souhaité.

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);
    }
}
Copier après la connexion
Copier après la connexion
  1. Chaînage d'invites : affinez de manière itérative vos requêtes en fonction des réponses précédentes, permettant au modèle de s'appuyer sur des interactions antérieures.

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;
    }
}
Copier après la connexion
Copier après la connexion
Copier après la connexion

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;
    }
}
Copier après la connexion
Copier après la connexion

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");
Copier après la connexion
Copier après la connexion
  1. Invite de chaîne de pensée : fournissez des instructions en plusieurs étapes, aidant le LLM à aborder un problème complexe étape par étape.

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 :

  1. Identifiez les scénarios clés à tester.
  2. Écrivez des tests unitaires en utilisant xUnit.
  3. Considérez les cas extrêmes."*

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);
    }
}
Copier après la connexion
Copier après la connexion

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!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal