MCP Server : un surcouche sur les APIs pour les chats IA

Bonjour à tous,

J’ai vu sur le forum Anglais, une initiative de serveur MCP pour Dolibarr.

Y a d’autres personnes sur le sujet sachant que je commence à avoir des demandes de client?

Bien à vous

José

1 « J'aime »

Bonjour,

Je ne suis pas sur le sujet car non développeur.

Mais je suis intéressé par le sujet.

Bonne journée.
Cordialement.

José, j’ai sur Dolistore le module « Assistants IA », qui en réalité a « seulement » pour but d’offrir une interface très similaire à celle de chatGPT mais au sein de votre même instance de Dolibarr, afin que chaque utilisateur de l’entreprise puisse l’utiliser avec ses propres conversations, sans avoir à payer un abonnement mensuel par employé, mais uniquement la consommation d’IA (auprès de plusieurs fournisseurs).

Et il m’est arrivé la même chose qu’à toi : depuis le début, des gens me contactaient toujours pour demander si avec mon module ils pouvaient « interroger l’IA sur leur base de données Dolibarr » (factures, clients, produits, ventes, achats, etc.).

Cependant, je n’ai jamais trouvé le temps de travailler dessus.

Je veux ajouter à mon module une sorte d’« outil fait maison » (très ad hoc) qui permette simplement au chatbot (quel que soit le modèle utilisé) de détecter si l’utilisateur demande des informations provenant de son propre Dolibarr. Et dans ce cas, lui donner un « outil » du type « requête sur la base de données ».

Mais j’ai cela très « en l’air », sans détail. J’ai vu des implémentations similaires dans d’autres logiciels qui donnent de très bons résultats en donnant à l’IA « juste » la structure des tables et des champs de la base de données… et l’IA construit généralement la requête SQL appropriée pour obtenir les informations nécessaires afin de pouvoir répondre à l’utilisateur.

C’est pourquoi ta publication a attiré mon attention : c’est très intéressant « d’ouvrir l’accès à la base de données de Dolibarr » à l’IA via un MCP… Bien que j’ignore la complexité de faire cela. Je n’ai pas assez d’une vie pour apprendre autant de choses en une seule année de 365 jours !!! :pensive_face:

Bonjour @caos30,

Je pense que ce que tu décris existe ici non ? ListGPT : Génération de requête et de liste avec OpenAI à voir avec @defrance

1 « J'aime »

Oui, c’est « un peu » l’idée que je décris. Mais je pense que ce module sert « seulement » à obtenir des tableaux/listes d’éléments après avoir généré un SQL pour interroger la base de données.

En revanche, l’idée que je veux mettre en œuvre est que ce SQL soit plutôt « caché » pour l’utilisateur (même s’il serait intéressant de pouvoir visualiser le SQL au cas où les plus geeks d’entre nous seraient intéressés), et d’intégrer ces recherches d’une manière plus « colloquiale » dans la conversation avec l’IA, du genre : « Analyse les ventes de ce produit X sur la dernière année, et compare l’évolution avec celle de l’année dernière ».

C’est-à-dire que ListGPT fait vraiment la « partie difficile » du travail (= convertir la demande de l’utilisateur en une requête SQL) et ensuite j’imagine qu’il applique cette requête pour afficher les résultats à l’écran sous forme de tableau.

Et cette partie est justement celle que je dois faire pour passer ce « output » à l’IA afin qu’elle le traite. Mais ce n’est pas si simple : je dois faire un jeu de deux prompts pour voir s’il est nécessaire de compléter la demande de l’utilisateur avec des données de ce résultat de requête à la BDD (avec un premier prompt) pour tout passer ensemble dans un deuxième prompt.

Je vais regarder comment @defrance a fait avec ce module. :slight_smile:

Merci ! Je le connaissais déjà mais je ne me souvenais pas qu’il pouvait m’être utile.

De mémoire, j’avais fait ce module en moins d’une semaine, il faut d’ailleurs que je l’actualise avec les nouveautés qui ont été intégré à Dolibarr.

Au delà de l’interrogation de l’IA pour générer la requête, il y a la constitution du prompt pour lui donner la structure des tables et des règles fonctionnels (par exemple les statuts, si une facture est payé, comment sont relié les contacts, …). C’est sur cette transmission de prompt qu’il y a sans doute des choses à faire avec le MCP mais il est hors de question de laisser une ia farfouiller dans mes données…

La question en tant que tel et ensuite le rendu que ce soit directement après le prompt ou l’intégration de la requête dans myList pour être réutiliser sans avoir à nouveau à gaspiller des token (et surtout augmenter le taux de co2…)

Pour ma part, afficher la requete SQL généré par Ll’IA c’est aussi de la pédagogie (rien de honteux dans une requete SQL) et accessoirement vérifié qu’elle ne sorte pas des dinguerie (et là on est sur du 50/50 et sur des données stratégique, c’est jouer à la roulette russe)

Merci @defrance pour ta réponse si bien argumentée, et d’avoir partagé la méthodologie de travail de ton module. C’est exactement ce genre de chose que je pensais intégrer.

  • J’ai également les mêmes réticences quant au fait de « laisser l’IA accéder à mes données »… bien que ce soit moins en mode lecture qu’en mode écriture. Je ne sais pas pour toi, mais j’ai reçu des demandes du type : « est-ce qu’on pourrait demander à l’IA de créer un bon de commande chez tel fournisseur… ». Ce genre de choses peut probablement être fait de manière sécurisée… à condition que cela soit créé en mode BROUILLON, pour être supervisé ensuite.

  • Mais dans tous les cas, je suis 100% d’accord avec toi, je pense que le flux de travail doit être :

  1. USER-PROMPT : l’utilisateur rédige sa demande à l’IA
  2. 1ST-IA-PROMPT : une première requête à l’IA pour détecter si pour répondre au USER PROMPT il faut interroger la base de données. Réponse OUI/NON (pour économiser les coûts)
  3. 2ND-IA-PROMPT : si la réponse précédente était OUI, alors on transmet à l’IA la structure de la base de données et on lui demande d’élaborer une instruction SQL. Note : j’ai beaucoup de doutes ici… par exemple, peut-être serait-il préférable de lui transmettre une « version réduite » de la structure de la base de données ? Tu mentionnes que tu lui passes aussi certaines explications et/ou métadonnées de cette structure… Il y a des instances de Dolibarr qui, parce qu’elles ont beaucoup de modules, ont TROP de tables (!!). Le module de facturation mexicaine a presque la moitié des tables du reste des modules natifs de Dolibarr (!!?). Peut-être pourrait-on préparer différents « clusters » de tables… Comme tu dis, pour économiser des données, mais aussi pour AIDER l’IA à se CONCENTRER correctement. Cette partie est celle pour laquelle j’ai besoin de temps pour faire des tests :slight_smile:
  4. CODE : vérifications de « sécurité »… par exemple que la requête commence par « SELECT » et ne contienne pas « UPDATE » ou « INSERT »
  5. RUN-SQL : exécuter l’instruction SQL et sauvegarder les résultats au format JSON
  6. 3RD-IA-PROMPT : transmettre à l’IA le commentaire initial de l’utilisateur et les données au format JSON, pour qu’elle réponde et tire « ses propres conclusions ».

Note : j’ai pris plus d’une demi-heure pour rédiger ce flux et je me rends compte que je suis déjà plus près de l’implémenter :sweat_smile:

Salutations !