Esimerkki tekoälyn taidoista AdventureWorks-tietojoukossa (esikatselu)
Tässä artikkelissa kerrotaan, miten voit määrittää tekoälytaidon käyttämällä Lakehouse-tietolähdettä. Prosessin havainnollistamiseksi luomme ensin lakehouse-ympäristön ja lisäämme siihen sitten tietoja. Sitten luomme tekoälytaidon ja määritämme Lakehousen sen tietolähteeksi. Jos sinulla on jo Power BI:n semanttinen malli (tarvittavilla luku- ja kirjoitusoikeuksilla), varasto tai KQL-tietokanta, voit noudattaa samoja vaiheita, kun olet luonut tekoälytaitojen lisäämisen tietolähteesi. Vaikka tässä näytetyt vaiheet keskittyvät Lakehouse-tallennustilaan, prosessi on samankaltainen muiden tietolähteiden kanssa – sinun täytyy vain tehdä muutoksia valitsemasi valinnan perusteella.
Edellytykset
- A:n maksettu F64 tai uudempi Fabric-kapasiteetin resurssi
- Tekoälyn taitojen vuokraajan valitsin on käytössä.
- Copilot-vuokraajavalitsin on käytössä.
- AI Cross-Geo-prosessointi on käytössä.
- AI Cross-Geo-tallennus on käytössä.
- Varasto, Lakehouse, semanttiset Power BI -mallit ja KQL-tietokannat, joissa on tietoja.
- Power BI:n semanttiset mallit XMLA-päätepisteiden vuokraajavalitsimen kautta on käytössä Power BI:n semanttisen mallin tietolähteissä.
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 näin ei ole, voit täyttää tiedot Fabric-muistikirjan seuraavien ohjeiden mukaisesti.
Luo työtilaan uusi muistikirja, johon haluat luoda tekoälytaitosi.
Valitse resurssienhallintaruudun vasemmasta reunasta + 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.blob.core.windows.net/public/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.
Tekoälytaidon luominen
Jos haluat luoda uuden tekoälytaidon, siirry työtilaasi ja valitse + Uusi kohde - -painike seuraavassa näyttökuvassa esitetyllä tavalla:
Etsi Kaikki kohteet -välilehdestä tekoälyn osaamista, jotta löydät sopivan vaihtoehdon. Kun tämä pyyntö on valittu, sinua pyydetään antamaan tekoälytaidollesi nimi seuraavassa näyttökuvassa esitetyllä tavalla:
Kun olet antanut nimen, jatka seuraavien ohjeiden avulla, jotta tekoälytaidot vastaavat tiettyjä vaatimuksiasi.
Valitse tiedot
Valitse edellisessä vaiheessa luomasi lakehouse-talo ja valitse sitten Lisää. Kun Lakehouse on lisätty tietolähteeksi, Explorerin tekoälyn taitosivun vasemmassa reunassa olevassa ruudussa näkyy Lakehousen nimi. 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:
dimcustomer
dimdate
dimgeography
dimproduct
dimproductcategory
dimpromotion
dimreseller
dimsalesterritory
factinternetsales
cactresellersales
Anna ohjeet
Jos haluat lisätä tekoälyohjeita, avaa oikealla oleva tekoälyohjeruutu napsauttamalla tekoälyohjeita -painiketta. 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 -
dimgeography
maantieteellisiä 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ä, valitse Esimerkkikyselyt -painike, jolloin oikealla puolella oleva Esimerkkikyselyt-ruutu avautuu. 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
Huomautus
Power BI:n semanttisen mallin tietolähteiden ei tällä hetkellä tueta mallien kysely/kysymysparien lisäämistä.
Tekoälytaidon testaaminen ja muokkaaminen
Nyt kun olet määrittänyt tekoälytaidon, lisännyt tekoälyohjeita ja antanut esimerkkikyselyitä Lakehouselle, voit käyttää niitä esittämällä kysymyksiä ja vastaanottamalla vastauksia. Kun jatkat testaamista, voit lisätä esimerkkejä ja tarkentaa ohjeita tekoälytaidon suorituskyvyn parantamiseksi 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ää.
Tekoälytaitojen ohjelmallinen käyttö
Voit käyttää tekoälytaitoa ohjelmallisesti Fabric-muistikirjassa. Voit määrittää, onko tekoälytaidolla julkaistu URL-arvo, valitsemalla Asetukset tässä näyttökuvassa esitetyllä tavalla:
Ennen kuin julkaiset tekoälytaidon, sillä ei ole julkaistua URL-arvoa seuraavassa näyttökuvassa esitetyllä tavalla:
Kun olet vahvistanut tekoälytaidon suorituskyvyn, voit julkaista sen, jotta voit jakaa sen työtovereillesi, jotka haluavat Q&A:n tietojen kautta. Valitse tässä tapauksessa Julkaise tässä näyttökuvassa esitetyllä tavalla:
Tekoälytaidolle julkaistu URL-osoite tulee näkyviin seuraavassa näyttökuvassa esitetyllä tavalla:
Voit sitten kopioida julkaistun URL-osoitteen ja käyttää sitä Fabric-muistikirjassa. Näin voit tehdä kyselyjä tekoälytaidoista kutsumalla tekoälyn taitojen ohjelmointirajapintaa Fabric-muistikirjassa. Liitä kopioitu URL-osoite tähän koodikatkelmaan. Korvaa sitten kysymys millä tahansa tekoälytaidollesi liittyvällä kyselyllä. Tätä esimerkkiä käytetään \<generic published URL value\>
URL-osoitteena.
%pip install "openai==1.14.1"
%pip install httpx==0.27.2
import requests
import json
import pprint
import typing as t
import time
import uuid
from openai import OpenAI
from openai._exceptions import APIStatusError
from openai._models import FinalRequestOptions
from openai._types import Omit
from openai._utils import is_given
from synapse.ml.mlflow import get_mlflow_env_config
from sempy.fabric._token_provider import SynapseTokenProvider
base_url = "https://<generic published base URL value>"
question = "What datasources 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
while run.status == "queued" or run.status == "in_progress":
run = fabric_client.beta.threads.runs.retrieve(
thread_id=thread.id,
run_id=run.id,
)
print(run.status)
time.sleep(2)
# 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)