Categorie: Blog artikelen
Auteur: John van Pelt

​Stap voor stap zelf eenvoudig een chatbot maken via SAP Conversational AI

Stap voor stap zelf eenvoudig een chatbot maken via SAP Conversational AI

Vorige week deelden we al een artikel over de opkomst van de chatbots en de voordelen die deze bots bieden voor bedrijven. Nu gaan we dieper in op SAP Conversational AI, een platform van SAP waarmee men relatief eenvoudig chatbots kan maken. Aan de hand van diverse scenario’s laten we stapsgewijs zien hoe je deze chatbots zelf kunt bouwen.

Resumé: wat is een chatbot

Een chatbot kan door middel van NLP (Natural Language Processing), machine learning en artificial intelligence intenties uit zinnen halen waar, mits goed getraind, weer acties aan gekoppeld kunnen worden. Deze bot kan vervolgens autonoom bepaalde conversaties afhandelen waardoor het niet meer nodig is om hier een menselijke tegencomponent tegenover te zetten. De medewerker kan zodoende de vrijgekomen tijd besteden om meer aandacht te geven aan de meer complexe scenario’s.

AI chatbots van SAP

SAP Conversational AI, voorheen recast.ai, biedt bedrijven de mogelijkheid om door middel van automatisering hun klantenservice te verbeteren. Om de werking van het platform te testen hebben we een case uitgewerkt.

We hebben de proef op de som genomen en een eenvoudige chatbot gemaakt die een klant zou kunnen ondersteunen bij een tarief storing op zijn/haar elektra meter.

Functioneel: hoe werkt de chatbot?

In deze case heb ik de volgende 4 scenario’s uitgewerkt waarbij de chatbot diverse handelingen dient te verrichten om de vragen van mensen over de tarief storing naar volledigheid te beantwoorden:

  • De vragenboom
  • Fallback
  • Semi auto detectie
  • Volledige auto detectie


De vragenboom

Dit is het scenario waarbij een chatbot wel herkent dat het om een tarief storing gaat maar alle benodigde entiteiten mist. Om de juiste data te achterhalen dient de bot vragen te stellen zodat er vervolgens automatisch een storing aangemaakt kan worden.

In bovenstaande video zien we een begroeting van de klant waaruit blijkt dat het om een tarief storing gaat. De bot kan niet herkennen of het hier om een dag- of nachttarief storing gaat, vandaar dat er gevraagd dient te worden om wat voor type storing het gaat. Zodra dit bekend is, vraagt de chatbot naar het adres waar de monteur naartoe gestuurd kan worden. Deze wordt gecontroleerd tegen een adressendatabase om vervolgens automatisch een storing aan te maken in een extern systeem van waaruit de monteur aangestuurd worden. Tenslotte reageert de chatbot beleefd op een bedankje van de klant.


Fallback

Een chatbot is zo slim als dat deze is getraind. Vandaar dat het slim is om altijd rekening te houden met het feit dat er vragen worden ingegeven die niet begrepen worden door de bot. In het kader van goede service is het goed om in deze situaties ook een passend antwoord te geven.

In dit filmpje zie we dus dat de bot niet begrijpt wat er van hem gevraagd wordt. In dit geval zijn er twee scenario’s mogelijk. Het is mogelijk om een default response te geven, waarbij wordt aangegeven dat de chatbot de vraag niet begrijpt. Daarnaast is het ook mogelijk om direct door te verbinden met de servicedesk om het gesprek met de klant verder op te pakken.


Semi auto detectie

In dit scenario kan de chatbot het type storing herleiden uit de zin echter zal deze nog steeds een adres nodig hebben om de monteur op pad te kunnen sturen. Vandaar dat de bot een vervolgvraag stelt om de juiste adresgegvens te achterhalen.


Volledige auto detectie

In dit scenario zien we de kracht terug van dit platform. Daar waar we in bovenstaande scenario’s slechts probeerden een enkele entiteit te destilleren uit een zin, zien we nu dat het platform alle aangegeven entiteiten herkent uit een verhaal getypt door de klant. Daarmee is de klant in één keer en automatisch naar tevredenheid geholpen.

Technisch: zelf een chatbot bouwen

De eerste indruk van de tooling van SAP Conversational AI is meer dan prima. De UI is intuïtief, de documentatie is goed op orde en er zijn een aantal goede blogs, zoals deze, die je op weg kunnen helpen. Ook is er een slack channel waar vragen gesteld kunnen worden, al lijkt daar niet heel veel leven meer in te zitten.

Zoals aangegeven in bovenstaande blog van SAP Conversational AI bestaat het maken van een bot uit 5 stappen:

  • (Train) Trainen van de bot
  • (Build) Bouwen van een conversatie flow
  • (Code) Aanroepen van externe APIs
  • (Connect) Aanbieden aan de buitenwereld
  • (Monitor) Monitoren

Dit zijn ook de 5 tabbladen die je tot je beschikking hebt in de workspace van je bot J


Trainen van de bot

Het trainen bestaat uit 2 facetten, intents en entities. Bij de intents definieer je de intenties die de bot uit een bepaalde zin/woord kan halen. Dit kan een begroeting of bedankje zijn maar bijvoorbeeld ook de aangegeven type storing. De entities zijn de entiteiten die je voor je conversatie flow nodig hebt. In bovenstaand voorbeeld zijn dat het probleemtype, postcode en huisnummer.

Op de intents gaan we een hele berg zinnen/woorden definiëren die dezelfde intentie hebben. Het is de bedoeling dat dit een gezonde mix wordt van zinnen zonder/met enkele entiteiten en zinnen waaruit alle entiteiten gehaald kunnen worden.

In bovenstaand voorbeeld over het probleemtype ziet dat er zo uit:

Op deze zinsdelen kun je de entity aangeven, hieronder zie je een voorbeeld met op de eerste zin geen entiteit maar wel de intentie van een tarief storing. De tweede en derde zin geven respectievelijk een dag en nachttarief storing aan welke onderdeel zijn van de entiteit probleemtype.

Om een type storing te kunnen communiceren naar een extern systeem verwacht deze een vaste waarde per type storing. Soms is het benodigd om een specificatie mee te geven, zoals dat het bijvoorbeeld om een dag / laag / dal tarief gaat. Zonder specificatie is het de vraag of het externe systeem begrijpt wat er bedoeld wordt. De tooling heeft hiervoor de zogenaamde ‘enrichments’ in het leven geroepen. Wanneer je naar de entiteit gaat zie je een lijst met synoniemen:

Vanuit de enrichment voeg je een nieuwe variabele toe en geef je deze vaste waarden, vervolgens kun je aan deze waarden de synoniemen koppelen:

Wanneer de AI nu een bepaald synoniem detecteert zal de entiteit probleemtype automatisch aangevuld worden met de variabele id en de waarde 0501 of 0502. Op deze manier wordt het duidelijk welk probleemtype er concreet bedoeld wordt.


Bouwen van een conversatie flow

Een conversatie flow is een uitgewerkte gesprekstroom waardoor de chatbot automatisch de juiste flow in een gesprek kan uitvoeren. Hier wordt er gewerkt met zogenaamde skills. In bovenstaand voorbeeld heb ik de volgende skills gedefinieerd.

Fallback is de skill die automatisch getriggerd wordt wanneer er geen enkele intentie herkend wordt door de bot. Hierin kun je dan vervolgens de gewenste vervolgacties definiëren.

De skill greeting en say-thanks werken op eenzelfde manier als de fallback echter is hier een intentie aan gekoppeld. Dit zie je terug op het tabblad triggers. Vervolgens zie je het bericht dat wordt teruggestuurd ook staan in het tabblad actions.

In de skills discover en address wordt het interessant. Hierin is de business logica verwerkt voor deze storingsbot. Wanneer we kijken naar de skill discover zien we op het tabblad requirements het volgende terug:

Hier zien we dat er wordt getoetst of de entiteit probleemtype er is, zo niet wordt de vraag uit het 1e scenario getoond.

De entiteit address is een entiteit die niet door de bot bepaald wordt maar teruggegeven wordt door een api call, hierover meer in aanroepen van een externe API. Deze entiteit is dus in eerste instantie nooit bekend en zal altijd de missing route aflopen. In deze route maak ik een redirect naar de address skill.

Deze skill gaat de postcode en huisnummer bepalen en maakt vervolgens een API call naar een externe adressendatabase.

Hierboven zie je wederom de overweging of de entiteiten zipcode en housenumber automatisch zijn bepaald, zo niet wordt er een vraag gesteld om deze alsnog in te geven. Daarna komen we wederom bij de entiteit address, die nog altijd leeg is, waar de API call gedaan wordt.

Nu deze 3 entiteiten gevuld zijn wordt er voldaan aan alle requirements van deze skill. Hierna worden de actions uitgevoerd.

In dit geval zie je dat er een melding wordt getoond en dat er weer een redirect terug naar de discover skill wordt gedaan. Daar zijn, na deze API call, ook alle requirements voldaan en zal de API call naar het planningssysteem gedaan worden en een reset van de chatbuffer.


Aanroepen van externe APIs

In dit voorbeeld zijn er 2 custom APIs die aangeroepen worden. De eerste is om op basis van postcode en huisnummer het adres op te zoeken en de tweede is om een storing aan te maken in het plan systeem.

De bot webhook base url kan onderhouden worden in de project settings van je chatbot. In bovenstaand voorbeeld heb ik een node.js server opgezet met 2 routes (https://nodejs.org).

In de payload van je request krijg je de context van de bot mee. Hier zie je een variabele entiteit terugkomen waar de elementen in zitten waar je mee kunt werken. Op basis van de postcode en het huisnummer wordt het volledige adres bepaald en in een string teruggegeven op de entiteit address.

Een belangrijk aandachtspunt bij het aanroepen van een externe API is het memory object. Deze wordt vanuit de response overschreven, als er data in zit die je in het vervolgproces nog nodig hebt zal je deze ook weer mee terug moeten geven.


Aanbieden aan de buitenwereld

Binnen dit platform is het super makkelijk om de chatbot te activeren. Wanneer je naar het tabblad connect gaat zie je alle mogelijke standaard tooling zoals telegram, facebook etc. Maar ook de mogelijkheid om via de SDK verbinding te maken met de chatbot. Wanneer je een optie aanklikt zie je de stappen die je achtereenvolgens moet uitvoeren om tot een werkende bot in dat betreffende medium te komen.


Monitoren

Op het tabblad monitor kun je zien wat er tegen de bot getypt wordt. Hierbij kun je ook analyseren of de juiste intent en entities bepaald worden. Zo nodig kun je deze ook toewijzen vanuit dit overzichtsscherm en bijsturen waar nodig.


SAP Conversational AI is eenvoudig te gebruiken

Het is relatief eenvoudig om via SAP Conversational AI een werkende chatbot te bouwen en om simpele taken automatisch af te laten handelen. Om de kwaliteit te blijven waarborgen zal er, zeker in de beginfase, veel tijd in monitoren en bijsturen gestoken moeten worden. Naar ons idee is dit AI platform een prettige oplossing om zelf een chatbot op te zetten en om daarmee de (online) customer service te automatiseren.

  • Klanten krijgen direct een goed antwoord en zijn sneller geholpen.
  • Door simpele vragen te automatiseren wordt tijd bespaart die aan andere taken besteed kan worden.

Heb je vragen over chatbots of ben je op zoek naar manieren om jouw customer service of andere bedrijfsprocessen te verbeteren? Oliver IT is gespecialiseerd in het ontwikkelen van slimme automatiseringsoplossingen waarmee werkprocessen worden geoptimaliseerd. Neem contact met ons op, we denken graag met je mee.


Lees hier deel 1: AI chatbot: een sterke database verhoogt het serviceniveau

Auteur: John van Pelt, Senior consultant

Specifiekere vragen?

Vul uw e-mailadres in en Oliver IT neemt zo spoedig mogelijk contact met u op!

Gelukt! We nemen spoedig contact met u op!
Karst Koopman Consultant
Karst Koopman