OpenGPT est un projet Open source de création de chatbot «sur mesure» pouvant s’appuyer sur vos documents et limiter ainsi les hallucinations.
Cet article est basé sur un travail mené par Bastien Masse de l’université de Nantes.
La ressource est disponible ICI
OpenGPTs vous donne plus de contrôle, vous permettant de configurer :
- Le LLM que vous utilisez
- Les invites que vous utilisez
- Les outils que vous lui donnez
- La base de données vectorielles que vous utilisez
- L'algorithme de récupération que vous utilisez
- La base de données de l'historique des discussions que vous utilisez
Plus important encore, il vous donne un contrôle total sur l’architecture cognitive de votre application.
(Pour plus de précisions Lire le « readme » présent dans Github)
Pour créer son chatbot, il faudra d’abord se rendre ici : https://opengpts-example-vz4y4ooboq-uc.a.run.app/
.
Faites bien attention à l’encadré en rouge :
Research Preview: this is unauthenticated and all data can be found. Do not use with sensitive data
Il y a 3 options possibles (classées de la moins puissante à la plus puissante) :
Option 1 Chatbot : Il s’agit de choisir un modèle de langage et de définir un prompt de manière à ce que ce bot se comporte de la manière souhaitée.
L'architecture finale est extrêmement simple : il suffit d'un appel à un modèle de langage, paramétré par un message système. C'est clairement beaucoup moins puissant que les Assistants (voir option 3) ou les RAGBots (voir option 2) (qui ont accès à des sources externes de données/calculs) - mais c'est quand même précieux ! De nombreux GPT populaires ne sont en fin de compte que des messages système.
Ceci ressemble fortement à Huggingchat
Voici un exemple avec le modèle GPT4 et le prompt suivant :
Tu es enseignant de mathématiques en collège et en lycée. Tu es un super enseignant, reconnu par toute la profession. Ton objectif est de répondre aux sollicitations, à des questions de mathématiques. Tu devras y répondre avec le plus grand professionnalisme. Tu devras aussi poser des questions en retour pour voir si l'élève a bien compris ce que tu viens de répondre. Tu peux aussi avoir une touche d'humour dans tes réponses. Tu devras proposer des exercices aux élèves en adéquation avec les questions posées. Tu devras être bienveillant dans tes réponses et être à l'écoute. Tu devras questionner les élèves sur leur raisonnement pour résoudre des exercices. Tu devras essayer de ne pas toujours donner la réponse mais entraîner une discussion pour aider l'élève à surmonter ses difficultés en énonçant des parties de cours lié à l'exercice ou alors en proposant des exemples.
Option 2 RAG : L'un des principaux cas d'utilisation de la boutique GPT consiste à télécharger des fichiers et à donner au robot la connaissance de ces fichiers.
Donc il s’agit d’un GPT axé sur la récupération avec une architecture simple. Tout d’abord, un ensemble de documents est récupéré. Ensuite, ces documents sont transmis dans le message système à un appel distinct au modèle de langage afin qu'il puisse répondre.
Par rapport aux assistants (voir option 3), le bot créé à l'aide de l'option RAG (communément appelé RAGbot) sera plus structuré (mais moins puissant). Le bot recherche TOUJOURS quelque chose dans les documents mis à disposition - ce qui est bien si vous savez que vous voulez rechercher des choses, mais potentiellement inutile si l'utilisateur essaie simplement d'avoir une conversation normale. Plus important encore, cela ne recherche les choses qu'une seule fois - donc s'il ne trouve pas les bons résultats, cela donnera un mauvais résultat (par rapport à un assistant, qui pourrait décider de rechercher à nouveau les choses).
Bien qu’il s’agisse d’une architecture plus simple, l'architecture de construction du bot est bonne pour plusieurs raisons :
- Premièrement, parce que le RAGbot est plus simple, il peut fonctionner assez bien avec une plus grande variété de modèles (y compris de nombreux modèles open source).
- Deuxièmement, si vous avez un cas d'utilisation dans lequel vous n'avez pas BESOIN de la flexibilité d'un assistant (par exemple, vous savez que les utilisateurs rechercheront des informations à chaque fois), alors cela peut être plus ciblé.
- Troisièmement, le RAGbot peut utiliser des connaissances externes.
Voici l'exemple Escape Bot. C'est un RAGBot alimenté par le livret évasion, mis à disposition de tout collègue qui souhaite s’inscrire au concours Jeux Fabrique
Option 3 Assistant : Les assistants peuvent être équipés d'une quantité arbitraire d'outils et utiliser un LLM pour décider quand les utiliser. Cela en fait le choix le plus flexible, mais ils peuvent être moins fiables. Lors de la création d'un assistant, vous spécifiez quelques éléments.
- Tout d’abord, vous choisissez le modèle de langage à utiliser. Seuls quelques modèles de langage peuvent être utilisés de manière fiable : GPT-3.5, GPT-4, Claude et Gemini.
- Deuxièmement, vous choisissez les outils à utiliser. Il peut s'agir d'outils prédéfinis OU d'un récupérateur construit à partir de fichiers téléchargés. Vous pouvez en choisir autant que vous le souhaitez.
L’architecture cognitive peut alors être pensée comme une boucle. Tout d’abord, le LLM est appelé pour déterminer les actions à entreprendre (le cas échéant). S'il décide d'entreprendre des actions, ces actions sont exécutées et il revient en arrière. Si aucune action n’est décidée, alors la réponse du LLM est la réponse finale et termine la boucle.
Cela peut être une architecture vraiment puissante et flexible. C’est probablement la façon la plus proche de comment nous, les humains, fonctionnons. Cependant, ceux-ci peuvent également ne pas être très fiables et ne fonctionnent généralement qu'avec les modèles les plus performants (et même dans ce cas, ils peuvent gâcher).