Generang Chat Bots from Web API...

Post on 27-Aug-2020

1 views 0 download

transcript

1

SwaggerBot

Genera.ngChatBotsfromWebAPISpecifica.ons

MandanaVaziri,LouisMandel,AviShinnar,

JeromeSimeon,Mar.nHirzel

IBMT.J.WatsonResearchCenter

Onward’17

2

ProblemStatement•  Chatbotsarebecomingubiquitous–  Providecustomercarebyphoneoronline–  Industries:banking,healthcare,telecom,retail,…–  Theycanqueryresourcesandtakeac.onsviaWebAPIs

•  Chatbotsaredifficulttomaintainandmodify–  Requiretradi.onalsoTwareandmachinelearningskills•  NaturalLanguageUnderstanding(NLU)

–  Rapidlychangingbusinessneedsrequiresmodifica.ons

•  Objec.ve–  Generatechatbotsautoma.cally–  FocusonIBMWatsonConversa.onService–  GeneratechatbotsfromWebAPIspecifica.ons

Hello!

3

FromWebAPIstoChatBots•  GeneratechatbotsfromwebAPIs–  StartfromaSwaggerspecifica.on–  Generateachatbotthatcan:•  HelptheusernavigateanAPI•  Makecallsconversa.onally

–  Examples:Human:Pleasetranslatethetext`lavie`totargetlanguage`en`Bot:`Life`

Human:WhatistheweatherinNYC?Bot:`windy`

42!

4

I come from… … Swagger???

Swagger

•  StandardforspecifyingWebAPIs–  BasedonJSON–  Specifiesendpoints,opera.ons,parameters–  Hasdescrip.onsandsummaries

•  EcosystemoftoolsgeneratedfromSwagger–  APIdocumenta.on–  UIinterface,tryme–  ClientSoTwareDevelopmentKits(SDKs)–  Serverstubs–  Automatedtests->Swaggerbotaddschatbotstothisecosystem

5

Challenges

•  Swaggerisinsufficient–  Missingdocumenta.on–  Inaccurate–  Missinglogicalrela.onships–  Needmul.pleAPIcallstomakeonecall–  Needtopassoutputofonecalltoanother–  APImayneedspecializa.onforanend-user’sneeds

•  Example:Transla.onfromFrenchtoEnglish,notjustanylanguage

•  Needtuningtogenerateausefulbot–  Howcanweallowthespecifica.ontobetunedbyabotdesigner?

Help!

6

Your words just changed my code!

Approach

•  Generatedbotallowsliveprogramming–  Indialogtuning:botdesignercantunebotbyconversa.on–  Analogy:Spreadsheetinterface•  End-userinteractswiththetable•  Advancedusercancreatescriptsandmakethenavailable

–  Botdesignercancreatehigher-levelac.ons•  Inaconversa.onalmanner•  Makethemavailabletoend-userinthesameinterface

7

Example:WatsonLanguageTranslator

8

9

It’s a red ball!

10

11

Features•  APIExplora.onandcalling–  Abilitytowalkuserthroughparameters–  Swaggerextensiontospecifyrela.onbetweenparameters•  Example:

–  translateneedsoneof{model_id}or{source,target}

–  Swaggerextensionforcallchaining•  Example:

–  Obtainingsourcelanguagewhenmissingduringtranslate

–  Swaggerextensionfordatashaping•  UsingJsonpathtospecifyhowtheoutputofacallshouldbeshaped

12

Features

•  Directcalls–  Allparametersgivenconversa.onallyinafewlines–  UseWCSframestohelpfilloutmissingparameters

•  Parameterscanbeprovidedinanyorder–  Backgroundcontextkeptfromonecalltothenext–  Abilitytosetfieldsindependentlyofcalls

•  Tuningmode–  Abilitytonameac.onsandaddsynonyms–  Swaggerupdated

13

WatsonConversa.onService(WCS)

14

WCSWorkspace

•  Intentsanden..es–  Intentscaptureverbsorac.ons–  En..escapturenounsorobjects–  TheirpresencedetectedbyNLU

•  Dialog–  Finitestatemachinedefiningthelogicandflowofchat–  Eachstateisacondi.onal

• Whenanintentoren.tyisdetected,thenstatecanbeupdated

You cannot reduce me to an FSM!

15

WCSWorkspaceUI

16

SwaggerBotPrototype•  CompileSwaggertoaworkspaceandapp

–  Endpointsbecomeintents–  Opera.onsandparametersbecomeen..es–  Namesusedforclassifiertrainingdata–  Descrip.onsandsummariesusedforhelpdialog

•  Supportfortuningandliveprogramming–  Ac.oncrea.on

•  Newintentsaddedtounderlyingworkspace–  SynonymsaddedtoenrichNLUclassifier–  Workspaceuploadedwithoutstoppingthechatbot

•  Casestudies–  OnavarietyofAPIs–  Automa.callydownloadedandcompiled~1070APIsfromAPIGuru.

17

FutureWork

•  Conversa.onaldatashaping–  PassingJsondatabetweencalls– Manipula.ngJsonviaconversa.on

•  Serverlessimplementa.on–  BasedonIBMFunc.ons–  Func.onsac.onsforpre/postprocessingsteps–  Noneedforaserverfortheapp

This talk is almost over!

18

Conclusion•  Swaggerbotisaconversa.onalprogramminglanguage–  Easiertousethancurl–  Fuzzysyntax,butrequiresprecisionforpassingparameters

•  Whattools/conceptsfromPLSEcanbereusedhere?

Thank you!