WEBVTT

00:00:00.000 --> 00:00:03.060
Today we're building a powerful AI chatbot in

00:00:03.060 --> 00:00:05.919
Microsoft Co -Pilot Studio. We call it Falcon

00:00:05.919 --> 00:00:10.679
Checking... Whoa! That's a dangerous chatbot.

00:00:10.980 --> 00:00:13.599
And we're placing it on the bank's website, but

00:00:13.599 --> 00:00:16.280
you can apply this concept to any business. This

00:00:16.280 --> 00:00:18.920
video is broken down into three sections. One,

00:00:18.960 --> 00:00:21.480
we're going to review the scenario. Two, we're

00:00:21.480 --> 00:00:23.640
going to demo the chatbot. And three, we're going

00:00:23.640 --> 00:00:26.460
to show you how it was built. My name is Shervin

00:00:26.460 --> 00:00:28.800
Shafi and I'm a Principal Engineer at Microsoft.

00:00:29.480 --> 00:00:36.240
Welcome to Collaboration Simplified. Okay so

00:00:36.240 --> 00:00:38.719
here's a scenario. There's a bank called Hotchotec

00:00:38.719 --> 00:00:41.299
and they have a legacy chatbot on their website

00:00:41.299 --> 00:00:43.539
but they're interested in the next generation

00:00:43.539 --> 00:00:46.979
chatbot powered by Copilot AI. They want it to

00:00:46.979 --> 00:00:50.020
be easy to build and also easy to use for their

00:00:50.020 --> 00:00:53.140
end users. So what we did was we built them Falcon

00:00:53.140 --> 00:00:56.700
Checking using Microsoft Copilot Studio and the

00:00:56.700 --> 00:01:00.039
latest concepts like multi -agent orchestration

00:01:00.039 --> 00:01:02.840
where you can have parent and child agents. So

00:01:02.840 --> 00:01:05.599
we created child agents for balance, transfer,

00:01:05.700 --> 00:01:08.299
branch, and lost cart. You'll see all this in

00:01:08.299 --> 00:01:10.939
the demo and the build. And we also created custom

00:01:10.939 --> 00:01:15.040
connectors for data using PowerApps, but these

00:01:15.040 --> 00:01:17.939
are available as tools inside Copilot Studio.

00:01:18.590 --> 00:01:20.790
Now, let me try to answer this question of, is

00:01:20.790 --> 00:01:23.730
this chatbot good enough to replace live agents?

00:01:23.890 --> 00:01:26.329
It's a very difficult question to answer. I'll

00:01:26.329 --> 00:01:28.670
give you my take, and I would also love to hear

00:01:28.670 --> 00:01:31.590
what your perspective is after you all see the

00:01:31.590 --> 00:01:35.510
demo and the build. My thinking is that now with

00:01:35.510 --> 00:01:38.969
GenAI, You can do a lot of reasoning and analysis,

00:01:39.230 --> 00:01:41.950
whereas before the programming logic was a lot

00:01:41.950 --> 00:01:45.069
more static. So we're good on that side. And

00:01:45.069 --> 00:01:47.549
I think it's just a matter of creating an agent

00:01:47.549 --> 00:01:50.629
or a chatbot that has access to all the information

00:01:50.629 --> 00:01:54.000
data sources so that it can reason over it. As

00:01:54.000 --> 00:01:56.200
long as you're able to give it all that data

00:01:56.200 --> 00:01:58.299
source information, you're probably going to

00:01:58.299 --> 00:02:00.680
have less and less scenarios where you're going

00:02:00.680 --> 00:02:04.140
to have to escalate to a live agent. So you probably

00:02:04.140 --> 00:02:07.140
can't completely eliminate live agents, but you

00:02:07.140 --> 00:02:10.460
can probably reduce the number of requests that

00:02:10.460 --> 00:02:13.280
get escalated to live agents. That's my take.

00:02:13.460 --> 00:02:16.199
I'd love to hear your perspective after you see

00:02:16.199 --> 00:02:23.509
the demo. I'm a customer, right? And I like to

00:02:23.509 --> 00:02:25.610
get in touch with my bank. And all I do is we're

00:02:25.610 --> 00:02:27.889
going to the website. I open this bubble here

00:02:27.889 --> 00:02:30.270
that says chat with Falcon Check -ins and I get

00:02:30.270 --> 00:02:33.210
a greeting for my agent. Hi, I'm Falcon Check

00:02:33.210 --> 00:02:35.289
-ins, your smart banking assistant. No calls,

00:02:35.289 --> 00:02:37.530
no tickets, no waiting in line. I want to start

00:02:37.530 --> 00:02:39.810
with what's the balance of my account? The answer

00:02:39.810 --> 00:02:43.080
from my agent is, okay. Which account would you

00:02:43.080 --> 00:02:45.460
like to check the balance for? Your options are

00:02:45.460 --> 00:02:47.259
check -in, savings, mortgage, or credit card.

00:02:47.340 --> 00:02:49.240
Okay, I just want to see the check -in's account.

00:02:49.419 --> 00:02:51.180
I'm going to get a response. That's my balance.

00:02:51.419 --> 00:02:53.280
I kind of need to save a little bit more money.

00:02:53.379 --> 00:02:54.900
And I said, you know what? What about my savings

00:02:54.900 --> 00:02:56.979
account? Let's just continue with the same context

00:02:56.979 --> 00:02:59.080
here. The response came back. Your savings account

00:02:59.080 --> 00:03:01.520
balance is $2 ,000, $2 ,500. Let's say you're

00:03:01.520 --> 00:03:03.460
going back here. You lost your car. It was stolen

00:03:03.460 --> 00:03:04.759
or whatever. You don't want to call the call

00:03:04.759 --> 00:03:06.939
center. I lost my car. Okay, let's select the

00:03:06.939 --> 00:03:10.099
account for which your car has been lost or stolen,

00:03:10.180 --> 00:03:13.840
my credit card. It froze my account as of right

00:03:13.840 --> 00:03:16.860
now. And here are your recent transactions. Also

00:03:16.860 --> 00:03:20.669
showed me which transactions have happened. recently

00:03:20.669 --> 00:03:23.210
for this particular car. And I say, I didn't

00:03:23.210 --> 00:03:25.229
make the last two. That says your credit card

00:03:25.229 --> 00:03:27.490
has been frozen and dispute have been raised

00:03:27.490 --> 00:03:30.349
for the last two transactions. You did not recognize

00:03:30.349 --> 00:03:32.150
a member of the dispute team will contact you

00:03:32.150 --> 00:03:33.889
within seven days. Let's do another one here.

00:03:33.990 --> 00:03:35.669
I want to transfer some money. Then it says,

00:03:35.729 --> 00:03:37.030
please provide the following details for the

00:03:37.030 --> 00:03:38.629
transfer. The account to transfer funds from,

00:03:38.729 --> 00:03:40.650
the account to transfer funds to, and the amount

00:03:40.650 --> 00:03:42.990
to transfer. And I'm going to say, from my checking

00:03:42.990 --> 00:03:44.969
account, please provide the account to transfer

00:03:44.969 --> 00:03:49.219
to my savings account, move $50. Actually, I

00:03:49.219 --> 00:03:51.800
think that's not what I want. So I'm going to

00:03:51.800 --> 00:03:56.060
go back and say, actually, make it $10 ,000 to

00:03:56.060 --> 00:03:59.500
my mortgage account instead. So yeah, let's switch

00:03:59.500 --> 00:04:03.039
the intention here. Your checking account balance

00:04:03.039 --> 00:04:05.580
is $563 ,000, which is insufficient to translate

00:04:05.580 --> 00:04:07.240
$10 ,000 to your mortgage account. Please choose

00:04:07.240 --> 00:04:08.879
a different amount or account. And I said, oops,

00:04:08.919 --> 00:04:11.819
sorry. I meant to say at $100 ,000. And is there

00:04:11.819 --> 00:04:15.449
a cash machine in Southport? two questions, two

00:04:15.449 --> 00:04:18.550
asks, one sentence, multitask. The transfer of

00:04:18.550 --> 00:04:20.509
100 from your checking account to your mortgage

00:04:20.509 --> 00:04:22.970
account has been successfully completed and will

00:04:22.970 --> 00:04:25.389
be posted on September 3rd. It came back with

00:04:25.389 --> 00:04:27.769
the response of, oh, you can find cash machines

00:04:27.769 --> 00:04:30.470
and software at this specific location. Again,

00:04:30.589 --> 00:04:33.709
multitask, contextual understanding, all within

00:04:33.709 --> 00:04:36.170
the same response. Yes, looks good, and we're

00:04:36.170 --> 00:04:39.170
good to go. That's kind of a very, very brief

00:04:39.170 --> 00:04:42.490
use case of multi -questions, multiple task questions,

00:04:42.689 --> 00:04:50.029
dynamically intelligent orchestration. Let me

00:04:50.029 --> 00:04:53.810
walk you through how all this can be done without

00:04:53.810 --> 00:04:57.769
running a line of code. on Studio. So here we

00:04:57.769 --> 00:05:00.209
are in Compact Studio. Here's my Falcon Shankies.

00:05:00.230 --> 00:05:02.230
This is my orchestrator. This is the customer

00:05:02.230 --> 00:05:04.509
facing agent. I have a description for my agent.

00:05:04.649 --> 00:05:06.990
I have enabled the orchestration to determine

00:05:06.990 --> 00:05:09.550
which, how to best response to my users and events.

00:05:09.649 --> 00:05:11.689
So I have that enabled as well. I have the base

00:05:11.689 --> 00:05:14.430
model as GPT -4 .0. I have instructions. Your

00:05:14.430 --> 00:05:17.490
name is Falcon. You assist retail banking customers

00:05:17.490 --> 00:05:19.610
by providing account bounce information, facilitating

00:05:19.610 --> 00:05:22.370
fund transfers, making payments, et cetera, et

00:05:22.370 --> 00:05:24.399
cetera. So this is the... very basic instructions

00:05:24.399 --> 00:05:27.279
i have knowledge sources like branches and halifax

00:05:27.279 --> 00:05:30.600
i have what search enabled to enhance the responses

00:05:30.600 --> 00:05:32.800
and then i have tools right we'll walk you through

00:05:32.800 --> 00:05:35.779
all these tools and then we have all the agents

00:05:35.779 --> 00:05:38.379
these are child ages like remember i mentioned

00:05:38.379 --> 00:05:42.199
before we have the master agent is falcon and

00:05:42.199 --> 00:05:46.689
falcon dynamically will call child agents to

00:05:46.689 --> 00:05:49.709
get things done. Let's talk about tools. These

00:05:49.709 --> 00:05:52.250
tools are basically custom connectors. We offer

00:05:52.250 --> 00:05:55.529
about, I think, 1 ,800 or even more out -of -the

00:05:55.529 --> 00:05:58.269
-box connectors to different systems, CRM, Salesforce,

00:05:58.290 --> 00:06:01.350
ServiceNow, you name it. But if your endpoint,

00:06:01.529 --> 00:06:03.910
your particular system is a database, there's

00:06:03.910 --> 00:06:06.089
no out -of -the -box connector, you can build

00:06:06.089 --> 00:06:07.990
your own connectors. It's basically a custom

00:06:07.990 --> 00:06:09.990
connector. And we have multiple here. So let

00:06:09.990 --> 00:06:11.870
me show you one example here. So for example,

00:06:11.930 --> 00:06:15.360
I want to freeze an account, right? There is

00:06:15.360 --> 00:06:18.379
an action or a tool that needs to be created

00:06:18.379 --> 00:06:20.920
in my Falcon check -ins to get things done. So

00:06:20.920 --> 00:06:23.420
I'm going to open that action or tool. The details

00:06:23.420 --> 00:06:25.199
of the freezing account, this is what the tool

00:06:25.199 --> 00:06:28.459
is going to do. This is a tool with all the user

00:06:28.459 --> 00:06:32.139
to freezer account. Here's the tool. Here's the

00:06:32.139 --> 00:06:34.540
connection. I'll walk you through how that connection

00:06:34.540 --> 00:06:38.089
was made in Power Platform. This is just a tool

00:06:38.089 --> 00:06:40.430
that will go and freeze the account. And there's

00:06:40.430 --> 00:06:42.889
an actual API that runs behind the scenes, and

00:06:42.889 --> 00:06:45.269
I will show you that. If I show you another example

00:06:45.269 --> 00:06:47.689
of another tool, the Get User Profile. The Get

00:06:47.689 --> 00:06:51.209
User Profile tool will pull the username and

00:06:51.209 --> 00:06:54.889
your authentication piece so it can go into this

00:06:54.889 --> 00:06:58.509
agent, Falcon Check -ins. and get your user data.

00:06:58.810 --> 00:07:01.930
So tools are basically custom connectors. Is

00:07:01.930 --> 00:07:03.930
that simple? If I show you that in the Power

00:07:03.930 --> 00:07:08.430
Apps, we kind of created a banking API custom

00:07:08.430 --> 00:07:11.250
connector to my customer database. This is what

00:07:11.250 --> 00:07:13.430
we did here. So if I go and edit here, I'm going

00:07:13.430 --> 00:07:16.069
to walk you through the name. This is basically

00:07:16.069 --> 00:07:19.350
a platform or database running in a serverless

00:07:19.350 --> 00:07:22.850
function in Azure. This can be anything, actually

00:07:22.850 --> 00:07:25.910
anything in your systems today. Here's the definitions.

00:07:26.639 --> 00:07:29.879
All those endpoints that you see here are actually

00:07:29.879 --> 00:07:33.100
definitions or endpoints that I created in this

00:07:33.100 --> 00:07:35.660
connector. So for example, the dispute transaction

00:07:35.660 --> 00:07:38.120
is an endpoint to dispute a specific transaction.

00:07:38.779 --> 00:07:41.240
This is a tool that would allow the users to

00:07:41.240 --> 00:07:43.860
dispute a specific transaction. Here's the API

00:07:43.860 --> 00:07:46.779
request, and this is the entries that I need

00:07:46.779 --> 00:07:49.379
to provide to get that executed. So it's an API

00:07:49.379 --> 00:07:53.920
call to my database using these variables to

00:07:54.329 --> 00:07:57.389
block or dispute a transaction. Then I have this

00:07:57.389 --> 00:07:59.850
child agents. Every time I ask for a balance,

00:07:59.949 --> 00:08:01.730
every time I ask for information about a branch,

00:08:02.029 --> 00:08:04.850
my card was telling how to transfer funds, Falcon

00:08:04.850 --> 00:08:07.430
check -ins, the orchestrator will call individually

00:08:07.430 --> 00:08:10.730
this agents to get those things done. So if example,

00:08:10.810 --> 00:08:13.290
I show you the balance agent, it's a child agent,

00:08:13.410 --> 00:08:17.329
right? I'm going to open this and here I get

00:08:17.329 --> 00:08:21.279
a name. I have a description. as well this is

00:08:21.279 --> 00:08:23.560
the instructions like remember we talk about

00:08:23.560 --> 00:08:26.639
this like there's benefits for it and for the

00:08:26.639 --> 00:08:29.579
end user actually it don't have to write code

00:08:29.579 --> 00:08:31.399
right you can use natural language instructions

00:08:31.399 --> 00:08:36.019
and say when when falcon check is the orchestrator

00:08:36.019 --> 00:08:38.740
will call the balance agent well based on this

00:08:38.740 --> 00:08:42.639
um if there's a balance question if there's any

00:08:42.639 --> 00:08:44.379
information about what's my balance here or there

00:08:44.379 --> 00:08:47.659
falcon will call balance agent And the balance

00:08:47.659 --> 00:08:50.259
agent will do this, will fetch the user profile

00:08:50.259 --> 00:08:53.320
on their accounts using the get user profile

00:08:53.320 --> 00:08:56.820
tool. Get user profile tool. It's right here,

00:08:56.899 --> 00:09:00.200
right? Right. And so I'm actually telling my

00:09:00.200 --> 00:09:03.379
child balance agent, use this tool that I already

00:09:03.379 --> 00:09:06.519
provided to you to get this done. Then if you

00:09:06.519 --> 00:09:09.399
don't already know, ask the user which account

00:09:09.399 --> 00:09:11.000
they want to check the balance for. Remember

00:09:11.000 --> 00:09:13.539
that case when I asked a question, what's my

00:09:13.539 --> 00:09:15.919
balance in Copilot? My agent came back with which

00:09:15.919 --> 00:09:18.750
account you want. If it's checking, if it's saving,

00:09:18.830 --> 00:09:21.110
it's right here. It's this instruction. And then

00:09:21.110 --> 00:09:24.009
finally, use this tool, get balance information

00:09:24.009 --> 00:09:27.129
to get the balance of the account the user chose

00:09:27.129 --> 00:09:29.690
and tell them the balance. So I'm pointing here

00:09:29.690 --> 00:09:32.429
different tools. And if I actually, let me show

00:09:32.429 --> 00:09:33.809
you this. Let me see if we can do this here.

00:09:33.870 --> 00:09:37.389
If I do here and I do forward slash and the instructions,

00:09:37.490 --> 00:09:40.429
it will offer me all the tools that I have that

00:09:40.429 --> 00:09:45.250
I can call out from. my agent instruction box.

00:09:45.330 --> 00:09:48.929
So I can be very descriptive on how I want you

00:09:48.929 --> 00:09:52.090
to behave. Balance agent uses tools that I provided

00:09:52.090 --> 00:09:54.710
to you. And then the startup repeats with the

00:09:54.710 --> 00:09:57.350
rest of the agents as well. So you have basically

00:09:57.350 --> 00:10:00.690
this kind of master agent, which is Falcon checking.

00:10:00.809 --> 00:10:03.690
You have four child agents. Each of these agents

00:10:03.690 --> 00:10:06.659
has. instructions and the instructions using

00:10:06.659 --> 00:10:09.759
the slash command you reference different tools

00:10:09.759 --> 00:10:13.220
and the tools are built in uh power platform

00:10:13.220 --> 00:10:15.960
that you showed as custom connectors so it's

00:10:15.960 --> 00:10:18.500
kind of like a hierarchy of different things

00:10:18.500 --> 00:10:21.500
that come into play to kind of create this end

00:10:21.500 --> 00:10:24.000
user experience that you demoed right right so

00:10:24.000 --> 00:10:26.419
if i asked what's the balance of my account now

00:10:26.419 --> 00:10:29.200
studio is going to switch the screen into the

00:10:29.200 --> 00:10:32.629
actual activity map And it will show me that

00:10:32.629 --> 00:10:35.470
Falcon called the balance agent because I asked

00:10:35.470 --> 00:10:37.990
for balance. And the balance agent is going to

00:10:37.990 --> 00:10:41.429
call the get user profile tool. OK, because the

00:10:41.429 --> 00:10:44.169
I told balance agent through instructions to

00:10:44.169 --> 00:10:46.690
pull information from the customer using this

00:10:46.690 --> 00:10:49.370
particular tool. So it's coming back with this

00:10:49.370 --> 00:10:53.690
information. And I say, I want my check. So now

00:10:53.690 --> 00:10:55.370
that I said that, I want my checking account,

00:10:55.529 --> 00:10:58.620
please. And this is the actual call to the API,

00:10:58.799 --> 00:11:00.759
get balance information. Now it's switched from

00:11:00.759 --> 00:11:03.759
get user profile. I enter the name of the account

00:11:03.759 --> 00:11:05.700
that I want, and now it's actually going and

00:11:05.700 --> 00:11:08.899
get the balance information tool. So the balance

00:11:08.899 --> 00:11:11.980
agent first called the get user profile, okay,

00:11:12.120 --> 00:11:14.799
to pull the information about the different accounts

00:11:14.799 --> 00:11:17.019
that I have under my name, and finally said,

00:11:17.159 --> 00:11:19.000
okay, now that I know the account that you want,

00:11:19.059 --> 00:11:20.659
because I said I want the check -ins account.

00:11:21.470 --> 00:11:23.830
balance agent called the balance information

00:11:23.830 --> 00:11:27.940
tool to give me the actual. balance. So this

00:11:27.940 --> 00:11:30.299
all happens behind the scenes, fucking check

00:11:30.299 --> 00:11:32.700
-ins, call balance agent. I think a lot of times

00:11:32.700 --> 00:11:36.600
people have a tough time visualizing what can

00:11:36.600 --> 00:11:38.840
be done with all these different tools Microsoft

00:11:38.840 --> 00:11:41.659
has, because again, I kind of look at it as like,

00:11:41.700 --> 00:11:44.039
we give all these Lego pieces to customers and

00:11:44.039 --> 00:11:46.379
we're like, build your own experience. And you've

00:11:46.379 --> 00:11:48.159
just kind of shown us the art of the possible.

00:11:48.360 --> 00:11:50.240
Wanted to thank you again, because every single

00:11:50.240 --> 00:11:52.919
time you come on here, you're showing some really

00:11:52.919 --> 00:11:55.980
excellent use case. Thank you. Appreciate it.

00:11:56.320 --> 00:11:58.100
You're welcome. Thank you. Thanks.
