Les 6 meilleurs conseils pour créer son assistant IA personnalisé

Les 6 meilleurs conseils pour créer son assistant IA personnalisé Créer un assistant qui répond avec efficacité à un cas d'usage demande une maitrise précise du prompting. Voici quelques bonnes pratiques pour maximiser la pertinence de son assistant.

Anthropic, OpenAI, Amazon… Les éditeurs de LLMs sont de plus en plus nombreux à proposer des outils pour créer ses propres assistants. Assez simple d'utilisation aux premiers abords, la conception d'un chatbot véritablement efficace nécessite en réalité une maîtrise avancée du prompting (l'art de créer de prompt) et quelques notions sur le fonctionnement des LLMs. Nous vous proposons dans cet article des bons conseils qui s'appliquent à la majorité des assistants du marché.

#1 Itérer, la clef du succès

La clé d'un assistant fonctionnel et opérationnel réside en grande partie dans le succès de son prompt. S'il peut être assez vague ou mal formulé lors d'une discussion classique avec un LLM (dans ChatGPT par exemple), le prompt d'un assistant doit toujours être précis. Chaque mot du prompt doit être stratégiquement pensé. Une étude sur l'effet papillon au sein des LLMS, menée par Abel Salinas et Fred Morstatter de l'Université de Californie du Sud, a démontré que de petits changements dans la formulation d'un prompt peuvent affecter significativement la sortie du modèle.

Selon cette étude, il est essentiel de tester plusieurs formulations de prompt avant de déployer son assistant à grande échelle, afin de s'assurer de sa cohérence. L'itération, en modifiant le prompt de l'assistant et en testant à plusieurs reprises ses sorties, s'avère très utile pour affiner la sortie, et donc le résultat attendu. Les auteurs recommandent également d'éviter l'utilisation de "jailbreaks", ces techniques permettant de contourner certains filtres de modération de contenu, au risque d'une baisse importante des performances. 

#2 Utiliser des mots simples et l'anglais

Pour maximiser les performances du prompt et réduire le temps de calcul du modèle, il est recommandé d'utiliser des mots simples et d'être le plus clair possible, le but étant de minimiser le nombre de tokens (mots et signes de ponctuation). Plus le prompt contient de tokens, plus le traitement par le modèle prendra de temps et mobilisera de ressources de calcul. Des mots complexes, des phrases alambiquées ou des structures syntaxiques atypiques entraînent la génération de plus de tokens qu'une formulation simple et claire. Dans cette optique, l'usage de l'anglais est une nécessité. L'anglais étant la langue majoritairement utilisée pour entraîner ces grands modèles, dans cette langue, leur champ lexical est beaucoup plus vaste que dans les autres langues. Les LLMs peuvent alors encoder davantage de nuances avec moins de tokens. 

#3 Ne pas oublier de contextualiser

Un bon prompt d'assistant commence par une contextualisation simple du rôle de l'assistant. Le roleplay est aujourd'hui une technique éprouvée. Utiliser un nom de métier est une bonne pratique. Exemple : "Tu es un traducteur spécialisé." La seconde étape est de décrire très simplement la tâche attendue. (Ex : "Ton rôle est de traduire du texte en anglais.") Enfin, on peut rentrer par la suite dans les détails de la tâche demandée.  (Ex :"L'utilisateur va te donner un texte en entrée et tu devras traduire le texte en tenant compte du contexte global."). Dans des contextes plus techniques il peut être utile de préciser le type de sortie attendue (XML, JSON, HTML…).

#4 Donner des exemples

L'utilisation d'exemples de résultats attendus permet au modèle de gagner en efficacité. Un couple de demande utilisateur / réponse souhaitée est encore plus pertinent. Exemple pour un prompt de traduction : "Voici l'exemple d'un résultat attendu : [USER] Il fait beau aujourd'hui, n'est-ce pas ? [/USER] [ASSISTANT] It's nice weather today, isn't it ? [/ASSISTANT]." Plus les exemples sont pertinents et diversifiés, meilleurs seront les résultats. Une bonne pratique consiste également à indiquer au chatbot qu'il peut répondre "je ne sais pas" quand il ne connait pas la réponse à une question. Cette technique permet d'éviter une grande partie des phénomènes d'hallucinations bien connus des LLMs.

#5 Répéter les instructions… à la fin du prompt

Des chercheurs des Universités de Stanford et Berkeley ont démontré que les LLMs étaient sujets à un biais très particulier : le "lost in the middle", particulièrement lors de la soumission de long contexte (pour rappel, le contexte comprend l'ensemble des informations envoyées en input au modèle). Les résultats montrent que les performances des modèles actuels, même ceux conçus pour les longs contextes, se dégradent significativement lorsque l'information pertinente change de position dans le contexte. Les performances sont meilleures quand l'information se trouve au début ou à la fin du contexte, et nettement moins bonnes quand le modèle doit accéder à une information au milieu d'un long contexte. Autrement dit, les LLMs actuels parviennent mieux à exploiter l'information quand elle se trouve au début (biais de primauté) ou à la fin (biais de récence) du contexte, mais éprouvent des difficultés à la repérer et l'utiliser lorsqu'elle est située au milieu de longues séquences en input.

Très concrètement, lorsqu'un prompt très long est adressé aux modèles, ce dernier aura tendance à accorder plus d'attention aux instructions ajoutées en début et en fin de prompt. Partant de ce principe, il est recommandé de placer les instructions les plus importantes en début de prompt et en fin de prompt. Par ailleurs, pour limiter l'effet de récence, Microsoft recommande dans son guide de prompt engineering, de répéter les instructions initiales en fin de prompt, pour maximiser les performances du modèle (et donc de l'assistant).

#6 Attention aux knowledge files avec OpenAI

De plus en plus d'éditeurs d'assistants permettent d'ajouter des fichiers de connaissances (ou knowledge files). Très concrètement, cette option permet de donner à votre assistant de la documentation. Documentation sur laquelle le chatbot pourra en partie s'appuyer pour répondre aux demandes de l'utilisateur. Bien qu'en théorie très utile, cette pratique peut  - dans certains cas et notamment avec les assistants GPTs d'OpenAI - perturber les instructions envoyées dans le prompt.

Comme l'explique Nick Dobosv, ex software engineer chez Twitter, lorsqu'on ajoute des fichiers de connaissances à un assistant GPT d'OpenAI, leur contenu vient s'ajouter au contexte système qui sert de base à l'assistant pour comprendre les instructions. Le texte des documents s'agglutine donc à côté du prompt. Or plus ce contexte est volumineux et complexe, plus il sera difficile pour l'assistant de mémoriser et suivre les nouvelles instructions fournies par l'utilisateur (en raison du lost in the middle et du biais de récence, notamment). Le but est donc de limiter au minimum la documentation envoyée.

Pour contourner l'envoi de la documentation dans le contexte à côté du prompt, il est toutefois possible d'emprunter un chemin de traverse. En utilisant des fichiers de connaissances dans un format non supporté par OpenAI (comme le .js), ces derniers ne seront accessibles que par l'interpréteur de code. Ils ne viendront donc pas directement s'ajouter dans la fenêtre de contexte et de prompt système. La technique demande cependant d'être plus précis dans les instructions fournies à l'IA, en incluant des appels au code interpréteur pour ouvrir les bons fichiers au bon moment.