Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek ukazuje, jak nastavit agenta dat v Microsoft Fabric pomocí lakehouse jako ukázkového zdroje dat. Nejprve vytvoříme a naplníme lakehouse, pak vytvoříme agenta pro Fabric data a přidáme do něj lakehouse. Pokud už máte sémantický model Power BI (s potřebnými oprávněními ke čtení a zápisu), sklad, databázi KQL nebo ontologii, postupujte podle stejných kroků a vyberte tento zdroj. I když tento návod používá lakehouse, vzor je stejný pro ostatní datové zdroje – liší se pouze výběr zdroje.
Důležité
Tato funkce je ve verzi Preview.
Požadavky
- Placená kapacita F2 nebo vyšší kapacita Fabric nebo Power BI Premium na kapacitu (P1 nebo vyšší) s povolenou službou Microsoft Fabric
- Nastavení tenantů datového agenta Fabric je povoleno.
- Křížové geografické zpracování pro umělou inteligenci je povoleno.
- Je povolené křížové geografické ukládání pro AI .
- Nejméně jeden z těchto, s daty: datový sklad, datový lakehouse, jeden nebo více sémantických modelů Power BI, databáze KQL, nebo ontologie.
- Přepínání tenanta sémantických modelů Power BI prostřednictvím koncových bodů XMLA je povoleno pro zdroje dat sémantických modelů Power BI.
Důležité
Ujistěte se, že je v administračním portálu Power BI povoleno samostatné prostředí Copilot (Nastavení tenanta > Copilot > samostatná zkušenost s Copilot). Pokud není povolená, nebudete moct používat datového agenta ve scénářích Copilotu, i když jsou zapnuté jiné přepínače tenanta Copilot. Podrobnosti najdete v tématu Copilot v nastavení tenanta Power BI.
Vytvořte lakehouse pomocí AdventureWorksLH
Nejprve vytvořte jezerní dům a naplňte ho potřebnými daty.
Pokud už máte instanci AdventureWorksLH v jezeře (nebo skladu), můžete tento krok přeskočit. Pokud ne, můžete pomocí následujících pokynů z poznámkového bloku Fabric naplnit jezero daty.
V pracovním prostoru, ve kterém chcete vytvořit datového agenta Fabric, vytvořte nový poznámkový blok.
Na levé straně podokna Průzkumník vyberte + Zdroje dat. Tato možnost umožňuje přidat existující jezerní dům nebo vytvořit nový jezerní dům. Kvůli přehlednosti vytvořte nový jezerní dům a přiřaďte mu název.
Do horní buňky přidejte následující fragment kódu:
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)Vyberte Spustit vše.
Po několika minutách se datové úložiště naplní potřebnými daty.
Upozornění
Poznámkové bloky, které pokračují v běhu (například kvůli nekonečné smyčce nebo konstantnímu dotazování), můžou využívat kapacitu služby Fabric neomezeně dlouhou dobu. Po dokončení načítání dat zastavte všechny aktivní buňky a ukončete relaci poznámkového bloku (panel nástrojů > Poznámkový blok), pokud ji už nepotřebujete. Vyhněte se přidávání dlouhotrvajících smyček bez časového limitu.
Vytvoření datového agenta Fabric
Pokud chcete vytvořit nového datového agenta Fabric, přejděte do pracovního prostoru a vyberte tlačítko + Nová položka, jak je ukázáno na tomto snímku obrazovky.
Na kartě Všechny položky vyhledejte agenta dat Fabric, abyste našli příslušné možnosti. Po výběru se zobrazí výzva, abyste zadali název datového agenta Fabric, jak je znázorněno na tomto snímku obrazovky:
Po zadání názvu pokračujte následujícími kroky a zarovnejte datového agenta Fabric s vašimi konkrétními požadavky.
Výběr dat
Vyberte lakehouse, který jste vytvořili v předchozím kroku, a pak vyberte Přidat, jak je znázorněno na následujícím snímku obrazovky.
Po přidání lakehouse jako zdroje dat se v podokně Explorer na levé straně stránky agenta dat Fabric zobrazí název lakehouse. Výběrem lakehouse zobrazíte všechny dostupné tabulky. Pomocí zaškrtávacích políček vyberte tabulky, které chcete zpřístupnit umělé inteligenci. V tomto scénáři vyberte tyto tabulky:
dimcustomerdimdatedimgeographydimproductdimproductcategorydimpromotiondimresellerdimsalesterritoryfactinternetsalesfactresellersales
Uveďte pokyny
Pokud chcete přidat pokyny, vyberte tlačítko Pokyny agenta dat a otevřete podokno s pokyny vpravo. Můžete přidat následující pokyny.
Zdroj dat AdventureWorksLH obsahuje informace ze tří tabulek:
-
dimcustomer, podrobné demografické údaje o zákaznících a kontaktní údaje -
dimdate, pro data související s datem – například kalendářní a fiskální informace -
dimgeography, pro geografické podrobnosti, včetně názvů měst a kódů oblastí zemí.
Tento zdroj dat použijte pro dotazy a analýzy, které zahrnují podrobnosti o zákaznících, události založené na čase a zeměpisná umístění.
Uveďte příklady
Pokud chcete přidat ukázkové dotazy, vyberte tlačítko Ukázkové dotazy a otevřete napravo podokno ukázkových dotazů. Toto podokno poskytuje možnosti pro přidání nebo úpravu ukázkových dotazů pro všechny podporované zdroje dat. Pro každý zdroj dat můžete vybrat Přidat nebo upravit ukázkové dotazy a zadat relevantní příklady, jak je znázorněno na následujícím snímku obrazovky:
Tady byste měli přidat ukázkové dotazy pro zdroj dat lakehouse, který jste vytvořili.
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
Poznámka:
Přidání ukázkových párů dotazů/otázek není v současné době podporováno pro zdroje dat sémantických modelů Power BI.
Testování a revize datového agenta Fabric
Teď, když jste nakonfigurovali datového agenta Fabric, přidali pokyny pro agenta pro data Fabric a zadali ukázkové dotazy pro lakehouse, můžete s ním pracovat tak, že položíte otázky a dostanete odpovědi. Při dalším testování můžete přidat další příklady a upřesnit pokyny, abyste dále zlepšili výkon datového agenta Fabric. Spolupracujte s kolegy a shromážděte zpětnou vazbu a na základě jejich vstupu zajistěte, aby zadané ukázkové dotazy a pokyny odpovídaly typům otázek, které chtějí položit.
Publikování datového agenta Fabric
Po ověření výkonu datového agenta Fabric se můžete rozhodnout ho publikovat, abyste ho mohli sdílet s kolegy, kteří chtějí provádět otázky a odpovědi na data. V tomto případě vyberte Publikovat, jak je znázorněno na tomto snímku obrazovky:
Otevře se okno Agent pro publikování dat, jak je znázorněno na tomto snímku obrazovky.
V této sekci vyberte Publikovat, abyste publikovali agenta Fabric pro data. Zobrazí se publikovaná adresa URL datového agenta Fabric, jak je znázorněno na tomto snímku obrazovky:
Použití datového agenta Fabric v Copilotu v Power BI
Poté, co ho publikujete, můžete pomocí Copilotu v Power BI pracovat s datovým agentem Fabric. Pomocí copilotu v Power BI můžete přímo využívat datového agenta a další položky (například sestavy nebo sémantické modely), aniž byste mezi nimi museli přepínat.
Výběrem tlačítka Copilot v levém navigačním podokně otevřete Copilot v Power BI. V dalším kroku vyberte Přidat položky pro lepší výsledky v textovém poli v dolní části a přidejte datového agenta. V okně, které se otevře, vyberte datové agenty . Uvidíte jenom datové agenty, ke kterým máte oprávnění. Zvolte požadovaného datového agenta a vyberte Potvrdit. Tento příklad ukazuje, jak pracovat s jedním datovým agentem, ale můžete přidat další položky – například další datové agenty, sestavy nebo sémantické modely. Následující snímek obrazovky znázorňuje kroky s jedním datovým agentem:
Teď, když jste do Copilotu v Power BI přidali datového agenta, můžete pokládat jakékoli otázky související s vaším datovým agentem Fabric, jak je znázorněno na následujícím snímku obrazovky:
Programové použití datového agenta Fabric
Datového agenta Fabric můžete použít programově v poznámkovém bloku Fabric. Pokud chcete zjistit, jestli má datový agent fabric publikovanou hodnotu adresy URL, vyberte Nastavení, jak je znázorněno na následujícím snímku obrazovky:
Před publikováním datového agenta Fabric nemá publikovanou hodnotu adresy URL, jak je znázorněno na následujícím snímku obrazovky:
Pokud jste ještě nepublikovali agenta dat Fabric, můžete ho publikovat podle pokynů v předchozích krocích. Pak můžete zkopírovat publikovanou adresu URL a použít ji v poznámkovém bloku Fabric. Tímto způsobem můžete dotazovat datového agenta Fabric tím, že v poznámkovém bloku Fabric provedete volání rozhraní API datového agenta Fabric. Vložte zkopírovanou adresu URL do tohoto fragmentu kódu. Pak tuto otázku nahraďte libovolným dotazem, který je relevantní pro vašeho datového agenta Fabric. Tento příklad používá \<generic published URL value\> jako adresu URL.
Důležité
Při programovém volání datového agenta implementujte:
- Časový limit dotazování (viz příklad níže), abyste se vyhnuli nekonečným smyčkám.
- Minimální frekvence dotazování (začíná na 2–5 sekundách, zvýší se pouze v případě potřeby).
- Vyčištění vytvořených vláken či prostředků po jejich dokončení.
- Ukončení relace poznámkového bloku po dokončení, aby se uvolnila kapacita Fabric.
Poznámka:
Pokud budou tyto přesné verze zastaralé, upravte připnutí verzí (openai, synapseml, pandas, tqdm) na nejnovější ověřené verze modulu runtime Fabric.
%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)
Související obsah
- koncept datového agenta Fabric
- Vytvoření datového agenta Fabric