Cloudkibo / ChatBot

AI Chat Bot
0 stars 1 forks source link

Urgent: Microsoft Bot FrameWork Open Source vs BotPress #43

Open jekram opened 7 years ago

jekram commented 7 years ago

@sojharo

In looking at BotPress open source is a concern.

I would like you to compare Microsoft Bot Frame Work with BotPress. Function for Function.

Assume that if we use the same architecture what things we have to develop compared to if we continue to use BotPress

We have already look at Microsoft Bot FrameWork so I am assuming we already have that knowledge.

Please work on this as high Priority.

Please validate if we can still work with API.AI, Google Speech, Alexa,.......

What is the tradeoff of using Microsoft Bot Frame Work

I AM NOT READY TO CHANGE DIRECTION I NEED MORE INFO ON THE TRADE OFF.

@dayemsiddiqui @zarmeen92 FYI

jekram commented 7 years ago

cut and paste for Sojharo Sojharo: If we purchase the license and then we do the modifications to the code, will we still need to share the changes with community?

danyfs: Depending on what you want to do... If it’s a real core contribution, normally, with the AGPL license, you would need to share the your work progress with others. If you buy the license and you do some little changes for yourself (or client), there’s no problem. Can you explain me what you want to do?

sojharo commented 6 years ago

I created a bot using MS bot framework. To test the bot, I had to download a desktop application which is an emulator by microsoft to test the bot. Here is the echo bot in action:

screen shot 2017-07-07 at 1 26 03 pm

This got connected to our localhost server (our bot) and got responses from it.

I found that there dashboard, where we can connect bot with other chat platforms is not open source. Just server side Node.js SDK is open source. This SDK needs to be used in the code to connect with LUIS and use LUIS to answer questions of user. There were samples about how to use SDK to enable other cognitive services as well. However, we have to do everything in the code. Very few things are provided in the UI and that UI is not open source and is available here:

https://dev.botframework.com/bots

Here are some screenshots of the UI:

screen shot 2017-07-07 at 3 26 22 pm screen shot 2017-07-07 at 3 29 59 pm

The open source node.js sdk forces us to use their dashboard and dashboard is not open source. It is available on above link. Then users will have to go to this dashboard to work with bot. As they are not modular so we have to use only LUIS for machine learning and we can't use API.AI with this.

For Analytics we would have to use another azure cloud service called Azure Application Insights. All these services are charged separately.

It is up to Microsoft to decide when they want to support further chat platforms. Here is the FAQ regarding this:

screen shot 2017-07-07 at 3 39 50 pm

https://docs.microsoft.com/en-us/bot-framework/resources-bot-framework-faq

Here is the document which compare the tasks if we go with MS bot framework, Botpress and create entire application on our own.

https://docs.google.com/document/d/1_3rIGxbxKn_LA4lW3jZZP9NQQVqQhw9n4yYKtsrmYsY/edit

MS Bot framework is very closed in nature. If we don't get any way out of botpress license, then it would be good to create from scratch and use REST API of API.AI.

jekram commented 6 years ago

@sojharo

  1. Is LUIS same as API.AI for machine learning?
  2. Can you use LUIS with an UI like API.AI
  3. Microsoft Bot Frame is open source. Only the SDK (Bot Builder) but not the UI. So we have to build the UI.
  4. In Microsoft BOT Framework is the Bot connector running in MSFT or the Bot Connector is also open source and we can run it locally.
  5. How does the training works on LUIS
sojharo commented 6 years ago

I compared both .Net SDK and nodejs SDK of bot framework. Both are same function wise. After doing comparison from references, I went on to compare their sample usage code as well:

https://docs.microsoft.com/en-us/dotnet/api/?view=botbuilder-3.8 https://docs.botframework.com/en-us/node/builder/chat-reference/modules/_botbuilder_d_.html

Libraries were little complex because of different languages. However, the class names defined in both were following same convention. Moreover, the code is very tightly coupled with MS services that it is practically hard to separate them and put another services i.e. replace LUIS with API.AI.

E.g. builder.EntityRecognizer.findEntity(args.intent.entities, 'builtin.geography.city');

From above code, we can see that they have integrated LUIS in Nodejs bot SDK very tightly, they have low level functions and all the features of LUIS are defined within library in form of functions. It is practically a rewrite if we try to replace the LUIS from library with API.AI.

I looked at all of these samples to understand the internal working of the Nodejs SDK (bot builder)

https://github.com/Microsoft/BotBuilder/tree/master/Node/examples

Following is the complete code for using LUIS in a bot with bot builder sdk:

https://github.com/Microsoft/BotBuilder-Samples/blob/master/Node/intelligence-LUIS/app.js

Furthermore, I built the bot on LUIS dashboard and created intents and entities. Also used some of them from prebuilt bots. The I was able to run see that bot in simulator but couldn't deploy it on kiboengage as it was giving some errors.

Is LUIS same as API.AI for machine learning? Structure wise both are same. Both have entities and intents. Both have prebuilt bots. Both gives the REST API. Difference is that API.AI dashboard is sophisticated than LUIS dashboard.

Can you use LUIS with an UI like API.AI Yes, but many of API.AI features are not in LUIS. There is no UI to put default response in LUIS.

Microsoft Bot Frame is open source. Only the SDK (Bot Builder) but not the UI. So we have to build the UI. Yes, only the SDK is open source. That is also tightly integrated with MS services.

In Microsoft BOT Framework is the Bot connector running in MSFT or the Bot Connector is also open source and we can run it locally. We can run it locally, however, it is made in such a way that we can integrate it with microsoft services running in cloud. So LUIS is not on localhost. Our bot can run locally, but it will connect to LUIS app on cloud.

How does the training works on LUIS It is same as on API.AI. but with less features and less integrations than API.AI.