Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article explique comment configurer un agent de données dans Microsoft Fabric à l’aide d’un lakehouse comme exemple de source de données. Nous créons d'abord et remplissons un lakehouse, puis créons un agent de données Fabric et y ajoutons le lakehouse. Si vous disposez déjà d’un modèle sémantique Power BI, assurez-vous que vous disposez d’une autorisation de lecture pour interagir avec celui-ci via un agent de données (l’autorisation d’écriture est nécessaire uniquement pour modifier le modèle sémantique ou utiliser des fonctionnalités telles que la préparation pour l’IA). Pour un entrepôt, une base de données KQL ou une ontologie, suivez les mêmes étapes et sélectionnez cette source à la place. Bien que ce guide utilise un lakehouse, le modèle est le même pour d'autres sources ; seule la sélection de la source de données diffère.
Important
Cette fonctionnalité est en version préliminaire.
Conditions préalables
- Une capacité de Fabric payante F2 ou supérieure, ou une capacité Power BI Premium par capacité (P1 ou supérieur) avec Microsoft Fabric activé.
- Activez le traitement intergéographique et le stockage intergéographique pour l’IA en fonction des exigences expliquées dans les paramètres du locataire de l’agent de données Fabric.
- Au moins une de ces sources de données, avec des données : un entrepôt, un lac de données, un modèle sémantique Power BI, une base de données KQL, une base de données mise en miroir ou une ontologie. Vous devez disposer d’un accès en lecture à la source de données.
Important
Vérifiez que la fonctionnalité autonome de Copilot est activée dans le portail d’administration Power BI (Paramètres du client > Copilot > fonctionnalité autonome de Copilot). S'il n'est pas activé, vous ne pourrez pas utiliser l'agent de données dans les scénarios Copilot même si d'autres commutateurs Copilot du locataire sont activés. Pour plus d’informations, consultez Copilot dans les paramètres du tenant de Power BI.
Créez un lakehouse avec AdventureWorksLH
Tout d’abord, créez un lakehouse et remplissez-le avec les données nécessaires.
Si vous disposez déjà d'une instance d'AdventureWorksLH dans un lakehouse (ou un entrepôt), vous pouvez ignorer cette étape. Si ce n’est pas le cas, vous pouvez utiliser les instructions suivantes depuis un bloc-notes Fabric pour remplir le "lakehouse" de données.
Créez un bloc-notes dans l’espace de travail dans lequel vous souhaitez créer votre agent de données Fabric.
Sur le côté gauche du volet Explorateur, sélectionnez + Sources de données. Cette option vous permet d'ajouter un lakehouse existant ou de créer un nouveau lakehouse. Par souci de clarté, créez un nouveau lakehouse et attribuez-lui un nom.
Ajoutez l’extrait de code suivant dans la cellule au sommet :
import pandas as pd from tqdm.auto import tqdm base = "https://synapseaisolutionsa.z13.web.core.windows.net/data/AdventureWorks" # load list of tables df_tables = pd.read_csv(f"{base}/adventureworks.csv", names=["table"]) for table in (pbar := tqdm(df_tables['table'].values)): pbar.set_description(f"Uploading {table} to lakehouse") # download df = pd.read_parquet(f"{base}/{table}.parquet") # save as lakehouse table spark.createDataFrame(df).write.mode('overwrite').saveAsTable(table)Sélectionnez Exécuter tout.
Après quelques minutes, le lakehouse se remplit avec les données nécessaires.
Caution
Les blocs-notes en cours d'exécution, par exemple, à cause de boucles infinies accidentelles ou d'interrogations constantes, peuvent consommer indéfiniment la capacité de Fabric. Une fois les données chargées, arrêtez toutes les cellules actives et terminez la session du bloc-notes (session d’arrêt de la barre d’outils > Notebook) si vous n’en avez plus besoin. Évitez d’ajouter des boucles longues sans délai d’expiration.
Créer un agent de données Fabric
Pour créer un nouvel agent de données Fabric, accédez à votre espace de travail et sélectionnez le bouton + Nouvel élément, comme illustré dans cette capture d’écran :
Sous l’onglet Tous les éléments, recherchez Fabric agent de données pour rechercher l’option appropriée. Une fois sélectionné, une invite vous demande de fournir un nom pour votre agent de données Fabric, comme illustré dans cette capture d’écran :
Après avoir entré le nom, procédez comme suit pour aligner l’agent de données Fabric avec vos exigences spécifiques.
Sélectionner les données
Sélectionnez le lakehouse que vous avez créée à l'étape précédente, puis sélectionnez Ajouter, comme indiqué dans la capture d'écran suivante :
Une fois que le lakehouse est ajouté en tant que source de données, le volet Explorer situé à gauche de la page de l’agent de données Fabric affiche le nom de lakehouse. Sélectionnez le lakehouse pour voir toutes les tables disponibles. Utilisez les cases à cocher pour sélectionner les tables que vous souhaitez mettre à disposition de l'IA. Pour ce scénario, sélectionnez ces tables :
dimcustomerdimdatedimgeographydimproductdimproductcategorydimpromotiondimresellerdimsalesterritoryfactinternetsalesfactresellersales
Autorisations pour les modèles sémantiques dans les agents de données
Les utilisateurs ont uniquement besoin d’une autorisation de lecture sur un modèle sémantique Power BI pour l’ajouter à un agent de données et poser des questions via l’agent. L’accès à l’espace de travail (rôle membre) et l’autorisation Build ne sont pas nécessaires pour l’interaction via des agents de données. L’autorisation d’écriture est nécessaire uniquement pour modifier le modèle sémantique ou utiliser des fonctionnalités telles que la préparation de l’IA.
Cette modification des autorisations s’applique uniquement aux interactions par le biais d’agents de données. D’autres modèles d’accès (par exemple, Analyser dans Excel ou créer des rapports directs) suivent les autorisations standard Power BI.
Fournir des instructions
Pour ajouter des instructions, sélectionnez le bouton Instructions de l’agent de données pour ouvrir le volet d’instructions à droite. Vous pouvez ajouter les instructions suivantes.
La source de données AdventureWorksLH contient des informations provenant de trois tables :
-
dimcustomer, pour des informations démographiques détaillées sur les clients et des informations de contact -
dimdate, pour les données liées aux dates, par exemple les informations calendaires et fiscales -
dimgeography, pour les détails géographiques, y compris les noms de villes et les codes de région des pays.
Utilisez cette source de données pour les requêtes et les analyses impliquant les détails des clients, les événements temporels et les emplacements géographiques.
Fournir des exemples
Pour ajouter des exemples de requêtes, sélectionnez le bouton Exemples de requêtes pour ouvrir le volet Exemples de requêtes sur la droite. Ce volet fournit des options permettant d'ajouter ou de modifier des exemples de requêtes pour toutes les sources de données prises en charge. Pour chaque source de données, vous pouvez sélectionner Ajouter ou modifier des exemples de requêtes pour entrer les exemples pertinents, comme illustré dans la capture d’écran suivante :
Ici, vous devez ajouter des exemples de requêtes pour la source de données Lakehouse que vous avez créée.
Question: Calculate the average percentage increase in sales amount for repeat purchases for every zipcode. Repeat purchase is a purchase subsequent to the first purchase (the average should always be computed relative to the first purchase)
SELECT AVG((s.SalesAmount - first_purchase.SalesAmount) / first_purchase.SalesAmount * 100) AS AvgPercentageIncrease
FROM factinternetsales s
INNER JOIN dimcustomer c ON s.CustomerKey = c.CustomerKey
INNER JOIN dimgeography g ON c.GeographyKey = g.GeographyKey
INNER JOIN (
SELECT *
FROM (
SELECT
CustomerKey,
SalesAmount,
OrderDate,
ROW_NUMBER() OVER (PARTITION BY CustomerKey ORDER BY OrderDate) AS RowNumber
FROM factinternetsales
) AS t
WHERE RowNumber = 1
) first_purchase ON s.CustomerKey = first_purchase.CustomerKey
WHERE s.OrderDate > first_purchase.OrderDate
GROUP BY g.PostalCode;
Question: Show the monthly total and year-to-date total sales. Order by year and month.
SELECT
Year,
Month,
MonthlySales,
SUM(MonthlySales) OVER (PARTITION BY Year ORDER BY Year, Month ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS CumulativeTotal
FROM (
SELECT
YEAR(OrderDate) AS Year,
MONTH(OrderDate) AS Month,
SUM(SalesAmount) AS MonthlySales
FROM factinternetsales
GROUP BY YEAR(OrderDate), MONTH(OrderDate)
) AS t
Remarque
L'ajout d'exemples de paires de requêtes/questions n'est pas pris en charge actuellement pour les sources de données de modèle sémantique Power BI.
Tester et réviser l’agent de données Fabric
Maintenant que vous avez configuré l’agent de données Fabric, ajouté les instructions de l'agent de données Fabric et fourni des exemples de requêtes pour le lac de données, vous pouvez interagir avec ce système en posant des questions et en obtenant des réponses. Au fur et à mesure que vous continuez à tester, vous pouvez ajouter d’autres exemples et affiner les instructions pour améliorer les performances de l’agent de données Fabric. Collaborez avec vos collègues pour recueillir des commentaires et, en fonction de leurs contributions, assurez-vous que les exemples de requêtes et d’instructions fournis correspondent aux types de questions qu’ils souhaitent poser.
Publier l’agent de données Fabric
Après avoir validé les performances de l’agent de données Fabric, vous pouvez décider de le publier afin de pouvoir le partager avec vos collègues qui souhaitent effectuer des questions et réponses (Q&R) à propos des données. Dans ce cas, sélectionnez Publier, comme indiqué dans cette capture d’écran :
La zone Publier l’agent de données s’ouvre, comme illustré dans cette capture d’écran :
Dans cette zone, sélectionnez Publish pour publier l’agent de données Fabric. L’URL publiée de l’agent de données Fabric s’affiche, comme illustré dans cette capture d’écran :
Utiliser l’agent de données Fabric dans Copilot dans Power BI
Vous pouvez utiliser le Copilot dans Power BI pour interagir avec l’agent de données Fabric après sa publication. Avec Copilot dans Power BI, vous pouvez utiliser directement l’agent de données et d’autres éléments (par exemple, des rapports ou des modèles sémantiques) sans avoir à basculer entre eux.
Sélectionnez le bouton Copilot dans le volet de navigation gauche pour ouvrir le Copilot dans Power BI. Ensuite, sélectionnez Ajouter des éléments pour obtenir de meilleurs résultats dans la zone de texte en bas, pour ajouter l’agent de données. Sélectionnez Agents de données dans la fenêtre qui s’ouvre. Vous ne pouvez voir que les agents de données auxquels vous êtes autorisé à accéder. Choisissez l’agent de données souhaité, puis sélectionnez Confirmer. Cet exemple montre comment utiliser un seul agent de données, mais vous pouvez ajouter d’autres éléments, par exemple d’autres agents de données, rapports ou modèles sémantiques. La capture d’écran suivante illustre les étapes avec un seul agent de données :
Lorsqu'un agent de données inclut un modèle sémantique Power BI, les utilisateurs n'ont besoin que d'une autorisation de lecture sur ce modèle sémantique pour interagir avec celui-ci via Copilot ; l'accès à l'espace de travail n'est pas obligatoire. L’autorisation d’écriture est toujours nécessaire pour les modifications de modèle sémantique et la préparation de l’IA.
Maintenant que vous avez ajouté l’agent de données au Copilot dans Power BI, vous pouvez poser toutes les questions relatives à votre agent de données Fabric, comme illustré dans la capture d’écran suivante :
Utiliser l’agent de données Fabric par programmation
Vous pouvez utiliser l’agent de données Fabric par programmation dans un notebook Fabric. Pour déterminer si l’agent de données Fabric a une valeur d’URL publiée, sélectionnez Settings, comme illustré dans la capture d’écran suivante :
Avant de publier l'agent de données Fabric, il n'a pas de valeur d'URL publiée, comme illustré dans la capture d'écran suivante :
Si vous n'avez pas publié l'agent de données Fabric avant, vous pouvez le publier en suivant les instructions des étapes précédentes. Vous pouvez ensuite copier l’URL publiée et l’utiliser dans le bloc-notes Fabric. De cette façon, vous pouvez interroger l’agent de données Fabric en effectuant des appels à l’API de l’agent de données Fabric dans un notebook Fabric. Collez l’URL copiée dans cet extrait de code. Remplacez ensuite la question par toute requête pertinente pour votre agent de données Fabric. L’exemple suivant utilise \<generic published URL value\> en tant que URL.
Important
Lors de l’appel d’un agent de données par programmation, implémentez :
- Délai de sondage (voir l’exemple ci-dessous) pour éviter les boucles indéfinies.
- Fréquence d’interrogation minimale (commencez à 2 à 5 secondes ; augmentez uniquement si nécessaire).
- Nettoyage des threads ou ressources créés après l’achèvement.
- Fermeture de session du notebook une fois terminée pour libérer la capacité Fabric.
Remarque
Ajustez les broches de version (openai, synapseml, pandas, tqdm) aux dernières versions validées pour votre runtime de Fabric si ces versions exactes deviennent obsolètes.
%pip install "openai==1.70.0"
%pip install "synapseml==1.0.5" # Required for synapse.ml.mlflow (update version as needed)
%pip install pandas tqdm # Skip if already available in the Fabric runtime
import typing as t
import time
import uuid
# OpenAI SDK internals
from openai import OpenAI
from openai._models import FinalRequestOptions
from openai._types import Omit
from openai._utils import is_given
# SynapseML helper for env config
from synapse.ml.mlflow import get_mlflow_env_config
# Removed unused imports: requests, json, pprint, APIStatusError, SynapseTokenProvider
base_url = "https://<generic published base URL value>"
question = "What data sources do you have access to?"
configs = get_mlflow_env_config()
# Create OpenAI Client
class FabricOpenAI(OpenAI):
def __init__(
self,
api_version: str ="2024-05-01-preview",
**kwargs: t.Any,
) -> None:
self.api_version = api_version
default_query = kwargs.pop("default_query", {})
default_query["api-version"] = self.api_version
super().__init__(
api_key="",
base_url=base_url,
default_query=default_query,
**kwargs,
)
def _prepare_options(self, options: FinalRequestOptions) -> None:
headers: dict[str, str | Omit] = (
{**options.headers} if is_given(options.headers) else {}
)
options.headers = headers
headers["Authorization"] = f"Bearer {configs.driver_aad_token}"
if "Accept" not in headers:
headers["Accept"] = "application/json"
if "ActivityId" not in headers:
correlation_id = str(uuid.uuid4())
headers["ActivityId"] = correlation_id
return super()._prepare_options(options)
# Pretty printing helper
def pretty_print(messages):
print("---Conversation---")
for m in messages:
print(f"{m.role}: {m.content[0].text.value}")
print()
fabric_client = FabricOpenAI()
# Create assistant
assistant = fabric_client.beta.assistants.create(model="not used")
# Create thread
thread = fabric_client.beta.threads.create()
# Create message on thread
message = fabric_client.beta.threads.messages.create(thread_id=thread.id, role="user", content=question)
# Create run
run = fabric_client.beta.threads.runs.create(thread_id=thread.id, assistant_id=assistant.id)
# Wait for run to complete (avoid indefinite loop)
terminal_states = {"completed", "failed", "cancelled", "requires_action"}
poll_interval = 2
timeout_seconds = 300 # Adjust based on expected workload
start_time = time.time()
while run.status not in terminal_states:
if time.time() - start_time > timeout_seconds:
raise TimeoutError(f"Run polling exceeded {timeout_seconds} seconds (last status={run.status})")
run = fabric_client.beta.threads.runs.retrieve(
thread_id=thread.id,
run_id=run.id,
)
print(run.status)
time.sleep(poll_interval)
if run.status != "completed":
print(f"Run finished with status: {run.status}")
# Print messages
response = fabric_client.beta.threads.messages.list(thread_id=thread.id, order="asc")
pretty_print(response)
# Delete thread
fabric_client.beta.threads.delete(thread_id=thread.id)