Suunnittele aiheet mini-agentteina, jotka välttävät päällekkäiset viestit

Muistio

Tässä artikkelissa kuvataan aiheiden piirteitä ja käyttäytymistä, joissa on keskustelun laukaisija vakiovaljaissa. Opi, miten pääset käsiksi standardeihin liittyviin ominaisuuksiin Accessin standardiagenteissa ja agenttivirroissa.

Tämä artikkeli keskittyy suunnittelun parhaisiin käytäntöihin, jotta vältetään päällekkäiset viestit. Kaksoisviestit syntyvät kontekstiaukoista, joten suunnittelu alkaa siitä, miten konteksti kulkee. Katso kaavio Context distributionissa standardivaljastuksessa ymmärtääksesi, miten orkestrointikerros jakaa kontekstin kunkin komponentin kanssa.

Tavallisessa järjestelmässä suunnittelija kutsuu aiheita samalla tavalla kuin työkaluja ja agentteja. Se lukee jokaisen aiheen kuvauksen päättääkseen, milloin aihetta käytetään, generoi aiheen syötteet sen aktiivisesta kontekstista ja käyttäjältä, ja lukee aiheen tulokset aiheen päätyttyä. Aihe, jolla on selkeä kuvaus, selkeästi määritellyt syötteet ja selkeästi määritellyt tulokset, käyttäytyy kuin mini-agentti suunnitelmassa: orkestrointikerros kerää aiheen tarpeet, aihe suorittaa logiikkansa, palauttaa tuottamansa ja orkestrointikerros muotoutuu ja välittää vastauksen käyttäjälle.

Käyttäjälle mini-agentti tuntuu keskustelevalta. Käyttäjä voi puhua luonnollisesti, kun aihe kerää tarvitsemansa tiedot, esittää jatkokysymyksiä ja saada asiakaspalvelijalta monipuolisia vastauksia.

Vinkki

Vakiovaljaidossa pidetään deterministinen logiikka aiheen sisällä ja käyttäjän viestintä jätetään orkestrointikerrokselle. Kerää aiheen tarvitsemat arvot syötteinä ennen kuin se käynnistyy, ja palauta tuotetut tulokset suorituksen jälkeen.

Nimeä ja kuvaile aihe, jotta orkestrointikerros voi ohjata siihen

Orkestrointikerros käyttää aiheen nimeä ja kuvausta reitittääkseen pyynnöt aiheeseen. Kirjoita molemmat orkestrointikerrokselle. Anna aiheelle selkeä ja tarkka nimi, joka kuvaa, mitä se tekee.

Kirjoita kuvaus kahteen osaan. Ensiksi selitä, milloin aihetta kannattaa käyttää. Toiseksi, selitä lyhyesti, mitä tehdä aiheen tulosten perusteella, mukaan lukien miten orkestrointikerroksen tulisi reitittää pyynnöt ja käsitellä tuloksia aiheen jälkeen. Älä kuvaile aiheen sisäisiä näyttöjä tai vaiheita.

Esimerkiksi käytä seuraavaa kuvausta aiheesta, joka vastaa tilin saldopyyntöihin ja raportoi takaisin tuloksella answered :

This topic handles account balance requests. 
If its answered output is true, the user has already received their response and it should not be answered again.

Kerää syötteet ennen kuin aihe etenee

Anna aiheelle syöte jokaisesta tarvittavasta arvosta. Orkestrointikerros voi kerätä nämä arvot aktiivisesta kontekstistaan ja käyttäjältä keskustelevalla tavalla ennen kuin aihe etenee. Syöte toimitetaan muuttujaan, jota aiheen logiikka sitten käyttää.

Käytä syötteen nimeä, kuvausta, entiteettiä ja validointiasetuksia, jotta orkestrointikerros voi täyttää syötteen tarkasti:

  • Syötteen nimi kertoo orkestrointikerrokselle, mitä kerätään, ja sitä käytetään kysymykseen, pitääkö orkestrointikerros kysyä käyttäjältä arvoa. Nimeä se arvon mukaan, älä mekanismin. Esimerkiksi nimeä syöte The user's request about... eikä OData filter, jotta orkestrointikerros ei pyydä käyttäjää kirjoittamaan kyselyä.

  • Syötteen kuvaus on kehotus orkestrointikerrokselle, ei käyttäjälle tarkoitettu tunniste. Käytä sitä kertomaan orkestrointikerrokselle, miten arvo tulkitaan, rajoitetaan tai muunnetaan ennen kuin aihe saa sen. Orkestrointikerros voi täyttää syötteen keskustelusta, aiemmasta tulosteesta tai käyttäjäprofiilitiedoista. Se voi valita arvojoukosta, soveltaa rajoitteita ja kirjoittaa kyselyitä skeematiedon perusteella.

    Syötekuvaukset voivat jopa ohjata orkestrointikerrosta rakentamaan arvon tietyssä muodossa. Esimerkiksi aihe, joka suodattaa listaa, voi ottaa syötteen, jonka kuvaus kertoo orkestrointikerrokselle, miten suodatin rakennetaan käyttäjän pyynnöstä, mukaan lukien saatavilla olevat kentät, kyselysyntaksin ja muutamia esimerkkejä.

  • Entiteetit asettavat sallitun tyypin ja -alueen syötteelle, joten vain kelvolliset arvot saavuttavat aiheen logiikan.

  • Edistynyt validointi ja ehdollinen logiikka, mukaan lukien Power Fx, toimivat deterministisinä tarkistuksina. He voivat estää syötteen täyttymisen tai estää aihetta toimimasta, kun ehtoa ei täytetä.

Deterministiset syötetarkistukset ovat yhtä luotettavia kuin koodi, joten liiketoimintasääntöjä ja vaatimustenmukaisuuden rajoituksia noudatetaan, vaikka muu suunnitelma olisi luotu.

Pidä logiikka ja kaiteet aiheessa

Pidä aiheen deterministinen työ aiheen sisällä: vaiheet, joita se suorittaa, laskelmat ja säännöt, joita se valvoo. Tekijä hallitsee ja soveltaa tärkeää liiketoimintalogiikkaa, joka toimii aina samalla tavalla, kuin työkalu.

Palauta tulokset ulostuloina, ei viesteinä käyttäjälle

Kun aihe on ohi, palauta tuotetut tulokset, jotta orkestrointikerros voi käyttää sitä ja päättää, miten vastata. Suosi tätä lähestymistapaa kuin sitä, että aihe viestii suoraan käyttäjälle. Aihe, joka kirjoittaa käyttäjälle samalla kun orkestrointikerros vastaa, on yleinen kaksoisviestien lähde – orkestrointikerros ei tiedä, että aihe on jo vastannut.

Important

Aihe, joka ei anna tulostusta, on varoitusmerkki. Jos aihe vastaa käyttäjälle, keräsi arvon tai näyttää kortin, mutta ei palauta mitään, orkestrointikerros ei näe mitä tapahtui ja saattaa vastata samaan pyyntöön uudelleen. Tämä käyttäytyminen on yleisin syy aiheiden päällekkäisille viesteille.

Seuraavat testatut tulokset ovat vahvasti suositeltavia luotettavina kaavoina kontekstin ja viestinnän kannalta. Ne pätevät, vastaako aihe suoraan käyttäjälle vai palauttaa kaikki tiedot orkestrointikerrokseen vastaamaan.

Tulos Description Käyttöohjeet
answered Totta, jos käyttäjä on jo saanut tyydyttävän vastauksen pyyntöönsä tässä aiheessa. Aseta se tosiarvoon aiheessa, kun se vastaa tai näyttää tuloksen. Katso seuraava esimerkki ylätason käskystä, joka varmistaa, että orkestrointikerros käsittelee kyseisen osan pyynnöstä vastauksena eikä toista sitä.
choiceReceived Totta, jos käyttäjä on jo tehnyt valintansa tässä aiheessa. Aseta se true-arvoon, kun käyttäjä tekee valinnan, kuten kortin painikkeen. Orkestrointikerros ei kysy kysymystä uudelleen.
balanceValue Arvo, jonka aihe on hakenut ja jo toimittanut käyttäjälle. Aseta se tärkeäksi dataksi, jonka aihe haki, ja nimeä kyseisen datan tulos. Orkestrointikerros käyttää sitä uudelleen kontekstista sen sijaan, että hakisi sen uudelleen.
messageSummary Lyhyt yhteenveto siitä, mitä käyttäjälle jo näytettiin, jotta se pysyy kontekstissa. Aseta se, kun viesti sisältää myöhemmin tarvittavaa tietoa. Orkestrointikerros pysyy tietoisena siitä, mitä käyttäjälle on kerrottu, eikä toista tai kumoa sitä.

Jo pelkästään ulostulot riittävät vanhemmille malleille. Uudemmissa malleissa tarvitaan myös ylimmän tason käsky, joka käskee orkestrointikerrosta tarkistamaan ulostulot ennen vastaamista.

Tämä esimerkki ylätason käskystä on testattu toimiva esimerkki. Muokkaa ja mukauta sitä tarpeen mukaan.

Aina kun jokin aihe tai agentti kutsutaan, etsi aina 'vastattu' boolean-tulos ennen kuin päätät, mitä vastata. Aiheilla ja agenteilla on oma viestintäkanavansa käyttäjän kanssa. Jos 'vastattu' on totta, oletetaan aina, että pyyntöön on vastattu asianmukaisesti vähintään yhdellä tulosmuuttujalla, ja tarkista mitkä niistä tuloskuvauksen perusteella. Älä esitä kömpelöä kuittausta vastattuun sisältöön. Anna vain vastaamattomia tuloksia ja jatka keskustelua luonnollisesti seuraavalla askeleella.

Termi kanava ei viittaa integraatiokanavaan. Se on kehotuslaite, joka kertoo orkestrointikerrokselle, että käyttäjä on saattanut jo nähdä vastauksen toisen komponentin kautta. Agentin mallista riippuen voi olla tehokkaampaa lisätä vastaava ohje agentin omiin ohjeisiin. Lue lisää artikkelista Suunnittele kattava ylätason ohje, jotta vältetään toistuvia viestejä.

Jos aiheen täytyy näyttää jotain, mitä orkestrointikerros ei pysty toistamaan, kuten adaptiivisen kortin, anna aiheen näyttää se ja palauttaa vastattu tilan tulos.

Vinkki

Lue lisää kaksoisviesteistä ja vastaustilan tulostuksista Suunnittelun parhaista käytännöistä, jotta vältetään päällekkäiset viestit. Opi, miten konteksti liikkuu orkestrointikerroksen ja aiheen välillä Context distributionissa standardivaljaissa.

Kerää vastauksia, kun aihe tarvitsee vielä käyttäjän palautetta

Joidenkin aiheiden täytyy esimerkiksi esittää kysymys tai näyttää kortti, jotta voi kerätä valinnan napeilla. Tämä suunnittelumalli on pätevä. Muista, että avoin kysymys tai kortti täytyy ratkaista, kun käyttäjä vaihtaa kurssia ennen vastaamista.

Ennen kysymyssolmun lisäämistä pohdi, voiko arvo kerätä syötteenä. Kun pidät kysymyssolmua, käsittele tilanne, jossa käyttäjä pyytää jotain muuta kysymyksen ollessa vielä auki. Lue lisää osiosta Avoin kysymys tai kortti palautuu toisen pyynnön käsittelyn jälkeen.

Esimerkki: Estä mukautuvan kortin valinnan uudelleenkysyminen

Aihe pyytää käyttäjää valitsemaan kategorian Adaptive Cardilla:

Mikä kategoria on ongelmasi?

[Laskutus] [Tekninen] [Tili]

Orkestrointikerros vastaanottaa kysymyksen tekstin keskusteluhistorian kautta, mutta ei sitä, että kortti olisi näytetty tai käyttäjä valitsi painikkeen. Kun käyttäjä on valinnut painikkeen, orkestrointikerros saattaa esittää saman kysymyksen uudelleen selvänä tekstinä.

Suunnittele aihe raportoimaan sen toimista tämän ongelman välttämiseksi:

Tulos Tyyppi Mihin se asetetaan
answered Tosi/epätosi Totta, kun aihe on jo näyttänyt vastauksen tai kehotteen käyttäjälle.
choiceReceived Tosi/epätosi Totta, kun käyttäjä on jo tehnyt valinnan.
selectedCategory Viesti Aina kun valinta vastaanotetaan, tämä tuloste sisältää käyttäjän valitseman kategorian.

Lisää aihekuvaukseen käsky, jotta orkestrointikerros tietää, mitä onnistunut suoritus tarkoittaa. Luota Return-tulosten ylimmän tason käskyihin, ei viesteihin käyttäjälle , jotta uudempi malli tarkistaa nämä tulokset ennen kuin kysyy uudelleen.

Parhaat käytännöt standardivaljaiden aiheisiin

  • Anna aiheelle selkeä, tarkka nimi ja kuvaus, jossa kerrotaan, milloin sitä kannattaa käyttää (ja halutessasi, mitä tehdä sen jälkeen).
  • Lisää syöte jokaiselle aiheen tarvitsemalle arvolle ja kirjoita syötteen kuvaus kehotteena orkestrointikerrokseen.
  • Nimisyötteet arvolle, jonka ne pitävät, koska nimi muodostaa kysymyksen siltä varalta, että orkestrointikerros joutuu kysymään käyttäjältä.
  • Pidä deterministinen logiikka ja suojakaiteet, kuten entiteetit, validointi ja Power Fx, aiheen sisällä.
  • Vältä viestittely käyttäjälle suoraan aiheen sisällä. Käytä viestisolmua, kysymyssolmua tai Adaptive Cardia vain tarvittaessa.
  • Palauta tulokset ulostuloina, mukaan lukien vastaustilan tulos.