Muistiinpano
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää kirjautua sisään tai vaihtaa hakemistoa.
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää vaihtaa hakemistoa.
Tässä artikkelissa näytetään, miten dataagentti asetetaan Microsoft Fabric -järjestelmään käyttäen esimerkkinä lakehousea. Luomme ensin järvenrakennuksen, sitten luomme Fabric-dataagentin ja lisäämme järvenrakennuksen siihen. Jos sinulla on jo Power BI:n semanttinen malli, varmista, että sinulla on lukulupa olla vuorovaikutuksessa sen kanssa dataagentin kautta (kirjoituslupa vaaditaan vain semanttisen mallin muokkaamiseen tai ominaisuuksien, kuten tekoälyn valmistelun, käyttöön). Varaston, KQL-tietokannan tai ontologian kohdalla noudata samoja vaiheita ja valitse kyseinen lähde. Vaikka tämä kävelykierros käyttää järvitaloa, kaava on sama muissa lähteissä; vain tietolähteen valinta eroaa.
Prerequisites
- A maksettu F2 tai suurempi Fabric kapasiteetti tai Power BI Premium per kapasiteetti (P1 tai suurempi) kapasiteetilla, kun Microsoft Fabric on käytössä.
- Fabric Data Agent Tenant Settings on käytössä, mukaan lukien Capacities voidaan määrittää Fabric Copilot Capacity -asetukseksi.
- AI Cross-Geo-prosessointi on käytössä.
- AI Cross-Geo-tallennus on käytössä.
- Vähintään yksi näistä, sisältäen dataa: varasto, järvitalo, yksi tai useampi Power BI:n semanttinen malli, KQL-tietokanta tai ontologia.
- Power BI semanttiset mallit XMLA-päätepisteiden tenant-kytkimellä on käytössä Power BI semanttisten mallien tietolähteille.
- Power BI:n semanttisissa malleissa, joita käytetään dataagentin kanssa, varmista, että agentin kautta vuorovaikuttavilla käyttäjillä on lukuoikeus semanttiseen malliin. Workspace Member tai Build-lupa ei ole tarpeen vuorovaikutukseen.
Important
Varmista, että itsenäinen Copilot-kokemus on käytössä Power BI ylläpitäjäportaalissa (Tenant settings > Copilot > Standalone Copilot experience). Jos se ei ole käytössä, et voi käyttää dataagenttia Copilot-tilanteissa, vaikka muut Copilot-vuokralaisten kytkimet olisivat päällä. Lisätietoja löytyy Copilot Power BI vuokralaisasetuksista.
Luo lakehouse AdventureWorksLH:n avulla
Luo ensin lakehouse ja täytä se tarvittavilla tiedoilla.
Jos sinulla on jo AdventureWorksLH-esiintymä lakehousessa (tai varastossa), voit ohittaa tämän vaiheen. Jos et, voit käyttää seuraavia ohjeita Fabric-muistikirjasta täyttääksesi järvenrakennuksen datalla.
Luo uusi muistikirja työtilaan, johon haluat luoda Fabric-dataagenttisi.
Valitse Resurssienhallinta-ruudun vasemmassa reunassa + Tietolähteet. Tämän vaihtoehdon avulla voit lisätä olemassa olevan lakehousen tai luoda uuden lakehousen. Selvyyden vuoksi luo uusi lakehouse ja anna sille nimi.
Lisää yläreunan soluun seuraava koodikatkelman:
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)Valitse Suorita kaikki.
Muutaman minuutin kuluttua Lakehouse täyttää tarvittavat tiedot.
Caution
Muistikirjat, jotka jatkavat toimintaansa (esimerkiksi sattumanvaraisten äärettömien silmukoiden tai jatkuvan kyselyn vuoksi), voivat kuluttaa Fabric-kapasiteettia loputtomasti. Kun tiedot on latautunut, pysäytä kaikki aktiiviset solut ja lopeta muistikirjan istunto (Muistikirjan työkalurivin > Lopeta istunto), jos et enää tarvitse niitä. Vältä pitkäkestoisten silmukoiden lisäämistä ilman aikakatkaisua.
Luo Fabric-dataagentti
Uuden Fabric-dataagentin luomiseksi siirry työtilaasi ja valitse + New Item -painike, kuten tässä kuvakaappauksessa näkyy:
Kaikki kohteet -välilehdeltä etsi Fabric data agent löytääksesi sopivan vaihtoehdon. Kun valinta on valittu, kehote pyytää sinua antamaan nimen Fabric-dataagentillesi, kuten tässä kuvakaappauksessa näkyy:
Kun olet syöttänyt nimen, jatka seuraavilla vaiheilla sovittaaksesi Fabric-dataagentin omiin tarpeisiisi.
Valitse tiedot
Valitse edellisessä vaiheessa luomasi lakehouse ja valitse sitten Lisää, kuten seuraavassa näyttökuvassa näkyy:
Kun järvenrakennus lisätään tietolähteeksi, Explorer-paneeli Fabric-dataagenttisivun vasemmalla puolella näyttää järventalon nimen. Valitse Lakehouse, jos haluat tarkastella kaikkia käytettävissä olevia taulukoita. Valintaruutujen avulla voit valita taulukot, jotka haluat antaa tekoälyn käyttöön. Valitse tässä skenaariossa seuraavat taulukot:
dimcustomerdimdatedimgeographydimproductdimproductcategorydimpromotiondimresellerdimsalesterritoryfactinternetsalesfactresellersales
Semanttisten mallien käyttöoikeudet tietoagenteissa
Käyttäjät tarvitsevat vain lukuluvan Power BI-semanttisessa mallissa voidakseen lisätä sen dataagenttiin ja esittää kysymyksiä agentin kautta. Työtilan käyttöoikeus (Member role) ja Build-oikeudet eivät ole tarpeen dataagenttien väliseen vuorovaikutukseen. Kirjoituslupa tarvitaan vain semanttisen mallin muokkaamiseen tai ominaisuuksien, kuten tekoälyn valmistelun, käyttämiseen.
Tämä käyttöoikeuksien muutos koskee vain dataagenttien kautta tapahtuvia vuorovaikutuksia. Muut käyttötavat (esim. Analyze in Excel tai direct report authorship) noudattavat standardeja Power BI:n käyttöoikeuksia.
Anna ohjeita
Jos haluat lisätä ohjeita, avaa oikeanpuoleinen ohjeruutu valitsemalla Tietoagentin ohjeet -painike. Voit lisätä seuraavat ohjeet.
AdventureWorksLH-tietolähde sisältää tietoja kolmesta taulukosta:
-
dimcustomer: asiakkaiden demografiset tiedot ja yhteystiedot. -
dimdate, päivämääriin liittyville tiedoille, esimerkiksi kalenteri- ja tilikausitieduksille -
dimgeographymaantieteellisiä tietoja, mukaan lukien kaupunkien nimet ja maan aluekoodit.
Käytä tätä tietolähdettä kyselyihin ja analyyseihin, joihin liittyy asiakastietoja, aikaan perustuvia tapahtumia ja maantieteellisiä sijainteja.
Anna esimerkkejä
Jos haluat lisätä esimerkkikyselyitä, avaa esimerkkikyselyt-ruutu oikealla valitsemalla Esimerkkikyselyt-painike . Tässä ruudussa on vaihtoehtoja lisätä tai muokata esimerkkikyselyitä kaikille tuetuille tietolähteille. Voit antaa tarvittavat esimerkit kullekin tietolähteelle valitsemalla Lisää tai Muokkaa esimerkkikyselyitä - seuraavassa näyttökuvassa esitetyllä tavalla:
Lisää tässä Esimerkkikyselyt luomaasi Lakehouse-tietolähteeseen.
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
Note
Esimerkkikysely-/kysymysparien lisäämistä ei tällä hetkellä tueta Power BI:n semanttisten mallien tietolähteissä.
Testaa ja päivitä Fabric-dataagentti
Nyt kun olet konfiguroinut Fabric-dataagentin, lisännyt Fabric-dataagentin ohjeet ja antanut esimerkkikyselyitä järvenrakennukselle, voit olla vuorovaikutuksessa sen kanssa esittämällä kysymyksiä ja vastaanottamalla vastauksia. Kun jatkat testaamista, voit lisätä lisää esimerkkejä ja tarkentaa ohjeita, jotta Fabric-dataagentin suorituskyky paranee entisestään. Tee yhteistyötä työtovereidesi kanssa palautteen keräämiseksi. Varmista annettujen esimerkkikyselyiden ja ohjeiden perusteella, että ne vastaavat niiden kysymysten tyyppiä, joita he haluavat esittää.
Julkaise Fabric-dataagentti
Kun olet validoinut Fabric-dataagentin suorituskyvyn, saatat päättää julkaista sen, jotta voit jakaa sen kollegoillesi, jotka haluavat tehdä Q&;-osiota. A ylimääräinen data. Valitse tässä tapauksessa Julkaise tässä näyttökuvassa esitetyllä tavalla:
Julkaise tietoagentti -ruutu avautuu seuraavassa näyttökuvassa esitetyllä tavalla:
Tässä laatikossa valitse Publish julkaistaksesi Fabric dataagentin. Julkaistu URL-osoite Fabric-dataagentille näkyy, kuten tässä kuvakaappauksessa näkyy:
Käytä Fabric-dataagenttia Copilot-tilassa Power BI:ssä
Voit käyttää Copilot-ohjelmaa Power BI:ssä vuorovaikutukseen Fabric-dataagentin kanssa julkaisun jälkeen. Copilot Power BI:ssä voi suoraan käyttää dataagenttia ja muita kohteita (esimerkiksi raportteja tai semanttisia malleja) ilman, että sinun tarvitsee vaihtaa niiden välillä.
Valitse vasemman navigointipaneelin Copilot-painike avataksesi Copilot Power BI. Valitse seuraavaksi Lisää kohteita, jotta alareunassa olevassa tekstiruudussa olisi parempia tuloksia, jotta tietoagentti voidaan lisätä. Valitse Tietoagentit avautuvassa ikkunassa. Näet vain ne tietoagentit, joihin sinulla on käyttöoikeus. Valitse haluamasi asiakaspalvelija ja valitse Vahvista. Tässä esimerkissä näytetään, miten käsitellään yksittäistä tietoagenttia, mutta voit lisätä kohteita, kuten muita tietoagentteja, raportteja tai semanttisia malleja. Seuraava näyttökuva havainnollistaa vaiheita yksittäisen tietoagentin kanssa:
Kun dataagentti sisältää Power BI:n semanttisen mallin, käyttäjien tarvitsee vain lukuluvan kyseisessä semanttisessa mallissa ollakseen vuorovaikutuksessa Copilot-mallin kautta; työtilaan pääsyä ei tarvita. Kirjoituslupa tarvitaan edelleen semanttisten mallien muutoksiin ja tekoälyn valmisteluun.
Nyt kun olet lisännyt dataagentin Copilot-ohjelmaan Power BI:ssä, voit kysyä mitä tahansa Fabric-dataagenttiisi liittyviä kysymyksiä, kuten seuraavassa kuvakaappauksessa näkyy:
Käytä Fabric-dataagenttia ohjelmallisesti
Voit käyttää Fabric-dataagenttia ohjelmallisesti Fabric-muistikirjassa. Määrittääksesi, onko Fabric dataagentilla julkaistu URL-arvo, valitse Settings, kuten seuraavassa kuvakaappauksessa näkyy:
Ennen kuin julkaiset Fabric-dataagentin, sillä ei ole julkaistua URL-arvoa, kuten seuraavassa kuvakaappauksessa näkyy:
Jos et ole aiemmin julkaissut Fabric-dataagenttia, voit julkaista sen edellisten ohjeiden mukaisesti. Voit sitten kopioida julkaistun URL-osoitteen ja käyttää sitä Fabric-muistikirjassa. Näin voit kysyä Fabric-dataagenttia tekemällä kutsuja Fabric-dataagentin API:lle Fabric-muistikirjassa. Liitä kopioitu URL-osoite tähän koodikatkelmaan. Sitten korvaa kysymys millä tahansa Fabric-dataagenttiin liittyvällä kyselyllä. Tätä esimerkkiä käytetään \<generic published URL value\> URL-osoitteena.
Important
Kun kutsut tietoagenttia ohjelmallisesti, toteuta:
- Kyselyn aikakatkaisu (katso esimerkki alla) määrittelemättömien silmukoiden välttämiseksi.
- Pienin kyselytaajuus (aloita 2–5 sekunnista; lisää vain tarvittaessa).
- Luotujen säikeiden tai resurssien siivoaminen valmistumisen jälkeen.
- Muistikirjan istunto suljetaan Fabric-kapasiteetin vapauttamiseksi.
Note
Säädä versiopinnejä (openai, synapseml, pandas, tqdm) uusimpiin validoituihin versioihin Fabric ajonaikaasi varten, jos nämä tarkat versiot vanhenevat.
%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)