E.D.D.I - 6 Years of Chatbot Development Experience in one Open Source Chatbot Platform
-
Upload
gregor-jarisch -
Category
Internet
-
view
256 -
download
4
Transcript of E.D.D.I - 6 Years of Chatbot Development Experience in one Open Source Chatbot Platform
-
E.D.D.I.Enhanced Dialog Driven Intelligence
Gregor Jarisch
-
What is E.D.D.I ? A Platform for creating, running and maintaining customized
Chatbots
Configuration ServerMaintaining Bot-ConfigsWeb UI for configuring Chatbots (Beta)Monitoring ConversationsAutomated Testing of Predefined Conversations (Integration-Tests)
Core ServerLaunching Chatbots based on Bot-Configs Algorithms, extendable by plugins
-
What is E.D.D.I ? (2) Focus on
Flexibility in connecting to other systems (plugins) Reusability of parts of Chatbots (dictionaries, dialog rules, ) (horizontal) Scalable
Technologies: High-Performance Java Web Application (Embedded Jetty) Dockerized RESTful Microservices NoSQL Database (MongoDB)
-
Workflow A Bot contains Knowledge-Packages
Knowledge-Packages contain Lifecycle-Tasks (pluggable)
Input Parser
Dialog Behavior
Output Generator
-
Workflow (2) Input Parser
Translates User Input into Semantic Meanings (Expressions)
Dialog Behavior Rules are clustered in Groups
Rules have Conditions What was the user input now/before
Did another rule succeed
How big is the search result from the external DB
Rules trigger actions
Output Simple Templating von Answer sentences
-
Example User:
Hallo
Input Parser: greeting(hallo)
Dialog Behavior: Did the user greet? -> greeting(*) action: Greet the user back greet_user
Output Generator Action greet_user Hi, how can I help you?
-
More Complex Example (flight check-in , choosing seat)
Input Parser
Externalsearch
Dialog Behavior
Output Generator
I dont care where I sit, as long as it is not at thecorridor!
seating(anywhere), not(seating(corridor))
seating(anywhere), not(seating(corridor))
Zb SQL: WHERE seating != corridor
If user input: seating(*)ANDSearch Result: > 0
We have reserved a seat for you, that is not at the corridor.
Action:Reserve_seating_in_DBconfirm_seating_choice
-
Reusability through Versioning All Bot-Configs (Dictionaries, Dialog Rules, Output, ) are
versioned
read-only
Each change makes another version (comparable to regular VCS)
Therefore less implementation effort with every new Bot e.g.: Greetings from the user will often the same and therefore can be
reused often
-
Plugins Lifecycle Task (e.g. Parser, Dialog Rules, Output)
Parser Dictionaries (e.g. Greetings, Integer, Time, )
Corrections (e.g. Keyboard Proximity, Phonetic Search, )
Dialog Rules Conditions (Match Input, Dependencies, ResultSize, )
Output Templating
-
Plugin Extension Points
Input Parser Dialog BehaviorOutput
Generator
Dictionaries Regular Integer Time
Corrections Phonetic Keyboard
Approximity
Conditions Input
Matcher Dependencies Result Size
Templating
}Lifecycle
-
Two possibilities to write plugins Java Plugin
Inherited from specific Interfaces
Web Hooks REST Call
e.g. to another web services in the same network
Allows the easy integration of other technologies
-
Default Setup
Configuration Server Core Server
Single-Sign-On (Redhat Keycloak)
-
Learnings (1) Better many Bots for many Use Cases
Rather than one Bot for all Use Cases
Why? The complexity increases exponentially Many Ambiguities New functions can silently break your Bot
Companies do have as well many employees with different skills Bots should be structured similarly Bots should know about each other and forward request to their
colleagues
-
Learnings (2) Up to 80 % of all conversation are small talk
User expect a human-like personality
Even if a Bot is functionally outstanding if it cannot small talk with the users, the Bot appears stupid
Small talk takes the most development effort (up to 90%) Customers expect a smart personality But Customers often pay for the functionality only (which is a shame)
If you keep the Chatbot Knowledge & Logic reusable, the effort decreases drastically with each new Bot you create!
-
Learnings (3) We are missing a Role in Chatbot Development (!)
Developers can create awesome code, but often lack patience to design proper conversation workflows
A Chatbot Team should therefore not only contain DEVs, but
Dialog Designers Profile:
Expertise in Communications Extended understanding about psychological Dynamics Ability to interview customers and experts effectively Sharp minded, technology affine and good at logical thinking
-
Learnings (4) The BEST This one is my most awesome finding
It took me 4 years to gasper this!!
This is so freaking simple, yet, havent seen it implemented anywhere
-
Let the Users
UNDOtheir actions!
-
I have been released on
github.com/labsai/EDDI(Beta)
Contributions & Feedback are Welcomed!
Lead Dev: Gregor Jarisch
E.D.D.I.Slide Number 2What is E.D.D.I ?What is E.D.D.I ? (2)WorkflowWorkflow (2)ExampleMore Complex Example (flight check-in , choosing seat)Reusability through VersioningPluginsPlugin Extension PointsTwo possibilities to write pluginsDefault SetupLearnings (1)Learnings (2)Learnings (3)Learnings (4) The BEST Slide Number 18Slide Number 19