What is the Bindings Building Block: Dapr in Action - Ep. 5
0 views
Aug 6, 2025
In this episode, you will understand what the Bindings building block is, the difference between input and output bindings, some of its concrete component implementations, and how you can use it in your own applications. 📺 CSharp TV - Dev Streaming Destination http://csharp.tv 🌎 C# Corner - Community of Software and Data Developers https://www.c-sharpcorner.com #CSharpTV #csharpcorner #Dapr #LiveShow
View Video Transcript
0:00
[Music]
0:17
[Music]
0:32
hello beautiful people from around the
0:34
hello beautiful people from around the
0:34
hello beautiful people from around the world happy happy New Year this is your
0:39
world happy happy New Year this is your
0:39
world happy happy New Year this is your host
0:40
host
0:40
host Rodrigo and this is the Dapper in action
0:44
Rodrigo and this is the Dapper in action
0:44
Rodrigo and this is the Dapper in action series we've gone
0:46
series we've gone
0:46
series we've gone from you know service to service
0:49
from you know service to service
0:49
from you know service to service invocation State
0:51
invocation State
0:51
invocation State Management uh pops
0:53
Management uh pops
0:53
Management uh pops up and now we're going to see
0:58
up and now we're going to see
0:58
up and now we're going to see bindings which are fantastic components
1:01
bindings which are fantastic components
1:01
bindings which are fantastic components that we can use for connecting our
1:04
that we can use for connecting our
1:04
that we can use for connecting our applications and services from
1:07
applications and services from
1:07
applications and services from external or two external applications or
1:10
external or two external applications or
1:10
external or two external applications or platforms and receive input from other
1:14
platforms and receive input from other
1:14
platforms and receive input from other applications or systems or
1:17
applications or systems or
1:17
applications or systems or platforms all right so let's Jump Right
1:20
platforms all right so let's Jump Right
1:20
platforms all right so let's Jump Right In I'm actually looking forward to
1:26
In I'm actually looking forward to
1:26
In I'm actually looking forward to this session because bindings are
1:29
this session because bindings are
1:29
this session because bindings are powerful
1:30
powerful
1:30
powerful actually if you've used Asher functions
1:33
actually if you've used Asher functions
1:33
actually if you've used Asher functions in the past bindings are
1:37
in the past bindings are
1:37
in the past bindings are somehow similar to what we do in aure
1:41
somehow similar to what we do in aure
1:41
somehow similar to what we do in aure functions because we have some specific
1:45
functions because we have some specific
1:45
functions because we have some specific binding components that we can use and
1:47
binding components that we can use and
1:47
binding components that we can use and we can reference in our
1:50
we can reference in our
1:51
we can reference in our applications however in the dopper way
1:53
applications however in the dopper way
1:53
applications however in the dopper way we don't need to add a you know a
1:56
we don't need to add a you know a
1:56
we don't need to add a you know a specific SDK we don't need to add a
1:58
specific SDK we don't need to add a
1:58
specific SDK we don't need to add a reference to a specific nug pack package
2:01
reference to a specific nug pack package
2:01
reference to a specific nug pack package we just configure our jaml
2:05
we just configure our jaml
2:05
we just configure our jaml files and use the resources PA FL when
2:10
files and use the resources PA FL when
2:10
files and use the resources PA FL when using Dapper and running the side car
2:14
using Dapper and running the side car
2:14
using Dapper and running the side car and that is actually
2:16
and that is actually
2:16
and that is actually glorious right so bindings is just a way
2:22
glorious right so bindings is just a way
2:22
glorious right so bindings is just a way or is uh um is the way that Dapper uses
2:26
or is uh um is the way that Dapper uses
2:27
or is uh um is the way that Dapper uses for connecting to external applications
2:29
for connecting to external applications
2:29
for connecting to external applications and systems so we have both input
2:33
and systems so we have both input
2:33
and systems so we have both input bindings and output bindings so of
2:36
bindings and output bindings so of
2:36
bindings and output bindings so of course with input bindings we receive
2:39
course with input bindings we receive
2:39
course with input bindings we receive the data we receive the stim stimuli
2:44
the data we receive the stim stimuli
2:44
the data we receive the stim stimuli right um somehow we want to connect to
2:47
right um somehow we want to connect to
2:47
right um somehow we want to connect to an external application and we want to
2:50
an external application and we want to
2:50
an external application and we want to receive the data from that application
2:52
receive the data from that application
2:52
receive the data from that application let's say that you're interested in I
2:55
let's say that you're interested in I
2:55
let's say that you're interested in I don't know maybe when somebody or some
2:58
don't know maybe when somebody or some
2:59
don't know maybe when somebody or some application in inserts a an item in an
3:01
application in inserts a an item in an
3:01
application in inserts a an item in an aser
3:03
aser
3:03
aser queue and you want your application or
3:05
queue and you want your application or
3:05
queue and you want your application or service to react
3:08
service to react
3:08
service to react immediately you can use an output I'm
3:11
immediately you can use an output I'm
3:11
immediately you can use an output I'm sorry an input
3:12
sorry an input
3:12
sorry an input binding that connects to that Asher cues
3:16
binding that connects to that Asher cues
3:16
binding that connects to that Asher cues resource and then you receive the item
3:20
resource and then you receive the item
3:20
resource and then you receive the item automatically this is
3:22
automatically this is
3:22
automatically this is fantastic
3:24
fantastic
3:24
fantastic fantastic okay so that's input bindings
3:26
fantastic okay so that's input bindings
3:26
fantastic okay so that's input bindings and of course output bindings just uh it
3:30
and of course output bindings just uh it
3:30
and of course output bindings just uh it the name
3:31
the name
3:31
the name implies uh we use those output bindings
3:35
implies uh we use those output bindings
3:35
implies uh we use those output bindings for sending data
3:37
for sending data
3:37
for sending data out from our application to the external
3:40
out from our application to the external
3:40
out from our application to the external application to the external system let's
3:43
application to the external system let's
3:43
application to the external system let's say that you want to insert data into I
3:46
say that you want to insert data into I
3:46
say that you want to insert data into I don't know Asher Cosmos DV or postgress
3:50
don't know Asher Cosmos DV or postgress
3:50
don't know Asher Cosmos DV or postgress or some kind of database or maybe you
3:53
or some kind of database or maybe you
3:53
or some kind of database or maybe you want to trigger another application then
3:56
want to trigger another application then
3:56
want to trigger another application then you can use this right that's why I'm
3:59
you can use this right that's why I'm
3:59
you can use this right that's why I'm telling you friends those
4:01
telling you friends those
4:01
telling you friends those bindings those dopper bindings are
4:04
bindings those dopper bindings are
4:04
bindings those dopper bindings are similar to the ones that we use in
4:06
similar to the ones that we use in
4:06
similar to the ones that we use in natural
4:07
natural
4:07
natural functions and yeah similar to the ones
4:10
functions and yeah similar to the ones
4:10
functions and yeah similar to the ones that we use uh
4:12
that we use uh
4:12
that we use uh in uh you know as logic apps if you
4:17
in uh you know as logic apps if you
4:17
in uh you know as logic apps if you happen to be a ner
4:19
happen to be a ner
4:19
happen to be a ner developer then I'm sure you know what
4:22
developer then I'm sure you know what
4:22
developer then I'm sure you know what I'm talking about you just connect
4:24
I'm talking about you just connect
4:24
I'm talking about you just connect things okay so bindings are marvelous
4:30
things okay so bindings are marvelous
4:30
things okay so bindings are marvelous and they allow your application to
4:33
and they allow your application to
4:33
and they allow your application to connect to external applications and
4:35
connect to external applications and
4:35
connect to external applications and systems just as I've mentioned
4:38
systems just as I've mentioned
4:38
systems just as I've mentioned before yes Kenan you're right my friend
4:42
before yes Kenan you're right my friend
4:42
before yes Kenan you're right my friend and this is great because I think this
4:45
and this is great because I think this
4:45
and this is great because I think this is the most important one keep your code
4:48
is the most important one keep your code
4:48
is the most important one keep your code free from sdks or libraries because of
4:51
free from sdks or libraries because of
4:51
free from sdks or libraries because of course we're developers right and
4:53
course we're developers right and
4:53
course we're developers right and software
4:54
software
4:54
software Architects we know how to connect to
4:57
Architects we know how to connect to
4:57
Architects we know how to connect to external applications or receive data
4:59
external applications or receive data
5:00
external applications or receive data from other applications the thing is
5:02
from other applications the thing is
5:02
from other applications the thing is that if you do that you know the
5:05
that if you do that you know the
5:05
that if you do that you know the programmatic way you need to add the
5:08
programmatic way you need to add the
5:08
programmatic way you need to add the nuget package you need to add a specific
5:10
nuget package you need to add a specific
5:10
nuget package you need to add a specific library and then you need to understand
5:13
library and then you need to understand
5:13
library and then you need to understand the API that you're
5:16
the API that you're
5:16
the API that you're calling and sometimes you know the code
5:20
calling and sometimes you know the code
5:20
calling and sometimes you know the code base gets kind of messy
5:23
base gets kind of messy
5:23
base gets kind of messy because you are adding a lot of
5:26
because you are adding a lot of
5:26
because you are adding a lot of different dependencies and
5:28
different dependencies and
5:28
different dependencies and references right
5:31
and I think this is great I think that's
5:34
and I think this is great I think that's
5:34
and I think this is great I think that's why bindings are powerful because you
5:36
why bindings are powerful because you
5:37
why bindings are powerful because you don't need to add anything else you just
5:38
don't need to add anything else you just
5:38
don't need to add anything else you just need to use the dopper side car right so
5:44
need to use the dopper side car right so
5:44
need to use the dopper side car right so this is great
5:45
this is great
5:45
this is great and another fantastic benefit of using
5:51
and another fantastic benefit of using
5:51
and another fantastic benefit of using bindings is that you can you know switch
5:55
bindings is that you can you know switch
5:55
bindings is that you can you know switch from one type of binding to another
5:58
from one type of binding to another
5:58
from one type of binding to another without affecting your application you
6:00
without affecting your application you
6:00
without affecting your application you don't need to modify the code you know
6:03
don't need to modify the code you know
6:04
don't need to modify the code you know the you know you don't need to modify
6:05
the you know you don't need to modify
6:05
the you know you don't need to modify your
6:06
your
6:06
your logic you just need to have another Jam
6:09
logic you just need to have another Jam
6:09
logic you just need to have another Jam file a
6:11
file a
6:11
file a component uh
6:14
component uh
6:14
component uh manifest and I think that's it that's it
6:17
manifest and I think that's it that's it
6:17
manifest and I think that's it that's it I'm going to show you that in this uh
6:20
I'm going to show you that in this uh
6:20
I'm going to show you that in this uh session okay so a lot of benefits when
6:24
session okay so a lot of benefits when
6:24
session okay so a lot of benefits when we use bindings and actually you know
6:26
we use bindings and actually you know
6:26
we use bindings and actually you know what let me show you
6:30
what let me show you
6:30
what let me show you the official daer
6:32
the official daer
6:32
the official daer documentation so you can see here on the
6:36
documentation so you can see here on the
6:36
documentation so you can see here on the screen that this is the bindings uh
6:41
screen that this is the bindings uh
6:41
screen that this is the bindings uh documentation and we have dozens of
6:44
documentation and we have dozens of
6:44
documentation and we have dozens of different uh concrete implementations
6:47
different uh concrete implementations
6:48
different uh concrete implementations for
6:48
for
6:49
for bindings uh here in
6:51
bindings uh here in
6:51
bindings uh here in Dapper right so you can see CFA you can
6:55
Dapper right so you can see CFA you can
6:55
Dapper right so you can see CFA you can see local storage kubernetes events post
6:59
see local storage kubernetes events post
6:59
see local storage kubernetes events post Mark RAB and Q
7:02
Mark RAB and Q
7:02
Mark RAB and Q redis uh also components for Alibaba
7:06
redis uh also components for Alibaba
7:06
redis uh also components for Alibaba Cloud Amazon web services Cloud flare
7:09
Cloud Amazon web services Cloud flare
7:09
Cloud Amazon web services Cloud flare Cloud Google PL Cloud platform uh
7:12
Cloud Google PL Cloud platform uh
7:12
Cloud Google PL Cloud platform uh Microsoft aser and so on and so on right
7:15
Microsoft aser and so on and so on right
7:15
Microsoft aser and so on and so on right we have dozens so you have to be aware
7:18
we have dozens so you have to be aware
7:18
we have dozens so you have to be aware friends that some bindings I mean some
7:23
friends that some bindings I mean some
7:23
friends that some bindings I mean some components support only input as an
7:27
components support only input as an
7:27
components support only input as an input binding they behave as an input
7:29
input binding they behave as an input
7:29
input binding they behave as an input binding and some others as an output
7:33
binding and some others as an output
7:33
binding and some others as an output binding and some others as both you can
7:36
binding and some others as both you can
7:36
binding and some others as both you can see here for instance this Rabbid and Q
7:40
see here for instance this Rabbid and Q
7:40
see here for instance this Rabbid and Q component right it can
7:43
component right it can
7:44
component right it can behave as an input binding and an output
7:47
behave as an input binding and an output
7:47
behave as an input binding and an output binding okay so very very great stuff
7:52
binding okay so very very great stuff
7:52
binding okay so very very great stuff and of course this list is
7:55
and of course this list is
7:55
and of course this list is growing
7:57
growing
7:57
growing uh continuously right so you you need to
8:02
uh continuously right so you you need to
8:02
uh continuously right so you you need to you know you need to come here to the
8:04
you know you need to come here to the
8:04
you know you need to come here to the official Dapper documentation and uh
8:08
official Dapper documentation and uh
8:08
official Dapper documentation and uh take a look at the latest and greatest
8:11
take a look at the latest and greatest
8:11
take a look at the latest and greatest list of
8:12
list of
8:12
list of bindings okay so this is
8:15
bindings okay so this is
8:16
bindings okay so this is fantastic and of course the only need
8:19
fantastic and of course the only need
8:19
fantastic and of course the only need the only thing that you need to specify
8:21
the only thing that you need to specify
8:21
the only thing that you need to specify is the this component
8:24
is the this component
8:24
is the this component manifest just as any other component in
8:28
manifest just as any other component in
8:28
manifest just as any other component in dapper we have API version kind metadata
8:32
dapper we have API version kind metadata
8:32
dapper we have API version kind metadata in Spec right and that is it you need to
8:38
in Spec right and that is it you need to
8:38
in Spec right and that is it you need to use this prefix here in type bindings
8:41
use this prefix here in type bindings
8:41
use this prefix here in type bindings and then the concrete implementation
8:43
and then the concrete implementation
8:43
and then the concrete implementation that you want to use and this is
8:46
that you want to use and this is
8:46
that you want to use and this is important the name the technical name
8:49
important the name the technical name
8:49
important the name the technical name that is inside the
8:50
that is inside the
8:50
that is inside the metadata element because that's the one
8:54
metadata element because that's the one
8:54
metadata element because that's the one that is going to be used when you want
8:56
that is going to be used when you want
8:56
that is going to be used when you want to react to the input binding
9:00
to react to the input binding
9:00
to react to the input binding I'm going to show you that in a
9:02
I'm going to show you that in a
9:02
I'm going to show you that in a minute okay so you can see that the
9:05
minute okay so you can see that the
9:05
minute okay so you can see that the schema is quite um easy to grasp and of
9:10
schema is quite um easy to grasp and of
9:10
schema is quite um easy to grasp and of course uh there are other uh things that
9:14
course uh there are other uh things that
9:14
course uh there are other uh things that you can
9:15
you can
9:15
you can specify but this is
9:17
specify but this is
9:17
specify but this is actually
9:19
actually
9:19
actually the the basic component schema for
9:23
the the basic component schema for
9:23
the the basic component schema for bindings right and inside this metadata
9:28
bindings right and inside this metadata
9:28
bindings right and inside this metadata of course the spec metadata
9:30
of course the spec metadata
9:30
of course the spec metadata there is the the place where you can
9:33
there is the the place where you can
9:33
there is the the place where you can specify all the connection strings and
9:35
specify all the connection strings and
9:35
specify all the connection strings and all the concrete and specific
9:38
all the concrete and specific
9:38
all the concrete and specific configuration and settings for The
9:40
configuration and settings for The
9:40
configuration and settings for The Binding that you want to use make
9:44
Binding that you want to use make
9:44
Binding that you want to use make sense so let's go ahead friends and of
9:49
sense so let's go ahead friends and of
9:49
sense so let's go ahead friends and of course we want to create a new net
9:53
course we want to create a new net
9:53
course we want to create a new net application because I happen to be a net
9:56
application because I happen to be a net
9:56
application because I happen to be a net developer since so many years ago I'm
9:59
developer since so many years ago I'm
9:59
developer since so many years ago I'm going to use net today and if you w
10:04
going to use net today and if you w
10:04
going to use net today and if you w to invoke the bindings API that the
10:08
to invoke the bindings API that the
10:08
to invoke the bindings API that the dopper side car exposes then you can go
10:10
dopper side car exposes then you can go
10:10
dopper side car exposes then you can go ahead and send a request to
10:14
ahead and send a request to
10:14
ahead and send a request to v1.0 forward slash bindings but I think
10:19
v1.0 forward slash bindings but I think
10:19
v1.0 forward slash bindings but I think as I've mentioned before in other
10:21
as I've mentioned before in other
10:21
as I've mentioned before in other episodes that I don't think this is a
10:24
episodes that I don't think this is a
10:24
episodes that I don't think this is a very real world
10:26
very real world
10:26
very real world situation you know calling the side card
10:28
situation you know calling the side card
10:28
situation you know calling the side card directly
10:30
directly
10:30
directly most of the time you want to use an SDK
10:33
most of the time you want to use an SDK
10:33
most of the time you want to use an SDK and that's why I'm going to use net
10:35
and that's why I'm going to use net
10:35
and that's why I'm going to use net today so we have Dipper in
10:38
today so we have Dipper in
10:38
today so we have Dipper in action right so let's create uh a new
10:43
action right so let's create uh a new
10:43
action right so let's create uh a new folder let's make it I don't
10:46
folder let's make it I don't
10:46
folder let's make it I don't know
10:48
know
10:48
know bindings right because I don't have you
10:53
bindings right because I don't have you
10:53
bindings right because I don't have you know uh great the greatest imagination
10:56
know uh great the greatest imagination
10:56
know uh great the greatest imagination for names right now so bindings
10:59
for names right now so bindings
10:59
for names right now so bindings bindings and then net new web API and
11:03
bindings and then net new web API and
11:03
bindings and then net new web API and let's name
11:04
let's name
11:04
let's name this um I don't know bindings demo is
11:09
this um I don't know bindings demo is
11:09
this um I don't know bindings demo is that right bindings demo and I want to
11:13
that right bindings demo and I want to
11:13
that right bindings demo and I want to use controllers I'm not a minimal web
11:17
use controllers I'm not a minimal web
11:17
use controllers I'm not a minimal web API kind of
11:20
API kind of
11:20
API kind of person um and I think that's because at
11:25
person um and I think that's because at
11:25
person um and I think that's because at the end of the day you are just adding
11:28
the end of the day you are just adding
11:28
the end of the day you are just adding and adding and adding tones of different
11:31
and adding and adding tones of different
11:31
and adding and adding tones of different lines of code in the same code file and
11:34
lines of code in the same code file and
11:34
lines of code in the same code file and I don't think that is nice okay so use
11:38
I don't think that is nice okay so use
11:38
I don't think that is nice okay so use controllers finding demo I'm using this
11:42
controllers finding demo I'm using this
11:42
controllers finding demo I'm using this web API template very easy things to
11:46
web API template very easy things to
11:46
web API template very easy things to grasp right
11:48
grasp right
11:48
grasp right now nothing very fancy here and now
11:52
now nothing very fancy here and now
11:52
now nothing very fancy here and now let's open up bindings demo the Cs Pro
11:57
let's open up bindings demo the Cs Pro
11:57
let's open up bindings demo the Cs Pro File
11:59
File
12:00
File and hold on please I need that uh a
12:04
and hold on please I need that uh a
12:04
and hold on please I need that uh a solution since I'm sorry about that
12:08
solution since I'm sorry about that
12:08
solution since I'm sorry about that what's going on let's try
12:12
what's going on let's try
12:12
what's going on let's try again so doer
12:15
again so doer
12:15
again so doer inaction bindings okay so I want to just
12:20
inaction bindings okay so I want to just
12:20
inaction bindings okay so I want to just create you know a solution net new
12:22
create you know a solution net new
12:22
create you know a solution net new solution and Net Solution add this
12:27
solution and Net Solution add this
12:27
solution and Net Solution add this uh um
12:30
uh um
12:30
uh um bindings demo actually bindings
12:34
bindings demo actually bindings
12:34
bindings demo actually bindings demo okay bindings do solution and this
12:38
demo okay bindings do solution and this
12:38
demo okay bindings do solution and this is this is because I want to use
12:41
is this is because I want to use
12:41
is this is because I want to use the um you know the real Visual Studio
12:46
the um you know the real Visual Studio
12:46
the um you know the real Visual Studio instead of the preview version that I
12:48
instead of the preview version that I
12:48
instead of the preview version that I have that happen to be connected to the
12:51
have that happen to be connected to the
12:51
have that happen to be connected to the CH Pro CHS Pro files in my computer
12:55
CH Pro CHS Pro files in my computer
12:55
CH Pro CHS Pro files in my computer anyway so let's add a new get pack
12:59
anyway so let's add a new get pack
12:59
anyway so let's add a new get pack package and I'm sure you know what I'm
13:02
package and I'm sure you know what I'm
13:02
package and I'm sure you know what I'm talking about if you've been watching
13:04
talking about if you've been watching
13:04
talking about if you've been watching the other episodes I need to add the
13:06
the other episodes I need to add the
13:06
the other episodes I need to add the doer. asp.net
13:09
doer. asp.net
13:09
doer. asp.net core nugget
13:11
core nugget
13:11
core nugget package since this is the SDK for
13:14
package since this is the SDK for
13:14
package since this is the SDK for asp.net core right so I'm going to use
13:18
asp.net core right so I'm going to use
13:18
asp.net core right so I'm going to use this and remember that we need to add
13:22
this and remember that we need to add
13:22
this and remember that we need to add Dapper add
13:24
Dapper add
13:24
Dapper add daer just like this and of course you
13:28
daer just like this and of course you
13:28
daer just like this and of course you can use Builder
13:29
can use Builder
13:29
can use Builder services.
13:31
services.
13:31
services. ader when I'm using this um you
13:35
ader when I'm using this um you
13:35
ader when I'm using this um you know this um nice syntax that we can use
13:40
know this um nice syntax that we can use
13:40
know this um nice syntax that we can use here okay fantastic
13:43
here okay fantastic
13:43
here okay fantastic now let's select an input binding for
13:48
now let's select an input binding for
13:48
now let's select an input binding for this
13:49
this
13:49
this demo so let's go back here
13:53
demo so let's go back here
13:53
demo so let's go back here and there are dozens of different output
13:56
and there are dozens of different output
13:56
and there are dozens of different output bindings and input bindings
13:59
bindings and input bindings
13:59
bindings and input bindings so in this case let's use the cron input
14:04
so in this case let's use the cron input
14:04
so in this case let's use the cron input findinding so cron is similar to you
14:08
findinding so cron is similar to you
14:09
findinding so cron is similar to you know maybe you have this NeverEnding
14:12
know maybe you have this NeverEnding
14:12
know maybe you have this NeverEnding Loop in your code and then you are I
14:15
Loop in your code and then you are I
14:15
Loop in your code and then you are I don't know you are executing some kind
14:19
don't know you are executing some kind
14:19
don't know you are executing some kind of a some kind of logic or maybe you're
14:23
of a some kind of logic or maybe you're
14:23
of a some kind of logic or maybe you're using some other nugget package for
14:26
using some other nugget package for
14:26
using some other nugget package for doing this such as quartz
14:30
doing this such as quartz
14:30
doing this such as quartz or maybe you're using background uh
14:33
or maybe you're using background uh
14:33
or maybe you're using background uh services or so on it doesn't matter you
14:36
services or so on it doesn't matter you
14:36
services or so on it doesn't matter you know the drill Chown components or
14:39
know the drill Chown components or
14:39
know the drill Chown components or chronic uh this kind of uh components or
14:42
chronic uh this kind of uh components or
14:42
chronic uh this kind of uh components or objects allows you
14:44
objects allows you
14:44
objects allows you to uh run code in specific time schedule
14:50
to uh run code in specific time schedule
14:50
to uh run code in specific time schedule right that is actually
14:52
right that is actually
14:52
right that is actually it so I'm gonna copy this this is a
14:55
it so I'm gonna copy this this is a
14:55
it so I'm gonna copy this this is a component format API version kind
14:57
component format API version kind
14:57
component format API version kind metadata and spec
15:00
metadata and spec
15:00
metadata and spec this is great and it supports this
15:04
this is great and it supports this
15:04
this is great and it supports this schedule
15:06
schedule
15:06
schedule metadata attribute in here you you have
15:10
metadata attribute in here you you have
15:10
metadata attribute in here you you have to specify the Chron
15:12
to specify the Chron
15:12
to specify the Chron expression and Direction value input I
15:16
expression and Direction value input I
15:16
expression and Direction value input I wonder if it no it's uh just input
15:19
wonder if it no it's uh just input
15:19
wonder if it no it's uh just input binding this is funny right direction
15:24
binding this is funny right direction
15:24
binding this is funny right direction input uh but it only supports input
15:27
input uh but it only supports input
15:27
input uh but it only supports input binding so I'm not sure
15:29
binding so I'm not sure
15:29
binding so I'm not sure anyway Direction you can see here this
15:32
anyway Direction you can see here this
15:32
anyway Direction you can see here this is not required it makes sense because
15:36
is not required it makes sense because
15:36
is not required it makes sense because it always it's going to be you know
15:40
it always it's going to be you know
15:40
it always it's going to be you know input anyway let's copy this and let's
15:44
input anyway let's copy this and let's
15:44
input anyway let's copy this and let's go back to visual
15:46
go back to visual
15:46
go back to visual studio and let's create a
15:49
studio and let's create a
15:49
studio and let's create a new let's create or right here maybe I
15:52
new let's create or right here maybe I
15:52
new let's create or right here maybe I want to create another folder here yeah
15:57
want to create another folder here yeah
15:57
want to create another folder here yeah let's create another folder
16:00
let's create another folder
16:00
let's create another folder components and let's open up visual
16:02
components and let's open up visual
16:02
components and let's open up visual studio code because I just want to have
16:06
studio code because I just want to have
16:06
studio code because I just want to have a nice text editor right now so let's
16:10
a nice text editor right now so let's
16:10
a nice text editor right now so let's name it crown. jaml and I'm going to
16:14
name it crown. jaml and I'm going to
16:14
name it crown. jaml and I'm going to paste the
16:17
paste the
16:17
paste the component uh specification that I copied
16:19
component uh specification that I copied
16:19
component uh specification that I copied from the Jer
16:22
from the Jer
16:23
from the Jer documentation so API version is fine
16:26
documentation so API version is fine
16:26
documentation so API version is fine kind component metadata this is
16:28
kind component metadata this is
16:28
kind component metadata this is important
16:30
important
16:30
important so let's name it
16:31
so let's name it
16:31
so let's name it Chron right it could be
16:35
Chron right it could be
16:35
Chron right it could be myON or whatever the thing is that this
16:38
myON or whatever the thing is that this
16:38
myON or whatever the thing is that this name is going to be used in the
16:40
name is going to be used in the
16:40
name is going to be used in the application you have to be aware of this
16:43
application you have to be aware of this
16:43
application you have to be aware of this name okay so let's name it
16:46
name okay so let's name it
16:46
name okay so let's name it Chron the type is bindings do
16:49
Chron the type is bindings do
16:50
Chron the type is bindings do Chron this is fine version V1 is fine
16:53
Chron this is fine version V1 is fine
16:53
Chron this is fine version V1 is fine schedule this is a very nice way of
16:57
schedule this is a very nice way of
16:57
schedule this is a very nice way of expressing Cron
16:59
expressing Cron
17:00
expressing Cron uh elements I think every 15
17:04
uh elements I think every 15
17:04
uh elements I think every 15 minutes right so I wonder if I can do
17:07
minutes right so I wonder if I can do
17:07
minutes right so I wonder if I can do this every five
17:11
this every five
17:11
this every five seconds of of course I'm just uh
17:13
seconds of of course I'm just uh
17:13
seconds of of course I'm just uh guessing right now we have to see the
17:16
guessing right now we have to see the
17:16
guessing right now we have to see the documentation for this chrome
17:18
documentation for this chrome
17:19
documentation for this chrome component uh and Direction input this is
17:22
component uh and Direction input this is
17:22
component uh and Direction input this is not required so we can we can go ahead
17:26
not required so we can we can go ahead
17:26
not required so we can we can go ahead and save this I think this is on correct
17:29
and save this I think this is on correct
17:29
and save this I think this is on correct and valid Chron expression and chrome
17:34
and valid Chron expression and chrome
17:34
and valid Chron expression and chrome component so let's go back to visual
17:38
component so let's go back to visual
17:38
component so let's go back to visual studio that is right here in this other
17:42
monitor and remember that I used cron as
17:46
monitor and remember that I used cron as
17:46
monitor and remember that I used cron as a name so you need to
17:48
a name so you need to
17:48
a name so you need to expose an endpoint with the same name
17:53
expose an endpoint with the same name
17:53
expose an endpoint with the same name that's the magic for input
17:56
that's the magic for input
17:56
that's the magic for input bindings so for instance I'm going to
17:59
bindings so for instance I'm going to
17:59
bindings so for instance I'm going to use
18:00
use
18:00
use um this
18:02
um this
18:02
um this file and let's name it my bindings
18:08
file and let's name it my bindings
18:08
file and let's name it my bindings controller and let's remove everything
18:12
controller and let's remove everything
18:12
controller and let's remove everything my bindings controller
18:15
my bindings controller
18:15
my bindings controller and let's inject dopper client dopper
18:19
and let's inject dopper client dopper
18:19
and let's inject dopper client dopper client and I need to expose that Chron
18:23
client and I need to expose that Chron
18:23
client and I need to expose that Chron endpoint so public void on
18:27
endpoint so public void on
18:27
endpoint so public void on Chown and HTTP post this is important it
18:31
Chown and HTTP post this is important it
18:31
Chown and HTTP post this is important it has to be a
18:32
has to be a
18:32
has to be a post
18:34
post
18:34
post endpoint so the name is going to be
18:38
endpoint so the name is going to be
18:38
endpoint so the name is going to be cron okay this is the
18:41
cron okay this is the
18:41
cron okay this is the name that I'm using here okay
18:46
name that I'm using here okay
18:46
name that I'm using here okay crown and I think that's it let's inject
18:50
crown and I think that's it let's inject
18:50
crown and I think that's it let's inject I loger of my bindings controller let's
18:53
I loger of my bindings controller let's
18:54
I loger of my bindings controller let's name it logger and let's use logger for
18:59
name it logger and let's use logger for
18:59
name it logger and let's use logger for you know what for logging right let's
19:02
you know what for logging right let's
19:02
you know what for logging right let's use the logger for logging friends log
19:06
use the logger for logging friends log
19:06
use the logger for logging friends log information and I don't
19:09
information and I don't
19:09
information and I don't know
19:11
know
19:11
know Chrome job
19:13
Chrome job
19:13
Chrome job fire thank you
19:15
fire thank you
19:16
fire thank you co-pilot Tron job
19:19
co-pilot Tron job
19:19
co-pilot Tron job fired I think that is it you can see
19:22
fired I think that is it you can see
19:22
fired I think that is it you can see that this is very quite simple
19:25
that this is very quite simple
19:25
that this is very quite simple right
19:27
right
19:27
right fantastic so looks like this is going to
19:31
fantastic so looks like this is going to
19:31
fantastic so looks like this is going to work I think so let's go back
19:35
work I think so let's go back
19:35
work I think so let's go back here let's go back to bindings demo and
19:40
here let's go back to bindings demo and
19:40
here let's go back to bindings demo and you know the drill right tap around you
19:43
you know the drill right tap around you
19:43
you know the drill right tap around you need to execute the side car alongside
19:47
need to execute the side car alongside
19:47
need to execute the side car alongside your
19:49
your
19:49
your application so da on let's use app ID
19:53
application so da on let's use app ID
19:53
application so da on let's use app ID such as myON or my app or whatever right
19:57
such as myON or my app or whatever right
19:57
such as myON or my app or whatever right doesn't matter my
19:59
doesn't matter my
19:59
doesn't matter my and
20:01
and
20:01
and Dapper um HTTP
20:05
Dapper um HTTP
20:05
Dapper um HTTP Port let's say
20:07
Port let's say
20:07
Port let's say 55,000 and our Port is going to be
20:14
5500 and of course you have to be sure
20:18
5500 and of course you have to be sure
20:18
5500 and of course you have to be sure that your application is running on that
20:20
that your application is running on that
20:20
that your application is running on that particular port and this is the magic
20:23
particular port and this is the magic
20:23
particular port and this is the magic friends research path you need to
20:27
friends research path you need to
20:27
friends research path you need to specify the direct
20:29
specify the direct
20:29
specify the direct where all your components are
20:31
where all your components are
20:31
where all your components are located okay so in this case
20:36
located okay so in this case
20:36
located okay so in this case is in this
20:40
is in this
20:40
is in this components folder right that is um in a
20:45
components folder right that is um in a
20:45
components folder right that is um in a previous uh
20:48
previous uh
20:48
previous uh level so I think that's it and then
20:51
level so I think that's it and then
20:51
level so I think that's it and then double dash. net run and then let's pass
20:55
double dash. net run and then let's pass
20:56
double dash. net run and then let's pass URLs because I don't I just want to have
20:58
URLs because I don't I just want to have
20:58
URLs because I don't I just want to have control
21:00
control
21:00
control over the port for this uh net
21:04
over the port for this uh net
21:04
over the port for this uh net application
21:06
application
21:06
application so
21:08
so
21:08
so 5500 this has to match with this
21:11
5500 this has to match with this
21:11
5500 this has to match with this one right and I think that's it let's
21:16
one right and I think that's it let's
21:16
one right and I think that's it let's execute this the side car is running and
21:21
execute this the side car is running and
21:21
execute this the side car is running and also the application is
21:23
also the application is
21:23
also the application is running
21:26
running
21:26
running and Crown job fired
21:30
and Crown job fired
21:30
and Crown job fired fantastic crun of fire again and 5
21:34
fantastic crun of fire again and 5
21:34
fantastic crun of fire again and 5 seconds after the fact another Cron job
21:37
seconds after the fact another Cron job
21:37
seconds after the fact another Cron job fired and so on right very easy thing to
21:42
fired and so on right very easy thing to
21:42
fired and so on right very easy thing to grasp so I think this is perfect if you
21:45
grasp so I think this is perfect if you
21:45
grasp so I think this is perfect if you want to replace or maybe you are looking
21:48
want to replace or maybe you are looking
21:48
want to replace or maybe you are looking for some kind of
21:51
for some kind of
21:51
for some kind of scheduler and you don't want to use
21:54
scheduler and you don't want to use
21:54
scheduler and you don't want to use quartz
21:55
quartz
21:55
quartz or you don't want to manage
21:59
or you don't want to manage
21:59
or you don't want to manage uh your own Chron expressions and the
22:01
uh your own Chron expressions and the
22:01
uh your own Chron expressions and the logic you just configure the input
22:04
logic you just configure the input
22:04
logic you just configure the input binding and that's it right and of
22:08
binding and that's it right and of
22:08
binding and that's it right and of course I'm using
22:10
course I'm using
22:10
course I'm using Crown uh input binding as a demo but I
22:14
Crown uh input binding as a demo but I
22:14
Crown uh input binding as a demo but I truly believe this is quite useful for a
22:18
truly believe this is quite useful for a
22:18
truly believe this is quite useful for a lot of scenarios right so this is firing
22:22
lot of scenarios right so this is firing
22:22
lot of scenarios right so this is firing I'm using this input
22:24
I'm using this input
22:25
I'm using this input binding no SDK no additional libraries
22:29
binding no SDK no additional libraries
22:29
binding no SDK no additional libraries this is
22:31
this is
22:31
this is fantastic so what happens
22:34
fantastic so what happens
22:34
fantastic so what happens with um output
22:37
with um output
22:37
with um output bindings so this is the requirement for
22:40
bindings so this is the requirement for
22:40
bindings so this is the requirement for input bindings exposing an endpoint with
22:43
input bindings exposing an endpoint with
22:43
input bindings exposing an endpoint with the same name as the technical
22:47
the same name as the technical
22:47
the same name as the technical name that your component
22:49
name that your component
22:49
name that your component has and I think that's it actually you
22:52
has and I think that's it actually you
22:52
has and I think that's it actually you can replace the root you can change it
22:56
can replace the root you can change it
22:56
can replace the root you can change it but this is actually the default cavior
22:59
but this is actually the default cavior
22:59
but this is actually the default cavior okay so what about output
23:03
okay so what about output
23:03
okay so what about output bindings well output bindings
23:08
bindings well output bindings
23:08
bindings well output bindings are quite similar but also different
23:11
are quite similar but also different
23:11
are quite similar but also different because you need to use the Dapper side
23:13
because you need to use the Dapper side
23:13
because you need to use the Dapper side car somehow to invoke The outo
23:18
car somehow to invoke The outo
23:18
car somehow to invoke The outo Binding because at the end of the day
23:21
Binding because at the end of the day
23:21
Binding because at the end of the day you can have multiple output bindings in
23:24
you can have multiple output bindings in
23:24
you can have multiple output bindings in the same
23:25
the same
23:25
the same application you know execute you can
23:27
application you know execute you can
23:28
application you know execute you can execute
23:29
execute
23:29
execute output binding A and B and C uh when
23:32
output binding A and B and C uh when
23:32
output binding A and B and C uh when something happens in your
23:36
something happens in your
23:36
something happens in your solution so let's go back to the Dapper
23:39
solution so let's go back to the Dapper
23:39
solution so let's go back to the Dapper documentation just to see what's going
23:41
documentation just to see what's going
23:41
documentation just to see what's going on here crown and
23:44
on here crown and
23:44
on here crown and then let's
23:47
then let's
23:47
then let's see what kind of output bindings we
23:51
see what kind of output bindings we
23:51
see what kind of output bindings we have um HTTP output
23:55
have um HTTP output
23:55
have um HTTP output findinding hm that's interesting
23:59
findinding hm that's interesting
23:59
findinding hm that's interesting thing you know for uh executing or
24:05
thing you know for uh executing or
24:05
thing you know for uh executing or calling uh
24:07
calling uh
24:07
calling uh external HTTP services like I don't know
24:11
external HTTP services like I don't know
24:11
external HTTP services like I don't know like some kind of web
24:13
like some kind of web
24:13
like some kind of web hook um I don't have CFA I don't have q
24:18
hook um I don't have CFA I don't have q
24:18
hook um I don't have CFA I don't have q q of mq in this particular machine we
24:20
q of mq in this particular machine we
24:20
q of mq in this particular machine we can use redis or rabbitmq but those you
24:23
can use redis or rabbitmq but those you
24:23
can use redis or rabbitmq but those you know are
24:26
know are
24:26
know are boring all the time using rabbit and Q
24:29
boring all the time using rabbit and Q
24:29
boring all the time using rabbit and Q and reddis let's use something
24:32
and reddis let's use something
24:32
and reddis let's use something else AWS this is
24:35
else AWS this is
24:36
else AWS this is fantastic um but I believe I need to
24:39
fantastic um but I believe I need to
24:39
fantastic um but I believe I need to deploy and provision some
24:42
deploy and provision some
24:42
deploy and provision some resources and I don't want to waste time
24:44
resources and I don't want to waste time
24:45
resources and I don't want to waste time of
24:46
of
24:46
of that uh gcp as well Cloud
24:50
that uh gcp as well Cloud
24:50
that uh gcp as well Cloud flare I use a lot of micros fasher
24:54
flare I use a lot of micros fasher
24:54
flare I use a lot of micros fasher resources so we have blob storage
24:59
resources so we have blob storage
24:59
resources so we have blob storage uh Cosmos DB this is great if you want
25:01
uh Cosmos DB this is great if you want
25:01
uh Cosmos DB this is great if you want to you know insert some documents or
25:05
to you know insert some documents or
25:05
to you know insert some documents or items in your Cosmos
25:07
items in your Cosmos
25:07
items in your Cosmos DB uh databases I think this is
25:11
DB uh databases I think this is
25:11
DB uh databases I think this is fantastic event grid event hubs
25:15
fantastic event grid event hubs
25:15
fantastic event grid event hubs interesting those are both input and
25:18
interesting those are both input and
25:18
interesting those are both input and output
25:19
output
25:19
output bindings aure open AI this is great aser
25:23
bindings aure open AI this is great aser
25:23
bindings aure open AI this is great aser open
25:25
open
25:25
open AI um for
25:28
AI um for
25:28
AI um for I guess invoking the chat completion API
25:32
I guess invoking the chat completion API
25:32
I guess invoking the chat completion API of a particular
25:34
of a particular
25:34
of a particular model
25:36
model
25:36
model and Asher signal R Asher service boss
25:40
and Asher signal R Asher service boss
25:40
and Asher signal R Asher service boss cues and so on okay so let's this is
25:44
cues and so on okay so let's this is
25:44
cues and so on okay so let's this is this is interesting Asher open AI okay
25:48
this is interesting Asher open AI okay
25:48
this is interesting Asher open AI okay so again you need to you need to read
25:52
so again you need to you need to read
25:52
so again you need to you need to read the component
25:54
the component
25:54
the component spec right just to see what are the
25:57
spec right just to see what are the
25:57
spec right just to see what are the different
25:59
different
25:59
different settings that you can
26:00
settings that you can
26:00
settings that you can set so API version kind metadata in Spec
26:04
set so API version kind metadata in Spec
26:04
set so API version kind metadata in Spec that's recurrent right we only or we
26:08
that's recurrent right we only or we
26:08
that's recurrent right we only or we always use that in components daer doio
26:12
always use that in components daer doio
26:12
always use that in components daer doio B1 alpha1 that is the same kind
26:14
B1 alpha1 that is the same kind
26:14
B1 alpha1 that is the same kind component that's the same metadata this
26:17
component that's the same metadata this
26:17
component that's the same metadata this is the technical
26:18
is the technical
26:18
is the technical name and the type you can see that this
26:21
name and the type you can see that this
26:21
name and the type you can see that this is bindings doer.
26:24
is bindings doer.
26:24
is bindings doer. openai instead of binding. Chron right
26:28
openai instead of binding. Chron right
26:28
openai instead of binding. Chron right of course it makes sense and then inside
26:31
of course it makes sense and then inside
26:31
of course it makes sense and then inside metadata element you need to
26:34
metadata element you need to
26:34
metadata element you need to specify the
26:36
specify the
26:37
specify the basic uh connection items for using that
26:42
basic uh connection items for using that
26:42
basic uh connection items for using that open AI service such as the endpoint and
26:46
open AI service such as the endpoint and
26:46
open AI service such as the endpoint and the API key and I believe it supports
26:49
the API key and I believe it supports
26:49
the API key and I believe it supports also Microsoft entra
26:51
also Microsoft entra
26:51
also Microsoft entra ID uh also known or previously known as
26:55
ID uh also known or previously known as
26:55
ID uh also known or previously known as Asher active directory
26:59
Asher active directory
26:59
Asher active directory it makes
27:00
it makes
27:00
it makes sense uh but I think with the API key is
27:04
sense uh but I think with the API key is
27:04
sense uh but I think with the API key is perfectly acceptable and also the end
27:07
perfectly acceptable and also the end
27:07
perfectly acceptable and also the end point and that's it and completion
27:11
point and that's it and completion
27:11
point and that's it and completion API this is um
27:14
API this is um
27:14
API this is um interesting this is just using
27:17
interesting this is just using
27:18
interesting this is just using completions not using the chat
27:20
completions not using the chat
27:20
completions not using the chat completion which is different so let's
27:22
completion which is different so let's
27:22
completion which is different so let's scroll down chat
27:25
scroll down chat
27:25
scroll down chat completion so this is this looks
27:27
completion so this is this looks
27:27
completion so this is this looks interesting
27:29
interesting
27:29
interesting I think this is going to be the one that
27:31
I think this is going to be the one that
27:31
I think this is going to be the one that I'm going to use now and let me go back
27:36
I'm going to use now and let me go back
27:36
I'm going to use now and let me go back here and use it
27:40
here and use it
27:40
here and use it so let's go back to the components
27:44
so let's go back to the components
27:44
so let's go back to the components folder and am I in Visual Studio code
27:48
folder and am I in Visual Studio code
27:48
folder and am I in Visual Studio code already yes so let's do this
27:52
already yes so let's do this
27:52
already yes so let's do this friends so I need the component spec
27:58
friends so I need the component spec
27:58
friends so I need the component spec I'm going to use this binding output
28:01
I'm going to use this binding output
28:01
I'm going to use this binding output binding for calling the chat completion
28:04
binding for calling the chat completion
28:04
binding for calling the chat completion API every five seconds so I'm connecting
28:08
API every five seconds so I'm connecting
28:08
API every five seconds so I'm connecting or using both input bindings and output
28:11
or using both input bindings and output
28:11
or using both input bindings and output bindings in the same
28:13
bindings in the same
28:13
bindings in the same application so let's use this let's go
28:16
application so let's use this let's go
28:17
application so let's use this let's go back to visual studio code let's create
28:19
back to visual studio code let's create
28:19
back to visual studio code let's create another file let's name it open jaml Let
28:23
another file let's name it open jaml Let
28:23
another file let's name it open jaml Let space it the name is going to be openi
28:27
space it the name is going to be openi
28:27
space it the name is going to be openi could be
28:28
could be
28:28
could be Spider-Man right doesn't matter uh open
28:33
Spider-Man right doesn't matter uh open
28:33
Spider-Man right doesn't matter uh open AI the type this is required bindings
28:38
AI the type this is required bindings
28:38
AI the type this is required bindings doer. opai that's
28:42
doer. opai that's
28:42
doer. opai that's fantastic uh API key I need my openi
28:47
fantastic uh API key I need my openi
28:47
fantastic uh API key I need my openi key so let's go ahead and navigate to
28:52
key so let's go ahead and navigate to
28:52
key so let's go ahead and navigate to Asher AI
28:55
Asher AI
28:55
Asher AI Foundry previously known as Asher AI
29:00
Foundry previously known as Asher AI
29:00
Foundry previously known as Asher AI Studio okay this is my Asher AI Foundry
29:04
Studio okay this is my Asher AI Foundry
29:04
Studio okay this is my Asher AI Foundry portal and I happen to have many
29:09
portal and I happen to have many
29:09
portal and I happen to have many different projects and
29:12
different projects and
29:12
different projects and deployments because of the different
29:14
deployments because of the different
29:14
deployments because of the different projects I'm involved with so I'm going
29:17
projects I'm involved with so I'm going
29:17
projects I'm involved with so I'm going to use this project I think doesn't
29:20
to use this project I think doesn't
29:20
to use this project I think doesn't matter I have others but I think this is
29:23
matter I have others but I think this is
29:23
matter I have others but I think this is perfect um and here's the end point so
29:28
perfect um and here's the end point so
29:28
perfect um and here's the end point so API
29:29
API
29:29
API key going to use this
29:32
key going to use this
29:32
key going to use this one let's space it and the end point is
29:36
one let's space it and the end point is
29:36
one let's space it and the end point is going to be this
29:37
going to be this
29:37
going to be this one so let's paste it right
29:41
one so let's paste it right
29:41
one so let's paste it right here just like this
29:44
here just like this
29:45
here just like this right this is the Endo this is the API
29:47
right this is the Endo this is the API
29:47
right this is the Endo this is the API key and I think that is
29:50
key and I think that is
29:50
key and I think that is it API key is required because I'm not
29:54
it API key is required because I'm not
29:54
it API key is required because I'm not using Microsoft entry
29:56
using Microsoft entry
29:56
using Microsoft entry ID and I think I think that's it okay so
29:59
ID and I think I think that's it okay so
29:59
ID and I think I think that's it okay so let's go back to visual
30:02
let's go back to visual
30:02
let's go back to visual studio and inside Visual Studio I need
30:05
studio and inside Visual Studio I need
30:05
studio and inside Visual Studio I need to specify some things for instance I
30:09
to specify some things for instance I
30:09
to specify some things for instance I want to use the doer client
30:12
want to use the doer client
30:12
want to use the doer client object okay so let's wrap every
30:16
object okay so let's wrap every
30:16
object okay so let's wrap every parameter just like that and doer client
30:19
parameter just like that and doer client
30:19
parameter just like that and doer client and let's search for all of those
30:22
and let's search for all of those
30:22
and let's search for all of those methods that have binding on
30:25
methods that have binding on
30:25
methods that have binding on names and we can see that we have inog
30:29
names and we can see that we have inog
30:29
names and we can see that we have inog binding
30:30
binding
30:30
binding acing okay so inog binding acing is
30:34
acing okay so inog binding acing is
30:34
acing okay so inog binding acing is going to be the one that I'm going to
30:36
going to be the one that I'm going to
30:36
going to be the one that I'm going to use
30:37
use
30:37
use today so it has many different um not so
30:43
today so it has many different um not so
30:43
today so it has many different um not so many three
30:47
many three
30:47
many three overloads uh so this takes a binding
30:50
overloads uh so this takes a binding
30:50
overloads uh so this takes a binding request object and returns binding
30:53
request object and returns binding
30:53
request object and returns binding response it's quite
30:55
response it's quite
30:55
response it's quite useful but I don't know binding request
30:59
useful but I don't know binding request
30:59
useful but I don't know binding request all of the different properties that
31:01
all of the different properties that
31:01
all of the different properties that need I need to specify let's search for
31:05
need I need to specify let's search for
31:05
need I need to specify let's search for another one uh binding name operation in
31:09
another one uh binding name operation in
31:09
another one uh binding name operation in data this is uh this is
31:13
data this is uh this is
31:13
data this is uh this is useful and with this one it only returns
31:16
useful and with this one it only returns
31:16
useful and with this one it only returns a task I think this is for fire and
31:19
a task I think this is for fire and
31:19
a task I think this is for fire and forget kind of output
31:22
forget kind of output
31:22
forget kind of output findings um in other words where you're
31:25
findings um in other words where you're
31:25
findings um in other words where you're not expecting a particular response from
31:28
not expecting a particular response from
31:28
not expecting a particular response from the output binding platform that you're
31:31
the output binding platform that you're
31:31
the output binding platform that you're using and oh I'm sorry let's go back
31:35
using and oh I'm sorry let's go back
31:35
using and oh I'm sorry let's go back here uh right here and we have this
31:40
here uh right here and we have this
31:40
here uh right here and we have this other one where you can specify tier
31:43
other one where you can specify tier
31:43
other one where you can specify tier request and to
31:45
request and to
31:45
request and to response and I think this is going to be
31:48
response and I think this is going to be
31:48
response and I think this is going to be the one that I want to use
31:51
the one that I want to use
31:51
the one that I want to use so let's use this uh so tier request is
31:55
so let's use this uh so tier request is
31:55
so let's use this uh so tier request is going to
31:56
going to
31:56
going to be let's use dynamic or let's use
32:02
be let's use dynamic or let's use
32:02
be let's use dynamic or let's use object I want to create a dynamic
32:06
object I want to create a dynamic
32:06
object I want to create a dynamic object um since if I go back
32:11
object um since if I go back
32:11
object um since if I go back here in the chat
32:14
here in the chat
32:14
here in the chat completion you can see that this is the
32:18
completion you can see that this is the
32:18
completion you can see that this is the payload that the open AI binding
32:24
payload that the open AI binding
32:24
payload that the open AI binding expects for the chat completion API so
32:28
expects for the chat completion API so
32:28
expects for the chat completion API so operation is going to be chat Dash
32:31
operation is going to be chat Dash
32:31
operation is going to be chat Dash completion and deployment ID it makes
32:35
completion and deployment ID it makes
32:35
completion and deployment ID it makes sense right the kind of model deployment
32:39
sense right the kind of model deployment
32:39
sense right the kind of model deployment that you're using in my case I have gp40
32:43
that you're using in my case I have gp40
32:44
that you're using in my case I have gp40 and that's actually the name
32:46
and that's actually the name
32:46
and that's actually the name also um and messages is an
32:50
also um and messages is an
32:50
also um and messages is an array with the system message that you
32:52
array with the system message that you
32:52
array with the system message that you want to send the meta prompt and you
32:55
want to send the meta prompt and you
32:55
want to send the meta prompt and you know all the different messages that you
32:58
know all the different messages that you
32:58
know all the different messages that you want to send to the chat completion
33:01
want to send to the chat completion
33:01
want to send to the chat completion API and Max tokens and temperature and
33:05
API and Max tokens and temperature and
33:05
API and Max tokens and temperature and so on those are for changing the
33:09
so on those are for changing the
33:09
so on those are for changing the behavior of this chat completion API so
33:13
behavior of this chat completion API so
33:13
behavior of this chat completion API so I need to send this okay so object or
33:18
I need to send this okay so object or
33:18
I need to send this okay so object or dynamic those two are great options
33:23
dynamic those two are great options
33:24
dynamic those two are great options okay so now response
33:28
okay so now response
33:28
okay so now response so let's say object also for the
33:33
so let's say object also for the
33:33
so let's say object also for the response and let's see what's going on
33:35
response and let's see what's going on
33:36
response and let's see what's going on here so binding name is going to be
33:40
gp40 okay that's the name of the
33:43
gp40 okay that's the name of the
33:43
gp40 okay that's the name of the deployment I'm sorry this is not the
33:45
deployment I'm sorry this is not the
33:45
deployment I'm sorry this is not the deployment this is The Binding name this
33:47
deployment this is The Binding name this
33:47
deployment this is The Binding name this is the open AI
33:49
is the open AI
33:50
is the open AI thing open AI this one okay open AI open
33:56
thing open AI this one okay open AI open
33:56
thing open AI this one okay open AI open Ai and then
34:00
operation so I think the operation is
34:03
operation so I think the operation is
34:04
operation so I think the operation is chat
34:06
chat
34:06
chat completion is that the name let's go
34:09
completion is that the name let's go
34:09
completion is that the name let's go back to the
34:11
back to the
34:11
back to the documentation chat
34:14
documentation chat
34:14
documentation chat completion and inside an object named
34:18
completion and inside an object named
34:18
completion and inside an object named data we have deployment ID messages and
34:23
data we have deployment ID messages and
34:23
data we have deployment ID messages and Max tokens and
34:25
Max tokens and
34:25
Max tokens and temperature so chat completion
34:28
temperature so chat completion
34:28
temperature so chat completion and then the data okay so I can go ahead
34:32
and then the data okay so I can go ahead
34:32
and then the data okay so I can go ahead and do something like I don't know bar
34:35
and do something like I don't know bar
34:35
and do something like I don't know bar data equals new and then I'm going to
34:38
data equals new and then I'm going to
34:38
data equals new and then I'm going to use this Dynamic syntax right and
34:43
use this Dynamic syntax right and
34:43
use this Dynamic syntax right and deployment let's go back to the
34:46
deployment let's go back to the
34:46
deployment let's go back to the documentation deployment
34:49
documentation deployment
34:49
documentation deployment ID deployment ID it's going to
34:54
ID deployment ID it's going to
34:54
ID deployment ID it's going to be
34:55
be
34:55
be um uh gp4
34:58
um uh gp4
34:58
um uh gp4 40 40 just like this and then
35:03
40 40 just like this and then
35:03
40 40 just like this and then messages and
35:06
messages and
35:06
messages and new I think it works thank you
35:09
new I think it works thank you
35:09
new I think it works thank you co-pilot
35:11
co-pilot
35:11
co-pilot however uh not an ID just a roll and
35:16
however uh not an ID just a roll and
35:16
however uh not an ID just a roll and user in message is that is that
35:19
user in message is that is that
35:19
user in message is that is that message
35:21
message
35:21
message roll and message yes roll and then
35:26
roll and message yes roll and then
35:26
roll and message yes roll and then message not um
35:28
message not um
35:28
message not um content roll message and I don't know
35:33
content roll message and I don't know
35:33
content roll message and I don't know what are the
35:35
what are the
35:35
what are the largest cities in the
35:39
world right and then what
35:44
world right and then what
35:44
world right and then what else Max tokens
35:47
else Max tokens
35:47
else Max tokens temperature I think I'm just going to
35:50
temperature I think I'm just going to
35:50
temperature I think I'm just going to use max
35:53
use max
35:53
use max tokens and let's use I don't know 200
35:58
tokens and let's use I don't know 200
35:58
tokens and let's use I don't know 200 just like this
35:59
just like this
35:59
just like this okay so I'm ready to go ahead and use
36:04
okay so I'm ready to go ahead and use
36:04
okay so I'm ready to go ahead and use data and expect the response so bar
36:08
data and expect the response so bar
36:08
data and expect the response so bar response is going to be
36:10
response is going to be
36:10
response is going to be this and I need to wait for the response
36:15
this and I need to wait for the response
36:15
this and I need to wait for the response and actually if we go
36:19
and actually if we go
36:19
and actually if we go here this is the response that this is
36:23
here this is the response that this is
36:23
here this is the response that this is going to return finish reason index
36:30
message um rooll
36:34
message um rooll
36:34
message um rooll assistant the response body contains the
36:36
assistant the response body contains the
36:37
assistant the response body contains the following
36:41
Json so an array of this type of
36:45
Json so an array of this type of
36:45
Json so an array of this type of thing
36:47
thing
36:47
thing right an array of
36:51
right an array of
36:51
right an array of this so I think I can do this let's copy
36:56
this so I think I can do this let's copy
36:56
this so I think I can do this let's copy this
36:58
this
36:58
this and let's use space Json
37:03
classes this is a fantastic uh tool that
37:06
classes this is a fantastic uh tool that
37:06
classes this is a fantastic uh tool that we have in visual
37:08
we have in visual
37:08
we have in visual studio
37:10
studio
37:10
studio so property one class one root object so
37:16
so property one class one root object so
37:16
so property one class one root object so I can go ahead and say root
37:21
I can go ahead and say root
37:21
I can go ahead and say root object that's the worst name ever root
37:24
object that's the worst name ever root
37:24
object that's the worst name ever root object
37:26
object
37:26
object right uh let's let's name it the
37:28
right uh let's let's name it the
37:28
right uh let's let's name it the response or something I think this is
37:31
response or something I think this is
37:31
response or something I think this is better
37:32
better
37:32
better anyway so it looks like this is going to
37:35
anyway so it looks like this is going to
37:35
anyway so it looks like this is going to work since I'm expressing the same
37:38
work since I'm expressing the same
37:38
work since I'm expressing the same schema the same structure that the
37:41
schema the same structure that the
37:41
schema the same structure that the response is going to
37:43
response is going to
37:43
response is going to send right the response is going to be
37:46
send right the response is going to be
37:46
send right the response is going to be shaped in this
37:48
shaped in this
37:48
shaped in this way so I think the response is an array
37:53
way so I think the response is an array
37:53
way so I think the response is an array of class
37:55
of class
37:55
of class one and it has
37:59
one element which is message yeah I
38:01
one element which is message yeah I
38:01
one element which is message yeah I think that is uh it could work I'm not
38:06
think that is uh it could work I'm not
38:06
think that is uh it could work I'm not sure anyway and let's return or let's
38:11
sure anyway and let's return or let's
38:11
sure anyway and let's return or let's just logger log information response is
38:14
just logger log information response is
38:14
just logger log information response is going to be
38:15
going to be
38:15
going to be response um let's use a wait and of
38:20
response um let's use a wait and of
38:20
response um let's use a wait and of course this has to change as in
38:23
course this has to change as in
38:23
course this has to change as in task and
38:25
task and
38:25
task and response let's use
38:29
response let's use
38:29
response let's use property
38:30
property
38:30
property one and
38:34
first
38:36
first
38:36
first and message and then
38:40
and message and then
38:40
and message and then content hopefully this is going to work
38:44
content hopefully this is going to work
38:44
content hopefully this is going to work uh according to the
38:48
documentation
38:49
documentation
38:49
documentation so I'm using this component the
38:53
so I'm using this component the
38:53
so I'm using this component the technical name is open AI this is the
38:55
technical name is open AI this is the
38:55
technical name is open AI this is the name that I'm using here
38:59
name that I'm using here
38:59
name that I'm using here right in the meta
39:00
right in the meta
39:00
right in the meta data and I think that's
39:04
data and I think that's
39:04
data and I think that's it okay so we're ready to
39:08
it okay so we're ready to
39:08
it okay so we're ready to rumble remember I'm using invoke binding
39:12
rumble remember I'm using invoke binding
39:12
rumble remember I'm using invoke binding async for the output binding instead of
39:15
async for the output binding instead of
39:15
async for the output binding instead of just exposing an endpoint because this
39:18
just exposing an endpoint because this
39:18
just exposing an endpoint because this is for the input
39:20
is for the input
39:20
is for the input binding okay let me go back to the
39:23
binding okay let me go back to the
39:23
binding okay let me go back to the stream jart application just to see if
39:26
stream jart application just to see if
39:26
stream jart application just to see if I'm connected said yes I'm
39:29
I'm connected said yes I'm
39:29
I'm connected said yes I'm connected okay so let's go back
39:33
connected okay so let's go back
39:33
connected okay so let's go back here
39:35
here
39:35
here and
39:37
and
39:37
and daeron inside binding
39:41
daeron inside binding
39:41
daeron inside binding demo daeron my let's change it
39:47
demo daeron my let's change it
39:47
demo daeron my let's change it my fantastic app D HTTP Port app Port
39:52
my fantastic app D HTTP Port app Port
39:52
my fantastic app D HTTP Port app Port resources
39:54
resources
39:54
resources path and I think that's it
39:58
path and I think that's it
39:58
path and I think that's it let's
40:02
see okay so the application is running
40:05
see okay so the application is running
40:05
see okay so the application is running alongside the side car Cron job fire and
40:09
alongside the side car Cron job fire and
40:10
alongside the side car Cron job fire and then it triy to send the chat
40:17
completion
40:22
uh the response payload couldn't be
40:24
uh the response payload couldn't be
40:24
uh the response payload couldn't be deserialized
40:30
H the Json value couldn't be converted
40:33
H the Json value couldn't be converted
40:33
H the Json value couldn't be converted to binding Dem on controllers the
40:36
to binding Dem on controllers the
40:36
to binding Dem on controllers the response
40:37
response
40:37
response why why oh why oh why let's go back here
40:42
why why oh why oh why let's go back here
40:42
why why oh why oh why let's go back here to the visual studio
40:44
to the visual studio
40:44
to the visual studio instance and let's change it to say
40:52
Dynamic
40:56
and let's just log okay just to see if
41:00
and let's just log okay just to see if
41:00
and let's just log okay just to see if this is
41:01
this is
41:01
this is working and let's go back to the
41:05
working and let's go back to the
41:05
working and let's go back to the terminal Vaper
41:10
run it's
41:12
run it's
41:12
run it's running the input binding is going to
41:16
running the input binding is going to
41:16
running the input binding is going to fire okay so it looks
41:19
fire okay so it looks
41:19
fire okay so it looks like it sent the prompt to the chat
41:23
like it sent the prompt to the chat
41:23
like it sent the prompt to the chat completion API and now we're ready to
41:26
completion API and now we're ready to
41:26
completion API and now we're ready to read the
41:29
you know read the response
41:32
you know read the response
41:32
you know read the response somehow so response to
41:36
somehow so response to
41:36
somehow so response to string can I do this I
41:39
string can I do this I
41:39
string can I do this I can't so
41:42
can't so
41:42
can't so object can I use
41:44
object can I use
41:45
object can I use this let's
41:46
this let's
41:46
this let's see
41:51
daeron interesting so the thing is about
41:54
daeron interesting so the thing is about
41:54
daeron interesting so the thing is about DC realization
41:58
uh so it looks like yeah this is working
42:03
uh so it looks like yeah this is working
42:03
uh so it looks like yeah this is working right uh the list of the largest cities
42:05
right uh the list of the largest cities
42:05
right uh the list of the largest cities in the world can vary depending on how
42:08
in the world can vary depending on how
42:08
in the world can vary depending on how largest is the find oh come on just give
42:11
largest is the find oh come on just give
42:12
largest is the find oh come on just give me the largest
42:13
me the largest
42:13
me the largest cities uh so the thing is that it's
42:15
cities uh so the thing is that it's
42:15
cities uh so the thing is that it's being cut out because of the max
42:18
being cut out because of the max
42:18
being cut out because of the max tokens uh element so 20 right this is a
42:23
tokens uh element so 20 right this is a
42:23
tokens uh element so 20 right this is a typo I meant 200
42:28
typo I meant 200
42:28
typo I meant 200 not
42:31
20 uh let's try
42:36
again but of course this is responding
42:40
again but of course this is responding
42:40
again but of course this is responding right Cron job
42:42
right Cron job
42:42
right Cron job fired sends a prompt it
42:46
fired sends a prompt it
42:46
fired sends a prompt it returns
42:48
returns
42:48
returns and
42:50
and
42:50
and yes we
42:53
yes we
42:53
yes we have uh of course Tokyo new
42:58
have uh of course Tokyo new
42:58
have uh of course Tokyo new Sal Paulo Mexico City Beijing and the
43:02
Sal Paulo Mexico City Beijing and the
43:02
Sal Paulo Mexico City Beijing and the usual usual suspects right of the
43:06
usual usual suspects right of the
43:06
usual usual suspects right of the largest cities in the world so this is
43:08
largest cities in the world so this is
43:08
largest cities in the world so this is working I believe sending prompts each
43:11
working I believe sending prompts each
43:11
working I believe sending prompts each five seconds automatically is not a very
43:14
five seconds automatically is not a very
43:14
five seconds automatically is not a very good idea in real world
43:16
good idea in real world
43:16
good idea in real world situations because um you know tokens
43:19
situations because um you know tokens
43:19
situations because um you know tokens are going to get get um wasted and
43:22
are going to get get um wasted and
43:22
are going to get get um wasted and wasted and wasted anyway you can see how
43:26
wasted and wasted anyway you can see how
43:26
wasted and wasted anyway you can see how this works right we have this
43:29
this works right we have this
43:29
this works right we have this stimuli in other words input bindings
43:32
stimuli in other words input bindings
43:32
stimuli in other words input bindings and then we can send data to Output
43:36
and then we can send data to Output
43:36
and then we can send data to Output bindings
43:37
bindings
43:38
bindings and yeah I think this open AI output
43:41
and yeah I think this open AI output
43:41
and yeah I think this open AI output binding is
43:43
binding is
43:43
binding is fantastic I wonder why it didn't work as
43:49
fantastic I wonder why it didn't work as
43:49
fantastic I wonder why it didn't work as expected according to the
43:53
expected according to the
43:53
expected according to the documentation um response example chat
43:57
documentation um response example chat
43:57
documentation um response example chat completion response yes this has to work
44:00
completion response yes this has to work
44:00
completion response yes this has to work according to this documentation however
44:03
according to this documentation however
44:03
according to this documentation however we can easily see that it also includes
44:06
we can easily see that it also includes
44:06
we can easily see that it also includes content filter
44:08
content filter
44:08
content filter results right this is for the content
44:11
results right this is for the content
44:11
results right this is for the content filter that is configure in my
44:14
filter that is configure in my
44:14
filter that is configure in my deployment um I'm actually using the
44:17
deployment um I'm actually using the
44:17
deployment um I'm actually using the default content
44:19
default content
44:19
default content filter
44:21
filter
44:21
filter and it also
44:24
and it also
44:24
and it also has um finished reason
44:29
that's that was expected length index
44:32
that's that was expected length index
44:32
that's that was expected length index message content and so on so I think the
44:37
message content and so on so I think the
44:37
message content and so on so I think the current schema is different than the one
44:39
current schema is different than the one
44:39
current schema is different than the one from the documentation but it actually
44:42
from the documentation but it actually
44:42
from the documentation but it actually doesn't matter right now the thing
44:44
doesn't matter right now the thing
44:44
doesn't matter right now the thing friends is that you can use input and
44:47
friends is that you can use input and
44:48
friends is that you can use input and output bindings and those are pretty
44:51
output bindings and those are pretty
44:51
output bindings and those are pretty powerful if you happen to be a AAL
44:54
powerful if you happen to be a AAL
44:54
powerful if you happen to be a AAL functions developer you know what I'm
44:55
functions developer you know what I'm
44:55
functions developer you know what I'm talking about those are similars to the
44:58
talking about those are similars to the
44:58
talking about those are similars to the ones that we use in that
45:01
ones that we use in that
45:01
ones that we use in that technology and yeah check the complete
45:05
technology and yeah check the complete
45:05
technology and yeah check the complete list check check it out and this list is
45:10
list check check it out and this list is
45:10
list check check it out and this list is growing
45:11
growing
45:11
growing continuously and the dopper team is
45:15
continuously and the dopper team is
45:15
continuously and the dopper team is doing amazing amazing work uh you know
45:20
doing amazing amazing work uh you know
45:20
doing amazing amazing work uh you know adding additional uh when adding
45:23
adding additional uh when adding
45:23
adding additional uh when adding additional
45:24
additional
45:24
additional components okay that's it that's said
45:27
components okay that's it that's said
45:27
components okay that's it that's said that's what I had for today this was a
45:31
that's what I had for today this was a
45:32
that's what I had for today this was a shorter
45:34
shorter
45:34
shorter session and next
45:37
session and next
45:37
session and next week we're going to have a learning
45:41
week we're going to have a learning
45:41
week we're going to have a learning checkpoint okay we're going to create a
45:45
checkpoint okay we're going to create a
45:45
checkpoint okay we're going to create a single
45:47
single
45:47
single solution that
45:49
solution that
45:49
solution that uses all of the different building
45:52
uses all of the different building
45:52
uses all of the different building blocks that we've seen until today so
45:57
blocks that we've seen until today so
45:57
blocks that we've seen until today so we're going to create uh a project that
46:00
we're going to create uh a project that
46:00
we're going to create uh a project that uses service to service invocation pops
46:02
uses service to service invocation pops
46:02
uses service to service invocation pops up State
46:04
up State
46:05
up State Management and also bindings and there's
46:10
Management and also bindings and there's
46:10
Management and also bindings and there's one that is missing State
46:13
one that is missing State
46:13
one that is missing State Management bind and
46:16
Management bind and
46:16
Management bind and bindings service invocation pops up and
46:19
bindings service invocation pops up and
46:19
bindings service invocation pops up and I think that's it uh not five but four
46:23
I think that's it uh not five but four
46:23
I think that's it uh not five but four okay this is session five however we've
46:27
okay this is session five however we've
46:27
okay this is session five however we've only
46:27
only
46:28
only seen four building blocks so service to
46:30
seen four building blocks so service to
46:30
seen four building blocks so service to service invocation pops up save
46:33
service invocation pops up save
46:33
service invocation pops up save management and bindings and next week
46:35
management and bindings and next week
46:35
management and bindings and next week we're going to have our first learning
46:38
we're going to have our first learning
46:38
we're going to have our first learning checkpoint before we continue with the
46:41
checkpoint before we continue with the
46:41
checkpoint before we continue with the other topics and building
46:43
other topics and building
46:43
other topics and building blocks so that said that was for today
46:46
blocks so that said that was for today
46:46
blocks so that said that was for today friends
46:51
and thank you for very much for your
46:54
and thank you for very much for your
46:54
and thank you for very much for your time and see you next week
46:59
time and see you next week
46:59
time and see you next week [Music]
#Business & Industrial
#Computers & Electronics