6 ms·
This is amazing news, and I'm really excited for the innovation this is going to bring to the bot space. As an alternative to this closed approach, I've been b
by hellcow 11y ago
This is amazing news, and I'm really excited for the innovation this is going to bring to the bot space.
As an alternative to this closed approach, I've been building an MIT-licensed bot framework using Golang, enabling anyone to build advanced AI bots. The API we've built seems to be a lot more robust than what Microsoft showed today. https://github.com/itsabot/abot https://github.com/itsabot/abot
It's still very early (too early for a ShowHN), but there's tons of documentation and guides if you wanted to get your hands dirty before we do a proper release.
- bliti 11y agoMay I ask why Go? Merely curious.
- hellcow 11y agoA few key reasons, off the top of my head as to why we chose Go: 1. It's fast and resource efficient. 2. It's easy to cross-compile and deploy with a single binary and no external VM dependencies. 3. It offers static typing and compile-time checks, which massively reduce development time for me. 4. As Abot is a framework with downloadable plugins, Go's tooling handles most of the heavy lifting for us, like downloading and updating dependencies. Go's automated testing, linting, and formatting are really nice as well, and it's great to have those built into the language itself so there's standardization across an ecosystem of plugins. While not one of the core reasons, I really like the Go community and the language (generics be damned). This is a personal, spare-time project, so my preference of working in the Go language definitely did factor in.
- bliti 11y agoGood reasons indeed! I work with Go, too. Will check put progress on the project and try to help out. :)
- hydromet 11y ago> This is a personal, spare-time project ... I very much admire and appreciate the work you've done bootstrapping Abot in your spare time. Now that Microsoft is in the game, my concern is we will see a "tower of babel" type of situation develop for bots emanating from the corporate behemoths (i.e., here come the Facebook bots, Google bots, Amazon of course, and Apple might play catch up too at WWDC). I much prefer grass roots growing from open source projects like Abot so as to no be locked in (financially, legally, cognitively) to one platform run by a large corporation seeking world domination. Forensics specialist Jonathan Zdziarski wrote an interesting post recently titled "Free Software Always Costs Something" it is a good read -> http://www.zdziarski.com/blog/?p=5948 http://www.zdziarski.com/blog/?p=5948 Perhaps Abot would benefit from having its own Foundation similar to the likes of, say, the Apache Software Foundation https://www.apache.org/ https://www.apache.org/ ... "The Apache Software Foundation provides support for the Apache Community of open-source software projects, which provide software products for the public good." As Satya Nadella commented in this recent Bloomberg interview http://www.bloomberg.com/features/2016-microsoft-future-ai-chatbots/ http://www.bloomberg.com/features/2016-microsoft-future-ai-c... how app stores and Facebook remind him of the walled gardens of 25 years ago (e.g., AOL and CompuServe), its what he didn't say (intentionally omitted?) in this interview which strikes me as more interesting. The rise of chat bots and Nadella's views about them remind me somewhat of the vision General Magic had precisely 25 years ago with their forward thinking ideas about personal digital agents and Telescript https://en.wikipedia.org/wiki/General_Magic https://en.wikipedia.org/wiki/General_Magic ... if Nadella has indeed channeled some of the old ideas of 25 years ago and chat bots are to become the next big thing (Nadella thinks chat bots could be as big or bigger than the Internet itself, and the next logical step after app stores), and if indeed its time to break down walled gardens, then it would probably be very important for an implementation of chat bots to be a part of the global commons and available to all of humanity. Abot to the rescue?
- hellcow 11y agoThank you for the interesting comment. I share Satya's belief that these bots may very well become one of the most important technological innovations in our lives. I'm very open to building a Foundation around this. My goal for Abot is to make it self-sustainable (paying salaries for key people to enable full-time development) and owned by everyone. I admire the Apache Software Foundation for all the work they've done and can see a similar path forward with Abot. But recall that 24 hours ago it was really just me working on this. Give me another day or two :)
- illumin8 11y agoWhy the downvotes? The bots Microsoft demonstrated today are tied to the Skype client, which is a closed ecosystem. I'd much rather develop bots that are not locked into a closed ecosystem, and can function across any chat provider that supports XMPP.
- manojlds 11y agoThe BotBuilder is an Open source framework (https://github.com/Microsoft/BotBuilder https://github.com/Microsoft/BotBuilder) to connect to Skype, Slack, Text, Office, Twitter and more.
- illumin8 11y agoThanks for that additional information - I didn't realize this was meant to be more open. Slack support is welcome.
- aalbertson 11y ago"Slack support is welcome" Correct me if I'm wrong, but isn't slack a closed ecosystem, akin to Skype?
- cloudhead 11y agoI think he means open as in supporting more than one platform.
- NetStrikeForce 11y agoI actually think he means "open" as in "not Microsoft" :)
- dave2000 11y ago"Why the downvotes?" Dunno, but I winced at "in the bot space". I hate anything that smells of marketing/management speak. Going forward/we reached out... just use normal language like a normal person.
- manojlds 11y agoThe SDK is on Github - https://github.com/Microsoft/BotBuilder https://github.com/Microsoft/BotBuilder
- hellcow 11y agoWhile the SDK is open source (in the sense that you can read the source code), Microsoft isn't actively accepting significant contributions according to their Contributing.md, which is somewhat disappointing. Any bots you build on Microsoft's framework as far as I can tell are also locked into a closed Microsoft-controlled system. Just because it's readable on Github and pushes messages to Slack doesn't really mean that it's open-source in the way we've come to expect from Linux, etc. I'm building a free-as-in-speech alternative.
- TY 11y agoIt's licensed under MIT license.
- wyldfire 11y agoWhich "it"? The SDK? Until/unless a community fork could gather critical mass it might not be worthwhile. That said, yes, it's certainly possible to do.
- hydromet 11y agoPerception is important as always: being perceived as "open source" is now vogue and seems to be more of a marketing function for large corporate behemoths (most mere mortals have no idea what a "pull request" is but the term "open source" seems to have become more mainstream in recent years).
- sremani 11y agoIn their defense, if 100 or so Open Source projects where they (MSFT) accept PR does not convince you, I do not know what will. In this particular project, it could, that core group wants a level quality or functionality or other benchmarks before opening up for PR. It was done before, source was Open Source and incrementally when the core team felt comfortable started accepting Pull requests.
- codelitt 11y agoThis is really interesting hellcow. You've done an impressive amount of work on this. I just wanted to ask about the intelligence built into the bot. I dug through the code a bit (great documentation btw) and it seems that this is using a state machine you've written and custom plugins for different scenarios. How would one account for situations were a case keyword in a plugin is used in a different context? Say for example, I ask "What street number did you say?" to the bot with this plugin^1. It seems that these are items that would trip it up? Also these bots would not "learn" or get better over time without direct human input correct? I hope these don't sound like critiques. They're not. Just generally curious about how all of this is put together - particularly the state machine and then also how the plugins can be built (and improved). [1]: https://github.com/itsabot/plugin_restaurants/blob/master/restaurants.go#L167 https://github.com/itsabot/plugin_restaurants/blob/master/re...
- hellcow 11y agoGreat points. The restaurants plugin you cited is using an outdated API. The new API uses triggers rather than a switch statement, which requires a combination of a Command and an Object to trigger a plugin's response (see plugin_weather for the modern API). This helps eliminate many false positive matches. But to your point, you're right, that scenario would still trip it up. I plan to add support for matching on n-grams going forward, so you could define different behavior for "street number" vs "phone number" and it would match the longest (in most cases the most specific) option when multiple matches are detected. It's actually similar to how many routers work. You're also right that Abot plugins as they stand now do not improve or learn automatically over time. I've done some work on a training system which will enable a Facebook M or Magic-style human-aided training backend. It'll be a plugin just like any other which will eventually be hooked up to a neural net with optional centralized training (so you don't need a GPU rig or tons of data to get started). An early version of that is probably going to be ready going into June with the v0.2 release. Thanks so much for the feedback. I'd love to continue this discussion and find ways to improve plugins and training. If you're interested, there's a mailing list here: https://groups.google.com/forum/#!forum/abot-discussion https://groups.google.com/forum/#!forum/abot-discussion
- 11y ago
- BinaryIdiot 11y agoAwesome. Seems everyone is doing some sort of variation on this. I did something similar at the Launch Hackathon (http://devpost.com/software/sim http://devpost.com/software/sim) where the first use case is meeting scheduling. I'm currently trying to wrap up the website so people can start poking at it and then get the SDK going. Looks awesome though good job!
- sljd 11y ago"More robust" -- in what way? From what I've seen they are very robust.
- amelius 11y agoVery interesting! What is your approach to speech recognition and speech synthesis?
- hellcow 11y agoThanks! We'll handle speech in a very similar way to how we handle SMS today. There's an interface (shared/interface/sms) that defines the functions any SMS driver needs to implement, like `Send(to, msg)`. Then we have a Twilio driver that implements those functions, but you could easily write a Nexmo driver or a driver for any other service in the same way. With speech recognition, we'll design an interface and build drivers for popular services, like Google's new speech recognition API. For the end user, that means you'll be able to pick and choose which service you'd like to use, and by adding it to your plugins.json, speech will be loaded up and handled automatically.
- codelitt 11y agoA few others to test out: - https://www.houndify.com/ https://www.houndify.com/ - http://api.ai/ http://api.ai/ - https://wit.ai/ https://wit.ai/
- chuhnk 11y agoHey, really great work on this. I think you're wrong in saying it's too early for Show HN.
- primaryobjects 11y agoGlad to see more of these conversational UIs popping up. Here's one I've developed for node.js. chatskills: A chatbot API inspired by Amazon Alexa skills and intents https://github.com/primaryobjects/chatskills https://github.com/primaryobjects/chatskills No server required. It can run right in the console, web, slack, etc.