Istuntopohjaiset keskustelut takaisinsoittojen ja historian kanssa ja chatbotin rakentaminen ilman taustajärjestelmää
Perinteinen chatbot-sovelluksen arkkitehtuuri koostuu kolmesta tasosta: käyttöliittymästä, jonka kanssa käyttäjä on vuorovaikutuksessa, taustajärjestelmästä, joka hallinnoi keskustelun tilaa ja liiketoimintalogiikkaa, ja tekoälypalvelusta, joka luo vastauksia. Kaikkien kolmen tason rakentaminen on huomattava insinöörityö. Käyttöliittymä tarvitsee chat-liittymän viestien renderöinnin, syötteiden käsittelyn ja reaaliaikaiset päivitykset. Taustajärjestelmä tarvitsee istuntojen hallinnan, viestien tallentamisen, keskustelun ketjutuksen, nopeuden rajoittamisen ja todentamisen. Tekoälyn integraatio tarvitsee kehotteen rakentamisen, kontekstin hallinnon ja vastauksen jäsentämisen. Yhdessä nämä komponentit edustavat viikkojen tai kuukausien kehitystyötä tiimille, joka saattoi aloittaa projektin odottaen jotain yksinkertaisempaa.
ChatBot-ohjelmointirajapinta poistaa keskimmäisen tason kokonaan. Ohjelmointirajapinta hallinnoi istuntojen hallintaa, keskustelun tilaa, viestien historiaa ja tekoälyn vastauksen luomista isännöitynä palveluna. Kehittäjä rakentaa vain käyttöliittymän, chat-liittymän, joka lähettää viestejä ohjelmointirajapintaan ja näyttää vastauksia. Ei ole mitään taustajärjestelmää rakennettavaksi, ei tietokantaa hallittavaksi, ei istuntoinfrastruktuuria ylläpidettäväksi. Ohjelmointirajapinta on taustajärjestelmä, ja se hallinnoi kaikkea käyttäjän viestin ja chatbot-vastauksen välillä ilman, että kehittäjältä vaaditaan palvelinkoodi.
Tätä arkkitehtuuria kutsutaan joskus "API-first" tai "backend-as-a-service", ja se ei ole periaatteeltaan uusi. Maksujen API:t eliminoivat maksujen taustajärjestelmien rakentamisen tarpeen. Todentamisen API:t eliminoivat todentamisen taustajärjestelmien rakentamisen tarpeen. ChatBot API soveltaa samaa periaatetta keskustelevaan tekoälyyn: monimutkainen, tilaa ylläpitävä, infrastruktuuri-raskasja taustajärjestelmä toimitetaan palveluna, ja kehittäjä keskittyy yksinomaan käyttäjäkokemukseen. Tuloksena on, että kehittäjä, joka voi rakentaa verkkosivun, voi rakentaa chatbotin, koska verkkosivun rakentaminen on ainoa vaadittu taito.
Istunnot ja kuinka keskustelut ylläpitävät kontekstia viestien välillä
Chatbot, joka ei voi muistaa, mitä sanottiin kolme viestiä sitten, ei käy keskustelua. Se vastaa eristettyihin kysymyksiin, mikä on pohjimmiltaan erilainen ja paljon vähemmän hyödyllinen vuorovaikutusmalli. Ero Q&A-botin ja keskustelevan agentin välillä on konteksti: kyky viitata aiempiin viesteihin, rakentaa vakiintuneiden tietojen pohjalle ja ylläpitää yhtenäistä säiettä useiden vaihtojen yli. Tämä konteksti on se, mikä tekee keskusteluista luonnollisia ja mahdollistaa monimutkaiset monivaiheisen vuorovaikutukset, kuten vianetsintätyökulut, ohjatut konfiguraatiot ja asteittainen tietojen kerääminen.
ChatBot-ohjelmointirajapinnan istuntojärjestelmä tarjoaa tämän kontekstin automaattisesti. Kun keskustelu alkaa, ohjelmointirajapinta luo istunnon, joka tunnistetaan ainutlaatuisella istuntojen tunnisteella. Jokainen seuraava viesti, joka lähetetään tällä istunnoolla tunnisteella, käsitellään osana samaa keskustelua. Ohjelmointirajapinta säilyttää koko keskustelun historian istunnon sisällä, ja jokainen uusi vastaus luodaan tietoisuudella kaikesta, mitä sanottiin aiemmin. Käyttäjä voi kysyä kysymyksen, saada vastauksen, kysyä seurantakysymyksen, joka viittaa edelliseen vastaukseen, ja saada johdonmukaisen vastauksen, joka perustuu vakiintuneeseen kontekstiin ilman toistoa tai sekaannusta.
Istuntojen hallinta kehittäjän puolella vaatii istunnoiden tunnisteen tallentamisen ja välittämisen jokaisen ohjelmointirajapinnan kutsun yhteydessä. Tunnus vastaanotetaan, kun keskustelu alkaa, ja sisällytetään jokaiseen seuraavaan viestiin. Tämä on ainoa tilan pala, jonka käyttöliittymän tulee hallita. Keskustelun historia, konteksti-ikkuna, kehotteen rakentaminen ja kaikki muut tilaa ylläpitävät toiminnot tapahtuvat ohjelmointirajapinnan puolella. Käyttöliittymän vastuu rajoittuu tietoon siitä, mihin istuntoon se kuuluu, mikä on yksittäinen merkkijonon arvo, joka on tallennettu muistiin tai selaimen istuntovarastoon.
Istuntojen kestävyys varmistaa, että keskustelut selviytyvät sivun päivityksistä, välilehtien vaihdosta ja jopa laitteen vaihdosta. Niin kauan kuin istunnoiden tunnus säilytetään ja välitetään seuraavan viestin yhteydessä, keskustelu jatkuu juuri siitä, mihin se jäi. Käyttäjä, joka aloittaa tukevan keskustelun pöytäkoneen päällä, sulkee selaimen ja avaa sivun tunteja myöhemmin, voi jatkaa keskustelua saumattomasti, koska istunto ja sen täydellinen historia säilyvät ohjelmointirajapinnan puolella. Tämä pysyvyys käsitellään kokonaan ohjelmointirajapinnan istunto-infrastruktuurilla eikä vaadi tietokantaa tai varastoa kehittäjän puolella.
Takaisinsoitot ja vastausten vastaanottaminen ilman kyselyä
Chatbot-vastaukset vievät aikaa luodakseen. Tekoäly täytyy käsitellä keskustelun konteksti, noutaa relevanttia tietoa, rakentaa kehotteen, luoda vastaus ja muotoilla lähtö. Kysymyksen monimutkaisuudesta ja tietokannan koosta riippuen tämä voi kestää yhdestä useisiin sekunteihin. Tänä aikana käyttöliittymän täytyy tietää, milloin vastaus on valmis, jotta se voi näyttää sen käyttäjälle.
Yksinkertaisin lähestymistapa on synkroninen pyyntö-vastaus: käyttöliittymä lähettää viestin ja odottaa vastauksen tulevaan samassa HTTP-pyynnössä. Tämä toimii, mutta luo käyttäjäkokemuksen, jossa käyttöliittymä jäätyy luomisen aikana, ilman edistymisen osoitusta eikä mahdollisuutta peruuttaa tai ohjata uudelleen. Nopeille vastauksille tämä on hyväksyttävää. Vastausten kohdalla, jotka kestävät useita sekunteja, jäätynyt käyttöliittymä tuntuu käyttäjälle rikkinäiseltä.
Takaisinsoitto-URL:t tarjoavat asynkronisen vaihtoehdon, joka tuottaa paljon paremman käyttäjäkokemuksen. Kun viesti lähetetään ohjelmointirajapintaan, kehittäjä sisältää takaisinsoitto-URL:n, jonka ohjelmointirajapinta kutsuu, kun vastaus on valmis. Käyttöliittymän pyyntö palautetaan välittömästi vahvistuksella, jonka avulla käyttöliittymä voi näyttää "kirjoitusta" -ilmaisimen tai muuta edistymispalautetta, kun vastaus luodaan taustalla. Kun vastaus on valmis, ohjelmointirajapinta lähettää sen takaisinsoitto-URL:ään, joka laukaisee käyttöliittymän näyttämään valmiin viestin. Käyttäjä näkee luonnollisen keskustelun rytmin: hänen viestinsä näkyy, lyhyt kirjoitus-ilmaisin toistuu, ja vastaus saapuu, kaikki ilman näkyvää odottamista tai käyttöliittymän jäätymistä.
Kehittäjille, jotka rakentavat puhtaasti asiakaspuolen sovelluksia (single-page-sovellukset, staattiset sivustot tai selainpohjaiset työkalut), takaisinsoitto-URL:t voidaan yhdistää palvelinlähettäviin tapahtumiin tai WebSocket-yhteyksiin vastauksien suoratoistamiseksi suoraan selaimeen. Ohjelmointirajapinta lähettää valmiin vastauksen takaisinsoitto-päätepisteeseen, joka työntää sen sitten yhdistetylle selainistunnolle. Tämä malli vaatii minimaalisen palvelinpuolen komponentin (vain takaisinsoitto-vastaanotin ja push-mekanismi), mutta pitää kaikki keskustelun logiikan ja tilan hallinnon ohjelmointirajapinnan puolella. Kehittäjän palvelin käsittelee reititystä, ei ajattelua.
Takaisinsoitto-mekanismi tukee myös virtaavia vastauksia, joissa tekoälyn lähtö toimitetaan asteittain sen luomisen yhteydessä kokonaisuuden sijaan kerralla, kun se on valmis. Virtaus tuottaa karakteristisen "reaaliaikaiset kirjoitus" -vaikutelman, jonka käyttäjät ovat odottaneet chat-käyttöliittymistä. Jokainen tunnus tai lause saapuu sen luomisen yhteydessä, mikä luo luonnollisen virtausta, joka tuntuu siltä, että chatbot ajattelee ja vastaa reaaliajassa koko viestin sijaan katoamisen jälkeen useissa sekunneissa ja sitten koko vastauksen heittäminen. Tämä virtaus-käyttäytyminen on erityisen tärkeää pidemmille vastauksille, joissa kokonaisluomisaika voi olla viisi tai useampia sekunteja.
Keskustelun historia ja ominaisuuksien rakentaminen tallennetuille viesteille
Jokainen viesti jokaisessa istunnossa tallennetaan ja on käytettävissä ohjelmointirajapinnan historia-päätepisteistä. Tämä tallennettu historia palvelee useita tarkoituksia, jotka ylittävät keskustelun kontekstin mahdollistamisen istunnon sisällä. Se tarjoaa raakamateriaalin analytiikalle, laadun valvonnalle, koulutustietojen keräämiselle ja käyttäjä-kokemus-ominaisuuksille, jotka lisäävät arvoa chatbot-käyttöönottoon.
Analyysi, joka perustuu keskustelun historiaan, paljastaa malleja käyttäjän käyttäytymisessä ja chatbotin suorituksessa. Mitkä kysymykset esitetään useimmin? Mitkä vastaukset johtavat seurantakysymyksiin (mikä osoittaa, että alkuperäinen vastaus oli riittämätön)? Mitkä keskustelut päättyvät positiiviseen ratkaisuun ja mitkä päättyvät käyttäjän hylkäämiseen istunnon? Nämä mallit, näkyvät satoja tai tuhansia keskusteluja pitkin, opastavat tietokannan ja käyttötapauksien määritelmän jatkuvaa parantamista. Ilman keskustelun historiaa tämä parantamisprosessi perustuu anekdoottiseen palautteeseen järjestelmällisen analyysin sijaan.
Laadun seuranta käyttää keskustelun historiaa tunnistamaan tietyt vuorovaikutukset, joissa chatbotin suorituskyky oli alle odotuksien. Tarkastaja voi lukea merkittyjen keskustelujen läpi, tunnistaa tietyn tietovälin tai käyttötapauksien epäsuhdan, joka aiheutti ongelman, ja tehdä kohdennettuja parannuksia, jotka estävät saman vikaantumisen tulevissa keskusteluissa. Tämä kohdistettu tarkentaminen on paljon tehokkaampi kuin yleinen tietokantalaajennuksien laajeneminen, koska se käsittelee erityisiä, osoitettuja heikkouksia hypoteettisten sijaan.
Käyttäjä-kohtaiset ominaisuudet, jotka perustuvat keskustelun historiaan, parantavat itse chat-kokemusta. "Viimeaikaiset keskustelut" -näkymän avulla käyttäjät voivat palata aiempiin istuntoihin ja tarkistaa saamansa tiedot. Keskustelun historian yli tapahtuvan hakutoiminnon avulla käyttäjät voivat löytää tietyt tiedot kysymättä samaa kysymystä uudelleen. Vientitoiminnon avulla käyttäjät voivat tallentaa tärkeät keskustelut vertailutiedostoiksi. Jokainen näistä ominaisuuksista on rakennettu kokonaan ohjelmointirajapinnan toimittamista historiatiedoista, eikä se vaadi lisävarastoa tai tiedon hallintaa kehittäjän puolella.
Täydellinen käyttöliittymä ja miten taustajärjestelmätön chat-liittymä näyttää
ChatBot-ohjelmointirajapintaan rakennettu täydellinen chatbot-käyttöliittymä koostuu viestien näyttöalueesta, tekstisyötöstä, lähetetyöpainikkeesta ja JavaScriptistä (tai vastaavasta asiakaspuolen koodista), joka yhdistää nämä käyttöliittymäelementit ohjelmointirajapinnan päätepisteisiin. Viestien näyttöalue hahmontaa keskustelun historian vaihtuvina käyttäjä- ja bottiviesteeinä. Tekstisyöttö sieppaa käyttäjän viestin. Läheta-painike laukaisee ohjelmointirajapintakutsun, joka lähettää viestin ja aloittaa vastauksen luomisen. Kun vastaus saapuu (joko synkronisesti tai takaisinsoittoksen kautta), se lisätään viestien näyttöalueeseen, ja käyttöliittymä on valmis seuraavaan vaihtoon.
Tämän käyttöliittymän tyylit, asettelu ja vuorovaikutuksen suunnittelu ovat täysin kehittäjän hallinnassa. Ohjelmointirajapinta ei aseta rajoituksia chat-liittymän visuaaliselle esitykselle. Se voi olla koko sivun chatsovellus, sivupaneeli, kelluva widget, modaali dialogi tai mikä tahansa muu käyttöliittymäkuvio, joka sopii sovelluksen suunnitteluun. Ohjelmointirajapinta tarjoaa keskustelun moottorin; kehittäjä tarjoaa kasvot. Tämä erottelu tarkoittaa, että chatbotin ulkonäkö on rajoitettu vain kehittäjän suunnittelutaidoilla, ei valmiiksi rakennetun widget-kehyksen rajoituksilla.
Kehittäjille, jotka eivät halua rakentaa mukautettua käyttöliittymää, ohjelmointirajapinnan istunto- ja viestiformaatit ovat yhteensopivat avoimen lähdekoodin chat-käyttöliittymä-komponenttien kanssa, jotka voidaan mukauttaa minimaalisesti. React, Vue ja vanilla JavaScript chat-komponentit ovat saatavilla julkisissa varastoissa, ja niiden yhdistäminen ChatBot-ohjelmointirajapintaan vaatii niiden oletusarvoisen viestikäsittelyn korvaamisen ohjelmointirajapintakutsuilla. Todentaminen käyttää liitännäisen salaisuutta, viestit käyttävät istuntojen tunnisteita, ja näyttö käyttää mitä tahansa hahmontamislogiikkaa, jonka valittu komponentti tarjoaa. Mukauttaminen kestää tyypillisesti alle tunnin kehittäjälle, joka on perehtynyt komponenttikehykseen.
Taustajärjestelmän puuttuminen tässä arkkitehtuurissa on sen merkitsevin käytännöllinen etu. Ei ole mitään palvelinta valmistaa, ei tietokantaa hallittavaksi, ei istuntovarastoa ylläpidettäväksi, ei skaalausta-infrastruktuuria määritettäväksi. Ohjelmointirajapinta käsittelee kaikki palvelinpuolen huolenaiheet, ja käyttöliittymä toimii kokonaan käyttäjän selaimessa. Tämä tarkoittaa, että chatbotti voidaan ottaa käyttöön staattisella hostingalustalla, GitHub Pages -sivustolla, Netlify-käyttöönottolla tai missä tahansa muussa hosting-ympäristössä, joka palvelee HTML:ää ja JavaScriptiä. Toiminnan kustannukset ovat nolla, mikä tekee chatbotista kestävän jopa hankkeissa, joilla ei ole erillistä infrastruktuuria budjetoita tai operaatiotiimi.
Usein kysytyt kysymykset
Kuinka kauan istunnot pysyvät voimassa ennen kuin ne vanhenevat
Istunnot pysyvät aktiivisina määritettävän ajan, jonka oletusarvo on kaksikymmentäneljä tuntia passiivisuutta. Istunto, joka vastaanottaa viestin tämän ikkunan sisällä, saa vanhenemisen ajastimen nollattua, joten aktiiviset keskustelut pysyvät määrittämättömästi. Vanhentunut istunnot ja niiden historia pysyvät käytettävissä historian API:n kautta, mutta ne eivät voi enää vastaanottaa uusia viestejä.
Voiko keskustelun historia poistaa yksityisyyden noudattamiseksi
Kyllä. Keskustelun historia voidaan poistaa API:n kautta istunto- tai käyttäjäkohtaisesti. Tämä tukee yksityisyyden suojalakien, kuten GDPR:n, noudattamista, joka antaa käyttäjille oikeuden pyytää heidän tietojensa poistamista. Poistaminen on pysyvä ja poistaa kaikki viesteistä ja metatiedoista, jotka liittyvät määritettyihin istuntoihin.
Mitä tapahtuu, jos takaisinsoitto-URL ei ole saavutettavissa vastauksen ollessa valmis
Ohjelmointirajapinta yrittää takaisinsoiton toimittamisen uudelleen eksponentiaalisella takaisinvedolla määritettävän määrän yrityksiä varten. Jos kaikki uudelleenyritykset epäonnistuvat, vastaus on silti saatavilla keskustelun historian päätepisteen kautta, jolloin käyttöliittymä voi kysyä kadonneet vastaukset varasuunnitelmana. Tämä uudelleenyritysmekanismi varmistaa, että lyhytaikaiset verkko-ongelmat eivät aiheuta vastausten katoamista.
Onko viestien nopeus-raja per istunto
Nopeus-rajoja sovelletaan tilintasolla istuntotason sijaan, mikä estää väärinkäytön samalla kun sallitaan lailliset korkea-asetuinen käyttö. Oletusarvoinen nopeus-raja on riittävä normaaleille keskustelun vuorovaikutuksille. Tilit, jotka odottavat poikkeuksellisen suurta viestien määrää, voivat pyytää rajan muutoksia API:n hallintaliittymän kautta.
Voiko käyttöliittymä havaita, kun chatbot ei tiedä vastausta
Ohjelmointirajapinnan vastaus sisältää metatietoa, joka osoittaa vastauksen luottamustasoa ja ovatko asiaankuuluvat tiedot löytyneet tietovarastosta. Käyttöliittymä voi käyttää näitä metatietoja ilmiasun mukauttamiseen, kuten vastuuvapaus näytettävä, kun luottamus on matala, tai käyttäjälle ehdotetaan ottaa yhteyttä ihmisen tukeen, kun tietovarasto ei sisällä kysymyksen asiaankuuluvia tietoja.
Tukeeko ohjelmointirajapinta rikkaita viestiformaatteja, kuten kuvia tai painikkeita
Ohjelmointirajapinta tukee strukturoituja vastausmuotoja, jotka sisältävät tekstin, ehdotetut seurantakysymykset ja toimintolinkkit. Käyttöliittymä tulkitsee nämä strukturoidut elementit ja hahmontaa ne omien suunnittelukonventioiden mukaan. Tämä mahdollistaa rikkaita vuorovaikutteisia kokemuksia, kuten napsautettavia ehdotuksia, inline-linkkejä ja muotoiltua sisältöä ilman, että ohjelmointirajapinta tarvitsee ymmärtää käyttöliittymän erityisiä hahmontusominaisuuksia.