Fabric Agent: Faites parler vos données
Lors de la Fabcon 2025, de nombreuses annonces ont été faites comme
La possibilité de convertir les dataflow gen 1 en gen 2
Le mirroring pour le connecteur dataverse
La migration simplifiée de Azure synapse vers Fabric pour les Datawarehouses
Mais au milieu de toutes ses annonces, l'une d'entres elles m'a echappées; la possibilité de créer des Agents Fabric
Pour les plus curieux d'entre vous, certains ont du voir ce nouvel item appelé Data Agent
Que sont ces fameux agents ?
Les agents de données permettent aux utilisateurs de créer leur propre système de questions-réponses conversationnel à l'aide de l'IA générative.
Ils offrent la possibilité de poser des questions en langage naturel et de recevoir en retour des requêtes SQL ou DAX. Ils peuvent également interpréter les données et fournir des sorties sous forme de chat ou de tableau, selon les instructions données.
Le grand avantage de cet outil par rapport à Copilot est qu'il est possible de lui fournir des instructions spécifiques, ainsi que de lui indiquer sur quelles tables se baser pour fournir les réponses.
Puisqu'une démo vaut mieux que des mots, partons sur un exemple ! Et là, BINGO ! Pour mon deuxième article sur ce blog, je suis parvenu à vous trouver un jeu de données sur l'une de mes passions : la zythologie (oui, oui, ça passe mieux de dire que je suis zythologue plutôt qu'amateur de bières 😉).
J'ai trouvé un jeu de données sur GitHub qui contient 30 280 bières réparties en 603 fichiers JSON. Après un peu de "bricolage" dans un notebook, je suis parvenu à extraire le modèle suivant de mes données.
Voici la description des tables:
beer_available: Indique la disponibilité de la bière (éphémère, saisonnière, etc.).
beer_category: Renvoie la catégorie par pays (German Pale, Belgian & French Pale, etc.). Ici, on voit clairement que ce jeu de données a été produit par des Américains : mélanger les bières belges et françaises, c'est comme mélanger les torchons et les serviettes !
beer_glass: Précise le type de verre dans lequel la bière est servie.
beer_srm: Décrit la robe de la bière (sa couleur).
beer_style: Donne le style de la bière, ainsi que les degrés d'alcool maximum et minimum pour ce type de bière.
beer_data: Il s'agit de la table contenant le taux d'alcoolémie des bières, si c'est une bière bio, le type de plat qui s'accorderait bien avec, et d'autres informations.
Donc, créons notre agent et voyons ce qu'il se passe.
Une fois l'agent créé, la première étape est de sélectionner les tables qui lui serviront de base. Pour l'instant, nous prendrons uniquement la table beer_data.
Maintenant, posons-lui deux questions en anglais :
"With what dish can I drink an Icy Bay IPA?" (Une bière assez sympa provenant d'Alaska.)
"With what dish can I drink a Lupulus Hopera?"
Ce que l'on observe, c'est que notre agent trouve bien les bonnes réponses dans notre dataset. Pour la Lupulus Hopera, étant absente de nos données, il n'invente rien et nous indique simplement qu'aucune donnée n'a été trouvée.
Derrière la scène, voici ce que l'agent fait :
Maintenant, conservons notre Icy Bay IPA et demandons-lui : "De quel type (style) de bière s'agit-il ?" (en utilisant la table beer_style)
En effet, comme il n'a pas acces à la table style, il ne peut que me répondre avec l'ID, ajoutons donc cette table à mon agent et reposons lui la question
Désormais, notre agent trouve effectivement la bonne catégorie, avec un résumé de la description de celle-ci.
Maintenant, ajoutons également la table category, et demandons-lui à nouveau : "De quel type de bière est mon Icy Bay IPA ?" (Elle va finir par être chaude avec tout ça...).
Par contre, je souhaiterais qu'il m'associe le type au style et non à la categorie, donc dans ce cas, il faut lui passer des instructions
Je peux passer l'instruction suivante: For all questions about type of the beer, use the field style_name
Désormais, lorsqu'un utilisateur posera des questions sur le type de bière, notre agent associera automatiquement le type avec le style_name.
Le dernier point que je souhaitais mentionner concerne la sécurité. Pour qu'un utilisateur puisse interroger un agent, il est impératif qu'il ait accès aux modèles sémantiques utilisés. Sans cet accès, pas d'agent !
Voilà, c'est tout pour aujourd'hui. Et pour aujourd'hui, j'ai enfin pu rédiger quelques choses en Comic Sans MS; la police la plus sous cotéé de tout les temps :-)
Et si vous avez la moindre questions, la section commentaire est là pour ça :-)