J'ai récemment reçu un courriel d'un chercheur talentueux qui me demandait comment Botpress s'articulait avec LLMs.
Il rédigeait un article sur la manière d'éviter le verrouillage des fournisseurs et voulait savoir si nous utilisions peut-être un cadre comme LangChain ou Haystack.
J'ai été plus que ravi de partager avec lui que nous avons créé nos propres abstractions qui permettent aux constructeurs de Botpress de s'interfacer avec LLMs.
Compte tenu de l'intérêt que suscite ce sujet, j'ai souhaité rendre ces informations publiques. Elles peuvent être utiles à d'autres développeurs ou aux utilisateurs de notre plateforme. J'espère que vous les trouverez aussi intéressantes que je l'ai été en les créant.
Deux façons pour Botpress de s'interfacer avec LLMs
Botpress a créé ses propres abstractions qui fonctionnent de deux manières :
1. Intégrations
Les intégrations ont le concept d'actions qui ont des types d'entrée et de sortie spécifiques.
Nous avons des composants open source sur la plateforme, de sorte que la communauté peut créer ses propres intégrations qui peuvent être soit privées, soit disponibles pour un usage public.
Ainsi, les fournisseurs de LLM - OpenAI, Anthropic, Groq, etc. - disposent chacun d'une intégration. C'est une façon pour nos utilisateurs de s'interfacer avec eux.
2. LLM interfaces d'intégration
Au concept d'intégration, nous avons ajouté celui d'interface.
Il s'agit simplement de définitions de schémas standard que les intégrations peuvent étendre. Nous avons créé un schéma standard pour LLMs.
Tant qu'une intégration étend ce schéma, elle est considérée comme un fournisseur LLM . Elle fonctionne donc prête à l'emploi dans Botpress.
Voici quelques exemples d'intégrations de Botpress pour différents fournisseurs de LLM :
Nous disposons d'interfaces similaires pour text2image, image2text, voice2text, text2voice, etc.
Configurations des modèles
Dans le Studio Botpress , nous disposons de deux configurations générales : le "Meilleur modèle" et le "Modèle rapide". Nous avons constaté qu'en général, la plupart des tâches s'adaptent facilement à l'un de ces deux modes.
Mais au-delà de la simple sélection de modèles, nous avons constaté que les différents fournisseurs divergeaient trop au niveau des outils d'appel et des formats de messages pour pouvoir facilement remplacer un modèle par un autre et obtenir de bonnes performances.
Le moteur d'inférence Botpress
Pour cette raison, nous avons créé notre propre moteur d'inférence appelé LLMz, qui fonctionne avec n'importe quel modèle sans aucune modification (ou très peu) requise. Et il fournit un bien meilleur appel d'outil et souvent une bien meilleure performance en termes de coût de jeton et de LLM roundtrips.
Ce moteur fonctionne avec des types types en arrière-plan pour les définitions d'outils, markdown pour le format de sortie des messages et du code, et un bac à sable d'exécution natif LLM pour l'inférence.
LLMz fournit de nombreuses optimisations et fonctionnalités de débogage qui sont nécessaires pour des cas d'utilisation avancés tels que :
- Compression des jetons d'entrée
- Troncature de jeton intelligente
- Mémoire à contexte optimisée par jeton
- Appel d'outils parallèles et composites
- Mélange de plusieurs messages + appels d'outils dans un seul appel LLM
- Outils entièrement sécurisés (entrée et sortie)
- Sessions de longue durée grâce à la sérialisation du bac à sable
- Maquette, emballage et traçage d'outils
- Isolation complète de l'exécution dans des isolats V8 légers (permet d'exécuter des milliers d'exécutions simultanées rapidement et pour un coût très faible)
- Itérations automatiques et récupération des erreurs
Toutes ces choses étaient nécessaires pour nos cas d'utilisation. Mais elles étaient soit impossibles, soit très difficiles à réaliser avec les outils habituels.
Les arguments contre les modèles de routeurs légers
Nous avons longtemps pensé à construire un modèle de routeur léger qui se superposerait aux modèles existants et choisirait automatiquement le bon modèle pour la tâche à accomplir.
Mais nous avons décidé de ne pas le faire pour de multiples raisons :
1. Prévisibilité
La plupart de nos clients - et c'est compréhensible - veulent des résultats fiables et prévisibles.
L'idée d'un routeur de modèle dynamique est donc un peu effrayante pour les agents de haut niveau. Elle apporte une nouvelle couche d'imprévisibilité à LLMs.
2. La vitesse
La latence est très importante pour nos cas d'utilisation. Pour que le routeur soit rapide, le modèle doit être très petit (et sans doute plus bête) que les modèles vers lesquels il sera acheminé - probablement un classificateur traditionnel.
Bien qu'ils donnent généralement de bons résultats lorsqu'ils sont entraînés à des tâches spécifiques, a) leurs contextes courts posent problème pour les messages longs et b) ils ne parviennent pas à se généraliser à d'autres messages en dehors de ceux sur lesquels ils ont été entraînés.
3. Suprématie ou égalité des modèles
Bien que les benchmarks puissent dire le contraire, dans la nature, nous avons rarement vu des modèles plus performants que GPT-4o (jusqu'à présent).
On ne sait toujours pas si LLMs sera réellement plus performant dans la tâche X que dans la tâche Y au fil du temps, ou si tous les LLMs finiront par être extrêmement bons dans la plupart des domaines. Dans ce dernier cas, la sélection de modèles n'en vaut pas la peine.
L'évolution du site LLMs grâce au retour d'information
LLMs sera un produit de base dans quelques années et la sélection des modèles ne sera plus vraiment d'actualité.
C'est pourquoi nous avons décidé de consacrer nos efforts à la mise en place d'un mécanisme efficace permettant de fournir des exemples à LLMs .
Nous avons donc mis au point un système permettant de recueillir les commentaires. Il stocke les "apprentissages" en vue d'exécutions futures. Et il fournit dynamiquement les apprentissages les plus pertinents en temps voulu pour les exécutions futures, afin de garantir des améliorations fiables et continues au fil du temps.
Alors que LLMs évolue vers des performances de plus en plus élevées, nous sommes prêts à en tirer le meilleur parti pour les utilisateurs de notre plateforme.
Table des matières
Restez au courant des dernières nouveautés en matière d'agents d'IA
Partager ce message sur :