Ingénierie avancée des invites

Portrait de Panida (Chompoo) Nimnual
15 min read
Résumez cela avec l'IA

Ce guide présente certaines techniques avancées d'ingénierie des invites et explique comment les appliquer dans Snaplogic GenAI App Builder afin de vous aider à accomplir des tâches plus complexes et à améliorer vos performances globales. Vous apprendrez à utiliser les invites système, à structurer les réponses en JSON, à créer des invites complexes, à gérer les jetons et à tenir compte de la taille des invites et du contexte. Commençons par définir précisément ce qu'est l'ingénierie des invites et pourquoi elle est importante.

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

Fondamentalement, l'ingénierie des invites consiste à concevoir l'entrée (l'« invite ») que vous fournissez à un modèle d'IA. La façon dont vous formulez votre invite peut avoir un impact significatif sur la qualité et la pertinence des résultats du modèle. Il ne s'agit pas seulement de ce que vous demandez à l'IA de faire, mais aussi de la manière dont vous le demandez.

Pourquoi l'ingénierie rapide est-elle importante ?

Même les modèles d'IA les plus avancés dépendent fortement des invites qu'ils reçoivent. Une invite bien conçue peut donner lieu à des réponses pertinentes, précises et très utiles, tandis qu'une invite mal structurée peut aboutir à des réponses vagues, inexactes ou hors de propos. Comprendre les nuances de l'ingénierie des invites peut vous aider à optimiser l'efficacité de vos applications d'IA.

Conditions préalables

  • Les bases de Snaplogic
  • Compte OpenAI, Azure OpenAI, Amazon Bedrock Anthropic Claude ou Google Gemini

Invite du système

L'invite système est une entrée spéciale qui définit le comportement, le ton et les limites du LLM avant qu'il n'interagisse avec les utilisateurs. Elle établit le contexte et définit les règles d'interaction, garantissant ainsi que les réponses de l'assistant correspondent à la personnalité et aux objectifs souhaités.

Imaginez que vous êtes assistant dans une agence de voyages. Votre travail consiste à fournir aux clients des recommandations de voyage personnalisées et précises. Pour y parvenir efficacement, il est essentiel de définir le comportement du LLM à l'aide de l'invite du système : définir le rôle de l'assistant, définir le ton et le style appropriés, et inclure les instructions importantes.

Capture d'écran 2024-10-03 à 00 h 52 min 01 s.jpg

  1. Faites glisser « OpenAI Chat Completion », « Azure OpenAI Chat Completion », « Anthropic Claude on AWS Messages » ou « Google Gemini Generate » sur le canevas.
  2. Sélectionnez l'onglet « Compte » et sélectionnez votre compte configuré.
    image12.jpg
  3. Sélectionnez l'onglet « Paramètres » pour configurer ces champs.
    1. Sélectionnez un modèle: cliquez sur l'icône en forme de bulle de discussion pour afficher la liste des modèles disponibles et sélectionnez celui que vous préférez.
      image1.jpg
    2. Définir « Invite »
      « J'organise une lune de miel de trois jours au Japon. Nous sommes intéressés par les expériences culturelles et la nature. »
      image7.jpg
    3. Définir « Invite système »: développez « Configuration avancée de l'invite » et entrez l'invite système.

      « Vous êtes assistant agent de voyage. Fournissez des recommandations de voyage personnalisées en fonction des préférences de l'utilisateur. Adoptez un ton amical et conversationnel. Si l'on vous interroge sur le programme du voyage, mentionnez les hébergements et les restaurants. »
      image23.jpg
    4. Enregistrer et fermer le panneau des paramètres d'alignement
    5. Validez le pipeline et voyons le résultat en cliquant sur l'aperçu des données de sortie.
      image8.jpg

Pour résumer l'exemple ci-dessus

Invite système :
Vous êtes assistant agent de voyage.
Fournissez des recommandations de voyage personnalisées en fonction des préférences de l'utilisateur.
Adoptez un ton amical et conversationnel.
Si l'on vous interroge sur le programme du voyage, incluez les hébergements et les restaurants.
Question :
J'organise une lune de miel de 3 jours au Japon. Nous sommes intéressés par les expériences culturelles et la nature.
Réponse :
C'est tellement excitant ! Le Japon est la destination idéale pour une lune de miel riche en expériences culturelles et en paysages magnifiques.
Pour votre voyage de 3 jours, je vous recommande de commencer par Kyoto, connue pour ses temples et ses jardins traditionnels. Vous pouvez visiter des sites emblématiques tels que le sanctuaire Fushimi Inari, la bambouseraie d'Arashiyama et le temple Kinkaku-ji. Ne manquez pas de participer à une cérémonie traditionnelle du thé ou d'essayer un kimono pour une expérience vraiment immersive.
Ensuite, rendez-vous à Hakone pour découvrir la beauté naturelle époustouflante du Japon. Vous pourrez explorer le musée en plein air de Hakone, vous détendre dans un onsen (source thermale) et profiter d'une croisière panoramique sur le lac Ashi avec vue sur le mont Fuji.
Pour l'hébergement, je vous suggère de séjourner dans un ryokan traditionnel pour vivre une expérience japonaise authentique. Les ryokans proposent des chambres avec tatamis, des lits futons et des dîners kaiseki composés de plats de saison.
Côté restauration, ne manquez pas de goûter aux spécialités locales telles que les sushis, les ramen et les tempura. Et ne manquez pas de goûter au saké, le célèbre vin de riz japonais !
N'hésitez pas à me contacter si vous souhaitez obtenir plus de détails ou de l'aide pour réserver votre hébergement et vos restaurants. Je vous souhaite une merveilleuse lune de miel au Japon !

La réponse suit les instructions du système en fournissant des recommandations personnalisées sur un ton amical, y compris des détails sur l'hébergement et les options de restauration.

Réponse JSON

La structuration des réponses au format JSON est une technique essentielle pour améliorer la clarté, maintenir la cohérence et garantir une intégration transparente avec divers systèmes, notamment les applications frontales, les API et les bases de données. Par exemple, si vous devez présenter les informations de l'exemple ci-dessus concernant l'assistant d'agence de voyage dans un format prédéfini sur un site web, générer un PDF ou vous connecter à d'autres services facilitant la réservation d'hôtels et d'activités, il est essentiel de formater la réponse rapide au format JSON. Cette approche garantit la compatibilité et une interaction fluide entre différentes plateformes et différents services.

Essayons de modifier l'invite système de l'exemple précédent afin d'obtenir une sortie dans un format JSON spécifique.

  1. Cliquez sur l'icône « Chat Completion » pour ouvrir les paramètres.
  2. Mettez à jour l'invite du système pour demander au LLM de produire la réponse JSON :
    « Vous êtes assistant dans une agence de voyages. Fournissez une réponse JSON qui inclut la destination, la durée du voyage, la liste des activités, la liste des hôtels (avec des champs pour le nom et la description) et la liste des restaurants (avec des champs pour le nom, l'emplacement et la description). »
  3. Cochez la case « Mode JSON ». Le snap générera un champ nommé json_output qui contient l'objet JSON analysé de la réponse.
    image10.jpg
  4. Enregistrez et fermez le panneau des paramètres d'alignement.
  5. Validez le pipeline et voyons le résultat.
    image16.jpg

La réponse immédiate est la chaîne JSON et l'objet JSON analysé se trouve dans le champ « json_output », car le mode JSON est activé. La réponse JSON est conforme à la structure spécifiée dans l'invite système, garantissant ainsi que tous les champs nécessaires sont inclus. Le format structuré prend en charge une intégration transparente avec les applications en aval. Pour une agence de voyages, cette fonctionnalité permet de générer efficacement des itinéraires personnalisés, qui peuvent être utilisés pour remplir des pages web, générer des fichiers PDF ou Excel, envoyer des e-mails ou mettre à jour directement les systèmes de réservation de voyages, y compris pour consulter la disponibilité des vols et vérifier les options d'hébergement.

Invite complexe

L'utilisation d'une liste de messages pour intégrer l'historique des conversations permet de conserver le contexte dans les dialogues en cours. Cette approche garantit la pertinence et la cohérence des réponses, améliorant ainsi le déroulement général de la conversation. De plus, ces messages peuvent être fournis à titre d'exemples de réponses des utilisateurs afin de guider le modèle dans ses interactions efficaces. En incluant les interactions précédentes, cela améliore la continuité et l'engagement des utilisateurs, facilitant ainsi la capacité du modèle à gérer des échanges complexes et à plusieurs tours. Cette technique permet au modèle de générer des réponses plus naturelles et plus précises, en particulier lorsqu'il s'appuie sur des détails antérieurs, ce qui se traduit par une conversation plus fluide et intuitive. De plus, ils peuvent être utilisés à titre d'exemple de réponse pour indiquer au modèle comment interagir avec l'utilisateur.

Chaque message contient un rôle et un contenu. Les rôles courants sont les suivants :

  • Système: fournit le contexte initial, définit le ton et le comportement du LLM.
  • Utilisateur: représente les entrées de l'utilisateur, guidant la conversation en fonction de ses requêtes ou commandes.
  • Assistant/Modèle: contient les réponses précédentes du LLM ou des exemples de comportements souhaités.

Cette section vous guidera tout au long du processus de création d'une liste de messages et de son utilisation comme entrée pour le LLM. Nous allons créer le pipeline suivant afin de permettre à un assistant agent de voyage de répondre à des questions en exploitant le contexte des conversations précédentes. Dans cet exemple, l'utilisateur pose des questions sur les attractions touristiques du Japon en avril, puis s'enquiert de la météo sans préciser de lieu ni de période. Créons le pipeline et voyons comment il fonctionne.

image5.jpg
  1. Faites glisser le « Générateur JSON » sur le canevas.
  2. Cliquez sur « Générateur JSON » pour l'ouvrir, puis cliquez sur le bouton « Modifier JSON » dans l'onglet principal Paramètres.
    image13.jpg
  3. Sélectionnez tout le texte du modèle et supprimez-le.
  4. Collez ce texte. Cette invite sera utilisée comme question utilisateur.
    {
    "prompt": "Can you tell me what the weather’s going to be like?"
    }

    Le « Générateur JSON » devrait maintenant ressembler à ceci
    image21.jpg
  5. Cliquez sur « OK » dans le coin inférieur droit pour enregistrer l'invite.
  6. Enregistrez les paramètres et fermez la fenêtre.
  7. Faites glisser « OpenAI Prompt Generator » ou « Azure OpenAI Prompt Generator » sur le canevas.
  8. Connectez le générateur de messages au « générateur JSON ».
  9. Cliquez sur « Générateur de messages » pour ouvrir les paramètres.
  10. Modifier l'étiquette en « Invite système ».
  11. Cliquez sur « Modifier l'invite » pour ouvrir l'éditeur d'invite.
    image19.jpg
  12. Sélectionnez tout le texte du modèle et supprimez-le.
  13. Collez ce texte. Nous l'utiliserons comme invite système.

    Vous êtes assistant agent de voyage.
    Fournir des recommandations de voyage personnalisées en fonction des préférences de l'utilisateur.

    L'éditeur de ligne de commande devrait maintenant ressembler à ceciimage24.jpg

  14. Cliquez sur « OK » dans le coin inférieur droit pour enregistrer l'invite.
  15. Cochez la case « Advanced prompt output » (Sortie avancée de l'invite). Le champ « User role » (Rôle de l'utilisateur) sera rempli.
  16. Définissez le champ « Rôle utilisateur » sur « SYSTÈME ».
    Les paramètres finaux de l'« Invite système » devraient maintenant ressembler à ceci.
    image25.jpg
  17. Enregistrez les paramètres et fermez la fenêtre. 
  18. Faites glisser le deuxième « Générateur de messages » sur le canevas et connectez-le au snap précédent. Ce snap traitera les questions précédentes de l'utilisateur.
  19. Suivez les étapes 9 à 17 comme guide pour configurer les champs suivants
    1. Étiquette :Message utilisateur1 Éditeur de message :
      Je prévois un voyage au Japon en avril. Pouvez-vous m'aider à trouver des attractions touristiques ?Rôle de l'utilisateur :UTILISATEUR
    2. Les paramètres finaux du « Message utilisateur 1 » doivent être les suivants.
    image2.jpgimage4.jpg
  20. Faites glisser le troisième « générateur de messages » sur le canevas et connectez-le au snap précédent. Ce snap traitera la réponse du LLM précédent.
  21. Suivez les étapes 9 à 17 comme guide pour configurer les champs suivants

    1. Étiquette: Message de l'assistantÉditeur de invites:
      Bien sûr ! Voici quelques attractions touristiques au Japon pendant votre voyage en avril :

      1. Observation des cerisiers en fleurs 2. Sanctuaire Fushimi Inari 3. Parc du Mémorial de la Paix d'Hiroshima 4. Mont Fuji 5. Quartier de Gion N'hésitez pas à me contacter si vous avez besoin de plus d'informations ou d'aide pour planifier votre voyage !

      Rôle de l'utilisateur: ASSISTANT
    2. Les paramètres finaux de l'« Assistant Message » devraient ressembler à ceci.
    image27.jpgimage17.jpg
  22. Faites glisser le quatrième « générateur de messages » sur le canevas et connectez-le au snap précédent. Ce snap traitera la question de l'utilisateur.
  23. Suivez les étapes 9 à 17 comme guide pour configurer les champs suivants :

    1. Label: User Message 2Prompt editor:
      {{prompt}} User role: USER
    2.  Les paramètres finaux du « Message utilisateur 2 » doivent être les suivants.
    image20.jpg
    image26.jpg
  24. Faites glisser « Chat Completion » (Fin de la conversation) sur le canevas et connectez-le à « User Message 2 » (Message utilisateur 2).
  25. Cliquez sur « Chat Completion » pour ouvrir les paramètres.
  26. Sélectionnez le compte dans l'onglet Compte.
  27. Sélectionnez l'onglet Paramètres.
  28. Sélectionnez le nom du modèle.
  29. Cochez la case « Utiliser la charge utile du message ». Le générateur d'invites créera une liste de messages dans le champ « messages ». Il est nécessaire d'activer « Utiliser la charge utile du message » pour utiliser cette liste de messages comme entrée.
  30. Le champ « Message payload » (Charge utile du message) apparaît. Définissez la valeur sur $messages.
    Les paramètres de la fonction « Chat Completion » devraient désormais ressembler à ceci
    image14.jpg
  31. Enregistrer et fermer le panneau de configuration
  32. Validez le pipeline et voyons le résultat.
    1. Cliquez sur la vue de sortie de « User Message 2 » pour voir la charge utile du message, que nous avons construite à l'aide du mode avancé du générateur de messages.
      image22.jpg
    2. Cliquez sur la vue de sortie de l'onglet « Chat Completion » pour voir la réponse du LLM.
      image11.jpg

Le résultat est :

En avril, le temps au Japon est généralement doux et agréable, avec les cerisiers en pleine floraison. Les températures oscillent généralement entre 10 et 20 °C (50 et 68 °F) et il peut y avoir quelques averses occasionnelles. C'est le moment idéal pour explorer les attractions en plein air et profiter des magnifiques paysages printaniers. N'oubliez pas d'emporter des vêtements chauds et un parapluie, au cas où !

Le modèle a fourni efficacement des informations météorologiques pour le Japon en avril, même si la dernière requête de l'utilisateur ne précisait ni le lieu ni l'heure. Cela est possible car le modèle utilise l'historique complet de la conversation pour comprendre le contexte et le déroulement du dialogue. De plus, le modèle a répété la question de l'utilisateur avant de répondre, conservant ainsi un style conversationnel cohérent. Pour obtenir les meilleurs résultats, veillez à ce que votre liste de messages soit complète et bien organisée, car cela aidera le LLM à générer des réponses plus pertinentes et cohérentes, améliorant ainsi la qualité de l'interaction.

Jetons

Les tokens sont des unités de texte, comprenant des mots, des ensembles de caractères ou des combinaisons de mots et de ponctuation, que les modèles linguistiques utilisent pour traiter et générer du langage. Ils peuvent aller de caractères ou de signes de ponctuation isolés à des mots entiers ou des parties de mots, selon le modèle. Par exemple, le mot « artificial » peut être divisé en tokens tels que « art », « ifi » et « cial ». Le nombre total de tokens dans une invite affecte la capacité de réponse du modèle. Chaque modèle a une limite maximale de tokens, qui inclut à la fois l'entrée et la sortie. Par exemple, GPT-3.5-Turbo a une limite de 4 096 tokens, tandis que GPT-4 a des limites de 8 192 tokens et 32 768 tokens pour la version 32k context. Une gestion efficace des tokens garantit que les réponses restent dans ces limites, ce qui améliore l'efficacité, réduit les coûts et renforce la précision.

Pour gérer efficacement l'utilisation des jetons, le paramètre de nombre maximal de jetons est essentiel. Il fixe une limite au nombre de jetons que le modèle peut générer, garantissant ainsi que le total combiné des entrées et des sorties reste dans les limites de la capacité du modèle. La définition d'un paramètre de jetons maximum présente plusieurs avantages : elle empêche les réponses de devenir excessivement longues, réduit les temps de réponse en générant des sorties plus concises, optimise les performances et minimise les coûts en contrôlant l'utilisation des jetons. De plus, elle améliore l'expérience utilisateur en fournissant des réponses claires, ciblées et plus rapides.

Exemples d'utilisation :

  • Chatbots d'assistance à la clientèle :en définissant un nombre maximal de jetons, vous vous assurez que les réponses du chatbot sont concises et pertinentes, fournissant ainsi des réponses rapides et adaptées aux demandes des utilisateurs sans les submerger de détails superflus. Cela améliore l'expérience utilisateur et garantit l'efficacité des interactions.
  • Résumé de contenu :aide à générer des résumés concis de textes longs, adaptés aux applications soumises à des contraintes d'espace, telles que les applications mobiles ou les notifications.
  • Récit interactif :contrôle la longueur des segments narratifs ou des options de dialogue, afin de maintenir un récit captivant et bien rythmé.
  • Descriptions de produits :générez des descriptions de produits concises et efficaces pour les plateformes de commerce électronique, en veillant à leur pertinence et à leur adaptation aux contraintes d'espace.

Voyons comment configurer le nombre maximal de jetons dans le snap SnapLogic Chat Completion à l'aide de l'invite : « Décrivez la photosynthèse en termes simples. ». Nous verrons comment le LLM se comporte avec et sans le paramètre de nombre maximal de jetons.

  1. Faites glisser « OpenAI Chat Completion » ou « Azure OpenAI Chat Completion » ou « Google Gemini Generate » sur le canevas.
  2. Sélectionnez l'onglet « Compte » et sélectionnez votre compte configuré.
  3. Sélectionnez l'onglet « Paramètres ».
  4. Sélectionnez le modèle que vous préférez utiliser.
  5. Définissez l'invite sur le message « Décrivez la photosynthèse en termes simples ».
    Les paramètres de fin de conversation devraient maintenant ressembler à ceci
    image15.jpg
  6. Enregistrez les paramètres instantanés et validez le pipeline pour voir le résultat.
    image6.jpg

    En conséquence, le champ « usage » nous fournit les détails de la consommation des jetons.

  7. Développez les « Paramètres du modèle ».
  8. Définissez « Nombre maximal de jetons » sur 100.
    image9.jpg
  9. Enregistrez les paramètres instantanés et validez le pipeline pour voir le résultat.
    image3.jpg

Le résultat est plus concis que lorsque le nombre maximal de jetons n'est pas défini. Dans ce cas, le nombre de jetons de complétion utilisés n'est que de 84, ce qui indique une réponse plus courte et plus ciblée.

L'utilisation efficace du nombre maximal de jetons garantit des réponses concises et pertinentes, optimisant ainsi les performances et la rentabilité. En définissant cette limite, vous pouvez éviter les sorties excessivement longues, réduire les temps de réponse et maintenir la clarté du contenu généré. Pour obtenir des résultats optimaux, adaptez le paramètre du nombre maximal de jetons à vos besoins spécifiques, tels que la longueur de réponse souhaitée et les exigences de l'application. Vérifiez et ajustez régulièrement ce paramètre afin de trouver le juste équilibre entre concision et exhaustivité, en veillant à ce que les sorties restent utiles et respectent les contraintes opérationnelles.

Considérations relatives à la taille des invites

Dans la section précédente, nous avons abordé les techniques permettant de gérer la taille des réponses afin de respecter les limites de tokens. Nous allons maintenant nous intéresser à la taille des invites et aux considérations contextuelles. En veillant à ce que les invites et le contexte soient de taille appropriée, vous pouvez améliorer la précision et la pertinence des réponses du modèle tout en respectant les limites de tokens.

Voici quelques techniques pour gérer la taille des invites et du contexte :

  • Restez clair et concis
    En rendant les invites claires et directes, vous réduisez l'utilisation de jetons, ce qui permet de maintenir l'invite dans les limites du modèle. En vous concentrant sur les informations essentielles et en supprimant les mots inutiles, vous améliorez la précision et la pertinence des réponses du modèle. De plus, en spécifiant la longueur souhaitée pour la sortie, vous optimisez davantage l'interaction, en évitant les réponses trop longues et en améliorant l'efficacité globale.

    Exemple de question :« Pourriez-vous expliquer en détail comment fonctionne le processus de photosynthèse chez les plantes, y compris le rôle de la chlorophylle, de la lumière du soleil et de l'eau ? » Meilleurequestion :« Expliquez le processus de photosynthèse chez les plantes, y compris le rôle de la chlorophylle, de la lumière du soleil et de l'eau, en environ 50 mots. »

  • Diviser les tâches complexes en instructions plus simples
    Le fait de décomposer des tâches complexes en sous-tâches plus petites et plus faciles à gérer réduit non seulement la taille de chaque invite individuelle, mais permet également au modèle de traiter chaque partie plus efficacement. Cette approche garantit que chaque invite reste dans les limites des jetons, ce qui se traduit par des réponses plus claires et plus précises.

    Exemple de tâche complexe :
    « Rédigez un rapport détaillé sur l'impact économique du changement climatique dans les pays en développement, comprenant une analyse statistique, des études de cas et des recommandations politiques. »

    Invites simplifiées :
    • Résumez l'impact économique du changement climatique dans les pays en développement.

    • « Fournir une analyse statistique de l'impact du changement climatique sur l'agriculture dans les pays en développement. »
    • « Énumérez des études de cas qui démontrent les conséquences économiques du changement climatique dans les pays en développement. »
    • « Proposer des recommandations politiques visant à atténuer l'impact économique du changement climatique dans les pays en développement. »
  • Utilisez une fenêtre glissante pour l'historique des discussions
    D'après la section consacrée aux invites complexes, nous savons que l'inclusion de l'intégralité de l'historique des discussions permet de conserver le contexte, mais peut également épuiser rapidement les jetons disponibles. Pour optimiser la taille des invites, utilisez une approche par fenêtre glissante. Cette technique consiste à n'inclure qu'une partie de l'historique des discussions, en se concentrant sur les échanges récents et pertinents, afin de maintenir les invites dans les limites des jetons.
  • Résumez les contextes
    Utilisez une technique de synthèse pour condenser le contexte en un bref résumé. Au lieu d'inclure l'historique complet de la conversation, créez un résumé concis qui reprend les informations essentielles. Cette approche réduit l'utilisation de jetons tout en conservant les détails clés pour générer des réponses précises.

En appliquant ces techniques, vous pouvez gérer efficacement la taille des messages et du contexte, garantissant ainsi que les interactions restent efficaces et pertinentes tout en optimisant l'utilisation des jetons.

Portrait de Panida (Chompoo) Nimnual
Ingénieur logiciel chez SnapLogic
Catégorie : Technique