Miksi kehittää oma agentti?
Blogikirjoituksen kirjoittaja kohtasi seuraavia rajoitteita valmiissa Copilot Studio -työkaluissa:
- Agentin testaaminen onnistuu vain Copilot Studion kautta, ei kehittäjille tutuilla työkaluilla.
- LLM-mallia (kuten GPT-4o) ei voi vapaasti valita orkestroijaksi.
- Agentin vastauskäyttäytyminen eroaa siitä, mitä saataisiin suoraan LLM:ää käyttämällä.
Näistä syistä kehittäjä päätti rakentaa oman agentin alusta asti, mutta säilyttää Copilotin käyttöliittymän loppukäyttäjän näkökulmasta.
Kehitysprosessi: Yleiskatsaus vaiheisiin
1. Kehitysympäristön asennus
Projektin kehityksessä käytetään Visual Studioa, C#-kieltä ja Agent Toolkitia, joka on osa M365 Copilot SDK:ta. Uusi projekti luodaan käyttämällä Teams-sovelluksen agenttipohjaa, esimerkiksi Weather Agent -mallia. Kehittäjä määrittelee tässä vaiheessa Azure OpenAI -yhteydet (esim. GPT-4o).
2. Projektipohjan muokkaus
Luotu projekti sisältää kaksi osaa:
- M365Agent: Teams-sovelluksen metatiedot ja debug-määrittelyt.
- ASP.NET Core Web API -projekti: itse agenttilogiikka ja yhteys Azure Bot Serviceen.
Projektissa hyödynnetään Semantic Kernel -kirjastoja, joilla hallitaan LLM-pohjaisia keskusteluja.
3. Agentin paikallinen testaaminen
Kehityksessä käytetään Visual Studion debug-ympäristöä ja Development Tunnelia, jonka kautta Azure Bot Service voi kommunikoida paikallisesti ajettuun agenttiin.
4. Azure Bot Servicen luominen ja yhdistäminen
Agentti liitetään Azure Bot Serviceen, joka toimii välittäjänä Copilotin ja agentin välillä. Tämä edellyttää:
- Entra ID -sovelluksen luomista
- Valtakirjojen (Client ID, Tenant ID, Secret) konfigurointia
- Messaging Endpointin määrittämistä
5. Julkaisu Copilot Agent Storeen
Lopuksi agentti paketoidaan Teams-sovelluksena ja julkaistaan Microsoft 365 Copilot Agent Storeen:
- Päivitä
manifest.json
ja liitä Entra ID -tunnukset. - Pakkaa sovellus ZIP-muotoon ja lataa se Teams Admin Centeriin.
Arkkitehtuuri ja tekninen rakenne
Agentin ytimenä toimii Semantic Kernel
Agentti perustuu Semantic Kernelin ChatCompletionAgent-luokkaan, joka vastaa keskustelun kontekstista ja LLM-kutsujen hallinnasta. Käyttäjän kysymykset ohjataan tämän ytimen kautta OpenAI-mallille, ja vastaus muotoillaan Adaptive Cardiksi tai tekstiksi.
Azure Bot Service toimii välittäjänä
Tärkeä huomio on, että agentti ei ”asu” Copilotissa tai Teamsissa, vaan toimii taustapalveluna Azure Bot Servicen kautta. Tämä mahdollistaa agentin päivittämisen ilman muutoksia käyttöliittymään.
Lopuksi: AgentOps – DevOps agenttikehitykselle
Kun agentti on julkaistu, kehitystä voidaan jatkaa iteratiivisesti:
- Keräämällä käyttödataa ja telemetriaa
- Parantamalla promptteja ja LLM-asetuksia
- Laajentamalla toiminnallisuuksia uusilla kyvyillä
Tätä jatkuvaa kehitysprosessia voidaan kutsua AgentOpsiksi, joka viittaa DevOpsin kaltaiseen käytäntöön tekoälyagenttien hallinnassa ja optimoinnissa.