Terveiset European Power Platform konferenssista! Tällä kertaa osallistuin myös maanantain tutorial-päivään ja siellä valintani osui Microsoft Copilot -osioon (Build your Own Custom Agent using Microsoft Copilot Studio).

Paljon tuttua, mutta aina sitä oppii myös jotain uutta. Tällä kertaa uudet jutut liittyivät tietolähteiden (knowledge) käyttöön.

Tietolähteiden avulla voimme tuoda agentin käyttöön sisältöä, jota se hyödyntää vastatessaan käyttäjille tai sen edetessä tehtävissään (autonomiset agentit).

Esimerkiksi HR agentilla voi olla käytössään eri maissa käytetyt työehtosopimukset, joita se sitten hyödyntäävaikka vuosilomien käyttöön liittyvissä kysymyksissä.

Mitä hakuindeksiä milloinkin käytetään?

Agentti saattaa löytää samoista dokumenteista tietoja hyvin eri tavalla, riippuen siitä miten dokumentit on agentin käyttöön lisätty. Mikäli tietolähteeksi lataa yksittäisiä dokumentteja, ne indeksoidaan Dataversessä ja hauissa käytetään Azure AI Searchia.

Kuva: https://learn.microsoft.com/en-us/microsoft-copilot-studio/knowledge-unstructured-data

Mikäli tietolähteeksi lisää koko SharePoint-sivuston, käyttää agentti hauissaan SharePointin omaa hakuindeksiä.

Tämä selittää yleisen ihmettelyn siitä, miten agentti ”toimii paremmin” jos dokumentit on ladannut sen käyttöön (vs. esim linkit SharePoint kirjastoihin).

Käyttäjän perusteella valittava tietolähde

Emme siis voi aina luottaa siihen että agentti löytää SharePointin dokumenttikirjastosta oikeasta dokumentista oikean tiedon. Mutta voimme halutessamme pakottaa sen etsimään tietystä paikasta!

Meillä on dokumenttikirjastossa eri maiden työehtoihin liittyviä dokumentteja. Kunkin maan dokumentit ovat omissa kansiossaan. Haluamme tehdä agentin, joka käyttää tietolähteenä dokumentteja käyttäjän maata vastaavasta kansiosta.

Miten tämä tehdään?

Käyttäjän maa (location)

Ensin meidän tulee selvittää käyttäjän maa. Se onnistuu Entra ID -yhdistimen (connector) avulla keskustelun käynnistyessä (Topic – Conversation Start). Muistetaan vain tallentaa käyttäjän tiedot globaaliin muuttujan, jolloin ne ovat agentin käytössä kaikkialla.

Tietojen haku oikeasta kansiosta

Tämän jälkeen tehdään oma aihe (topic), joka kattaa käyttäjän kyselyt liittyen poissaoloihin (Leave policy). Agentti siirtyy automaattisesti tähän aiheeseen käyttäjän kysyessä poissaoloista. Muodostetaan vastaus kielimallin avulla hyödyntäen tietolähteitä. Lisätään siis Create generative answers -toiminto.

Määritellään käytettävät tietolähteet (Data sources -> Edit). Määritellään manuaalisesti, mitä agentille annettuja tietolähteitä käytetään (Search only selected sources, 1). Mutta ei valita listalta ainuttakaan tietolähteistä (2).

Selataan hieman alemmas Classic data -osioon ja vaihdetaan SharePointille syötettäväksi kaava (formula).

Pääsemme lopulta syöttämään kaavan, joka on esimerkissämme

[ "https://copilotstudiotraining.sharepoint.com/Shared Documents/Leave policies/" & Global.GetUser.officeLocation ]

Eli käytännössä käytämme tietolähteenä aina dokumenttikirjastomme Leave policies -kansion alta löytyvää alikansiota, joka on nimetty käyttäjien maiden (Entra ID:n location -tieto) mukaan.

Kunkin kansion alta löytyy sitten kyseisen maan aiheeseen liittyvät dokumentit.

Lisätään lopuksi toiminnon syötteeksi (input) käyttäjän alkuperäinen kysymys. Se löytyy globaalista Activity.Text -muuttujasta.

Kysyessäni agentilta mitä tahansa poissaolosäännöistä, se hakee tiedot USA -hakemiston alla olevista dokumenteista (testikäyttäjäni officeLocation on USA).

Tietolähteisiin kohdistuvien hakujen rajaaminen ohjeilla (instructions)

Toinen tapa manipuloida hakuja on antaa agenttitasoisia ohjeita. Alla agenttia ohjeistetaan lisäämään tietolähteisiin tehtäviin hakuihin loppuun ehto ”in <country>”, kun haku kohdistuu mihin tahansa HR asiaan.

Miten saamme lisättyä käyttäjän maan ohjeeseen? Power Fx -kaavalla!

Kaava on

Global.GetUser.officeLocation

Eli haetaan globaalin GetUser-muuttujan officeLocation -property.

Nyt käyttäjän hakiessa tietoja esimerkiksi työntekijöiden eduista, lisätään hakuun automaattisesti perään ”in <käyttäjän maa>”.

Yhteenveto

Agenttien tekeminen on mielenkiintoinen yhdistelmä ohjepromptien, tietolähteiden, työkalujen (tools, tunnettu aiemmin myös termillä actions), toisten agenttien ja aiheiden (topics) luovaa käyttöä. Kaikki on tunnettava kohtuullisen hyvin, jos aikoo saada aikaiseksi jotain oikeasti toimivaa.

Tämän kirjoituksen inspiraationa on toiminut Microsoftin Copilot Studio harjoitukset ja sieltä nimenomaisesti osio Knowledge Prioritization Techniques.

Mikäli agenttien teko ei ole vielä tuttua, kannattaa lukaista kaikki nuo labrat läpi!