Microsoftova marketinška mašina nastavlja da bombarduje kupce floskulama o veličini veštačke inteligencije i uzaludnosti odupiranja prelasku na E7. Međutim, kada je u pitanju isporuka obećanih karakteristika i proizvoda koji razbijaju stvarnost, to je druga priča. A što se tiče upravljanja stvarima, pokrivenost je i dalje… u najboljem slučaju oportunistička, ali čak i to se može smatrati pričom o uspjehu, u poređenju sa ledenim tempom kojem svjedočimo na frontu API-ja.
API-ji agenta 365 su GA
Prošla je četvrtina od našeg prvog pogleda na API-je za Agent 365, a u međuvremenu je Microsoft učinio Agent 365 API opšte dostupnim. Ako vam je stalo do metoda samo za čitanje, to jest. Postoje samo metode GET i LIST /v1.0 trenutno vrijedan, s dostupnošću i metodama alokacije koji su dostupni samo pod /beta.
Nije se mnogo promijenilo ni za metode koje su premještene na /v1.0. Još uvijek nema podrške za $odaberi operatera, tako da ste primorani da svaki put dobijete potpuni odgovor. Ali ima nekih pozitivnih stvari o kojima treba razgovarati. Prvo, “obični” paketi se više ne vraćaju u izlaz, tako da zapravo ne morate da dodajete $filter=supportedHosts/any(x:x eq ‘Copilot’) parametar upita da dobijete samo objekte agenta.
Uz to, sada su podržane dozvole za aplikacije, što konačno omogućava da se inventar vaših agenata dobije na neinteraktivan način. Potrebna je odgovarajuća dozvola CopilotPackages.Read.All. Uveden je i ukus “pisanja”. CopilotPackages.ReadWrite.Alliako nema smisla koristiti ga upravo sada jer nijedna od metoda pisanja trenutno ne podržava dozvole aplikacije.
Imajući gore navedeno na umu, evo kratkog primjera kako iskoristiti dozvole aplikacije za preuzimanje skupa agenata unutar vašeg zakupca:
#Fetch an access token via client credentials
Add-Type -Path "C:\Program Files\WindowsPowerShell\Modules\MSAL\Microsoft.Identity.Client.dll"
$app = [Microsoft.Identity.Client.ConfidentialClientApplicationBuilder]::Create("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx").WithClientSecret("blablabla").WithTenantId("tenant.onmicrosoft.com").Build()
$Scopes = New-Object System.Collections.Generic.List[string]
$Scope = "https://graph.microsoft.com/.default"
$Scopes.Add($Scope)
$token = $app.AcquireTokenForClient($Scopes).ExecuteAsync().Result
$authHeader1 = @{
'Content-Type'='application/json'
'Authorization'="Bearer $($token.AccessToken)"
}
#Fetch all agents
$uri = "https://graph.microsoft.com/v1.0/copilot/admin/catalog/packages"
$response = Invoke-RestMethod -Method GET -Uri $uri -Headers $AuthHeader1
$response.'@odata.count'
251
$response.valueKoliko mogu da procenim, ništa drugo se nije promenilo prelaskom na /v1.0, a stvarno upravljanje agentima je i dalje moguće samo korišćenjem /beta metoda. Dakle, ako trebate upravljati velikim brojem agenata, morate koristiti nepodržani API ili možda kreirati agenta koji koristi računalo koje može izvoditi odgovarajuće radnje unutar portala. Zabava.
Još jedno poslednje podešavanje – API agenta (upravljanje paketima) nastavlja da sprovodi uslove licenciranja Agenta 365 nakon GA. Ovdje nema nikakvog iznenađenja jer je Microsoft jasno pokazao svoje namjere po ovom pitanju. Dakle, dok svaki korisnik dobije pristup “osnovnoj” funkcionalnosti Agenta 365 unutar M365 Admin Centra, kupci koji traže automatska rješenja imat će privilegiju da potroše dodatnih $$$ na API koji se čak ne podudara ni s onim što je moguće (besplatno) u korisničkom sučelju. Ima smisla.
Postavke politike kopilota
Što nas dovodi do sljedećeg scenarija: konfiguriranje bilo koje od desetina postavki izloženih na stranicama Copilot i/ili Agent 365 unutar Microsoft 365 portala. Oni se kreću od „pričvršćivanja“ Copilot chata za vaše korisnike do omogućavanja Frontieru pristupa do toga koje vrste agenata su dozvoljene i ko može dijeliti agenta. Možete li pogoditi koliko se ovih kontrola trenutno može konfigurirati putem API-ja ili općenito izvan portala?
Odgovor je 5 (pet). Ovo je proširenje za copilotPolicySetting API je razvijen. Evo liste ID-ova podešavanja:
| Postavljanje ID-a | Naziv postavke |
|---|---|
| microsoft.copilot.copilotchatpinning | Pin Microsoft 365 Copilot Chat |
| microsoft.copilot.blockaccesstoopenfiles | Blokirajte pristup kopilotu otvorenom sadržaju |
| microsoft.copilot.imagegeneration | Upravljajte pristupom Designer Image Generation |
| microsoft.copilot.allowwebsearch | Dozvolite pretraživanje weba u Copilot-u |
| microsoft.copilot.allowinadmincenters | Kontrolišite dostupnost Admin Copilot u Microsoft 365 Admin centru |
CopilotPolicySetting API je u pregledu od aprila i još je jedan primjer tužnog stanja API-ja za upravljanje za Copilot i Agent 365. Trenutno nije dostupna čak ni metoda LIST, tako da morate znati vrijednost ID-a postavke prije nego što ga uopće možete upitati (pojedinačno). I pogodili ste, API je dostupan samo na /beta krajnjoj tački i trenutno podržava samo delegatske dozvole. Ili bolje rečeno, trebaće vam CopilotPolicySettings.Read dozvolu za preuzimanje trenutno konfiguriranih vrijednosti za odgovarajuće pravilo i CopilotPolicySettings.ReadWrite da ga modifikujete. Ne spominje koja je uloga administratora potrebna, tako da se primjeri ispod pokreću sa Globalnim administratorom.
Kao sporedna napomena, varijante dozvola aplikacije za dva gornja opsega su zapravo dostupne i mogu se dodijeliti aplikaciji. Međutim, API metode trenutno ne prepoznaju takve opsege i svaki upit u kontekstu aplikacije će rezultirati a 403 Zabranjeno greška.
Uz odobrene dozvole, možemo koristiti alat kao što je Graph explorer za rad s nekoliko podržanih postavki. Jednostavan GET zahtjev protiv /beta/copilot/admin/policySettings/{id} krajnja točka će dohvatiti objekt politike kao i pridruženu vrijednost postavke, gdje je konfigurirana. Na primjer, zahtjev u nastavku dobiva vrijednost za Pin Microsoft 365 Copilot Chat politika/postavka:
GET https://graph.microsoft.com/beta/copilot/admin/policySettings/microsoft.copilot.copilotchatpinning
The vrijednost svojstvo iz izlaza nam govori stanje odgovarajuće postavke, sa vrijednošću 0 signalizirajući da je u ovom zakupcu postavka onemogućena („Ne prikači Copilot Chat i ne traži od korisnika da prikače“). Null vrijednost nam govori da odgovarajuća postavka nije konfigurirana (“vrijednost”: nula). Ako samo pravilo nije konfigurirano za zakupca, vidjet ćete a “policyId”: null umjesto toga, što je zadana vrijednost za nove stanare. Za dodatne detalje i primjere pogledajte zvaničnu dokumentaciju.
Za ažuriranje bilo koje od podržanih postavki, možete koristiti PATCH zahtjev protiv /beta/copilot/admin/policySettings/{id} krajnja tačka. U donjem primjeru mijenjamo vrijednost u “0”. Dovoljno smiješno, za microsoft.copilot.imagegeneration postavka, vrijednost od 1 prevodi da je invalid, tj 0 je omogućeno.
PATCH https://graph.microsoft.com/beta/copilot/admin/policySettings/microsoft.copilot.imagegeneration
{
"value": "0"
}
Naravno, ne može svaka postavka biti predstavljena binarnim (ili cjelobrojnim) vrijednostima, a kako se podrška za razna pravila Copilot širi, morat će biti podržano više tipova. U stvari, dokumentacija se odnosi na ovu činjenicu, ali trenutno ne daje konkretne primjere takvih vrijednosti postavki. Osim toga, trenutno ne postoji podrška za definiranje pravila Copilot za podskup vaših korisnika putem grupa ili bilo kojeg drugog mehanizma, ali dokumentacija priznaje takve scenarije.
Prije nego što zatvorimo ovu rubriku, treba spomenuti jednu zanimljivost. Naime, vrijednost policyId ima Exchange format StoreIdšto ukazuje da se odgovarajući objekt politike vjerovatno nalazi unutar sistemskog/arbitražnog poštanskog sandučeta. Tačnije, Organizacijska particija_PolicyService_c2ada927-a9e2-4564-aae2-70775a2fa0af arbitražnog sandučeta, ili poslati preko njega PolicyService_c2ada927-a9e2-4564-aae2-70775a2fa0af ime/pseudonim.
Koristeći alat kao što je MFCMAPI, tada možete dobiti odgovarajuće podstavke ApplicationDataRoot podstablo i njegovo c2ada927-a9e2-4564-aae2-70775a2fa0af podfolder. Čini se da svako (konfigurirano) pravilo kopilota ima svoju podstavku a4900027-b443-4789-aade-1180a176b8d0 podfolder sa klasom SDS.c2ada927-a9e2-4564-aae2-70775a2fa0af.Settings. Na primjer, ovako je microsoft.copilot.imagegeneration postavka je predstavljena:
Uzgred, ovo objašnjava i činjenicu zašto isto policyId vrijednost se vraća za sve podržane postavke.
Završne riječi
Dakle, krajem jula 2026., mjesec dana nakon GA Agenta 365 i nekoliko godina u Microsoftovom AI putu, stanje API-ja koji se koriste za izvještavanje ili upravljanje agentima, postavkama kopilota i povezanim konfiguracijama i dalje je razočaravajuće. Stalno slušamo kako će umjetna inteligencija pokrenuti 5x, 10x, što god da poveća produktivnost, ali kada je u pitanju isporuka prvih primjera ove revolucije, čini se da stvarnost otkriva drugačiju priču. Drugi način gledanja na to je da Microsoft ne vidi API-je kao bilo kakav prioritet i rado ograničava svoje kupce na korištenje UI alata, tamo gdje su dostupni.
Nekoliko metoda koje su trenutno dostupne uglavnom su ograničene na interaktivne scenarije ili ne pokrivaju operacije pisanja, što ih čini korisnim samo za scenarije izvještavanja. U stvari, svaka organizacija koja želi upravljati stvarima u velikom obimu ili uskladiti njihovu implementaciju sa industrijskim standardima ili najboljom praksom, može to učiniti samo pomoću dobre stare „ručne“ metode, jednim bolnim klikom u isto vrijeme. S druge strane, možda su agenti koji koriste kompjutere rješenje koje smo trebali pronaći? 🙂
Da završimo stvari na malo pozitivnoj noti, postoji malo svjetla u tunelu u obliku novog privatnog pregleda koji će se fokusirati na upravljanje više zakupaca za Copilot i agente. Kada dođe do faze javnog razmatranja, nastavit ću s još jednom objavom o „stanju unije“, nadamo se onim sa manje razuzdanim od trenutnog.
