Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
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!