Responding to feedback on our FB group, we wrote a small community update to reflect a bit on our journey and share how we’re thinking about the future.
Wit started as a private beta in September 2013. The idea was to provide a simple tool to make it easy for developers to add natural language to their apps and devices. Wit introduced the .ai domain as well as “intent and entities”-driven natural language interfaces.
In January 2015, we decided to join FB to advance the state of natural language interfaces in everyday life and help Messenger become a successful platform. Our focus quickly shifted to a new project: a virtual assistant called M. We had a small team (7 engineers) and M was ambitious enough that we felt the need to put Wit.ai in maintenance mode for a bit.
In March 2016, Messenger opened up its API to send and receive text messages programmatically. Developers would be able to create conversational bots to connect users and businesses. In order to support this huge announcement, we started working again on Wit and shipped a new feature called Stories.
Stories is a dialog layer on top of the existing natural language understanding layer allowing bots to carry out complex transactions using text. Our goal was to provide something very flexible (and not slot-based like other services) so that anybody would be free to build what they need. We could then identify and focus on where the demand lies.
We’ve grown rapidly and have spent months interacting with the community, helping them build complex flows and interactions, listening to their needs and improving Stories and the rest of the product.
In September 2016, Messenger added support for more visual interactions with Menus, web views, etc. This enables interesting use cases to mix natural language understanding and visual interfaces to deliver the best end-user experience.
The goal of Wit is to make bots successful as a new means of communication between people and their favorite services/businesses. In order to do this, we will focus on a few key areas for the next few months:
- 1) scale Wit to be reliable under any circumstances. To provide maximum robustness, we’ll build on top of proven Facebook technologies, like the ones powering facebook.com and our ads system.
- 2) improve our NLU algorithms to make bots smarter by building on top of Facebook’s AI and NLP platform: DeepText and FBLearner Flow.
- 3) integrate more effectively with the Messenger API and GUI, so that bots will be smart by default.
- 4) incorporate our learnings from Stories, witty-fiddle, etc. into new product features to make developers’ lives easier.
That’s it for now, please join us in our FB group to provide feedback. We’re looking forward to interacting more with the community and improving Wit!
After bringing him in to meet the team and sending him off with his new Oculus Rift and Oculus Touch last week, we caught up with Dhanush to find out a little more about him, his interest in bots, and what he learned from the contest. Here’s what we learned:
Tell us a little about yourself.
I’m currently a second-year computer science student at Diablo Valley College and planning to transfer to a 4-year university this fall. In my spare time, I make Android apps, Alexa skills, and bots – and I’m hoping to get into machine learning in the next year. I usually do 1 or 2 hackathons per month. Basically, I enjoy coding, and I spend a lot of time on it.
Where are you from?
I currently live in the East Bay. I was born in India, but I moved here when I was two.
How did you discover Wit?
I attended F8 in 2016 and that’s where Mark Zuckerberg announced the Messenger bots for the first time publicly on stage. It was really exciting to see this announced and, of course, they talked about Wit.ai. Although I didn’t know Laurent and the team at the time, I remember visiting their booth. And that’s why I used them for my bots when I decided to make them.
Was this your first bot?
This was my second bot. The first one I made was just a few days before. I built my first bot, Kuakey, to tell you the last earthquake that happened in a city or state using USGS API.
Tell us about what you built for WittyCup.
Calo is something to help people in their everyday lives. I wanted it to be useful. Basically, what it does is search through Eventbrite, Yelp and FB to give you events and food place recommendations. It goes through those APIs and brings back results based on user specifications. Even if the user doesn’t specify a search criteria, the bot will still find place to eat or events to attend.
What did you learn?
Obviously, I learned how to use the Wit platform. And after meeting the Wit team, I learned I was using 1 or 2 things incorrectly. I used search_query for when the user specifies search type (food or event) and local_search for cuisine, but from what Laurent said, those are for general use and if you want to get better results you should make your own entity type for cuisine. The default types pull data from all developer projects, so it wouldn’t be as perfect as if you had made your own custom time.
Any best practices you’d recommend for fellow builders?
Make the bot more naturally interactive instead of structured. I’m not an expert yet – though I hope to be. But I think from my experience so far, the one thing I would say is that you have to account for the different ways the user wants to search something in your bot. You may have a flow that you imagine the user going through, but the user might query in unexpected ways. Not making your bot too rigid allows users different ways to express the same things. They might say “Mexican cuisine” or just the word “Mexican” or a “I really want Mexican right now,” and this is definitely addressable with Inbox and Understanding tabs in Wit.
What’s your next bot?
It would probably be something along similar lines (specifically focused on food or events). In general, the type of bots I would create are utilitarian ones – stuff that people would find useful in their everyday lives.
What’s your favorite bot that you’ve used?
I’ve only used a few bots so far but probably one called Sensay. I read about it online and happened to meet the founders at TechCrunch Disrupt. I thought it was cool that you could talk to other random people online.
Big thanks to Dhanush for using Wit and spending time with our team.
After the launch of Bot Engine, we’ve been mainly focused on performance and scalability behind the scenes. Hence the lack of news ;-). Still, we’ve listened and learned a ton from your feedback. One thing that came back consistently was that setting up a server, connecting it to Wit on one hand, and to Messenger on the other, could get pretty confusing. So we launched a small tool, WittyFiddle, to help solve this problem.
WittyFiddle is a sandbox that emulates a bot server, right inside your browser. You can connect Wit, start writing your actions immediately and test your bot right away. Once you’re done, you can either download the code, or deploy it to Heroku, and start testing on Messenger. You can then share and clone these fiddles with other developers!
WittyFiddle is still extremely early stage and we would love to get your feedback.
Don’t know what to do for the holiday? Today we’re launching WittyCup, a two weeks contest to build the most awesome bot with WittyFiddle!
The winner will get:
- 1 Oculus Rift + Touch
- An opportunity to speak to the Wit.ai team through VC or in person if you are in the Bay Area
- A Wit.ai t-shirt
How to participate?
- Create your bot using WittyFiddle.
- Post your WittyFiddle URL as a comment to the pinned post in the Wit.ai Hackers Facebook Group with a small description of your bot in 140 characters. You can submit your WittyFiddle link until 11:59PM PST December 31st.
- We will select our 10 preferred bots based on the following criteria:
- User Value
- Ability to handle conversational flow
- The Wit.ai Hackers community on FB will then vote for the winner.
And the obligatory legalese below*.
We look forward to seeing what you will build!
* NO PURCHASE NECESSARY TO ENTER OR WIN. A PURCHASE WILL NOT INCREASE YOUR CHANCES OF WINNING. Individuals may develop a bot using WittyFiddle and submit the required info between 2:00:00 PM U.S. Pacific Time (“PT”) on December 16, 2016, and 11:59:59 PM PT on December 31, 2016. Open only to individuals who are at least 18 years old and the age of majority in their jurisdiction of residence, have a valid Facebook account and email address, and do not reside in an embargoed country or where this program is illegal. Access to the Internet, developer tools, and software are required. Void where prohibited by law. ALL PARTICIPATION AND APPLICATIONS ARE SUBJECT TO FULL OFFICIAL RULES, WHICH CONTAIN, AMONG OTHER THINGS, IMPORTANT SUBMISSION REQUIREMENTS, GRANT OF RIGHTS, AND LIMITATIONS OF SPONSOR’S LIABILITY. Judges will determine the winning applicants as fully described in the Official Rules, based on following criteria/weights: User value (30%); UX (30%); ability to handle conversational flow (30%); and results of public voting (10%). ARV of prize package: USD$850. Prize details will be determined by Sponsor in its sole discretion. Limit 1 application per person for the entire program. Sponsor: Facebook, Inc., 1 Hacker Way, Menlo Park, CA 94025.
Today we are releasing Bot Engine v1, with significant improvements over the early beta we announced two months ago. Since launch, we have received an immense amount of feedback, and once again we are very grateful to the developer community. You have been testing and using Bot Engine knowing it was a Beta and far from being perfect. A lot of you reached out to us and provided us with great feedback.
The most important things we learned are:
- It took too many stories to cover the basic scenarios of your bot.
- It was not straightforward to implement some basic common flows such as slot filling.
- It was hard to predict the pace of learning of the bot, and painful when a conversation that just followed the scenario of a story precisely failed.
- Developers need to version-control, archive and share their bots.
We tried to address this with the following changes:
- We added branches, bookmarks and jumps in stories: now stories are full-fledged graphs instead of mere linear sequences. This enables you to describe the basic scenarios of your bots with a smaller number (often, one) of stories.
- We strengthened the initial overfitting: when a user follows the scenario of a story, the bot will 100% stick to the story.
- We removed the
merge action to simplify stories. You can still include a merge action if you’d like, but this pattern is not forced anymore.
- We added examples of implementation of standard flows, such as slot-based or flow-based.
- We added an import/export feature so that you can version-control, archive and share your bots. We believe this will also empower devlopers to build their stories and share best practices directly in JSON.
- We introduced Quick Replies in the bot’s answer and renamed “Bot says” into “Bot sends” in preparation for richer messages.
You can discover the new Bot Engine through the fully updated Quickstart and Recipes.
This new version is backward-compatible, so the bots you’ve already built will continue to work as before.
We are still actively working on several features, as well as overall quality. We recently noticed that some built-in entities (like
wit/location) were not as accurate as before. This is due to a huge influx of new developers (45,000 now!) who bring some “noise” to the training dataset of these entities. Keeping a high-bar of quality is important to us, and we won’t rest until Wit performs at its best. We use Wit internally at Facebook for several projects, so we need these improvements as much as you do.
We feel this release is a major milestone for Bot Engine. We’ve been incredibly inspired by the experiences that you are trying to enable and we hope these features will be major enablers to your efforts. A lot has been written about what Bots can and cannot (yet) do, and we feel privileged to help you explore the next frontier.
Thank you again for your patience and your contagious enthusiasm!
Following our last Bot Engine update, we have been executing on our short-term roadmap and have released the following features.
Condensed View of Stories
Your stories are now collapsed by default. When you click on one of your stories, it will expand and you can edit it. This allows you to quickly scan through your Stories.
Filter Expressions by Entity Value
You can train your bot to better detect entities via the Understanding tab. When looking into one of your app entities, you can now filter by entity values to only see the expressions associated to a given value.
We added the support for both Safari and Firefox.
Thanks again for your continuous feedback and trust, please continue to reach out and follow the progress on our public roadmap.