 Welcome back to the A.I. track, continuing on with the amazing A.I. theme of things. We have Michael Christen. Is that am I pronouncing this correctly? Yeah, that's fine. Michael Christen, easier. Michael Christen with CCAI, we're going to hear it for him. He's a big data engineer working with some of the largest corporate players from Germany. My job is... I'm trying to understand... No... Maybe not. I saved my sense of mobile. So he's the founder of Low Clock and CCAI, and the creator of the A.I. server engine. Yassi. Yassi, yes. Okay. He's also the architect of large search portal like the German Digital Library. And there's a master of computer science inside the A.I. and uses knowledge for the creation of open source personal assistant, which is ask2c.com. So, without further ado... Thank you very much, and thank you for coming, though. I'm actually a little bit afraid of how it's going because this is my demonstration. Excuse me. Can you please stop the position? This is a workshop, and we want to test this application altogether. And therefore, I ask you that you all go to the A.I. page and try out what I'm trying here. What we want to do today is that we all want to learn how Susie skills are defined and how you can do this yourself. You don't need any development knowledge for this. You don't need an environment environment, and you don't need to download any software. You could download Susie Android application if you want to, and if you want to, you can test your applications or your skills that you want to write now on your own Android device. What I'm doing here is I'm reusing the web client, and that's a shared knowledge zone, but you can create your own knowledge zone and skills. There's a link at the top to the skill manual, which is here. It's still posted on GitHub pages, and I want that we read this together or make what it is inside this tutorial together. And don't be scared, it's really easy. So first thing, let's go to the online demonstration of Susie. There's a button live demo, and there you can start checking. It says, hello, which is German, which it's always confusing. It has German rules, it has English rules, and if you do our own rules now, it will be in our private zone and behave only like we want to. And it works like that. We create a so-called Susie Dream. A Dream is a test zone for new skills, and that's on dream.ususie.com. And this is an etherpad. Does everybody know what an etherpad is? An etherpad is just an empty web page where everybody can edit the text, and everybody sees the updates, and everybody can join in. And that's what we want to do now. So I created a new pad, and we call it Posizia. So it's initially filled with an explanation text. And we want to change the rule. If you say hi, it should say, welcome to the first age here. Now I don't need to save this or do anything. It's just saved and I type this. So it's really easy. I go to the online demonstration, and I want Susie that it uses this demonstration now, and because it's called the Susie Dream, I tell Susie to dream. And it's now being used in Posizia. First skill. It's a very easy skill. It just catches up with the word hi, and now it answers, welcome to Posizia. And if I want Susie that it answers, I also do hello. I write it here, and now I can say hello. It says also, welcome to Posizia. Yeah, someone joined in. So this is actually, if you don't want to destroy anything, you can join in and create your own rules and skills here in this zone. But not yes, like bonjour, ciao. And if you have your Android client, you can also say dream Posizia, and then it's in your Android client report. Your Android client defines a private zone because you haven't logged in. You must log in with your given account. You have to create an account. And then you can create your own pet and create your own skills. Just say dream, and then it's defined in your zone. Now if somebody is asking, where can I get a coffee? This is true, but it's just a sentence of coffee. Yeah, can I get a coffee? So I'm curious what happens now if so many people are doing this at the same time. Does anybody have a response in an Android client? Can make it a bit more complex and define what roses are. Roses are something. Just put it something, and I can say. But did somebody write dream Posizia? Because this is a shared zone. If somebody writes dream ex, then it disappears here. And then I'm dreaming about Posizia. So I try to create Posizia again. So this is a shared zone. If anybody is starting to dream in this zone about something else, it's going away again. Let's see. Roses are good to know that roses are green. So this is the stupid. Let's save this somewhere green. And call it Roses. Okay, and we want to use this value. So it's very easy to store some attributes and to learn them somewhere. You see that we stored a term which was visible in answer before. Now we want to store a status area which is not visible before. Let me see what you are putting in. Knock, knock, who's there? Day, how's your day? Does Susie like sushi? Okay, different because we are not using the word amazed. And we are just having a keyboard here. We can also check if a keyboard is set. And therefore I am silent at this time. I want to do this live and therefore I have to type this. If I would do copy paste, it would be different. This is a live demonstration. So this answer here, forget my mood, means respond with okay, and set in a string which is empty in this case into mood. In this case somebody changed this. Somebody must have changed it. Good to hear that it's true. Now this does mean that it just flies a little bit. And then it flies the word good into the variable mood. And while the word good is invisible because these are the chords to make it invisible. So when I am amazed, my mood is good. And when I publish my mood, and mood is defined, then it says you are in a good mood. And if it's not defined, it says I don't know your mood. It should do this, but I don't know. Maybe this is a different rule which is in the Susie rule set. Something is not working, example from the tutorial. And it says you are excited. And if not, it says I don't know your mood. Let's move on with the tutorial and define functions by doing Susie itself. So for example, Susie is calling itself. It's asking itself what color it would like. It would be a random color. So it calls this trace here. It's inside result of it's just a random one. Just because this rule calls this rule. And if using this kind of construction, you can create loops and decision points. Put it into example here exactly as it is. Let me try to think about what's wrong here. The next example is that we can use these patterns to call other functions inside the skills. So you can do any stuff you want to. And in this case it's a jar of definition. And if you define, that's a hash bang skill. Because it starts with the exclamation mark. And then it says which kind of plug-in is to be used. And in this case it says this is generated by calling JavaScript inside the Java. So you can put in anything you want to if you define a JavaScript. Then you are free to input any kind of computation you want to. And at this place I would like to explain why I think that's sufficient that we have a very big text understanding here. It's just a simple pattern matching. It's a very naive attempt to understand language. You just have some simple patterns and it's not a natural language under the natural language processing like these sophisticated energy methods are doing. But if you want to have these kind of patterns, this kind of natural language processing embedded, then you can just define a pattern which triggers that you want to do this now. And this is just then a great way to process it further with a JavaScript. And if you have done this inside a JavaScript that you call any function outside, for example. If you have done this, you can get an egg result and process it with a Susie scale further. And now the most interesting part is that's just some silly tricks here. This is not really artificial intelligence. Susie is not about being a real robot that is able to think it's in a source aggregation engine. And therefore, the most important example is that we call an external API. In this case we call Rockluck. And if you look at this, if you take this URL and make a chasing back, which is the search result from Rockluck about trees, that's an easy interface. I don't know if you know Rockluck and Susie does not depend on Rockluck. It's just an example which uses Rockluck and it creates an array of statuses with treat contents. So with this rule I can ask Susie to treat about something. And then we call this API and takes out that specific text line. But the text line must be defined. Where is this text line inside a chase? And therefore we have the JSON path. The JSON path is here root and not statuses. It's right here, statuses is inside the root element. And then there comes an array. And within every array you have property names. And we take the property names as the result variable name here to give back an answer. Text is the element which you can find here in the text line. And to just point where this is, is the statuses object. So in this case you can say treat about first age here. Is this the latest treat? It was a yes, it's the latest treat. That's such a nice word appears in them in the text line. It took a long time about 30 minutes to come here at this point where it gets interesting. If you have external APIs which can integrate here into the result set of the answer lines. We can do anything. We can also do a steering of external devices. If you have an API which opens the door, I can tell Susie open the door. And it involves the API which opens the door. And so on. And if the door has a status and the door says it's locked, then we can return the door has locked. So what I would wish what we do here is that we actually take any API that you recommend where we should try that. It's not possible with all the JSON results because not every type of object form at the inside of it. The JSON is now understood by Susie. But I'm here working on this. And this type of result must be like a table, like a search result. And then we can put it into an answer line. So other questions until now here. Before we move on. Everybody should understand what this is about. So any recommendations for an API to have a hint where we could use the JSON result from any sources. And usually it goes like this. I haven't tested that. I'm just doing an experiment. And let's, is there a news page somewhere for Zinc or Toro. The API, which is not documented, but you can just take the data out of it. Just open any web page. Then open the development tools. Every browser has this kind. Then filter by XHR in the network tab. And then you see all the external APIs which are called to fill in this web page. In this case, you see user usage API. And it gives us some information here, but this is not very nice information. So if we would have a kind of weather API, or any other object, does anybody know any URL where you get a JSON package? And we try to pass this. Just any API. Maybe you want to tell what you have tested so far. Have you created a path? Does anybody have created a path and is able to do such kind of conversation points? The idea is that you create this kind of skills. And if you think this is usable for everyone, then you can send us a pull request so we can integrate the JSON. But there are translators from XML to JSON, like the hook value language provides. And for this, the JSON path, it's list. Maybe we have a lot of time with these testings here, and at this place, I still have to go back inside. A lot of mistakes, but it took about 15 minutes. So I think it's about 15 minutes to add another service like that. Now we have a better service in JSON. I hope this is interesting. So, you know, a lot of different information can be attached like that. What would you say? Another service. 15 minutes is a long time. So many services are there. There are active content everywhere. All the web pages now have some kind of JSON service which feeds data into the web page. We can take all these data out of the web page. You have seen how I used the debug mode in the browser to find all the external APIs which I accessed. And so you can grab this data. So the idea of SUSE is like the beginning to have a way to add the data from the internet from everywhere into SUSE. And SUSE can access it. You can just use the natural language to talk with the AI. But it's not so much AI according to some definitions of AI yet. In my talk yesterday, I showed that some principles are applied. Principles are applied. Apart from that topic, I'm wondering, so what's the next step? So actually now I found out I can add an API. I have it here in SUSE Dream, SUSE Streaming. What do I do now? The next thing is if your skill is working, you can submit it as a pull request. At this time, we don't have an interface where you can just look and say, I want to give this skill to you. Please work with it. You just have the skill zone and the server configuration. I can show you the place where it should be placed. This is here in Comfort. And here are all the skill sets. There are also some old JSON formats, which is like the internal representation of skills. And what I've shown here is the external representation of skills. And if you want to create your own skill, take a file here or create a new one and put in your new skill set. And then you can add your own skills here or maybe you don't need to support us on the big skills that only one console rule for skill which accesses an external API will be also very helpful, like this one with the open environment. So what I would do here is now, I take this definition and put it into the same set. If you write in the app dream for Asia, then it's working. You say dream and then the dream there, then you're separated from the other person who are doing this, but not in the online demonstration. Because there's no account. So the question is, so that could be something like an AI, like Wikipedia for Instagram, so where a lot of people could actually contribute. That's one idea. Do we need to make it even easier or is it enough that people can make a call request to get? It would be good if we have an easier interface, but that's the status right now. We should work on this, but if you want to start to contribute right now, it's possible. Just by putting it into a GitHub repository. And if you are a developer, this is the normal way, and you know how to do this, but you want everybody to be able to create these skills and then this is not the right interface. What if people now contribute the same kind of skill for different services? There must be some kind of collaboration and maybe automatic tracking. I was thinking that here could be an option for AI that you say, let's say a thousand people who are maybe 30 years old, they choose like a world-based in Singapore, who have a certain profile, they would get an answer from a specific API. So that's where a lot of users come in that's where they distinguish who gets what answer. You can have this for companies or maybe even a science center. You can have an app with, for example, a dream with pre-installed. So if we open it, you get all the questions about buildings and about the exhibitions and stuff. You can do this in your company and you can do this for your own private hobby, for example, you can create a skill set about cooking or about mechanics. So are there questions? Is this house in a server, like a sushi server, or is this API, or is this totally different from API? So this is a Susie server, there's a Susie server running which provides these answers. It's running at astusie.com right now, but it's free software. You can download the server software and host it yourself. So the server is free as well? The server is free, and right now the dream zone is configured by an URL to a different headline. That's all it gets. You need an access key for it all, a different headline. Configure the URL to the dream zone and access key. Then you have your own dream zone that they don't want to serve. And you can host it on server. You can share the principle of the AI that is employed here. So can I say that this chatbot, is this chatbot of system or AI? They will self-learn on some of the aspects or you have to code in a certain response for them. You must create the skills in some way. But then you find a way to create it automatically. You have a database or an information source. You have to hire out of this data source this kind of skills. And it's a very simple form of skills. And if you have an idea how to attach other sources as dream zones, like different headlights, you could have any kind of sources like get a file from an FPP server. It's still a bit, but it's not implemented. But that would be easy. Yeah, it's just an even better idea. Just a last question. The earlier slide that you're showing, there's this straight time right then that's the code that actually tracks all the API. Basically, I need to turn on my Sushi server and all this to go into the that segment where it shows all the API. Well, this is also going to be a topic just in the configuration files here. This is the knowledge of the database that's using for everyone. And then, of course, that's the main idea that you learned how to route in yourself and that you can contribute to this project. The project is free. You get a source code. You can enhance it and please send it to us your own skills that you created. It's only for open source API. So it means like the websites, the APIs from the website, through opening the network console and looking for JSON. Yeah, the normal way. So, for example, we had the Urban Dictionary which is implemented and, yeah, even that. It's not documented online but you can just get the JSON out of the website. No, it doesn't. But the web is open. They must give you the code somewhere so you can render it. Yeah. Okay, so I think maybe one short question or one more question. Yeah, okay. Will there be a filter mechanism for... Filter the queries so that there's no abusive content or something like that. Abuse of... No, sir. Anyone can add the content, right? The answers and the queries. So if someone normally said something in the feed in the AI, feed in the server, wrong something like that. So people... You know, sometimes people just write something abusive and spend it soon in different queries as well. So there must be a filter mechanism. Well, everything that people write in their own account is in their own account. No, I'm saying like, for example, there should be some filter mechanism so that write answers will be there only for the particular question. Questions come from from skill sets which are either in a public sector or in a free zone. I think I don't understand the question. What is the right answer? For example, for example, this weather in Singapore if someone had this APA doesn't not work in other areas. For example, APA was on a certain reason but it doesn't work other. So if I'm in India, I will write weather in India and the APA is working only in Singapore. So it will not work there. Of course, yeah. But many... You can have a rule saying this skill applies only if you are in a specific region. And there are variables set for the geo-coordinated from the client if this is known. From the the actual client submits the geo-location if it's available, as far as I remember, and the time zone. So this information can be can be used in a skill and then make a decision if this skill is applicable or not. Yeah. So I think we are at the end. Is it okay if I close the session? So this project is online on First Asia's Github account. There are already 1,200 people on Github at First Asia but not everyone can contribute by the time to all the projects. So this project is pretty new. We are really looking for developers. There is an Android client. This is a suited client. Somebody started an iOS client 3 days ago. We are also looking at the improvements of the web app. Actually, what we didn't show here is you can have a question and answers but you can also have other things like pictures, diagrams, maps. Some of it is already implemented but a lot of work still has to be done. We are part of Google Summer Code again this year so there will be several slots for people who would like to work on some of the projects. We would also like to do a Microsoft Summer Code. But yeah, that would be great and anyone who has other interests, for example would be great if you make a video. Let's say you think about the skill and on your way home, you have the great idea and now you know how to make skills. How about just making a video? Show other people how to do this. Write blog articles that make ways to contribute and we believe it could be the Wikipedia for AIs. It's a dream. Thank you very much. Anything else you want to add? Yeah, I think that everything that Siri and Amazon Echo is producing and so on. We could do the same with this construction. So even if it looks a little bit silly in some way it's sufficient to create the same thing as Siri and Cortana and so on. There are rules that will look obviously very similar I believe. So therefore this is a really big trance that an open source community can do something like those personal assistants as an open source project. Thank you very much. Thank you.