Chat with external systems using plugin actions (preview) in Copilot Studio 😎

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
Hi friends, well, Power Virtual Agent features are now part of Copilot Studio. That's old news, of course, but it's way more than just a rebrand. All of the functionality of AI Builder is now there and a whole load more AI features, and it's all set to make your classic bots way, way smarter using AI and in this video, we're going to look at some of those features, especially the plugins. And as you know, I love to extend and customize things. And that's what plugins are doing is they're allowing us to create these reusable pieces of functionality that can be added to your copilots to allow you to integrate with external data. Copilot is a word that you'll see all over the place because there are so many copilots, but broadly there are there are three different types. There is the Microsoft 365 copilot. That you can use inside Teams that allows you to do things like summarize your meetings and get action points. And then there are these first party copilot that are built also by Microsoft. And you'll see those in other products like Dynamic 365 for Sales, but also you'll see them in places like Power Apps that allows you to Build apps using natural language and then custom copilots. These are built by you for very specific tasks and they can be added into teams, into power apps, even or on a website which is public facing. And these are closer to what you might've been doing when you were building classic bots. But there are some very important differences. Stick around for the end of this video where I show you some really cool things you can do. So there are at least seven different types of plugins. So let's take a run through them. So Microsoft 365 Copilot can be extended, using conversational plugins built using low code and you can drag actions on to the canvas that allows you to do things like integrate with maybe an external site that allows you to ask questions about a HR procedure. Then there are the AI plugins and there are four different types of AI plugins. Generate content or extract insights and these are GPT prompts allowing you to provide a system prompt that can take data from the user. So here you can see where I've created a prompt to provide career advice where you're giving it information about what you're good at, what you're interested in, and then it can give you all of the suggestions with like what university degree you may need or what high school qualifications you might need. And then there's custom automation and there is a new trigger for cloud flows called a skills trigger. And this is where it can be triggered from the Microsoft 365 copilot and then you can just do a normal cloud flow and integrate with whatever you need to do and then respond some data that way. Then there is a custom connector plugin and well that's just what it says on the tin that you can use a custom connector but there's this new tab that allows you to then define how your custom connector is exposed to the copilot. So you can create like a natural language description of what the various different actions and the different parameters do. And then the copilot does the rest. It just works out when it needs to call that plugin and on how best to, and you can have a conversation with it. And it will ask for different parameters. Maybe if you haven't provided them all, then there is the traditional OpenAI plugins, which you can then integrate in just using the OpenAI manifest. And actually that creates a custom connector behind the scenes for you. Then your custom copilots can be extended using the Azure Bot Framework, but also you can extend using Action Plugins. And what Action Plugins do is that they can call a custom connector, similar to the custom connector plugin, but this is for your custom copilot. What's cool about these is that you describe what it does in natural language and use this dynamic chaining, which is where the GPT will work out when best to call your, your action and how to extract all the different parameters from the different messages that you give it. And it may ask you for some more data. And then the response that comes back from that plug in, it will then work out how best to describe it. or you can even show a an adaptive card if you want to. And this is especially exciting if you've been used to creating the question and answer linear flow classic bot. Because no longer with dynamic chaining, do you need to worry about constantly changing topic and working out what information needs to be passed between those topics. The copilot just handles that. it kind of feels like magic. Let me show you. So here I have a Power App and it is not using a Dataverse Connector, it is using a custom connector and that custom connector is built using Visual studio and I have a video on how to do this and I'm actually debugging this locally so if I go and run my uh, custom connector and I refresh my orders there you can see, it has hit a breakpoint and it's going to return those and this just is actually just returning an in memory database of and I can do things like it. So I can edit them and I can update them and add new ones. But if we go and look at the custom connector definition, and if we look at the definition, we've got all the different, uh, order operations, order list add, update, delete. And these are simply being called in my Power App. So if we go and edit here and we look at what's going on behind the save button, you can see that we are calling the update order or the order Add operation. So what I've also done is I've added in a chatbot control. So what this allows us to do is to select a particular chatbot that's being published by Copilot Studio. So if I run this, I can now ask questions. So I can say, let's say, what date was the order with ID 1002 placed on? And that simply is integrating with my custom connector. But what I can also say is, what was the status? So there we go. It's now giving us processing and I can now also integrate with the update order. So if I say update status to be shipped, it's asking me for confirmation. So I'll say yes. And up order updated. So if I update this now, if I refresh this, it's now going to go and get me all the latest orders. And there you can see that the status now has been, is changed to shipped. So here is my list of copilots. Now if I go and create a new co-pilot like this, and I say order admin, copilot, uh, and now we give it the language, this is the primary language, but later on you can go and add additional languages. If we go to edit advance options, we can go and put it in the right solution, which is very important, and give it a schema name. And then if we go create, so there we go. We, our chat bot is now created. In here we can see we've got all these AI plug in at this AI plug in area. But what we want to do is go into the topics here and I'm going to go and create a new plug in action. And the first thing we want to do there is we want to select the Order Admin connector. So we search for the Order Admin. There we go. We can see Get Order, List Orders. So let's select List Orders. So there we go, I'm going to go next. Now it's just asking for a little bit of information about my orders. So this just came from my custom connector. What we can also do is add in additional information here that will allow the copilot to be smarter when it works out that you want to actually list the order. So list order orders with an optional filter. We could also say allows showing orders placed on a specific date. If we go back, it's also asking for the inputs here, so the date of the order, and this has all come from that connector. So I'm going do a save. So I'm going to go back into my app. If say list all orders placed on the 3rd of January 2024 .So this should come up with this particular order here. um, only just a single one. So it's hit our break point and we come back there. So there you go. You can see that it's now come back with the information. So we've come back over to Copilot Studio and we can say the same thing. So list all the orders placed on the 3rd of January 2024. So you can see that it's saying, I'm sorry, I don't know how to help with that. Now before with classic bots, you used to have phrases that would trigger our different topics. Now the cool thing about this plugin actions, there is this generative AI dynamic chaining feature that we can turn on and I'll save that. And if we go back to topics and plugins, now what we can see is that we've got this our action here, and you can see it's saying dynamic chaining. So now we can do the same thing. So list all orders placed on the 3rd January 2024. And now you can see it's invoking our action. And there we go. It's actually taken that information back and it's interpreted the response and just giving it to us in text. I could even say if we now go and add in another. plug in action and this time what we're going to do is just the get the order so order admin and just say get order and say next now if we look at this the id here what we want to say this is actually the order id and in the description we want to give information that allows the the language model to work out what it is so order id it could be the identifier and you provide other formats perhaps so i could even just say eg 1001 And we are going to enable it for dynamic chaining. And if we do finish for this, there we go, it's created it. Now what we can say is we can say get the order status of order with ID, like that. And so what's cool about this is that it's maintained that context. It knows that we're still talking about the new order. But what happens if I wanted to update the order status? We can go and add in a plugin action, and this time we'll use the update order. And as before, we'll go and edit the parameters. But this time we also want to look at the return. So if we say the outputs and edit that, we know that we're not going to actually return anything from the order update. So I can just simply say order updated. And we'll save that. So it's before we get the status of the order, and then we can say, Update order status to be delivered. And so it's now updated it. Now if I wanted to say this, if I said, Update order status to be shipped. Of course we don't have a context, so it doesn't know the order ID. So it's now just asking for the order ID. And this is all just built in. I didn't need to create that traditional, Question response branching in a, a traditional bot. So I, I say 1001 again like that. Then it does the order updated. All I've done is I've just given it a little bit of information about that connector, a little bit of information about what the parameters are and the more context I put into those descriptions. That kind of clever it gets. So before, if I do a list all. So if I go into the List Orders action, and on the output tabs, at the moment, it's using this dynamically generated message. But what happens if I wanted to create something a little bit fancier? Now, we can also create a message or an adaptive card. Now, there's this Grade Out option that is not yet available, but I'm looking forward to it where it will dynamically generate an adaptive card from the example I give it. But if I select adaptive card here and you can go and use the adaptive card designer, I'll put a link in the description to do that. But if we go to the formula, I've created one already, and if we expand this out, what this is doing is this is iterating over all of the the are output response records and creating a fact set for each of them. And so we've got the schema that comes back from the connector, and I can just reference that as though they were variables in the standard Power Fx. And this is just so cool. It's just like writing Power Fx in a Power App. And so if we save that now and do the same thing, there we go. It's now rendering it as an adaptive card and you could make that as fancy as you like. Now, I did promise that I was going to show you something really cool, which I'll do a video on next. So if I do the same thing here, what I've done here is I've created a much, much more complex adaptive card. And so what we've got is we've got action here. And I can click the action and that will invoke my plugin action. And so it's asking me, are you sure I want to update it? And I say, yes. And then if I list all of them again, you can see there it's now marked it as shipped. But what I'm also going to show you in another video is how to make it multi language. So I can change this to Norwegian and I'm actually going to be a judge at ACDC in Norway. So I've been trying to brush up on my Norwegian. And so now it's asking us in Norwegian. Now I. I'm not going to try and type this in, but I've said, what is the order date? And I can go and copy this and there is giving us the information. You can see here that the, the log is showing that it's picked up an order idea of 10 001, and it's actually translated into Norwegian using the Microsoft translation services. So it does it back and forwards. But what's also cool is I can actually actually set that status using Norwegian as well. I definitely do want to. And there we go. It's updated the order. I didn't need to make my custom connector speak Norwegian. So there we have it. I think you'll agree that it's a pretty cool feature. Do remember it is preview. Have fun playing with it. Uh, but it is AI and so it can come up with some fairly unpredictable results at this point. Uh, I think you'll agree that it's moving in the right direction though. So a little bit of news. I'm going to be speaking at the Microsoft AI tour in New York on the 25th of January. So if you're that way, uh, you can go and register. I'll put the link below. I'm also going to be a judge at the Arctic Cloud Developer Challenge ACDC in Oslo. And that's February the 1st and the 4th. And it's really looking forward to that event. It's the second time I've been a judge and it's just an amazing hackathon. Um, then there's also the Canadian Power Platform Summit. So if you are near Vancouver, or you can get to Vancouver, check out the website. I've again, put the link below March the 15th to the 16th, and, uh, there's going to be loads of really exciting content there, and it'd be great to see you at any of those events, but until next time, friends have a great rest of your day. Cheers.
Info
Channel: Scott Durow
Views: 20,244
Rating: undefined out of 5
Keywords: copilot studio, adaptive cards, copilot, ai, llm, gpt, ai bots, custom connectors, power apps
Id: OQsvSmXI2As
Channel Id: undefined
Length: 14min 32sec (872 seconds)
Published: Thu Jan 11 2024
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.