Génération de réponses

Explorez davantage le manuel d’instructions RAG pour en savoir plus sur les solutions RAG d’aujourd’hui.

Un organigramme avec plusieurs formes et symboles, dont une bulle de dialogue bleue et un point d’interrogation.
Présentation

La génération de réponses est la composante d’une solution RAG qui crée une réponse à la requête d’un utilisateur en s’appuyant sur les informations récupérées à partir des sources de données ou du corpus de textes ciblés de l’entreprise. 

Remarques

Paramètres de modèle

Les chiffres qui suivent les noms des LLM open source indiquent les paramètres du modèle.  Par exemple, Granite 3.0 8B Instruct est un modèle avec 8 milliards de paramètres.  Les paramètres sont les chefs d’orchestre qui orchestrent la manière dont le modèle manipule et comprend les entrées et dont il produit ses sorties. Ils peuvent se manifester sous forme de pondération ou de biais, déterminant l’importance des caractéristiques d’entrée pour la sortie générée.

Un nombre de paramètres élevé équivaut généralement à un modèle avec une complexité et une adaptabilité accrues (si cela peut varier d’une architecture à l’autre, c’est généralement la cas des architectures de type transformer). Un grand modèle de langage avec un nombre de paramètres élevé peut discerner des schémas plus complexes à partir des données, favorisant des sorties plus riches et plus précises. Mais, comme pour beaucoup de choses dans la vie, il y a un compromis à trouver. Une augmentation du nombre de paramètres implique des exigences de calcul plus élevées, des besoins en mémoire plus importants et un risque imminent de surapprentissage.

Types de modèles : instruction, instruction de code et chat

Le mode chat est conçu pour les contextes conversationnels, tandis que le mode instruction est conçu pour les tâches de traitement du langage naturel dans certains domaines.

Le réglage fin en mode chat permet au LLM de générer des réponses plus naturelles et plus cohérentes, pertinentes et engageantes pour l’utilisateur. Le réglage fin en mode instruction aide le LLM à mieux suivre différents types d’instructions et à générer des sorties précises, adaptées à la tâche.

Paramètres du modèle

Les LLM proposent quelques paramètres pour « configurer » la façon dont les réponses sont générées.

  • le paramètre « température » détermine la variabilité des réponses du modèle. En d’autres termes, plus la température est basse, plus les réponses du modèle seront déterministes/cohérentes. Une valeur de température très faible, idéalement 0, est recommandée pour les solutions RAG.
  • « max_tokens/max_new_tokens » limite le nombre de tokens (un mot équivaut approximativement à 1,5 token) que le modèle utilisera dans sa réponse. Les développeurs de solutions devront expérimenter pour trouver la valeur qui assure des réponses complètes tout en évitant le trop d’informations dans leur cas d’utilisation, mais 100 est généralement une bonne limite pour les solutions RAG de type question-réponse.
  • la stratégie d’échantillonnage détermine comment le modèle sélectionne le token suivant dans une réponse. Les solutions RAG doivent utiliser une stratégie d’échantillonnage greedy pour garantir des réponses cohérentes aux prompts.

Prompt engineering

Tout d’abord, découvrons les règles de prompt pour améliorer la performance de la génération.

Règle n° 1 : faire simple pour commencer

Ne pas commencer par rédiger un prompt très long pour ensuite le tester.

Par exemple, ne pas commencer par un long prompt comme :

- Tu travailles au service financier d’une grande entreprise d’électronique du S&P 1000. Tu dois résumer les transcriptions des réunions trimestrielles des actionnaires afin d’identifier les sujets clés, les tendances et le sentiment. 

Réponds sous forme de liste numérique à puces.

Veille à ce que chaque élément soit une phrase complète.
N’hallucine pas. Réponds en t’appuyant uniquement sur les informations contenues dans la transcription.

Voici la transcription à résumer :

Mais commencez ici :

- Résume les principaux sujets abordés dans la transcription de la réunion suivante :

Règle n° 2 : incréments uniquement

Éviter de trop modifier les paramètres du modèle. 

Dans la plupart des cas :

  • Le moindre changement dans la température et la pénalité de répétition aura un impact notable.
  • Les grands changements masquent souvent les succès possibles grâce aux petits changements.

Appliquer les meilleurs principes d’ingénierie :

  • Modifier un seul paramètre à la fois. Valider chaque modification séparément.
  • Annuler les modifications qui n’ont pas l’effet escompté. Revenir à la valeur précédente.
  • Toute modification par rapport à la valeur par défaut doit avoir une bonne explication.

Règle n° 3 : validation croisée

Essayer de casser le prompt.  Ne pas tester le prompt qu’une seule fois avant de crier victoire. Effectuer des dizaines de tests sur le prompt.

  • Essayer de casser le prompt avant que le client ne le fasse.

Créer un jeu de données de test et continuer à y ajouter des exemples.  Après chaque sortie POC, faire un nouveau test pour s’assurer que le prompt continue de fonctionner.

Règle n° 4 : les extractions complexes ne peuvent pas être effectuées par des prompts uniques.

Pas de souci, plusieurs prompts sont traités en parallèle avec watsonx.ai.

Organigramme pour l’analyse des rapports financiers avec six prompts et trois sections.

Règle n° 5 : chaînes de prompts

Diviser les tâches en sous-tâches.

Organigramme illustrant le processus de planification de vacances dans la région viticole de Californie.

Règle n° 6 : triage des tâches (ou architecture des prompts)

Séparer chaque étape du processus en plusieurs prompts et leur modèle spécialisé.

Organigramme illustrant le processus d’un assistant multi-LLM, de la requête utilisateur aux données de l’entreprise.

Règle n° 7 : granite.13b.chat.v

Les modèles de chat nécessitent une conception de prompt différente de celle des modèles d’instruction.

Capture d’écran d’un format d’instruction spécifique au modèle, avec un prompt système et un prompt générique.
Capture d’écran d’un prompt générique pour l’apprentissage contextuel.
Prompt pour le format spécifique au modèle RAG.

Règle n° 8 : s’amuser et jouer avec les modèles

Sérieusement, nous apprenons autant par le jeu que par le travail.  Essayez les derniers LLM et mettez-les au défi en leur confiant des tâches qui ne relèvent pas de votre travail habituel.

Choisissez quelque chose que le LLM est susceptible d’accomplir.

  • Écris un poème en 4 phrases sur les oiseaux. 
  • Défi de Chat : OK, maintenant parlons chiens
  •  Raconte-moi une histoire drôle sur un oiseau nommé Midori en moins de 5 phrases. 
  • Défi de Chat : change le nom de l’oiseau en Charlie, ajoute la couleur bleue et fais-en 7 phrases. 
  • Réponds à la question suivante en seulement 10 mots : « Pourquoi le ciel est-il bleu ? » 
  • Défi de Chat : Super, donne-moi une raison qui semble vraie, mais qui ne l’est pas.

Ajoutez des interactions multi-niveaux pour expérimenter l’enchaînement de vos prompts.

Prompts système et prompts utilisateur

La modification du prompt système est tout aussi importante que la modification du prompt utilisateur. Le prompt système peut énormément affecter la qualité de la réponse, le ton, etc. Les prompts système définissent le contexte de l’interaction, guidant le comportement du modèle et garantissant la cohérence, tandis que les prompts utilisateur pilotent le contenu spécifique de la conversation. Il est crucial de pouvoir modifier les prompts système pour améliorer la performance.

Prompts système

Les prompts système fournissent les instructions sous-jacentes qui guident le comportement de l’IA tout au long de l’interaction.  Ils définissent le rôle, le ton et les limites éthiques du modèle. L’utilisation de délimiteurs peut aider le modèle et éviter les injections de prompt.  Les délimiteurs spécifient où, dans le prompt, vous insérez l’entrée utilisateur, ce qui aide le modèle à déterminer où commence et où se termine l’entrée utilisateur.  Les délimiteurs permettent également d’éviter les injections de prompt. Les délimiteurs peuvent être du type : ``**, **”””**, **< >**, ** `.

Voici un exemple de prompt système pour le modèle Granite :

<|system|>\nTu es Granite Chat, un modèle de langage d’IA développé par IBM. Tu es un assistant prudent. Tu suis attentivement les instructions. Tu es serviable et inoffensif, tu respectes les règles éthiques et encourages un comportement positif. Tu réponds toujours aux salutations (par exemple, salut, coucou, bonjour, ça va, enchanté, ça roule, etc.) par « Bonjour, Je suis Granite Chat, créé par IBM. Comment puis-je vous aider aujourd’hui ? » Tu veilleras à ne rien dire d’autre et à ne pas entamer de conversation. {instruction}\n{session_history}<|user|>\n{query}\n<|assistant|>\n

Prompts utilisateur

Les prompts utilisateur sont les instructions ou les requêtes spécifiques fournies par l’utilisateur pour obtenir la réponse souhaitée à partir du modèle. Ils doivent être clairs et concis pour s’assurer que le modèle comprend la tâche.

Outils IBM

Laboratoire d'invites

Prompt Lab est une plateforme IBM qui vous permet de travailler avec des modèles de fondation et de créer des prompts à l’aide du prompt engineering. Dans Prompt Lab, les utilisateurs peuvent interagir avec les modèles de fondation dans l’éditeur de prompts en mode Chat, Freeform ou Structured. Toutes ces options vous permettront de créer les meilleures configurations de modèle pour tout un éventail de tâches de type traitement automatique du langage naturel (TAL), notamment la réponse aux questions, la génération et la synthèse de contenu, ainsi que la classification et l’extraction de texte.

Pour découvrir par où commencer et tout ce qui concerne Prompt Lab, veuillez consulter le site officiel de Prompt Lab.

InstructLab

Une stratégie émergente pour améliorer la précision des solutions RAG consiste à utiliser un modèle de génération affiné sur le corpus de données. Cela peut permettre d’améliorer la précision de bout en bout pour plusieurs raisons.  La plus importante étant la capacité de la phase de génération à améliorer, voire à corriger les résultats de la récupération.  Le modèle peut également fournir des réponses plus pertinentes et spécialisées, puisqu’il peut être adapté au contenu métier de votre entreprise.

Pour plus d’informations sur la façon de démarrer et sur tout ce qui concerne InstructLab, veuillez consulter le référentiel officiel d’InstructLab

Granite

Granite 3.0 comprend une gamme de modèles tels que Granite 3.0 8B Instruct, 2B Instruct, 8B Base et 2B Base, qui ont été entraînés sur plus de 12 000 milliards de jetons répartis dans 12 langages naturels et 116 langages de programmation. Ces modèles égalent ou surpassent les modèles de taille similaire des principaux fournisseurs sur des benchmarks universitaires et professionnels, affichant une forte performance dans des tâches telles que la compréhension du langage, la génération de code et la synthèse de documents.

Différenciateurs de Granite 3.0

Transparence et sécurité

L’engagement d’IBM en matière de transparence et de sécurité se reflète dans la divulgation détaillée des jeux de données, des processus de filtrage et de curation dans le rapport technique Granite 3.0. Les modèles sont publiés sous la licence permissive Apache 2.0, ce qui garantit la flexibilité et l’autonomie des entreprises clientes et de l’ensemble de la communauté d’IA. De plus, les modèles Granite Guardian 3.0 offrent des capacités complètes de détection des risques et des dommages, surpassant les autres modèles de sécurité disponibles sur le marché.

Efficacité et rentabilité

Les modèles Granite 3.0 sont conçus pour être rentables, permettant aux entreprises d’atteindre la performance d’un modèle de pointe à un coût nettement inférieur. L’utilisation d’InstructLab, une approche collaborative open source, permet d’adapter des modèles plus petits à des tâches spécifiques, en divisant par 3 à 23 fois le coût des modèles plus grands. Les modèles d’architecture Mixture of Experts (MoE), tels que le Granite 3.0 3B-A800M et 1B-A400M, offrent une grande efficacité d’inférence avec des compromis de performance minimes, ce qui les rend parfaits pour les applications à faible latence et les déploiements CPU.

Capacités multimodales et futures mises à jour

Fin 2024, les modèles Granite 3.0 devraient prendre en charge une fenêtre contextuelle étendue de 128 000 pixels et des fonctionnalités de compréhension multimodale des documents, y compris des tâches de type images en entrée, texte en sortie. Cette extension renforcera davantage leur utilité dans divers cas d’utilisation en entreprise.

Intégration de l’écosystème

Les modèles Granite 3.0 sont disponibles sur plusieurs plateformes, notamment watsonx.ai d’IBM, Hugging Face, Vertex AI de Google Cloud, microservices NIM Nvidia, Ollama et Replicate, offrant aux développeurs une large gamme d’options de déploiement et garantissant une intégration fluide avec les workflows existants. En résumé, les modèles Granite 3.0 d’IBM offrent une solution puissante, transparente et économique pour l’IA d’entreprise, alliant performance de pointe, fonctionnalités de sécurité robustes et support étendu de l’écosystème.

Pour découvrir par où commencer et tout ce qui concerne Granite, veuillez consulter le site officiel de Granite.

Conseils et recommandations

Un meilleur prompting

Le contenu et la structure des prompts soumis aux LLM peuvent grandement influencer la qualité et la fidélité des réponses qu’ils génèrent.

Les six types de prompts

Les prompts peuvent être divisés en six grands types :

Mot-clé uniquement

Les requêtes par mot-clé uniquement sont explicites ; ce sont des prompts composés de mots-clés liés au sujet en question. Par exemple, le prompt :

Quel est le temps de cuisson optimal pour un gâteau au chocolat en haute altitude ?

peut être réduit aux mots-clés suivants :

temps de cuisson gâteau au chocolat haute altitude

Les prompts par mots-clés uniquement génèrent généralement des réponses plus larges et plus axées sur un sujet, avec une forte pertinence du texte d’augmentation récupéré. Cet effet peut être souhaitable pour une solution nécessitant des réponses larges et informatives comme un chatbot d’assistant opérateur, mais cela peut générer trop d’informations pour les solutions nécessitant des réponses concises et conversationnelles.

Comparatif

Les prompts comparatifs demandent au LLM de faire des comparaisons entre un ou plusieurs sujets ou concepts du prompt. Par exemple :

Quelle est la différence entre une règle et une attribution de rôle ?

Les prompts comparatifs peuvent être utiles lorsque le modèle de génération et le corpus de référence contiennent des informations sur tous les concepts, ainsi que des dimensions évidentes ou des éléments d’appui sur la manière dont les concepts peuvent être efficacement comparés. Sans ces éléments, le prompt comparatif risque de générer une réponse absurde ou inefficace.

Agrégé

Les prompts agrégés demandent au modèle d’agréger deux ou plusieurs concepts ou requêtes en un seul prompt. Par exemple :

Comment créer une autorisation et un groupe d’autorisations ?

Les prompts agrégés sont généralement plus difficiles pour les LLM en raison de l’ambiguïté inhérente de la question.   

  • S’agit-il de plusieurs concepts à exécuter en parallèle pour minimiser le temps de traitement ?
  • S’agit-il de concepts complémentaires qui se renforcent mutuellement ?
  • S’agit-il d’expliquer comment effectuer des actions au cours d’une série séquentielle d’étapes ? 

Pour résoudre cette ambiguïté, il est généralement recommandé de diviser les prompts agrégés en plusieurs prompts à sujet unique, ou de fournir un contexte supplémentaire qui décrit explicitement la réponse souhaitée.

Ambigu

Un prompt ambigu est un prompt qui peut être interprété de plusieurs façons. Par exemple :

Qu’est-ce qu’un rôle ?

Ce prompt peut générer des réponses sur les rôles dans le contexte du jeu d’acteur et une discussion ultérieure sur les acteurs célèbres et leurs rôles, sur les rôles dans le contexte d’une solution de sécurité informatique, ou sur les rôles dans le contexte d’une entreprise. L’incertitude qu’ils génèrent fait des prompts ambigus un mauvais choix pour la plupart des solutions ; ils doivent être révisés pour inclure plus de détails et de contexte afin de concentrer le LLM sur le sujet souhaité.

Déviant

Dans le contexte d’une solution RAG, un prompt déviant est un prompt sans réponse dans le corpus de documents d’appui. Cela peut conduire à des réponses hallucinées/improvisées basées sur les connaissances intégrées au LLM, ou à des réponses non pertinentes basées sur des résultats de recherche peu pertinents du corpus.

Bien qu’il puisse être impossible de se prémunir contre les réponses déviantes dans tous les cas d’utilisation (par exemple, un chatbot conversationnel), les développeurs de solutions peuvent les minimiser en limitant les entrées utilisateur au moyen de listes de choix, par exemple. « Je peux vous aider... » suivi d’une série de boutons de sujets prédéfinis, ou diriger les utilisateurs vers des réponses sûres par le biais d’un langage descriptif ou directif dans les instructions utilisateur et les réponses du modèle.

Émissions

Les prompts indirects sont des prompts dont les mots-clés ne figurent pas directement dans le corpus, mais qui ont des synonymes qui, eux, y sont. Les prompts indirects représentent un défi pour les développeurs de solutions, car leur fiabilité dépend du nombre de synonymes des mots-clés du prompt et de la manière dont les synonymes conduisent à une requête sans ambiguïté.

Il est conseillé aux développeurs de mettre en place un mécanisme de filtrage des requêtes sur liste noire pour ajouter des informations claires aux mots-clés, ou pour remplacer les mots-clés « problématiques » par des synonymes ou des phrases sans ambigüité.

Bonnes pratiques de prompting

Si la création de « bons » prompts est autant un art qu’une science, il existe plusieurs pratiques acceptées qui favorisent de meilleurs prompts et donc de meilleurs résultats.

Un bon prompt est :

  • Pertinent pour le domaine cible et contient suffisamment de détails et de contexte pour que le contenu et le ton de la sortie souhaitée soient clairs et précis.

  • Adapté au public cible. Une réponse destinée à l’analyste financier d’une entreprise aura un ton, une structure et un contenu très différents de ceux d’une réponse destinée au client d’une banque. Un bon prompt comportera des instructions (« Tu es un analyste financier de niveau intermédiaire. Génère un rapport… ») ou une indication claire du public (« …rédigé pour un client bancaire qui ne connaît pas la terminologie financière ») pour la réponse.

  • Conçu pour un cas d’utilisation particulier. Un bon prompt sera conçu pour répondre à un cas d’utilisation spécifique et inclura des détails sur l’endroit et la façon dont la réponse générée sera utilisée (« ...la réponse sera publiée dans un magazine destiné aux voyagistes »), qui influenceront le ton, le langage et le style de la réponse générée.

Approfondir

Accédez aux modèles technologiques, architectures de solutions et publications sur le thème de l’architecture les plus récents d’IBM.

  1. Accéder au Centre d’architecture IBM
Contributeurs

Vicky Kuo, Chris Kirby, Luke Major, Atin Chandel, Brant Li, Evan Wheldon

Mise à jour : 15 novembre 2024