Microsoft ima dugu povijest izdavanja proizvoda i značajki bez pružanja odgovarajućih (ili bilo kakvih) kontrola upravljanja, i ako ste mislili da će stvari biti drugačije u “agentičnoj” eri… blago vama. Kao i obično, bombardirani smo mnoštvom marketinških i prodajnih prijedloga, u kombinaciji s nekim FOMO porukama, dok smo odbijali sve legitimne brige kupaca. Stvari konačno dolaze na bolje s izdanjem Agenta 365, koji obećava da će “postaviti, upravljati i upravljati svim vašim agentima u mjerilu“, između ostalog.
Očito, ljudi iz marketinga u Microsoftu drugačije shvaćaju što znači “na skali”, s obzirom na to da je proizvod lansiran samo s korisničkim sučeljem i bez podržane metode za iskorištavanje osnovnih API-ja. The API za upravljanje paketima agenta i aplikacije je naveden kao dostupan od zadnjeg Ignite-a, ali svaki pokušaj njihove upotrebe rezultirao je pogreškom. Sada je konačno objavljen radni skup API krajnjih točaka pod /beta kanala, omogućujući nabrajanje i upravljanje agentima unutar vašeg stanara. Idemo pogledati.
Prvo, dopuštenja. Unatoč onome što trenutačna dokumentacija kaže, za API su podržane i dozvole delegata i aplikacije. Potonji je naravno mnogo preferirani kada ste zainteresirani za potpuno automatizirana rješenja i upravljanje agentima na razini, tako da juhu. Da biste koristili bilo koju od metoda “čitanja”, trebat će vam CopilotPackages.Read.All opseg, dok svaka od operacija “pisanja” treba CopilotPackages.ReadWrite.All jedan.
Nažalost, dobre vijesti ovdje završavaju. Čini se da dopuštenja aplikacije trenutačno funkcioniraju samo za metodu LIST, pa čak i ona GET izbacuje i pogrešku (424 Neuspjela ovisnost) kada se pokuša u kontekstu aplikacije. I dok je službena dokumentacija ažurirana za popis metoda kao što su blokirati, deblokirati ili ponovno dodijelitiNIJEDAN od njih trenutno nije funkcionalan. Dakle, zapravo, sve s čime moramo raditi su neke osnovne metode samo za čitanje.
Zatim, morate razumjeti da API pokriva više od samih agenata, kao što mu ime sugerira. Zapravo, podrška za agente je vjerojatno bila naknadna misao, jer oni nisu vraćeni prema zadanim postavkama. Umjesto toga, morate izričito zatražiti da se vrate, dodavanjem filtra svom upitu. Volio bih da je dokumentacija to jasnija. U svakom slučaju, za popis svih agenata upotrijebite sljedeće:
GET https://graph.microsoft.com/beta/copilot/admin/catalog/packages?$filter=supportedHosts/any(x:x eq 'Copilot')
Usporedite li rezultate gornjeg upita s onim što prikazuje korisničko sučelje, mogli biste primijetiti malo odstupanje. U mom slučaju, ukupno 165 agenata vraćeno je putem API poziva, dok Agent 365 UI navodi njihov broj kao 163, plus jedan blokiran, 164. Ako izvezete popis UI-ja u CSV datoteku ili se potrudite prebrojati stvarne vraćene unose, vidjet ćete da se broj podudara. Tužno je što inženjeri odgovorni za proizvod koji bi trebao osigurati vašu implementaciju umjetne inteligencije ne razumiju razliku između prvog i nultog elementa u nizu 🙂
Šalu na stranu, ako usporedimo oba popisa, također ćemo primijetiti da se razina izloženih detalja razlikuje među njima. Na primjer, Osjetljivost svojstvo nije izloženo putem API-ja. Što je još važnije, korisničko sučelje omogućuje vam da dobijete pojedinosti o tome koja dopuštenja traži (ili dodijeli) agent, neke podatke o korištenju i naplati itd. Za agente koji imaju odgovarajući Entra ID principal usluge osiguran u vašem zakupcu, možete izvršiti dodatne upite da biste dobili pojedinosti o dopuštenju. Međutim, to ne možete učiniti za bilo kojeg nasumičnog agenta, pa bi bilo lijepo imati svojstvo s odgovarajućim skupovima dozvola. Nadamo se da će buduće iteracije API-ja riješiti ove nedostatke.
Da biste dobili pojedinosti o određenom agentu, upotrijebite GET zahtjev za njegov ID:
GET https://graph.microsoft.com/beta/copilot/admin/catalog/packages/P_13001d9b-2af4-bd2f-5458-ffa544bc62b7
Odgovor će se u potpunosti podudarati s onim iz metode LIST (gore prikazane), uz jedno dodatno izloženo svojstvo, naime elementDetails jedan. To vam obično daje skup upita koje podržava agent, kao što je “Pokaži mi sve snimke od danas” za trenutno odabranu.
Od ostalih svojstava vrijednih spomena, najviše nas zanimaju ovakva svojstva je blokiran (prekidač za uključivanje/isključivanje), tko je izdavač je, i što je najvažnije, skup korisnika i grupa kojima je dopušten pristup ovom agentu ili su ga već dodali. Oni su pod kontrolom dostupanTo i dozvoljeniKorisniciIGrupe svojstva za bivše, i raspoređenTo i pridobitiKorisnikeIGrupe za potonje scenarije, prema tome. Oba dostupanTo i raspoređenTo su enumi, sa sljedećim prihvaćenim vrijednostima:
- dozvoljenozanitko ili stečenoZaNitko – niti jedan korisnik ne može pristupiti niti implementirati agenta.
- dozvoljenoZaSve ili stečenoZaSve – svi korisnici mogu pristupiti agentu ili ga implementirati.
- dozvoljeno za neke ili stečenoZaNeke – određeni skup korisnika i grupa može pristupiti agentu ili ga implementirati.
Za posljednji slučaj, skup principala za dopuštanje ili implementaciju agenta konfiguriran je kao dio dozvoljeniKorisniciIGrupe i pridobitiKorisnikeIGrupe popisi, oboje packageAccessEntry vrsta. Možda zvuči malo zamršeno, pa evo primjera:
#Get package details via Graph API GET https://graph.microsoft.com/beta/copilot/admin/catalog/packages/P_e3d64609-7a28-6de6-3093-402c20bb96ce?$select=id,allowedUsersAndGroups,availableTo #Get package details via Graph PowerShell $res = Invoke-MgGraphRequest -Method Get -Uri "https://graph.microsoft.com/beta/copilot/admin/catalog/packages/P_e3d64609-7a28-6de6-3093-402c20bb96ce?`$select=id,allowedUsersAndGroups,availableTo" $res | select id,displayName,allowedUsersAndGroups,availableTo id displayName allowedUsersAndGroups availableTo -- ----------- --------------------- ----------- P_e3d64609-7a28-6de6-3093-402c20bb96ce Writing Coach e0d7442c-8cd8-4e65-8ede-ec9887816677, ecdbc965-b30b-47d7-8dbe-904fd286aa46 allowedForSome
Imajte na umu da metode GET/LIST trenutno ne podržavaju $odaberi operatera, tako da je gornji izlaz ručno podešen. Osim toga, metoda LIST neće popuniti vrijednosti za dozvoljeniKorisniciIGrupe ili pridobitiKorisnikeIGrupe svojstva, umjesto toga morate koristiti pojedinačne GET zahtjeve. Naposljetku, pokušaj GET metode putem konteksta aplikacije čini se da baca a (424) Neuspjela ovisnost greška trenutno.
I nažalost, ovo je tu kao pokriće za API u ovom trenutku. Kao što je gore spomenuto, iako trenutna dokumentacija rado navodi dodatne metode i operacije, nijedna od njih ne radi. Umjesto toga, prikazat će vam se generička pogreška i morate pričekati dok Microsoft u potpunosti ne objavi navedene metode. Nadamo se da neće potrajati još šest mjeseci.
Kada se to dogodi, moći ćemo istražiti neke osnovne scenarije, kao što je upravljanje zadacima za agente ili blokiranje onih koje smatramo neprikladnima za korištenje u organizaciji. Iako će dostupnost metoda po agentu zasigurno poboljšati ukupnu sliku upravljivosti, trenutno nema riječi o podršci za desetke konfiguracijskih postavki, izloženih unutar korisničkog sučelja. Oh dobro, pretpostavljam da ću imati izgovor da napišem još jedan članak na tu temu.
Ukratko, prva iteracija krajnjih točaka i metoda za upravljanje agentima dostupna je na Graph API-ju. Upravljanje je nažalost pretjerano, s obzirom na trenutačno stanje API-ja, ali unatoč tome, barem imamo neki uvid u agente. Iako je izvješćivanje o dostupnim agentima, njihovim dodjelama i korištenju još uvijek važan zadatak, API nam još ne dopušta poduzimanje bilo kakvih radnji u vezi s upravljanjem agentima, što je šteta.