Een technische deep dive in de wereld van chatbots

In het eerste deel van de blog “Verhoog uw productiviteit door inzet van chatbots” is een introductie gegeven omtrent chatbots. Hoe kunnen chatbots worden ingezet om de productiviteit en klanttevredenheid te vergroten en welke mogelijkheden biedt SAP Conversational AI hiervoor. Er zijn een aantal concrete voorbeelden gegeven inclusief een demo van een chatbot die de gebruiker antwoorden geeft over de status van bestellingen en facturen binnen het P2P-proces . In deze blog wordt dieper ingegaan op de technische aspecten van een chatbot en SAP Conversational AI (SAP CAI). 

Componenten in SAP CAI

Een chatbot in SAP Conversational AI bestaat uit een aantal componenten, welke sterk met elkaar samenhangen. Globaal kan een chatbot onderverdeeld worden in de volgende componenten:

  • Intent – een set expressies die hetzelfde bedoelen:

    • Bijvoorbeeld het intent “Verlofaanvraag” kan bestaan uit: “Ik wil verlof”, “Ik wil vakantiedagen opnemen”, “Ik wil vrij nemen volgende week”, etc…

  • Entititeit – sleutelwoorden welke uit zinnen zijn gedestilleerd:

    • Datum, tijd

    • Periode

    • Reden voor verlof

    • Default “gold” entititeiten beschikbaar binnen SAP CAI

  • Skill – logica van de chatbot:

    • Bijv. “Vraag periode van verlof” of “Vraag reden voor verlof

    • Een skill bestaat uit trigger(s), voorwaarde(n) en actie(s).

  • Trigger – start een skill

    • Bijv. intent “Verlofaanvraag” is opgetreden

  • Voorwaarde – voordat overgegaan wordt tot de actie van een skill

    • Bijv. entiteiten “Periode” en “Reden” moeten aanwezig zijn

  • Actie – uitkomst van een skill

    • Aanroepen van een andere skill

    • Aanroepen externe webservice

    • Versturen bericht naar de gebruiker

    • Updaten van het geheugen conversatie (memory)

Intents

Een intent is dus een verzameling expressies die een gebruiker kan stellen, welke allemaal verwijzen naar hetzelfde basis onderwerp.

Het intent “Help” zou dus als volgt weergegeven kunnen worden:

Intent

Entiteiten

Gold entiteit Locatie

Standaard zijn er binnen SAP Conversational AI een aantal zogenaamde “gold” entiteiten beschikbaar gesteld, welke standaard verrijkt worden met extra data. De gold entiteit “Locatie” wordt standaard verrijkt met bijvoorbeeld lengte- en breedtegraad, eventueel postcode gegevens, etc. Wanneer iemand “Amsterdam” benoemt in een gesprek met de chatbot, dan wordt de entiteit “Locatie” als volgt verwerkt.

Custom entiteit

De standaard “gold” entiteiten zullen doorgaans niet afdoende zijn voor het specifieke doel van de chatbot. Het is daarom mogelijk om eigen custom entiteiten aan te maken. Wanneer een chatbot bijvoorbeeld om moet gaan met het herkennen van factuurnummers, dan wordt dit als volgt opgenomen in het geheugen van de chatbot.

Custom entiteiten kunnen opgesteld worden als free of restricted entiteit. Met een free entiteit wordt machine learning ingezet om uit expressies entiteiten te herkennen. Voor deze entiteiten is niet een afgebakende lijst beschikbaar en wil je dus dat de chatbot de entiteit automatisch gaat herkennen. Hiervoor dient de chatbot getraind en gemonitord te worden, totdat de chatbot de entiteit automatisch herkent.

Wanneer een restricted entiteit wordt opgezet, dan is er een specifieke lijst beschikbaar waarbinnen de woorden uit de expressie moeten vallen. Er is hierbij niet sprake van automatische detectie op basis van machine learning. Een woord zal niet als entiteit worden herkend, indien het niet expliciet voorkomt in een voor gedefinieerde lijst.

Voor zowel free- als restricted entiteiten is het mogelijk om een bepaalde drempelwaarde van herkenning op te nemen. Zo worden eventuele typefouten van een gebruiker alsnog aan de juiste entiteit gekoppeld. In de zin “Het sneeuwt in dsecember” wordt dsecember alsnog gekoppeld aan de restricted entiteit “Maand”, welke bestaat uit een lijst met twaalf waardes (januari, februari,….december).

Fuzzy search

Samenhang componenten

In de Bot Builder wordt de chatbot vorm gegeven. Hierin wordt de chatbot getraind, ontwikkeld en gemonitord. In onderstaand schema is weergegeven hoe een conversatie met een chatbot, ontwikkeld in SAP Conversational AI, verloopt.

Samenhang componenten CAI Platform

  1. De input van de gebruiker wordt ontvangen. Dit kan middels de Bot Connector, wanneer deze bijvoorbeeld gebruikt is om de chatbot te ontsluiten via Skype. Het kan ook een custom applicatie zijn, welke de input van de gebruiker direct doorstuurt naar de Bot Builder.
    “Hoe is het weer vandaag in Amsterdam?”

  2. Wanneer de Bot Builder input ontvangt, dan wordt deze verstuurd naar de Natural Language Processing (NLP) API van het SAP CAI platform. De NLP zorgt ervoor dat gestructureerde informatie uit het bericht wordt gedestilleerd en geeft deze terug aan de Bot Builder.
    Intent: “Weer”
    Entiteit location is “Amsterdam”
    Entiteit datum is “Vandaag”

  3. De gestructureerde informatie wordt in de Bot Builder door de conversatie flow gehaald en middels zogenaamde skills, condities en acties wordt er een bericht terug gestuurd naar de gebruiker.
    Skill “getweather” wordt getriggerd door aanwezigheid intent “Weer”
    Vereiste
    condities “plaats” en “datum” zijn herkend
    Actie webservice weeronline.nl wordt aangeroepen met “Amsterdam” en “vandaag”
    Actie bericht wordt teruggestuurd naar gebruiker met antwoord van weeronline.nl

Avelon P2P Chatbot

Zoals vermeld in het eerste deel van deze blog, heeft Avelon een chatbot ontwikkeld binnen het P2P proces welke vragen kan beantwoorden omtrent:

  • Header en regel informatie van een inkooporder

  • Inkooporders van een specifieke leverancier

  • Goedkeuring status van een inkooporder

  • Facturen ontvangen op een inkooporder

  • Betaalstatus van een specifieke factuur

De chatbot kan hiermee een groot aantal vragen beantwoorden welke normaliter bij medewerkers van de inkoopafdeling of crediteurenadministratie terecht zouden komen. Denk hierbij aan vragen als:

  • Ik heb een aantal dagen geleden 5 laptops aangevraagd, wat is de status van deze bestelling?

  • Hoeveel is er gefactureerd op bestelling 4500091234?

  • Bij wie ligt deze inkooporder ter goedkeuring?

  • Wat is de status van deze factuur?

Deze chatbot is geïntegreerd in de SAP Fiori Launchpad. In onderstaande printscreen een impressie van deze chatbot:

Avelon P2P Chatbot

Technische implementatie Avelon P2P chatbot

Webhook als actie in skill

Voor de Avelon P2P chatbot zijn binnen het SAP Conversational AI platform, diverse entiteiten, intents en skills ontwikkeld om zo goed mogelijk antwoord te kunnen geven op mogelijke vragen omtrent het P2P proces. Er is bijvoorbeeld een intent ontwikkeld om te herkennen dat iemand vraagt naar de status van een bestelling. Daarnaast zijn er entiteiten ontwikkeld om bijvoorbeeld een leverancier, factuurnummer of inkoopordernummer te herkennen.

Op basis van de herkende entiteiten en intents, worden de relevante skills aangeroepen. Er is bijvoorbeeld een skill aanwezig die de goedkeuringsstatus uit het SAP backend systeem ophaalt wanneer hierom gevraagd wordt. Het ophalen en teruggeven van informatie uit het SAP backend systeem is een van de mogelijke acties in de ontwikkelde skill.

Het ophalen van gegevens uit SAP is gerealiseerd middels zogenaamde webhooks. Hiermee kunnen externe webservices aangeroepen worden, waarin de context van de conversatie als JSON meegegeven wordt naar SAP. In de JSON staat bijvoorbeeld het inkoopordernummer wat de gebruiker heeft genoemd, wat gebruikt kan worden om informatie omtrent de inkooporder uit SAP te halen. In SAP zijn voor verschillende webhook calls zogenaamde SAP ABAP REST services ontwikkeld. Deze REST services destilleren de informatie uit de meegegeven JSON en geven een antwoord in JSON formaat terug richting het SAP Conversational AI platform.

Het antwoord van de webhook aanroep dient in voor gedefinieerd JSON formaat terug gegeven te worden aan het Conversational AI platform. Het antwoord van de webhook is meteen het bericht wat getoond wordt aan de gebruiker. Er kan ook niet afgeweken worden van het formaat dat het SAP Conversational AI platform verwacht van het antwoord van een webhook aanroep. Een voorbeeld van een dergelijk antwoord is als volgt (zie figuur “JSON antwoord webhook”).

Bovenstaand antwoord vertaalt zich als volgt in de chatbot (zie figuur “Antwoord webhook in chatbot”).

JSON antwoord webhook

Antwoord webhook in chatbot

Naast de Webhooks optie is het sinds kort ook mogelijk om externe API’s aan te roepen middels de Consume API Service. Dit heeft als grote voordeel dat externe webservices direct aangeroepen kunnen worden vanuit het Conversational AI platform, zonder dat hiervoor een aparte applicatie ontwikkeld hoeft te worden. De webservice van bijvoorbeeld Google Maps heeft namelijk niet de JSON response die het SAP Conversational AI platform verwacht. Met de Consume API Service optie is dit ook niet nodig en kan het antwoord van de externe webservice verwerkt worden in stappen na de aanroep van de webservice.

Middels deze externe API aanroep, kunnen we naast informatie over inkooporders ook nog iets zeggen over het weer in Amsterdam.

Aanroep middels Consume API Service

Weer Consume API Service

Voor vragen of informatie over de toepassingsmogelijkheden van chatbots binnen uw organisatie of voor vragen op het gebied van SAP Workflow, Fiori, SAP Invoice Management (SIM) of SAP Master Data Governance (MDG) kunt u contact opnemen met Victor van den Hazelkamp.

Gerelateerde posts