Kuinka rakentaa tehokkaita tekoälyagentteja Csharpin työkaluilla

Viimeisin päivitys: 05/21/2026
Kirjoittaja: C SourceTrail
  • Nykyaikaiset C#-agentit yhdistävät LLM-päättelyn työkaluihin, muistiin ja työnkulkuihin käsitelläkseen monimutkaisia, tavoitteellisia tehtäviä.
  • Azure OpenAI Assistants ja Microsoft Agent Framework tarjoavat ydinprimitiivejä avustajille, istunnoille, työkaluille ja suorituksille .NETissä.
  • Vankat arkkitehtuurit erottavat erikoistuneet agentit, säilyttävät tilan, organisoivat työnkulkuja ja valvovat tiukkaa testausta, havaittavuutta ja turvallisuutta.
  • Pilvityökalut, kuten Azure AI Foundry ja VS Coden tekoälylaajennukset, tehostavat tuotantotason agenttien kehitystä, arviointia ja käyttöönottoa.

Tekoälyagentit C#-kielellä työkaluineen

Tekoälyagenttien rakentaminen C#-työkaluilla on muuttunut tutkimuskokeilusta erittäin käytännölliseksi tavaksi lisätä todellista älykkyyttä liiketoimintasovelluksiin. Microsoftin modernit kehykset ja uusimmat OpenAI- ja Azure OpenAI SDK:t mahdollistavat paljon yksinkertaisempien chatbottien rajojen ylittämisen yhdistämällä suuria kielimalleja koodiin, tiedostoihin, työnkulkuihin ja yritysjärjestelmiin säilyttäen samalla hallinnan tietoturvasta, kustannuksista ja luotettavuudesta.

Tämä opas opastaa sinut ydinkäsitteiden, arkkitehtuuripäätösten ja konkreettisten .NET-esimerkkien läpi, joita tarvitset tuotantovalmiiden agenttien suunnitteluun C#:lla. Kokoamme yhteen ideoita Azure OpenAI Assistantsista, Microsoft Agent Frameworkista, orkestrointimalleista, testauksesta, havaittavuudesta ja pilvikäyttöönotosta ja selitämme, miten kaikki sopii yhteen yhtenäisen strategian kanssa tosielämän sovelluksia varten.

Mikä tekoälyagentti oikeastaan ​​on (ja miksi sillä on merkitystä .NETissä)

.NET-ekosysteemissä tekoälyagentti ymmärretään parhaiten tavoitelähtöisenä ohjelmistokomponenttina, jota tukee oikeustieteen maisteri (LLM), joka voi päätellä, valita työkaluja ja toimia sovelluksesi sisällä. Jäykän, aina samaa polkua seuraavan skriptin sijaan agentti hyväksyy avoimen syötteen, päättää, mitä tehdä seuraavaksi, ja käyttää koodiasi ja dataasi edetäkseen kohti tulosta.

Agenteista tulee huomattavasti hyödyllisempiä, kun lisäät kolme ominaisuutta pelkän tekstin luomisen lisäksi. Annat heille päättely- ja päätöksentekokyvyn (LLM:ien, haku- tai suunnittelualgoritmien avulla), kyvyn kutsua työkaluja (paikallisia C#-funktioita, MCP-palvelimia, API-rajapintoja, koodin suorittamista) ja kontekstitietoisuuden (keskusteluhistoria, säikeet, vektoritallennustilat, yritystietämysgraafit tai tiedostohaku). Tämä muuttaa yksinkertaisen keskustelun suorittamisen komponentiksi, joka voi itsenäisesti koordinoida monivaiheista työtä.

Kun tavoitteesi monimutkaistuvat, harvoin suoritat kaiken yhtenä jättimäisenä, läpinäkymättömänä kehotteena; jaat työn työnkulkuihin. Työnkulku on sarja tai kaavio tavoitteen saavuttamiseksi tarvittavista vaiheista: esimerkiksi vaatimusten kerääminen, ominaisuuden suunnittelu, toteutus, testaus ja käyttöönotto. Jokainen vaihe voi sisältää alitehtäviä ja voi palata takaisin virheiden tai uuden tiedon mukaan, joten orkestroinnista tulee nopeasti ensiluokkainen huolenaihe.

Kun sijoitat agentteja näihin työnkulkuihin, saat agenttityönkulkuja: työnkulkuja, joissa agentit tekevät yhteistyötä tehtävien suorittamiseksi, mukauttamiseksi ja optimoimiseksi. Sinulla voi olla agentti, joka analysoi lokeja, toinen laatii koodikorjauksia ja kolmas valmistelee sidosryhmäraportteja. Tärkeää on, miten he välittävät tietoa, miten heitä koordinoidaan ja miten pidät koko järjestelmän havaittavana ja auditoitavana.

Tekoälyavustajien ja -agenttien ydinosaamiset

Useimmat nykyaikaiset C#- ja .NET-kielille suunnatut tekoälyagenttialustat jakavat pienen joukon ydinkomponentteja, vaikka nimet eroavatkin hieman Azure OpenAI Assistantsin ja Microsoft Agent Frameworkin välillä. Näiden lohkojen ymmärtäminen auttaa sinua suunnittelemaan oman arkkitehtuurisi sen sijaan, että kopioisit katkelmia sokkona.

Assistentti tai agentti on keskeinen tekoälyasiakas, joka käyttää LLM plus -konfiguraatiota ohjeiden käsittelyyn, keskustelujen hallintaan ja työkalujen käynnistämiseen. Azure OpenAI Assistants -ympäristössä tämä objekti käärii mallin kokoonpanon, ohjeet ja työkalun kokoonpanon. Microsoft Agent Frameworkissa AIAgent sisältää chat-asiakasohjelman (OpenAI tai Azure OpenAI) sekä työkalut ja ohjeet, ja on tarkoituksella tilaton, jotta se voi palvella useita keskusteluja rinnakkain.

Säie tai istunto edustaa yhtä käyttäjän ja agentin välistä keskustelua, mukaan lukien kaikki viestit ja asiaankuuluva tila. Azure OpenAI -avustajat puhuvat aiheesta kierteet, jotka omistavat viestit ja käsittelevät automaattisen katkaisun mallikontekstiin sopivaksi. Microsoft Agent Framework käsittelee Agenttiistunto, joka sisältää historiaa ja voidaan sarjoittaa ja tallentaa. Molemmat palvelevat samaa tarkoitusta: kontekstin seuraamista useiden vuorojen ajan.

Viestit ovat joko käyttäjien tai avustajan tuottamia yksittäisiä lisäyksiä ketjussa tai istunnossa. Viestit voivat sisältää pelkkää tekstiä, kuvia tai tiedostoja, ja Assistant-API-rajapinnoissa ne tallennetaan järjestettyinä luetteloina säikeen sisällä. C#-puolella ne yleensä noudetaan vahvasti tyypitettyinä kokoelmina, joissa voit tarkastella tekstiä, merkintöjä ja tiedostoviittauksia.

Suoritus, toteutus tai kutsu on agentin yksittäinen aktivointi tietyn säikeen tai istunnon päällä. Otat olemassa olevan kontekstin, lähetät sen mallille yhdessä työkalujen ja konfiguraation kanssa ja odotat, kunnes ajo saavuttaa terminaalitilan. Ajon aikana agentti voi luoda uusia viestejä, kutsua työkaluja ja päivittää säikeen tai istunnon tilan.

Suoritusvaiheet muodostavat yksityiskohtaisen jäljen kaikesta, mitä agentin suorituksen aikana tapahtui. Assistentti voi kutsua tiedostohakutyökalua, käynnistää kooditulkin tai kutsua mukautettua funktiota useita kertoja sen pohtiessa tehtävää. Näiden vaiheiden jäsennelty näkymä on uskomattoman hyödyllistä, jotta voidaan ymmärtää, miksi tietty vastaus tuotettiin, ja myöhemmin korjata tai tarkastaa toimintaa.

Minimalistisen C#-konsoliagentin luominen Azure OpenAI Assistants -työkaluilla

Nähdäksesi nämä konseptit käytännössä, voit käynnistää minimalistisen .NET-konsolisovelluksen, joka käyttää virallista OpenAI- tai Azure OpenAI SDK:ta avustajan rakentamiseen, joka lukee tietoja tiedostoista ja luo visualisointeja. Ajatuksena on yhdistää LLM sekä tiedostojen hakuun että koodin suorittamiseen ja antaa sen sitten vastata analytiikkakysymyksiin luonnollisella kielellä.

Ensimmäinen vaihe on projektin määrittäminen: luo uusi .NET-konsolisovellus ja lisää NuGet-paketit OpenAI:lle ja Azure.AI.OpenAI:lle. Sitten luot tärkeimmille asiakkaille instanssin Program.csjoko suoraan OpenAI:lle tai Azure OpenAI:lle tunnistetietojen, kuten DefaultAzureCredentialOpenAI-asiakasohjelmasta saat AssistantClient avustajien ja erillisen OpenAIFileClient tiedostojen latauksia varten.

Seuraavaksi valmistelet realistista dataa agentin työstettäväksi rakentamalla dokumentin muistiin, sarjoittamalla sen JSON-muotoon ja suoratoistamalla sen tiedostoasiakasohjelmaan. Esimerkissä tämä JSON koodaa useiden kuukausien tuotemyynnin kuvitteelliselle yritykselle ja yhdistää kuukaudet tuotekohtaisiin määriin. Lataamalla sen Assistants tiedoston käyttötarkoituksen, merkitset sen materiaaliksi, josta agentti voi hakea.

Kun tiedot ovat järjestelmässä, voit määrittää avustajan seuraavasti: AssistantCreationOptions ottaaksesi käyttöön sekä tiedostohaun että koodin tulkintatyökalun. Määrität nimen, selkeät ohjeet ("olet avustaja, joka etsii myyntitietoja ja tuottaa visualisointeja pyydettäessä") ja liität sitten työkalut: a FileSearchToolDefinition jotta avustaja voi tehdä kyselyitä tiedostoista sekä CodeInterpreterToolDefinition joten se voi kirjoittaa ja suorittaa koodia hiekkalaatikkoympäristössä analysointia tai kaavioiden luomista varten.

Jotta tiedostohaku todella käyttäisi lataamaasi myyntiasiakirjaa, liität sen uuteen vektoritallennustilaan ToolResources. Auttaja VectorStoreCreationHelper sitoo ladatun tiedoston ID:n vektorivarastoon, jota avustaja voi kysellä semanttisesti raakatekstin skannaamisen sijaan. Tämä on kevyt mutta tehokas tapa lisätä haun ja laajennetun luontitoiminnan.

Kun asetukset ovat käytössä, luot avustajan välittämällä kohdemallin (esimerkiksi gpt-4o) ja kokoonpanon, ja sitten käynnistät keskusteluketjun alkuperäisellä käyttäjän viestillä. Ensimmäinen kehote voisi olla esimerkiksi ”Miten tuote 113045 suoriutui helmikuussa? Piirrä sen trendi ajan kuluessa.” Lopuksi soitat CreateThreadAndRun, joka sekä luo säikeen että käynnistää juoksun.

Koska suoritukset ovat luonteeltaan asynkronisia, konsolisovellus yleensä kyselee suoritusta, kunnes tilaksi tulee terminaali. Sen jälkeen nostat säikeiden viestit nousevassa järjestyksessä ja käyt ne läpi: tulostat avustajan tekstin, tuotat merkinnät tiedostoviittauksiin tai luotuihin tiedostoihin ja lataat kuvatulokset tiedostoasiakasohjelmalla, jotta voit tallentaa kooditulkin tuottamat kaaviot levylle PNG-tiedostoina.

Lopputuloksena on itsenäinen C#-konsolisovellus, jossa yksi avustaja voi hakea jäsenneltyä myyntidataa, suorittaa laskelmia koodin avulla ja palauttaa sekä tekstimuotoisia havaintoja että visuaalisia kaavioita täysin automatisoidussa silmukassa. Tämä malli skaalautuu hyvin web-taustapalvelimiin tai taustapalveluihin, kun lisäät pysyvyyden ja todennuksen.

Vankan agenttiarkkitehtuurin suunnittelu C#:lla

Kun siirrytään demosta todelliseen sovellukseen, agenttien rakenne on yhtä tärkeä kuin valitsema malli. Hyvä arkkitehtuuri helpottaa ratkaisun testaamista, skaalaamista, suojaamista ja kehittämistä ilman, että syntyy ylläpidettävää kehotteiden ja takaisinkutsujen sekamelskaa.

Todistettu strategia on kohdella agentteja erikoistuneina komponentteina yhden "kaiken tekevän" aivon sijaan. Voit esimerkiksi määrittää yhden agentin, joka keskittyy tiedon hakemiseen ja varmentamiseen, toisen, joka on omistautunut sisällön kirjoittamiseen ja yhteenvetoon, ja kolmannen, jonka ainoa tehtävä on vuorovaikutus ulkoisten API-rajapintojen tai tietokantojen kanssa. Tämä erottelu mahdollistaa kohdennetut yksikkötestit, itsenäiset käyttöönotot sekä tarkemmat tietoturva- ja tunnusrajoitukset.

Tilasta ja muistista tulee nopeasti pullonkauloja, jos niitä käsitellään jälkikäteen huomioitavina asioina. Keskusteluhistoriat kasvavat ajan myötä, ja koko transkription sokkona lähettäminen mallille joka käännöksellä lisää sekä viivettä että kustannuksia. Käytännön strategioihin kuuluvat aiempien viestien säännöllinen yhteenveto, keskustelujen jakaminen erillisiin säikeisiin käyttäjää tai käyttötapausta kohden ja semanttiseen tärkeyteen perustuvien tiivistyskäytäntöjen käyttöönotto, jotta vain menneisyyden olennaisimmat osat säilytetään yksityiskohtaisesti.

Tuotantotilanteissa haluat myös pysyvän tallennustilan muistille, jotta keskustelut säilyvät prosessin uudelleenkäynnistyksissä, virheissä tai uudelleenkäyttöönotoissa. Agenttikehykset, kuten Microsoft Agent Framework, tekevät istunnoista sarjoitettavia JsonElement, jonka voit lähettää SQL Serveriin, Redisiin tai mihin tahansa NoSQL-säilöön. Sama ominaisuus mahdollistaa tarkastuslokit ja määräystenmukaisuuden, koska voit rekonstruoida tarkalleen agentin tilan päätöksentekohetkellä.

Työkalut ja funktiokutsut ovat paikkoja, joissa agentit lopettavat passiivisuuden ja alkavat tehdä hyödyllistä työtä. Natiivien C#-metodien paljastaminen työkaluina antaa mallille mahdollisuuden käynnistää toimintoja, kuten CRM-kyselyitä, analytiikan suorittamista datan yli tai työnkulkujen käynnistämistä. Jokainen työkalu tulisi merkitä selkeällä metadatalla (kuvaukset ja parametrien dokumentaatio), jotta LLM tietää, milloin sitä kutsutaan ja millä argumenteilla.

Koska väärin toimiva työkalu voi keskeyttää koko vuorovaikutuksen, tarvitset niiden ympärille vankkaa suunnittelua: syötteen validointia, aikakatkaisuja, poikkeusten käsittelyä ja suojakaiteita. Älä oleta, että malli läpäisee aina täydellisiä argumentteja; validoi parametrit ja desinfioi kaikki ulkoiset kutsut. Mieti myös kiintiöitä ja nopeusrajoituksia työkalukohtaisesti välttääksesi kohtuuttomat kustannukset tai tahattoman järjestelmän ylikuormituksen.

Kunnianhimoisissa skenaarioissa moniagenttiorkestrointi voi avata ominaisuuksia, joita on vaikea saavuttaa yhdellä monoliittisella agentilla. Voit kytkeä järjestelmään "tutkija"-agentin, joka kerää ja tarkistaa tietoa, "analyytikon", joka tulkitsee löydökset, ja "kirjoittajan", joka muuntaa ne raporteiksi. Molemmat kommunikoivat jäsenneltyjen viestien avulla ja jakavat työalustan (kuten jaetun dokumentin tai tietovaraston). Tämä malli lisää erikoistumista ja tekee päätöksentekopolusta jäljitettävän, kun tuloksia on myöhemmin tarkasteltava tai auditoitava.

Semanttisesta ytimestä ja AutoGenistä Microsoft Agent Frameworkiin

Microsoft on yhdistänyt .NET-agenttityökalujaan Semantic Kernelin ja AutoGen-projektin ideoita uudeksi, yhtenäiseksi Microsoft Agent Frameworkiksi (MAF). Tämän viitekehyksen tavoitteena on tarjota sinulle yritystason vakautta ja ominaisuuksia samalla yksinkertaistaen usean vuoron agenttien ja graafipohjaisten työnkulkujen rakentamista.

MAF on tällä hetkellä julkisessa esikatselussa ja saatavilla sekä .NET- että Python-kielille MIT-lisenssillä. Vaikka jotkin API-rajapinnat ovat vielä kehitysvaiheessa julkaisuehdokkaiden välillä, yleinen suunta on selvä: AIAgentit älykkään toiminnan edistämiseksi, AgentSessionit tilanhallintaan ja graafeihin ja suorittimiin perustuva työnkulkujärjestelmä deterministisempiä prosesseja varten.

Ytimessään viitekehys erottaa toisistaan ​​agentit ja työnkulut, joista kumpikin on tarkoitettu erilaisille ongelmamuodoille. Agentit ovat dynaamisia järjestelmiä, jotka käyttävät oikeustieteen matematiikan menetelmiä (LLM) syötteiden tulkitsemiseen, työkalujen valintaan ja vastausten luomiseen. Ne loistavat ennakoimattomilla aloilla, kuten teknisen tuen keskusteluissa, joissa käyttäjät saattavat kysyä mitä tahansa. Työnkulut puolestaan ​​ovat eksplisiittisiä vaihesarjoja, jotka on kytketty graafeiksi ja joita käytetään, kun halutaan deterministisiä, hyvin määriteltyjä prosessointimenetelmiä, kuten dataputkia tai hyväksyntäketjuja.

Virallinen ohjeistus voidaan tiivistää seuraavasti: "Jos voit toteuttaa tehtävän vakiofunktiona, et todennäköisesti tarvitse siihen agenttia." Toisin sanoen, varaa agentit alueille, joilla et todellakaan voi määrittää kaikkia vaiheita etukäteen, ja luota toistettavien, determinististen työnkulkujen työnkulkuihin tai klassiseen koodiin. Molempien yhdistäminen oikeissa paikoissa on avainasemassa ylläpidettävien järjestelmien rakentamisessa.

Kuvittele tämän konkreettiseksi toteuttamiseksi tukikeskustelubotti, joka on rakennettu ASP.NET Core 10 -rajapintana käyttäen Microsoft Agent Frameworkia. Agentti käyttää päättelymoottorinaan chat-asiakasohjelmaa (Azure OpenAI:n tai OpenAI:n tukemaa), ja sen päätarkoitus on vastata Markdown-tiedostoihin tallennettua sisäistä dokumentaatiota koskeviin kysymyksiin säilyttäen samalla kontekstin saman käyttäjän useiden viestien välillä.

Mielenkiintoista kyllä, esimerkissä voidaan tarkoituksella ohittaa RAG upotusten yhteydessä ja silti pysyä realistisena käyttämällä lähtökohtana avainsanahakua yksitasoisten tiedostojen yli. Tämä pitää keskittymisen siinä, miten MAF jäsentää agentin, työkalut ja istunnot sen sijaan, että se eksyisi vektoritietokannan konfigurointiin, mutta tukee silti erittäin uskottavia tukitoimintoja.

Microsoft Agent Frameworkin viisi keskeistä käsitettä

MAF:n viralliset tutoriaalit järjestävät oppimisen viiteen progressiiviseen ideaan, jotka vastaavat hyvin C#-kehittäjien jo olemassa olevaa ajattelutapaa palveluista ja tiloista. Näiden käsitteiden omaksuminen antaa sinulle vankan pohjan mille tahansa .NET:iin rakennettavalle agentille.

Ensin tulee alkuperäinen agenttisi: AIAgent rakennettu chat-asiakasohjelmasta, ohjeista ja nimestä. Ohjaat asiakaspalvelijan AzureOpenAIClientin tai OpenAI:n tarjoamaan chat-malliin, annat järjestelmätason ohjeita ("olet avulias tukiassistentti") ja soitat sitten. RunAsync käyttäjän syötteellä. Ratkaiseva yksityiskohta on, että agentti-instanssi on tilaton ja voi palvella useita itsenäisiä keskusteluja samanaikaisesti.

Toisena ovat työkalut, jotka ovat yksinkertaisesti C#-metodeja, jotka on koristeltu attribuutit ja muunnetaan kutsuttaviksi funktioiksi AIFunctionFactory.Create(). Kun agentti suoritetaan, LLM vastaanottaa näistä ominaisuuksista johdetun skeeman ja voi itsenäisesti päättää, milloin ja miten kutakin työkalua kutsutaan, argumentit mukaan lukien. Tässä vaiheessa omasta liiketoimintalogiikastasi ja ulkoisista integraatioista tulee osa agentin toimintotilaa.

Kolmas on monivuorokeskustelutuki, jonka MAF käsittelee AgentSession esineitä. Koska AIAgent itse ei muista mitään, jokainen käynnissä oleva keskustelu elää istunnon sisällä, joka on luotu CreateSessionAsync()Siirrät istunnon takaisin seuraavissa puheluissa, jolloin asiakaspalvelija voi seurata aiempia viestejä, käyttäjän asetuksia ja ratkaisemattomia ongelmia.

Neljänneksi on muisti ja pysyvyys, jotka mahdollistavat se, että istunnot voidaan sarjoittaa JsonElement. Tämä tekee niiden tallentamisesta muistiin, Redisiin, SQL-taulukkoon tai mihin tahansa muuhun haluamaasi tallennustilaan helppoa ja niiden rekonstruoinnista sitten DeserializeSessionAsync()Tukitilanteissa tämä tarkoittaa, että käyttäjä voi sulkea selaimensa ja jatkaa samaa keskustelua myöhemmin, tai toinen palveluinstanssi voi ottaa selaimen haltuunsa saumattomasti uudelleenkäynnistyksen jälkeen.

Viidenneksi ovat työnkulut, jotka on rakennettu WorkflowBuilder kun sinun on eksplisiittisesti järjestettävä useita agentteja tai peräkkäisiä käsittelyvaiheita. Määrittelet suoritusyksiköt prosessointiyksiköiksi, yhdistät ne reunojen kautta ja annat työnkulkumoottorin hoitaa reitityksen ja siirtymät. Monissa keskustelutapauksissa et tarvitse työnkulkuja ollenkaan, mutta niistä tulee erittäin hyödyllisiä, kun haluat jäsenneltyä reititystä, luokittelua tai ihmisen ohjaamia vaiheita agenttiesi ympärillä.

Toteutamme oikean tukibotin MAF:n, työkalujen ja istuntojen avulla

Konkreettinen esimerkki, joka havainnollistaa yllä olevia käsitteitä, on ASP.NET Core 10 -projektin tukema SupportBot-rajapinta. Tämä palvelu paljastaa HTTP-päätepisteen, joka hyväksyy käyttäjäviestit ja istuntotunnisteen, delegoi päättelyn AIAgentille ja säilyttää istunnon, jotta konteksti säilyy pyyntöjen välillä.

Keskeinen työkalu tässä skenaariossa on DocumentationTool, joka osaa hakea sisäisistä Markdown-tiedostoista. Sen vastuulla on paikantaa asiaankuuluvat oppaat, usein kysytyt kysymykset tai moduulikäsikirjat ja palauttaa tekstisegmenttejä, jotka auttavat agenttia laatimaan vastauksen. Sen metodeihin käytetyt attribuutit eivät ole koristeellisia; MAF käyttää niitä rakentaakseen funktiokaavion, jota LLM lukee, ja näiden kuvausten selkeys vaikuttaa vahvasti siihen, kuinka tehokkaasti malli valitsee ja kutsuu työkalua.

Käytännöllinen suunnitteluratkaisu tässä työkalussa on palauttaa kaikki dokumentit, jos mikään niistä ei vastaa pyydettyä aihetta riittävän hyvin. Sen sijaan, että jättäisit agentin kokonaan ilman materiaalia, annat mieluummin liikaa kontekstia ja annat mallin valita parhaat palat sen sijaan, että se hallusinoi tyhjiössä. Tämä "turvallisen varamallin" malli esiintyy usein vankoissa agenttien toteutuksissa.

SupportAgentFactory kytkee sitten kaiken yhteen ottamalla AzureOpenAIClient, poimimalla chat-asiakasohjelman kautta GetChatClient(), mukauttaen sitä AsIChatClient() ja sitten muuttaen sen AIAgent AsAIAgent(). Tässä viimeisessä vaiheessa rekisteröidyistä työkaluista ja ohjeista tulee osa jokaisessa keskustelussa käytettävää agentin kokoonpanoa. Yleensä tämä rakennettu agentti rekisteröidään yksittäisenä agenttina DI-konttiin, jotta se voi palvella useita istuntoja samanaikaisesti.

Istunnon hallinta on abstraktoitu taakse InMemorySessionStore kehityksen aikana, joka pitää istuntoja seuraavasti: JsonElement arvot. Lankaturvallinen ConcurrentDictionary riittää tässä manuaalisen lukituksen välttämiseksi. Todellisessa käyttöönotossa tämä toteutus vaihdettaisiin Redis- tai tietokantapohjaiseen tallennustilaan, jolloin käyttöliittymä pysyisi ennallaan, mutta saataisiin kestävää tallennustilaa ja horisontaalista skaalautuvuutta.

API-pinta Program.cs on tarkoituksella yksinkertainen: yksi POST /chat päätepiste, joka hyväksyy istuntotunnuksen ja käyttäjäviestin. Pyynnön käsittelijä lataa tai luo istunnon, suorittaa agentin ja sarjoittaa päivitetyn istunnon asynkronisesti (huomaa, että SerializeSessionAsync on asynkroninen RC1:ssä, vaikka varhaisissa dokumenteissa ehdotettiin toisin), säilyttää sen ja palauttaa avustajan vastauksen asiakkaalle. Frontendin näkökulmasta "samassa keskustelussa pysyminen" tarkoittaa yksinkertaisesti saman istuntotunnuksen lähettämistä jokaisella puhelulla.

Kun suoritat API:n ja keskustelet sen kanssa, voit seurata agentin kontekstin käsittelyä vuorojen välillä aivan kuten ihmistukiedustaja. Ensimmäinen viesti saattaa kuvata kirjautumisongelman; toinen kysymys, joka lähetetään samalla istuntotunnuksella, voi viitata "samaan virheeseen uudelleen" toistamatta kaikkia tietoja, ja agentti vastaa silti johdonmukaisesti, koska tila on sidottu istuntovarastoon.

Työnkulut alkaisivat ansaita puolensa vain, jos lisäisit ominaisuuksia, kuten automaattisen aikomusten luokittelun, reitityksen erikoistuneille edustajille (laskutus, käyttöoikeudet, raportointi) tai eskaloinnin ihmishenkilöstölle. Voit sitten ottaa käyttöön luokittelun suorittajan työnkulkugraafin alussa ja yhdistää sen aihekohtaisiin agentteihin tai lisätä ihmisen ohjaaman solmun, joka pysäyttää automaation ja antaa kontekstin henkilölle, kun luotettavuus on heikko.

Työnkulut, orkestrointitilat ja usean agentin yhteistyö

Myös MAF:n ulkopuolella on hyödyllistä miettiä, miten agentteja sisältävät työnkulut on organisoitu, koska niiden rakenne vaikuttaa latenssiin, kustannuksiin ja jäljitettävyyteen. Projekteissa ja viitekehyksissä on useita yleisiä malleja.

Peräkkäinen orkestrointi tarkoittaa, että agentit käsittelevät tehtäviä yksi toisensa jälkeen ja välittävät tulokset eteenpäin. Esimerkiksi hakuagentti kerää ensin asiaankuuluvan dokumentaation ja välittää sen sitten analyysiagentille, joka puolestaan ​​toimittaa havaintonsa raportointiagentille. Tämä on helppo perustella ja helppo korjata, mutta se aiheuttaa korkeamman päästä päähän -latenssin.

Samanaikainen orkestrointi ajaa useita agentteja rinnakkain, joista jokainen keskittyy ongelman eri osa-alueeseen. Yksi agentti voi laskea mittareita, toinen hakea viimeaikaisia ​​​​tapauksia ja kolmas arvioida vaatimustenmukaisuuden vaikutusta, kaikki samaan aikaan. Kun he ovat valmiita, koordinaattori kokoaa tuloksensa yhdeksi vastaukseksi. Tämä malli vähentää viivettä, mutta vaatii huolellista resurssienhallintaa ja konfliktien ratkaisua.

Siirtotyönkulut muuttavat tehtävän omistajuutta eksplisiittisesti yhdeltä agentilta toiselle ehtojen tai välitulosten perusteella. Jos tukiagentti havaitsee, että kysymys liittyy itse asiassa myyntiin, hän voi siirtää keskustelun erikoistuneelle myyntiedustajalle ja halutessaan säilyttää keskusteluhistorian ja metatiedot. Tämä on erityisen hyödyllistä monimutkaisissa asiakaspoluissa, joissa vastuu siirtyy oikeutetusti tiimien välillä.

Ryhmäkeskustelutyyppiset asetelmat antavat useiden agenttien tehdä yhteistyötä jaetussa keskustelukanavassa ja vaihtaa viestejä reaaliajassa. Jokainen agentti tuo oman näkökulmansa tai työkalupakkinsa, ja keskitetty orkestroija tai LLM-moderaattori voi hallita keskustelua niin, että se konvergoituu loputtoman silmukan sijaan. Tämä malli on tehokas, mutta vaatii vahvat kaiteet kohinan ja tarpeettomien kustannusten välttämiseksi.

Lopuksi, magneettinen orkestrointi asettaa yhden "johtajan" tai kapellimestarin vastaamaan muiden ohjaamisesta. Pääagentti purkaa tehtävän osiin, lähettää alitehtävät oikeille asiantuntijoille ja syntetisoi sitten niiden tuotokset. Tämä muistuttaa kehityspäällikköä, joka koordinoi kehittäjätiimiä, ja voi tuottaa selkeitä ja auditoitavia työnkulkuja monimutkaisilla aloilla.

Testaus, havainnoitavuus, kustannusten hallinta ja turvallisuus

Tekoälyagenttien lähettäminen tuotantoon ilman testaus-, valvonta-, kustannus- ja tietoturvasuunnitelmaa on resepti ikäville yllätyksille. Sama tarkkuus, jota sovellat mihin tahansa kriittiseen .NET-palveluun, on ulotettava myös agenttitasollesi, vain mukautettuna oikeustieteen maisteriohjelmien todennäköisyyspohjaiseen luonteeseen.

Aloita testaamalla työkaluja ja orkestrointipolkuja klassisilla yksikkö- ja integraatiotesteillä ennen kuin murehdit mallin toiminnasta. Jokaisen agentin kutsuman C#-funktion tulisi olla itsenäisesti testattavissa determinististen syötteiden ja tulosteiden avulla. Suunnittele sitten kontrolloidut keskusteluskriptit, jotka käyttävät kaikkia vuorovaikutuspolkuja varmistaen paitsi lopullisen vastauksen myös kutsutut työkalut ja tilan kehittymisen.

Havaittavuuden tulisi seurata latenssia, tokenin kulutusta ja onnistumisasteita eri suoritusreiteillä. On erittäin hyödyllistä mitata sekä kehote- että valmistumistunnisteita vuorovaikutuskohtaisesti jaoteltuna työnkulun, työkalun tai käyttäjätyypin mukaan, jotta voit havaita regressiot ja kustannuspiikit. Pidemmät keskustelut ovat erityisen kalliita, joten investoi automaattiseen yhteenvetoon ja älykkäisiin katkaisustrategioihin pitääksesi kontekstit karuina.

Turvallisuudesta ei voi tinkiä, kun agenttisi koskettavat arkaluonteisia tietoja tai asiakastietoja. Sinun tulisi valvoa tarkasti, mitä työkaluja ja tietojoukkoja agentti voi nähdä, kirjata jokainen työkalun kutsu auditointia varten ja suorittaa kaikki ulkoiset kutsut puhdistuskerrosten kautta. Tunnuksia ei tulisi koskaan upottaa koodiin; sen sijaan sinun tulisi luottaa hallittuihin identiteetteihin, salaisiin säilöihin ja tavanomaisiin pilvitietoturvakäytäntöihin, joita jo sovellat muihin kuin tekoälypohjaisiin mikropalveluihin.

Vaatimustenmukaisuusvaatimukset vaikuttavat myös siihen, miten keskusteluhistoriaa tallennetaan ja käsitellään. Koska istunnot ja säikeet voivat sisältää henkilötietoja tai luottamuksellista sisältöä, määritä säilytyskäytännöt, anonymisointistrategiat ja tiedon minimointisäännöt jo varhaisessa vaiheessa. Agentti-istuntojen sarjoittaminen ja sarjoittamisen poistaminen on tehokasta, mutta se on tasapainotettava lakisääteisten ja sääntelyyn liittyvien velvoitteiden kanssa.

Kustannuspuolella älä aliarvioi edes pienten tehottomuuksien vaikutusta skaalautuvasti. Pienet muutokset kehotteen koossa, työkalukutsujen tiheydessä tai samanaikaisten agenttien määrässä voivat johtaa suuriin kuukausittaisiin laskuihin. Järjestelmän instrumentointi, telemetrian ja kehotteiden säännöllinen tarkistaminen, muistikäytännöt ja mallivalinnat ovat olennaisia, jotta kustannukset pysyvät ajan mittaan kestävinä.

Käyttöönotto ja skaalaus on helpompaa, kun erotat ohjaustason (jossa määrität agentteja ja työnkulkuja) päättelytasosta (jossa varsinaiset mallikutsut suoritetaan). Konttipohjainen orkestrointi, pitkäkestoisten toimintojen viestijonot ja hallitut pilvipalvelut LLM-hostingiin edistävät kaikki resilienssiä. Tulokset voidaan sitten syöttää koontinäyttöihin tai BI-työkaluihin, kuten Power BI:hin, analytiikan palautesilmukan sulkemiseksi ja liiketoiminnan arvon osoittamiseksi.

Integroidut työkalut, kuten AI Toolkit ja Azure AI Foundry -laajennukset Visual Studio Codelle, voivat virtaviivaistaa suurta osaa tästä elinkaaresta. Editorin sisältä käsin voit tutustua malliluetteloihin, ottaa käyttöön GitHubissa isännöityjä tai paikallisia malleja Ollaman kautta, vertailla tuloksia rinnakkain, rakentaa ja suorittaa arvioijia, visualisoida tuloksia Data Wranglerissa, suunnitella agentteja järjestelmäkehotteilla, liittää MCP-palvelimia työkalujen integrointia ja debuggausagenttien vuorovaikutusta varten. Azure AI Foundry lisää visuaaliset suunnittelijat, YAML-synkronoinnin, koodin luonnin Azure-mallien käyttöä varten ja ensiluokkaisen työkalujen, kuten Bing Searchin ja kooditulkkien, integroinnin.

Kun nämä ainesosat – vankka agenttiarkkitehtuuri, harkittu tilanhallinta, vankat työkalut, graafipohjaiset työnkulut tarvittaessa, syvällinen havainnoitavuus ja pilvinatiivi käyttöönotto – yhdistetään, saadaan C#-tekoälyagentteja, jotka eivät ole vain älykkäitä demoja, vaan luotettavia osia suurempiin yritysjärjestelmiin. Huolellisella suunnittelulla ja Azure OpenAI Assistantsin ja Microsoft Agent Frameworkin oikealla käytöllä nämä agentit voivat mitattavasti parantaa tehokkuutta, tiedon laatua ja automaatiota koko organisaatiossasi pysyen samalla ylläpidettävinä ja turvallisina.

API
Aiheeseen liittyvä artikkeli:
API-evoluutio: Uusia rajoja integraatiossa, tietoturvassa ja agenttisessa tekoälyssä
Related viestiä: