WEBVTT

00:00.160 --> 00:06.200
In this tutorial, I'm going to teach you how to build a team of AI agents without writing a single

00:06.200 --> 00:07.000
line of code.

00:07.160 --> 00:11.080
Let's do a quick demo and see what this team of agents can do for you.

00:11.800 --> 00:13.400
Let me show you how this works.

00:14.000 --> 00:21.040
So we will communicate just with our supervisor agent via telegram, because it acts as the coordinator

00:21.040 --> 00:25.040
and delegates the tasks to three specialized sub agents.

00:25.640 --> 00:29.800
So the research agent, email agent, and calendar agent.

00:31.080 --> 00:33.000
We can use both voice or text.

00:33.040 --> 00:35.760
You can give your agent multiple tasks at once.

00:36.440 --> 00:38.160
So I've prepared a prompt.

00:38.520 --> 00:40.440
So I'm just gonna copy and paste it.

00:41.200 --> 00:48.120
So let's test it and ask to check what's on my schedule today etc..

00:48.120 --> 00:51.080
So I'm gonna click Test Workflow.

00:53.400 --> 00:54.560
Send this message.

00:57.400 --> 01:00.600
So I want it to check what's on my schedule today.

01:00.640 --> 01:04.400
Send an email to Mark Johnson to cancel our meeting and let him know.

01:04.880 --> 01:06.640
I will contact him later at two.

01:06.680 --> 01:09.800
Reschedule and give me news about Leipzig from today.

01:11.000 --> 01:17.240
So our supervisor agent calls the calendar and research agents to fulfill these tasks.

01:18.960 --> 01:26.480
The calendar agent fetches the details from my Google calendar and sends them back to the main agent

01:27.240 --> 01:28.960
to create a response for me.

01:28.960 --> 01:35.400
And the research agent scrapes the internet to find the news articles about Dopesick.

01:40.200 --> 01:41.240
It takes a moment.

01:47.680 --> 01:49.800
So now we got a response.

01:52.360 --> 01:54.200
Here is a summary of your requests.

01:54.720 --> 02:01.120
So today's schedule Projects meeting client brainstorming with Mark and Jim.

02:01.120 --> 02:01.800
Upper body.

02:04.040 --> 02:06.200
So now let's check my calendar.

02:08.400 --> 02:09.520
And this is correct.

02:11.120 --> 02:13.120
So now let's check my inbox.

02:18.680 --> 02:23.960
And yes, we got an email about the meeting cancellation.

02:24.600 --> 02:28.480
Hi Mark, I hope this message finds you well, etc..

02:30.880 --> 02:32.760
Now our agent also.

02:35.040 --> 02:39.520
Wants the latest news about Leipzig.

02:41.240 --> 02:42.320
So let's have a look.

02:43.880 --> 02:45.600
So recent news about Leipzig.

02:48.480 --> 02:53.680
And we can see all the headlines here along with links to the original articles.

02:56.830 --> 02:58.110
So let's check one of them.

03:01.870 --> 03:02.630
Investigates.

03:02.630 --> 03:04.430
Deep six use of its models.

03:05.710 --> 03:06.350
Open it.

03:09.910 --> 03:12.310
And yep, this one was posted today.

03:14.710 --> 03:18.110
We can also send a voice message to our agent.

03:19.070 --> 03:24.710
I will show you two ways to generate a voice for other agents, so you will have plenty of voices to

03:24.750 --> 03:25.390
choose from.

03:25.830 --> 03:29.870
You can even generate or clone your own voice or someone else's.

03:30.430 --> 03:37.550
You can also provide our agent with a custom knowledge base like contact details, frequently ask questions,

03:37.550 --> 03:40.910
training materials, product lists.

03:41.110 --> 03:43.710
In this setup, we have contact details.

03:44.390 --> 03:52.710
So we store it in Google Sheets in Google Drive, but you can use any storage like any storage format

03:52.710 --> 03:55.430
Not like PDFs, docs, etc..

03:55.830 --> 03:57.990
You can also implement persistent memory.

03:58.430 --> 03:58.830
All right.

03:58.830 --> 04:00.030
So this is your canvas.

04:01.150 --> 04:09.230
We'll start by renaming the workflow from my workflow to the team of agents.

04:17.990 --> 04:21.270
And press enter just to confirm it.

04:23.310 --> 04:29.430
Next I strongly recommend changing your time zone so the times are correct for all tasks.

04:30.510 --> 04:32.350
So click on these three dots.

04:33.990 --> 04:35.070
Click on settings.

04:37.990 --> 04:39.390
And select your time zone.

04:49.870 --> 04:50.630
Save it.

04:57.110 --> 05:00.070
So our first step is creating the supervisor agent.

05:00.670 --> 05:02.670
So let's add our first node.

05:03.510 --> 05:05.110
So click on this plus button.

05:07.310 --> 05:08.630
Type a agent.

05:10.950 --> 05:11.670
Click on it.

05:13.870 --> 05:14.830
Close it for now.

05:18.910 --> 05:26.350
So basically nodes represent actions like fetching data, sending emails or making API calls.

05:26.910 --> 05:31.270
So let's rename our agent to.

05:33.670 --> 05:35.270
Supervisor or agent.

05:41.070 --> 05:42.510
Click rename to confirm it.

05:44.910 --> 05:49.030
And now we have to set up a trigger which starts the workflow.

05:50.350 --> 05:57.550
So usually it's the communication channel you want to communicate with your agent.

05:58.110 --> 06:01.190
So every workflow needs a trigger to be activated.

06:01.630 --> 06:04.230
And by default we have this chat on message.

06:05.230 --> 06:08.750
So let's get rid of it.

06:13.870 --> 06:15.750
So click on this plus button again.

06:17.670 --> 06:26.910
And you can activate the workflow manually on App events which will use in this setup.

06:27.350 --> 06:35.470
But you can also run your workflow on a schedule like every day, every hour, etc. you can use webhook

06:35.470 --> 06:38.470
call or on the form submission.

06:39.830 --> 06:42.830
So now click on App Event.

06:44.790 --> 06:49.230
And now we have to select the platform We want to communicate with.

06:50.070 --> 06:51.310
You can choose WhatsApp.

06:53.950 --> 06:54.670
Telegram.

06:56.430 --> 06:57.030
Slack.

06:59.590 --> 07:00.790
And other platforms.

07:03.310 --> 07:06.270
So we will use telegram because it's very easy to set up.

07:09.910 --> 07:11.950
So click on this telegram node.

07:14.390 --> 07:19.990
I've got a tutorial on how to set up WhatsApp in six minutes, so check it out if you prefer WhatsApp.

07:21.630 --> 07:24.150
So the trigger we need is on message.

07:25.590 --> 07:30.870
So this means the workflow will start when we send a message to our agent on telegram.

07:31.910 --> 07:32.870
So click on that.

07:34.550 --> 07:40.630
First we need to set up our telegram credentials to connect our agents to telegram.

07:41.950 --> 07:49.580
So click on this drop down and select Create New Credential.

07:51.580 --> 07:53.740
Now we need to provide the access token.

07:54.020 --> 07:56.540
And edit N makes it easy.

07:57.180 --> 07:59.780
So you can click on Open Docs.

08:00.380 --> 08:06.140
If you need help filling out these fields to follow the instructions yourself.

08:08.300 --> 08:09.540
So it looks like that.

08:14.460 --> 08:18.620
Or just follow along with me right now.

08:18.620 --> 08:21.860
If we send a message on telegram, nothing will happen.

08:22.220 --> 08:28.060
That's because N810 is not listening for events yet and our workflow is not activated.

08:29.420 --> 08:30.500
So let's close it.

08:35.300 --> 08:41.420
And at this point, we will not get answer from our agent because it's not connected to a large language

08:41.420 --> 08:46.380
model, which essentially acts as the agent's brain.

08:46.820 --> 08:50.860
So to add a brain to our agent, click on this plus button.

08:52.420 --> 08:54.820
And here are all the available options.

08:55.500 --> 09:04.940
We can integrate all of OpenAI's models like GPT four, GPT four, mini, etc. you can use cloud 3.5

09:04.980 --> 09:07.980
sonnet by using this node.

09:08.700 --> 09:11.500
We can use grok here.

09:11.500 --> 09:17.180
You can choose the model you would like to use as a brain for your AI agent.

09:17.740 --> 09:23.460
For this tutorial, we'll be using GPT four mini because it's very fast and cost effective.

09:24.180 --> 09:28.460
And I prepared a well detailed prompts to guide it so it's good enough.

09:28.460 --> 09:33.540
But you can choose the other models like GPT four.

09:37.700 --> 09:39.740
Now let's go back to the canvas.

09:41.780 --> 09:43.300
Now let's move this trigger.

09:43.300 --> 09:45.860
Note the left side.

09:47.460 --> 09:49.660
Connect it to a supervisor agent.

09:52.300 --> 09:54.620
And now we need to add a memory node.

09:54.660 --> 09:55.580
As you can see.

09:56.580 --> 10:01.900
So click on this plus button and choose Window Buffer memory.

10:05.820 --> 10:07.660
We need to retrieve this session ID.

10:10.020 --> 10:15.380
Because the memory node allows the agent to remember past messages from our conversation.

10:16.300 --> 10:21.180
So change the session ID to define below.

10:24.740 --> 10:25.860
Close it for now.

10:27.620 --> 10:29.020
Click on Test Workflow.

10:31.140 --> 10:33.660
And send any message on on telegram.

10:34.140 --> 10:35.340
I'm just gonna say hi.

10:42.140 --> 10:43.580
Now open this note again.

10:46.100 --> 10:52.060
And you can get a conversation ID from a trigger note by going to mapping.

10:54.620 --> 10:55.900
Just grab this ID.

10:58.300 --> 10:59.420
And drop it over here.

11:02.340 --> 11:07.660
So now the context window length sets how many pass messages to include.

11:07.900 --> 11:13.140
So for example let's say we want our agent to remember ten previous messages.

11:16.500 --> 11:17.660
Let's close it for now.

11:20.460 --> 11:21.540
Let's hit save.

11:28.500 --> 11:29.460
This workflow again.

11:32.180 --> 11:33.060
Set message.

11:34.700 --> 11:35.340
Anything.

11:40.580 --> 11:41.820
Now we got another error.

11:42.420 --> 11:45.300
So let's open our agent.

11:48.780 --> 11:51.420
And as you can see there is no prompt specified.

11:51.860 --> 11:59.300
So we need to set up the prompt to give instructions for our agent what to do and how to behave.

12:00.900 --> 12:09.900
Now under prompt click drop down, select define below and what you can do.

12:10.140 --> 12:16.660
You can just drag the message we received from telegram and drop it over here.

12:18.900 --> 12:21.460
So this is our message we sent on telegram.

12:21.900 --> 12:27.940
Now under options add a new option and select System Message.

12:33.100 --> 12:38.570
Switch to expression Then expand the view.

12:41.010 --> 12:48.650
So the simplest way to structure the prompt is to assign the role objective and provide additional information.

12:49.970 --> 12:52.330
So I'm just going to paste the prompt.

12:54.850 --> 12:58.010
So it can be as simple as you are a professional assistant.

12:58.330 --> 13:04.210
Your primary goal is to manage contacts, email and calendar events and perform research tasks for the

13:04.210 --> 13:04.690
user.

13:05.090 --> 13:06.690
And now additional information.

13:09.570 --> 13:12.210
So you have access to three sub agents to help you.

13:12.650 --> 13:16.170
Email agent, calendar agent, and research agent.

13:16.490 --> 13:20.850
So I will provide you with a template so you can just copy and paste it.

13:21.290 --> 13:29.170
So make sure to do this before using your team of agents, as I have added some comments to avoid errors

13:29.970 --> 13:34.010
because an optimized prompt is crucial for building effective agents.

13:35.210 --> 13:35.690
All right.

13:35.690 --> 13:37.490
So let's test our agent again.

13:41.930 --> 13:45.130
Click this workflow and send a simple message on telegram.

13:52.650 --> 13:53.250
Great.

13:53.970 --> 13:56.290
So this time we successfully received a response.

13:57.770 --> 14:00.130
When you open this now again you can see the output is.

14:00.130 --> 14:00.450
Hello.

14:00.450 --> 14:01.890
How can I assist you today?

14:02.690 --> 14:05.330
Just need to send this message back to telegram.

14:06.170 --> 14:13.210
So back in the canvas add a new note and search for telegram.

14:17.930 --> 14:20.610
Scroll through the options and select.

14:22.970 --> 14:24.490
Send a text message.

14:30.010 --> 14:30.850
Which is right here.

14:32.530 --> 14:34.410
Next, choose the credentials.

14:36.850 --> 14:39.690
Next, choose the credentials you set up earlier.

14:42.530 --> 14:46.090
Then we have to grab the chat ID from the telegram trigger.

14:48.010 --> 14:49.010
Just expand it.

14:51.690 --> 14:54.890
And drag and drop it over here to chat.

14:55.050 --> 14:56.250
To chat ID field.

14:58.450 --> 15:05.810
Now for the text field we need to assign the A agents output.

15:07.010 --> 15:10.050
So drag and drop output over here.

15:13.650 --> 15:17.730
So let's run a test and have a look.

15:22.970 --> 15:23.290
Yes.

15:23.290 --> 15:23.770
That's great.

15:23.770 --> 15:29.370
So we just received a message from our agent.

15:29.890 --> 15:33.570
But we got some extra text, which is redundant.

15:34.090 --> 15:35.170
So let's fix it.

15:37.130 --> 15:38.290
Click on add field.

15:41.210 --> 15:43.050
Append an item attribution.

15:45.850 --> 15:46.930
And switch it off.

15:50.290 --> 15:51.650
Let's back to our canvas.

15:53.530 --> 15:57.130
And now we can explore how to handle audio messages.

15:57.450 --> 15:59.130
First, run a test workflow.

16:01.970 --> 16:03.130
Switch to telegram.

16:07.490 --> 16:10.010
And we'll press and hold the record button.

16:12.370 --> 16:15.890
Say something and then release to send it.

16:19.130 --> 16:23.170
Now back in our workflow, we got an error.

16:26.970 --> 16:31.920
And when we check the trigger note and the schema and scroll down.

16:33.520 --> 16:41.080
It looks different this time because instead of text, we now have a voice note that contains a file

16:41.080 --> 16:41.520
ID.

16:42.800 --> 16:46.440
This means we need to handle messages differently based on their type.

16:47.240 --> 16:53.520
So to do this, we will insert a switch node between the diagram trigger node and the agent node.

16:54.480 --> 16:55.800
So go back to canvas.

16:56.400 --> 16:58.160
Let's close this error message.

16:59.880 --> 17:03.880
Zoom out a bit and let's search for each node.

17:10.360 --> 17:11.920
Now let's remove this connection.

17:15.520 --> 17:16.840
And move it over here.

17:21.080 --> 17:24.920
So the switch node allows us to create separate processing paths.

17:25.760 --> 17:30.040
Connect the telegram signal to the switch node.

17:35.880 --> 17:41.960
Let's open the switch node and for the first condition, we will check if the message contains a file

17:41.960 --> 17:44.000
ID inside the voice object.

17:44.800 --> 17:45.880
So scroll down.

17:46.280 --> 17:51.560
Let's find our file within the voice object.

17:53.360 --> 17:56.440
Grab it and drop over here.

17:57.400 --> 18:07.400
We assign this to the value field, then select string and exist.

18:08.080 --> 18:15.400
It simply means if a voice file id is detected, we route the workflow through the audio processing

18:15.400 --> 18:15.880
path.

18:16.920 --> 18:22.040
So to keep it organized, let's just rename it to audio.

18:27.200 --> 18:28.120
And let's close it.

18:28.720 --> 18:30.600
And now we can see the audio label.

18:30.840 --> 18:35.760
Since we also need to handle text messages let's make that adjustment.

18:37.280 --> 18:39.320
So I'm going to run test Workflow again.

18:42.440 --> 18:44.640
And send the basic text message.

18:47.920 --> 18:50.680
And now when we open the switch node.

18:53.320 --> 18:57.440
It appears red because the expected field is not present.

18:57.960 --> 19:02.760
So instead we have a text property from the telegram trigger.

19:03.160 --> 19:06.280
So to fix this we have to add a new route.

19:07.120 --> 19:09.040
So add a new routing rule.

19:11.600 --> 19:14.320
Use text field as the value.

19:20.640 --> 19:24.280
Again string Exist.

19:26.440 --> 19:28.400
And let's rename it to text.

19:39.080 --> 19:40.000
Let's close it.

19:40.920 --> 19:44.000
And now our switch node has two different routes.

19:44.520 --> 19:46.880
One for audio and one for text.

19:47.640 --> 19:52.760
So via text message comes in it will be directed to the agent for processing.

19:53.400 --> 19:55.040
When we connect these two nodes.

19:56.120 --> 19:59.880
But if we receive an audio message we need to handle it differently.

20:00.400 --> 20:04.800
So first let's add a new node and send another audio file into the flow.

20:05.360 --> 20:07.720
And now we can see the audio message.

20:08.080 --> 20:09.440
Trigger the audio route.

20:10.400 --> 20:12.040
Let's go back to our canvas.

20:13.440 --> 20:15.880
And now we have to download our voice message.

20:16.760 --> 20:18.800
So again click on Add node.

20:20.480 --> 20:21.680
Search for telegram.

20:26.640 --> 20:27.840
Select the get file.

20:29.640 --> 20:35.720
Now pass the file ID from the voice object into this field.

20:39.600 --> 20:41.040
And let's test this node.

20:48.600 --> 20:50.600
Here the file is successfully downloaded.

20:51.800 --> 20:53.280
I will rename this node to.

20:55.480 --> 20:57.080
Node file.

21:02.520 --> 21:03.360
Confirm it.

21:07.800 --> 21:08.680
And hit save.

21:10.640 --> 21:13.960
The next step is to transcribe the audio to text.

21:14.480 --> 21:15.920
So click add node.

21:17.760 --> 21:18.830
Search for OpenAI.

21:24.470 --> 21:25.150
Scroll down.

21:29.150 --> 21:30.470
Transcribe a recording.

21:31.990 --> 21:33.710
This is the action we want to achieve.

21:36.150 --> 21:38.470
We don't need to change anything in this note.

21:39.950 --> 21:41.110
So run a test.

21:49.110 --> 21:49.750
Great.

21:51.390 --> 21:57.310
Now that we have the transcribed text, we need to make sure our agent processes it correctly.

21:57.670 --> 21:59.510
Now let's make it more organized.

22:00.430 --> 22:01.630
I'm going to move it here.

22:04.670 --> 22:09.350
And we can connect the transcribed text to our AI agent.

22:10.790 --> 22:19.030
Now when we open the supervisor AI agent node there is a small issue we need to fix, because when we

22:19.030 --> 22:28.550
receive a text message from telegram, it comes inside an object called message, which contains a text

22:28.550 --> 22:29.070
field.

22:30.310 --> 22:35.110
However, when we got a transcription from an audio message.

22:37.310 --> 22:38.510
So let's expand it.

22:40.990 --> 22:49.470
The text is stored directly in the field called text without being wrapped in in a message object.

22:53.110 --> 22:59.950
Now when we open the supervisory agent node, there is a small issue we need to fix.

23:00.310 --> 23:07.790
Because when we receive a standard text message from telegram, it comes inside an object called message,

23:09.030 --> 23:11.630
which contains a text field.

23:12.910 --> 23:17.670
However, when we got a transcription from an audio message.

23:18.670 --> 23:19.990
So let's expand it.

23:30.070 --> 23:38.030
The text is stored directly in a field called text without being wrapped in a message object.

23:40.830 --> 23:47.590
We can quickly fix it and simplify the text format before sending it to the agent.

23:49.030 --> 23:50.430
So go back to canvas.

23:53.230 --> 23:56.910
Now we have to add a set node right after the switch node.

23:57.590 --> 23:59.950
So click on this small plus button.

24:01.190 --> 24:03.150
Search for set node.

24:07.110 --> 24:11.070
Click Add field and name it text.

24:16.750 --> 24:17.750
Let's scroll down.

24:20.470 --> 24:26.390
Let's grab text and assign it to the value called text.

24:31.230 --> 24:33.190
Now let's go back to our canvas.

24:36.790 --> 24:43.550
And if the text comes from telegram, it will extract text from the message object.

24:44.950 --> 24:49.830
And if it comes from the transcription it will use the text directly.

24:52.030 --> 24:56.230
So let's connect this node to our agent.

24:57.470 --> 25:05.390
And our agent will always receive a standardized text field no matter where the input comes from.

25:06.790 --> 25:10.070
So I will rename this node to set text.

25:19.430 --> 25:19.830
Film.

25:22.790 --> 25:30.230
Now, if we send a voice message, we might want the agent to reply with the voice too, not just text.

25:30.790 --> 25:37.630
So what we can do is add a new node between our agent and the telegram response node.

25:38.630 --> 25:44.470
So just by clicking on this plus button let's search for if node.

25:46.710 --> 25:50.030
What we will do here is add an if condition.

25:50.950 --> 25:58.070
So what we want to say is let's go to our telegram trigger node.

26:00.950 --> 26:05.950
And we want to check if the voice ID exists.

26:09.700 --> 26:11.340
So let's grab this file ID.

26:13.380 --> 26:14.540
And drop over here.

26:16.100 --> 26:25.900
If you can see this voice object that's mean you need to add some data to to the flow.

26:26.580 --> 26:33.020
So just simply test a workflow and send a voice message on telegram.

26:35.340 --> 26:44.180
So now you want to click on drop down select string and exist.

26:48.180 --> 26:54.500
So basically now we have two branches true and false.

26:55.500 --> 27:00.500
So if true we want to respond with audio.

27:01.540 --> 27:03.300
So we have to remove this connection.

27:05.860 --> 27:09.260
And if First, we will simply return text.

27:09.940 --> 27:12.100
So you have to connect these two nodes.

27:13.820 --> 27:17.220
And now we want to generate audio instead.

27:19.140 --> 27:21.020
So let's click on Add nodes.

27:24.060 --> 27:25.220
Search for open AI.

27:31.180 --> 27:37.220
Go to Audio Actions and generate audio.

27:41.060 --> 27:42.580
Select your credentials.

27:46.220 --> 27:50.660
And here you can select a voice.

27:53.500 --> 27:55.060
So I go with echo.

27:58.060 --> 27:59.900
And you can leave this node as it is.

28:00.700 --> 28:02.100
So now you have a setup.

28:04.220 --> 28:10.260
And the two conditions if the file ID exists.

28:13.220 --> 28:14.860
So the condition is true.

28:15.820 --> 28:19.500
Generate an audio if doesn't exist.

28:20.500 --> 28:22.260
Return a text message.

28:22.700 --> 28:27.220
Now let's rename this node to generate audio.

28:38.820 --> 28:40.380
Let's test our workflow.

28:41.780 --> 28:46.100
I'm just gonna say a short voice message on telegram.

28:48.140 --> 28:48.340
Hi.

28:48.380 --> 28:49.100
How are you doing?

29:02.020 --> 29:05.700
So we should Just get a response in a second.

29:06.300 --> 29:06.540
Yes.

29:06.540 --> 29:07.380
You got an error?

29:07.380 --> 29:07.740
Which is?

29:07.780 --> 29:08.980
Which was expected.

29:09.740 --> 29:10.860
Let's open this node.

29:12.660 --> 29:16.860
Now we got some data in the flow so we can.

29:18.900 --> 29:26.420
Expand our supervisor agent node and grab this output property.

29:28.820 --> 29:29.780
And drop it here.

29:35.220 --> 29:37.140
Let's test our workflow again.

29:37.980 --> 29:43.780
Just before that I've got a great trick for you in every trigger node.

29:44.740 --> 29:51.740
Doesn't matter if it's a telegram, WhatsApp or any other platform, there is an option to pin data.

29:52.660 --> 29:56.900
So there is a pin icon in the top right corner.

29:57.300 --> 30:03.660
So when you click on it, you'll pin data within your workflow and you can simply unpin it.

30:06.060 --> 30:16.220
So it means that the message, voice message or text message you send area will be saved in this node,

30:17.620 --> 30:21.860
so you don't need to send it over and over again.

30:22.620 --> 30:28.940
Now you just need to click on Test Workflow and it will use the previous message.

30:39.180 --> 30:39.660
Great.

30:39.660 --> 30:45.740
So now we generated the ice voice response.

30:45.740 --> 30:48.100
So we need to send it back to telegram.

30:49.620 --> 30:51.260
So add the telegram node.

30:55.580 --> 30:56.460
Scroll down.

30:58.970 --> 30:59.370
And.

31:03.930 --> 31:05.010
We are looking for.

31:05.050 --> 31:06.850
Send an audio file.

31:12.170 --> 31:13.090
Which is right here.

31:17.250 --> 31:19.370
Now switch to the schema.

31:21.690 --> 31:26.810
And we need to select the chat ID from the telegram trigger node.

31:26.810 --> 31:27.810
So expand it.

31:32.010 --> 31:33.930
Grab this chat ID.

31:36.650 --> 31:37.770
And move over here.

31:39.530 --> 31:40.730
Also we need to.

31:44.090 --> 31:51.170
Enable binary file so it knows to send the audio instead of text okay that's it.

31:51.170 --> 31:52.490
And now let's test it out.

31:55.530 --> 31:57.730
I'm just gonna click on Test Workflow.

32:11.890 --> 32:12.170
Great.

32:12.170 --> 32:14.890
I just received an audio file.

32:15.170 --> 32:16.810
Let's listen to it.

32:20.570 --> 32:22.690
I'm here and ready to assist you.

32:22.730 --> 32:24.090
How can I help you today?

32:24.170 --> 32:24.570
All right.

32:24.570 --> 32:25.090
Great.

32:28.170 --> 32:34.410
Now let's check if our agent will respond to a text message properly.

32:35.050 --> 32:37.570
So I'm just gonna unpin data.

32:40.650 --> 32:41.610
Test workflow.

32:44.810 --> 32:48.410
And send short text message on telegram.

32:49.290 --> 32:52.290
I'm just gonna say hi.

32:52.970 --> 32:54.330
Can you assist me, please?

32:59.410 --> 32:59.890
Great.

32:59.890 --> 33:04.810
Now we have received a text respond back to this branch.

33:06.690 --> 33:07.930
So let's have a look.

33:13.450 --> 33:14.090
Absolutely.

33:14.130 --> 33:15.290
How can I assist you today?

33:15.290 --> 33:17.290
Please let me know what you need help with.

33:18.490 --> 33:19.210
Alright, great.

33:19.250 --> 33:26.130
Now what I like to do, I like to summarize the message before generating the voice.

33:26.130 --> 33:32.410
So this makes the voice message more to the point and also reduces token cost.

33:32.810 --> 33:36.930
And obviously we don't want to listen to long messages.

33:36.930 --> 33:45.490
So what we are going to do now is we are going to grab an open AI message model.

33:45.490 --> 33:49.210
So let's search for open AI.

33:52.690 --> 33:58.570
Just bit between the teeth and generate audio notes.

33:59.010 --> 34:00.810
So let's click on this plus button.

34:02.810 --> 34:03.730
Search for open AI.

34:05.890 --> 34:09.570
And under Text actions select Message Model.

34:12.250 --> 34:18.610
Connect your credentials and select the large language model you want to use.

34:19.490 --> 34:22.050
So I want to use GPT for me.

34:23.650 --> 34:27.770
Now you want to get some data into this node.

34:29.290 --> 34:32.290
So I'm just gonna say test the workflow.

34:34.050 --> 34:36.170
Send a short voice message on telegram.

34:38.010 --> 34:38.210
Hi.

34:38.210 --> 34:39.210
Can you help me, please?

34:52.970 --> 34:53.650
All right.

34:57.330 --> 35:01.970
So now we want to give it give a prompt to our model.

35:03.450 --> 35:04.250
So let's.

35:06.890 --> 35:08.530
Ask it to summarize.

35:12.490 --> 35:13.290
The message.

35:14.850 --> 35:18.490
So I'm going to provide you with the prompt.

35:19.530 --> 35:21.890
So I'm going to copy and paste it now.

35:24.090 --> 35:24.690
There we go.

35:25.570 --> 35:28.970
I want this model to summarize this incoming information.

35:29.810 --> 35:32.810
So the message from the previous node.

35:34.690 --> 35:38.770
So I'm going to expand it to show you how it looks like.

35:39.650 --> 35:46.370
So summarize this incoming information which is in this format is basically our previous message for

35:46.370 --> 35:51.120
the calendar events provides only the name of the event and time for or you may provide the title of

35:51.160 --> 35:52.640
the email and summary of the body.

35:52.680 --> 35:55.000
No time and output, only plain text.

35:55.040 --> 35:58.000
There should be no markdown formatting or any symbols.

35:59.360 --> 36:00.480
So let's close it.

36:03.880 --> 36:11.240
We want the summary in plain text, so we'll make sure there are no symbols or special characters because

36:11.240 --> 36:14.240
the AI generated voice will read everything.

36:15.240 --> 36:15.760
That's it.

36:15.760 --> 36:16.880
Let's test it out.

36:19.800 --> 36:25.080
It's going to ping data again and test the workflow.

36:43.920 --> 36:45.400
Let's listen to the response.

36:49.720 --> 36:50.520
Of course.

36:50.520 --> 36:51.640
I'm here to help.

36:51.680 --> 36:53.880
Please let me know what you need assistance with.

36:54.960 --> 36:55.520
Perfect.

36:55.520 --> 36:58.080
So now your agent responds with voice two.

36:58.680 --> 37:03.680
And if the voice is too long, it will be summarized before sending back to you.

37:03.840 --> 37:10.040
What if you want a different voice because you don't like any of the OpenAI's options?

37:11.720 --> 37:13.760
So there is a solution for that.

37:14.560 --> 37:21.920
Also, if you want to clone your own voice or someone else's voice, you can use voices from 11 labs,

37:21.920 --> 37:24.880
which is the best AI voice generation platform.

37:25.280 --> 37:29.720
So this is optional, but I'm going to show you how to set this up.

37:30.320 --> 37:30.760
All right.

37:30.760 --> 37:38.560
So now that we have our summarized text, we are going to send it to 11 labs to generate the actual

37:38.600 --> 37:44.520
voice file instead of sending it to OpenAI voice models.

37:44.560 --> 37:49.760
So let's remove this connection and this one too.

37:53.040 --> 38:01.680
We want to feed this summarized text into post requests, and we'll generate audio file using a voice

38:01.680 --> 38:03.320
from platform.

38:03.720 --> 38:12.440
We need to set up the HTTP request in order to use a Post request to send our text to 11 labs.

38:12.840 --> 38:16.200
So let's search for http request node.

38:20.760 --> 38:24.960
Now we need to change the method from get to post.

38:27.400 --> 38:34.520
And we need the URL as some headers and JSON body.

38:35.320 --> 38:36.680
Now go to 11 labs.

38:36.680 --> 38:38.720
You can find a link in the description.

38:39.280 --> 38:39.920
Sign up.

38:40.120 --> 38:41.080
Create an account.

38:41.400 --> 38:48.080
Now when I was testing this, I ran into some credential errors on the free plan, so I recommend you

38:48.080 --> 38:54.480
to upgrade to the starter plan for $5 a month, which gives you 40,000 credits.

38:54.920 --> 39:01.240
That should last quite a while unless you are generating really long voice files in 11 laps.

39:01.280 --> 39:05.360
Go to the text to speech section.

39:05.680 --> 39:14.680
So create speech and now you can copy and paste values from this code snippet.

39:15.840 --> 39:18.120
So first we need this URL.

39:18.400 --> 39:19.520
So let's copy it.

39:25.640 --> 39:27.960
Go back to 2010.

39:30.120 --> 39:31.360
And paste it right here.

39:37.760 --> 39:39.920
Right now we need some headers.

39:39.920 --> 39:42.790
So enable send headers.

39:46.190 --> 39:48.830
Go back to the platform.

39:53.430 --> 39:58.350
Copy this one of the two headers.

39:59.470 --> 40:01.030
Go back to N810.

40:04.230 --> 40:05.590
Pass it as a first name.

40:08.390 --> 40:11.270
Now as a value, we need to generate our API keys.

40:15.830 --> 40:18.110
In your account.

40:19.950 --> 40:25.750
Go to settings API keys.

40:30.430 --> 40:31.630
Create API key.

40:33.870 --> 40:34.750
Give it a name.

40:37.670 --> 40:38.350
Create.

40:44.430 --> 40:45.190
Copy it.

40:46.870 --> 40:48.070
Go back to it again.

40:50.350 --> 40:51.430
And paste it here.

40:55.230 --> 40:58.510
Now we need to add the second parameter.

40:59.510 --> 41:00.430
So add new one.

41:02.110 --> 41:05.270
Go to API documentation.

41:09.430 --> 41:10.790
Copy this line.

41:18.230 --> 41:19.470
So this is our value.

41:27.950 --> 41:30.830
With that all right.

41:30.830 --> 41:32.870
So now we need to send a body.

41:33.590 --> 41:35.230
So basically JSON file.

41:37.030 --> 41:38.070
So enable it.

41:38.070 --> 41:38.110
Hybrid.

41:45.230 --> 41:47.110
Switch to using JSON.

41:49.590 --> 41:50.950
Switch to expression.

41:53.670 --> 41:55.110
Now from the previous node.

41:56.630 --> 42:02.710
Grab this property content and drop over here.

42:05.190 --> 42:16.030
And now we need to convert this JSON file into JSON string and clean it up a bit because it will return

42:16.030 --> 42:19.190
some symbols we don't want in our message.

42:22.870 --> 42:25.670
So I'm going to provide you with a code snippet.

42:26.150 --> 42:28.510
Now I'm going to paste it here.

42:32.910 --> 42:36.710
So as you can see JSON dot Stringify.

42:36.750 --> 42:45.150
So it's going to convert it to JSON string and remove all the special characters.

42:45.990 --> 42:47.150
So it should work now.

42:48.910 --> 42:50.590
Now let's scroll up.

42:51.790 --> 43:00.790
And now in our URL after text to speech forward slash, we can paste the ID of the voice we want to

43:00.830 --> 43:01.230
use.

43:02.070 --> 43:05.110
So let's go back to our Level Labs account.

43:13.430 --> 43:16.150
And in the left menu click on voices.

43:19.270 --> 43:22.270
On this page you can choose the voice you like.

43:23.270 --> 43:24.510
So you can test.

43:25.030 --> 43:29.750
I believe there are over 3000 voices to choose from.

43:33.190 --> 43:34.750
So I'm going to pick this one.

43:34.990 --> 43:36.350
Just trust yourself.

43:36.390 --> 43:38.190
Then you will know how to live.

43:39.310 --> 43:46.910
Now click on view and right here in the right bottom corner you can see an ID.

43:47.790 --> 43:52.830
Just copy the ID go back to n810.

43:59.830 --> 44:06.310
And after the text to speech forward slash paste this ID.

44:06.670 --> 44:13.830
Now in the telegram response node we need to provide a name of the field.

44:14.630 --> 44:19.230
So under additional fields click on Add field.

44:20.550 --> 44:29.310
Select File Name and give it a name data dot.

44:29.550 --> 44:33.060
And it needs to be this format this file extension.

44:35.100 --> 44:36.300
To copy and paste it.

44:37.980 --> 44:39.060
Now let's close it.

44:41.020 --> 44:41.780
Hit save.

44:46.380 --> 44:51.620
I'm going to unpin data in the telegram trigger node.

44:52.900 --> 44:54.660
So simply unpin.

44:58.420 --> 44:59.140
Save again.

45:00.660 --> 45:01.900
Now let's test it out.

45:01.900 --> 45:05.820
So I'm going to send a short voice message on telegram.

45:13.380 --> 45:13.740
Hi.

45:13.740 --> 45:18.500
Can you please help me write a viral LinkedIn post?

45:38.340 --> 45:39.820
All right, we got a response.

45:39.860 --> 45:40.980
Let's listen to it.

45:46.060 --> 45:52.380
To help write a viral LinkedIn post, I need one topic or message to convey two personal experiences

45:52.380 --> 45:54.020
or insights to share three.

45:54.220 --> 45:56.900
Target audience for specific call to action.

45:57.060 --> 45:57.980
That sounds good.

46:00.980 --> 46:01.780
That's awesome.

46:01.820 --> 46:07.540
Our agent can already read and listen to our messages and respond with text or audio.

46:08.020 --> 46:13.300
But what makes an agent powerful is its ability to interact with the world.

46:13.620 --> 46:18.620
In other words, connecting with external systems, apps, and data sources.

46:19.020 --> 46:26.900
So this means it can, for example, read and reply to emails, manage calendar, search the web for

46:27.180 --> 46:31.620
real time information Update spreadsheets or databases.

46:32.580 --> 46:33.660
Fashion process.

46:33.660 --> 46:34.940
Customer requests.

46:36.260 --> 46:40.660
So you could implement these functionalities by adding tools.

46:43.540 --> 46:55.100
So simply by clicking on this plus button as N810 has direct integrations with many platforms such as

46:55.140 --> 46:58.380
Google Apps, CRMs, Wikipedia.

46:59.940 --> 47:05.660
Then set up credentials specify in the prompt how to use these tools.

47:06.340 --> 47:13.300
In general, there are over 1000 apps and services you can connect to.

47:14.180 --> 47:20.940
And if there is not a direct integration for what you are looking for, you can always connect via HTTP

47:20.940 --> 47:26.380
requests and API calls in Agentic workflows.

47:26.500 --> 47:34.540
It's not recommended to give your agent too many tools, because the agent may might struggle to decide

47:34.540 --> 47:35.700
which tool to use.

47:36.300 --> 47:40.780
More tools mean more chances for conflicts and failures.

47:41.340 --> 47:46.260
Managing multiple tools in a single agent can slow down responses.

47:46.620 --> 47:54.340
So instead, it's better to build separate subagents, each responsible for a specific task.

47:55.540 --> 48:02.980
Like in this setup, we will create email agent handles, emails and responses.

48:03.460 --> 48:07.060
Calendar agent manages our calendar.

48:09.140 --> 48:13.660
And research agent does research for us.

48:14.500 --> 48:16.380
So this is a basic example.

48:16.660 --> 48:25.100
But what if you wanted your supervisor agent to do more tasks such as managing social media, Making

48:25.100 --> 48:34.100
calls on your behalf or nurturing leads, you would need a swarm of agents, which, by the way.

48:36.180 --> 48:38.820
Can have their own subagents and tools.

48:39.220 --> 48:42.220
And this is what we call a multi-agent system.

48:42.980 --> 48:46.020
Think of it like a multi-layered organization.

48:46.780 --> 48:52.420
So at the top you have an executive agent overseeing everything.

48:52.540 --> 48:59.020
Below that, directors to handle major responsibilities.

48:59.580 --> 49:04.100
And each director has a manager a agent.

49:06.260 --> 49:07.780
Who coordinates tasks.

49:08.660 --> 49:10.060
They have supervisors.

49:11.020 --> 49:18.260
And finally employs agents to execute specific actions.

49:19.660 --> 49:22.500
And each employee has access to tools.

49:22.500 --> 49:22.570
Rules.

49:23.250 --> 49:30.730
So instead of overloading one agent with too many tools, the best practice is to build a network of

49:30.730 --> 49:34.530
specialized agents that communicate and work together.

49:35.210 --> 49:45.890
Each agent focuses on a specific task, making the system more efficient, scalable, and reliable.

49:46.810 --> 49:53.490
By the way, I'm currently working on a system with over 20 agents in N810, so stay tuned.

49:57.090 --> 50:02.130
Now, the only tool you want to add in this setup is a contact database.

50:02.490 --> 50:11.250
So our agent can access email addresses, phone numbers, calendar events, etc. for example, I've

50:11.250 --> 50:15.130
got a spreadsheet with one person's contact details.

50:15.170 --> 50:24.090
For this demo, for simplicity, we'll use Google Sheets, but you could also use CRM like Airtable

50:24.090 --> 50:31.970
for structured data, or pinecone, a vector database for large contact repositories.

50:33.210 --> 50:34.690
So click on add tool.

50:38.410 --> 50:40.170
Search for Google Sheets.

50:44.090 --> 50:45.490
Select Google Sheets tool.

50:52.210 --> 50:54.570
Now you need to connect your Google account.

50:55.130 --> 50:59.530
Once you set up your credentials and connect it to Google account.

50:59.890 --> 51:00.650
Let's move on.

51:01.930 --> 51:05.170
We don't need to change anything within this field.

51:06.650 --> 51:17.090
As a resource, we want to retrieve sheet within document as operation.

51:17.330 --> 51:19.050
Let's leave controls.

51:19.050 --> 51:19.130
Patrols.

51:20.170 --> 51:21.570
And now we can choose.

51:24.170 --> 51:28.090
Specific document we want to retrieve from our Google Sheets.

51:28.810 --> 51:32.650
So from the list let's choose.

51:35.490 --> 51:40.050
And now we can choose the specific sheets.

51:41.690 --> 51:42.730
Leave it as it is.

51:44.330 --> 51:45.210
Let's close it.

51:46.810 --> 51:48.650
And now let's hit save.

51:51.010 --> 51:52.410
And let's test our workflow.

51:54.010 --> 51:57.530
Retrieve the email address of Mark Johnson.

51:58.650 --> 52:00.770
So I'm going to send a voice message.

52:04.090 --> 52:07.090
So we should receive a voice message from our agent.

52:08.730 --> 52:09.770
Let's listen to it.

52:13.770 --> 52:20.890
I found a contact named Mark Johnson with the email Nate at gmail.com, but I couldn't locate specific

52:20.890 --> 52:22.610
information for Marques Johnson.

52:22.610 --> 52:24.890
Let me know if you need help with anything else.

52:25.810 --> 52:26.090
All right.

52:26.090 --> 52:26.610
Great.

52:28.410 --> 52:34.810
Now our agent is able to pull rows of contact information from this sheet.

52:37.970 --> 52:43.530
So to keep things organized, I will rename this tool to Contact Database.

52:57.570 --> 52:59.130
The foundation is now set up.

52:59.370 --> 53:02.050
So let's continue by adding the Subagents.

53:03.730 --> 53:10.130
So now we have to create a completely new workflow and make calls.

53:10.730 --> 53:15.970
So let's open a new tab and go back to The N810.

53:16.010 --> 53:16.730
Home screen.

53:23.850 --> 53:25.130
Make sure to save it.

53:35.850 --> 53:36.850
Click that workflow.

53:43.490 --> 53:45.850
And name it to Email Agent.

53:52.770 --> 53:53.530
Press enter.

53:59.090 --> 54:06.370
So this will act as a dedicated sub agent to handle email related tasks.

54:07.370 --> 54:09.570
So add a trigger node.

54:11.770 --> 54:14.160
Set to when called by another workflow.

54:18.960 --> 54:22.920
This means our personal assistant will call this agent when we ask.

54:24.120 --> 54:27.160
For example, can you send an email or can you check my emails?

54:28.520 --> 54:29.400
Let's close it.

54:31.920 --> 54:32.360
Now.

54:33.160 --> 54:34.880
Add an agent node.

54:49.880 --> 54:54.240
We don't need this trigger, so let's remove it.

54:59.080 --> 55:00.240
Let's add a chat model.

55:03.240 --> 55:06.920
I'm going to use OpenAI GPT four mini.

55:12.080 --> 55:14.440
So no memory is needed for this agent.

55:18.920 --> 55:20.200
Now we need to add tools.

55:22.520 --> 55:23.160
Perfect.

55:23.200 --> 55:25.880
Now we need to add tools to our email agent.

55:26.680 --> 55:31.560
So each tool represents a specific task we want our agent to handle.

55:32.000 --> 55:38.520
So in this example we want it to perform two main actions right.

55:38.520 --> 55:42.480
And send emails and fetch emails from your inbox.

55:43.280 --> 55:44.880
So let's search for Gmail.

55:54.600 --> 55:57.840
In Gmail we have a ton of different actions we can take.

55:58.720 --> 56:03.600
We are going to keep this agent simple, but very useful for functionalities.

56:04.320 --> 56:05.920
So what you can what it can do.

56:06.280 --> 56:08.160
So sending and receiving emails.

56:09.960 --> 56:16.040
Let's rename this tool to send email to make it clear what it does.

56:25.200 --> 56:30.240
I want this tool to set automatically as a resource.

56:30.240 --> 56:32.560
We want to have a message.

56:33.840 --> 56:38.440
We want to send an email, but we need to configure these fields.

56:40.200 --> 56:46.560
Now after I recorded the original version of this tutorial, the Na ten team released this super helpful

56:46.560 --> 56:54.360
feature so you can now use AI to fill in these fields automatically for you.

56:55.680 --> 56:59.320
So first I'm going to show you the simplest way to complete these fields.

56:59.440 --> 57:00.960
So using this new feature.

57:01.960 --> 57:07.200
So just click this little purple I button next to the input.

57:08.120 --> 57:15.640
and the model will intelligently figure out things like the recipient's email address, the subject,

57:15.640 --> 57:19.840
and the message content based on your email context.

57:20.840 --> 57:22.240
So it's really cool.

57:22.240 --> 57:29.280
And it it interprets the user's intent and maps the details directly into the right fields.

57:29.720 --> 57:32.880
So it makes your Gmail node setup way faster.

57:33.760 --> 57:34.880
So let's do it now.

57:34.920 --> 57:38.720
So as you can see we can let the model define the parameter.

57:41.080 --> 57:42.200
So let's click on that.

57:43.440 --> 57:47.440
The same for the subject and for the message.

57:49.280 --> 57:53.400
And the second option is to set up it manually.

57:53.920 --> 58:01.040
So I will show you the manual way how to configure this node using the from OpenAI expression.

58:01.520 --> 58:02.600
So that's useful.

58:02.800 --> 58:07.120
Um, if for some reason the default AI option doesn't work for your case.

58:07.400 --> 58:11.960
Or if you want more control and want to understand how it works behind the scenes.

58:12.560 --> 58:21.360
But both of these methods works not just for Gmail, but for every node you use as a tool for your agents

58:21.360 --> 58:26.760
like sending emails, retrieving inbox content, managing calendars, and so on.

58:27.640 --> 58:36.400
So you can stick with the quick helper or go deeper with full manual setup, and both options are available.

58:37.720 --> 58:39.480
So now let's move on to the second method.

58:39.840 --> 58:43.280
So we are going to use this cool expression.

58:44.760 --> 58:47.560
So we will use the from I function.

58:48.040 --> 58:56.560
This helps the AI extract details from a user's request and map them into fields automatically.

58:57.040 --> 58:58.040
So it's really cool.

58:59.120 --> 59:05.950
So basically this expression helps LLM Alarm interpret an incoming query.

59:06.710 --> 59:12.190
So I'm planning to make a separate tutorial on explaining this in detail, because this is the best

59:12.190 --> 59:16.310
way to give you give you agents tools in any ten.

59:18.190 --> 59:19.870
For now, let's keep it simple.

59:20.790 --> 59:26.190
So let's copy this expression including curly braces.

59:31.390 --> 59:32.870
And paste it to this field.

59:36.510 --> 59:39.430
Then in the field switch over to expression.

59:43.390 --> 59:45.430
Now we need to change the placeholder.

59:47.070 --> 59:50.430
So name it email address.

59:57.710 --> 01:00:01.070
You can also add a description but it's optional.

01:00:01.470 --> 01:00:08.310
So it helps glide the LLM in figuring out how to retrieve the information and in what format.

01:00:09.790 --> 01:00:11.790
So you can add comma.

01:00:19.230 --> 01:00:20.870
And say something like.

01:00:23.190 --> 01:00:24.390
The recipient's.

01:00:27.430 --> 01:00:28.310
Email address.

01:00:33.990 --> 01:00:36.070
We do the same thing with other fields.

01:00:42.350 --> 01:00:43.630
Now the next field.

01:00:45.150 --> 01:00:46.310
So our subject.

01:00:47.070 --> 01:00:48.270
Let's do the same thing.

01:00:56.470 --> 01:00:59.110
Don't forget to switch over to expression.

01:01:14.150 --> 01:01:18.830
Also we need to change the image type to text.

01:01:23.310 --> 01:01:25.510
And for message expression.

01:01:31.310 --> 01:01:34.550
Let's say email body.

01:01:37.190 --> 01:01:42.670
Also we need to add option append and end distribution.

01:01:43.390 --> 01:01:44.270
Turn it off.

01:01:46.750 --> 01:01:48.510
And add sender name.

01:01:50.310 --> 01:01:53.110
This just tells Gmail who the email is from.

01:01:53.510 --> 01:01:54.430
But it won't.

01:01:54.470 --> 01:01:56.790
It won't actually sign off the message.

01:01:57.230 --> 01:01:59.110
We need to do it in our prompt.

01:01:59.750 --> 01:02:03.030
So I will put my name here since it's my personal assistant.

01:02:07.710 --> 01:02:08.870
I will show you in a bit.

01:02:10.950 --> 01:02:13.750
Now we can test our workflow.

01:02:16.270 --> 01:02:21.430
So let's see if the agent can send an email like it's supposed to.

01:02:22.110 --> 01:02:31.430
So since our supervisor agent will be the one calling, this agent will create a sample request to simulate

01:02:31.430 --> 01:02:31.830
that.

01:02:32.550 --> 01:02:35.390
So in the execute workflow trigger.

01:02:37.990 --> 01:02:38.390
Um.

01:02:40.470 --> 01:02:44.910
We need to we need to give a query to our agent.

01:02:45.830 --> 01:02:48.510
So when task two send an email.

01:02:50.190 --> 01:02:58.420
So for example I might say can you send email to Damon at n810 demos Gmail.com to check how he is doing.

01:02:59.140 --> 01:03:03.060
Now let's save it in your data.

01:03:05.900 --> 01:03:06.660
Save it.

01:03:11.980 --> 01:03:13.500
And let's test the workflow.

01:03:19.580 --> 01:03:20.860
There is no problem specified.

01:03:20.860 --> 01:03:23.420
So now let's fix it.

01:03:25.420 --> 01:03:25.780
Oh yeah.

01:03:25.780 --> 01:03:28.860
You have to define below.

01:03:30.180 --> 01:03:34.180
We don't want to take data from the previous node automatically.

01:03:34.220 --> 01:03:36.780
We want to define it below.

01:03:37.700 --> 01:03:42.940
We just simply grab this query and drop it here.

01:03:45.860 --> 01:03:46.500
Save.

01:03:46.660 --> 01:03:48.020
And let's test it again.

01:04:08.820 --> 01:04:10.220
Now let's check my inbox.

01:04:16.060 --> 01:04:16.420
Great.

01:04:16.420 --> 01:04:17.940
So I hope this message finds you well.

01:04:18.420 --> 01:04:18.940
Perfect.

01:04:18.940 --> 01:04:22.740
So now our agent is able to send messages.

01:04:24.020 --> 01:04:27.860
Just a quick tip to get an authorization error.

01:04:28.260 --> 01:04:30.900
Our Gmail credentials might have expired.

01:04:31.340 --> 01:04:34.020
So just refresh the connection and try again.

01:04:34.300 --> 01:04:39.460
So the credentials seem to expire every few days, meaning you just have to sign in again.

01:04:39.980 --> 01:04:46.140
But if you publish your app, you should be good to go without having to refresh it all the time.

01:04:48.660 --> 01:04:56.620
Now, after successful execution, when you check this tool, you can see the actual message.

01:04:58.060 --> 01:05:02.980
So the email I got and the email subject and email address.

01:05:12.460 --> 01:05:22.260
Going back to the email I got, the LM grabbed the recipient, which was Damien, but since we didn't

01:05:22.260 --> 01:05:26.420
specify a sender name, it signed off as your name by default.

01:05:26.820 --> 01:05:33.100
If you actually if you actually want it to sign off properly, you need to prompt the supervisor agent.

01:05:33.860 --> 01:05:42.980
So a quick way to do this is just by is just by going to the supervisor agent in the system message.

01:05:45.580 --> 01:05:51.140
You can say something like when sending emails through Gmail, always sign off with Damian and never

01:05:51.140 --> 01:05:55.660
use placeholders, so this makes sure every email has the correct sign off.

01:05:57.540 --> 01:05:57.900
Great.

01:05:57.900 --> 01:06:00.220
So our agent knows how to send emails.

01:06:00.220 --> 01:06:05.300
Now we need to add another tool to fetch emails from our inbox.

01:06:05.740 --> 01:06:07.740
So let's go back to our email agent.

01:06:11.860 --> 01:06:15.660
Now we want our agent to retrieve emails from our inbox.

01:06:16.260 --> 01:06:21.700
So you can simply use the same tool as before.

01:06:25.820 --> 01:06:28.020
But now you have to configure it differently.

01:06:29.180 --> 01:06:35.260
So you can really expand on this agent and give it tons of different actions like.

01:06:38.620 --> 01:06:39.620
Adding labels.

01:06:39.660 --> 01:06:40.780
Deleting messages.

01:06:41.220 --> 01:06:42.820
Marking emails as unread.

01:06:43.020 --> 01:06:46.660
You could essentially build a tool for all these functions.

01:06:47.220 --> 01:06:49.700
So for now, let's just focus on receiving emails.

01:06:50.020 --> 01:06:52.780
So we need to select get money.

01:06:57.620 --> 01:06:58.860
So first we need to.

01:07:01.180 --> 01:07:04.020
Set a limit on how many emails we are pulling in.

01:07:05.580 --> 01:07:08.300
So for now let's say five.

01:07:09.580 --> 01:07:12.060
We also need to define some filters.

01:07:14.380 --> 01:07:16.780
Like who the emails are coming from.

01:07:18.340 --> 01:07:20.020
So we'll set the sender field.

01:07:21.820 --> 01:07:29.980
As you can see there are multiple ways to filter by date by status, etc. for example, if you only

01:07:29.980 --> 01:07:38.060
wanted to get emails from the past five days, you could configure it by setting received after and

01:07:38.060 --> 01:07:39.500
received before filters.

01:07:40.340 --> 01:07:44.220
For now, let's keep it simple and use just send the filter.

01:07:45.300 --> 01:07:52.850
You can also use from I expression to set a limit and specify the sender.

01:07:53.490 --> 01:07:56.890
So let's use from I and as our sender.

01:07:57.530 --> 01:08:01.490
So I'm just gonna copy and paste this expression again.

01:08:06.090 --> 01:08:07.330
And paste it right here.

01:08:13.050 --> 01:08:15.090
As a placeholder you can enter.

01:08:17.930 --> 01:08:18.890
Send the email.

01:08:25.930 --> 01:08:28.570
And for the limit you have to switch over to expression.

01:08:30.850 --> 01:08:32.210
And paste it right here.

01:08:34.410 --> 01:08:36.170
We can say something like.

01:08:39.050 --> 01:08:39.690
Limit.

01:08:45.010 --> 01:08:45.650
Great.

01:08:47.250 --> 01:08:48.610
And now, one important thing.

01:08:48.610 --> 01:08:51.690
We don't want to simplify the results.

01:08:52.130 --> 01:08:53.810
If this setting is on.

01:08:54.090 --> 01:08:59.730
It returns a simplified version of the email data instead of the full content.

01:09:00.010 --> 01:09:03.730
So in some cases that might that might be fine.

01:09:03.930 --> 01:09:10.930
But if you are dealing with long emails and want all the details, you would want to turn this off.

01:09:12.570 --> 01:09:12.970
All right.

01:09:12.970 --> 01:09:20.330
So now at this point this email agent can send and retrieve emails.

01:09:21.450 --> 01:09:33.210
So what we want to do here is we want this email agent to respond back to our supervisor agent.

01:09:33.450 --> 01:09:35.730
So we need to add another node.

01:09:38.050 --> 01:09:44.250
Set node and simply just name it as a response.

01:09:48.170 --> 01:09:49.850
And grab this output.

01:09:52.290 --> 01:09:56.850
And put here in this field as the value.

01:09:58.570 --> 01:10:00.570
Our email agent is ready to go.

01:10:01.410 --> 01:10:07.450
Just need to unpin data and we can connect it to our supervisor agent.

01:10:08.050 --> 01:10:10.250
So let's go back to our main workflow.

01:10:10.810 --> 01:10:14.690
Now back in our main workflow we are going to add a new tool.

01:10:15.210 --> 01:10:18.890
And for this we'll choose call another workflow node.

01:10:20.570 --> 01:10:23.610
So simply click on Add Tool button.

01:10:26.090 --> 01:10:30.970
We need to choose this option because we want to trigger a different workflow.

01:10:32.010 --> 01:10:33.450
So our email agent.

01:10:37.770 --> 01:10:41.690
We will name this one Email agent.

01:10:53.170 --> 01:10:56.010
Now, as a description, we can say something like.

01:10:58.290 --> 01:11:06.050
Call this tool to take action in email.

01:11:13.090 --> 01:11:15.250
Now we need to configure this node.

01:11:17.370 --> 01:11:21.330
And set up which workflow this tool should connect to.

01:11:24.730 --> 01:11:34.170
So you can select the workflow either from a list or by ID, but picking from the list is the easiest.

01:11:38.570 --> 01:11:50.690
If you can see the workflow which consists your email agent, just simply save and refresh.

01:12:39.760 --> 01:12:44.040
So we called our email agent workflow email agent.

01:12:48.120 --> 01:12:49.480
So let's search for it.

01:12:55.800 --> 01:12:56.200
Now.

01:12:56.240 --> 01:12:57.240
Fit to return.

01:12:58.360 --> 01:13:01.440
This is where we previously set up the response field.

01:13:01.680 --> 01:13:10.280
So when the supervisor agent sends a request to the email, agent is going to look for a field named

01:13:10.280 --> 01:13:11.080
response.

01:13:11.800 --> 01:13:17.840
That's why in the email agent workflow I'm going to show you.

01:13:22.400 --> 01:13:34.880
That's why in this agent we added a set node named the field response and assign it to the actual email

01:13:34.880 --> 01:13:35.480
image data.

01:13:36.960 --> 01:13:41.960
So the supervisor agent knows exactly where to look for the response.

01:13:43.560 --> 01:13:50.560
Now we are going to create our calendar sub agent and I will move a bit quicker with this, since the

01:13:50.560 --> 01:13:54.560
process is pretty much the same as what we did with the email agent.

01:13:55.360 --> 01:14:00.680
So the first thing we need to do, we have to create a completely new workflow.

01:14:02.320 --> 01:14:04.520
So let's go back to the home page.

01:14:07.240 --> 01:14:11.240
So let's trigger this workflow when called by another workflow.

01:14:14.400 --> 01:14:16.240
So when called by another workflow.

01:14:20.880 --> 01:14:22.360
We'll add the agent.

01:14:23.040 --> 01:14:25.640
So let's search for a agent.

01:14:33.520 --> 01:14:34.920
Now as the chat model.

01:14:34.920 --> 01:14:42.760
So our agents brain since GPT four mini worked well for the email agent, we will stick with it again.

01:14:45.600 --> 01:14:47.200
We can remove this one.

01:14:47.200 --> 01:14:49.560
Chat message received trigger note.

01:14:52.880 --> 01:14:53.960
Add chat model.

01:14:57.320 --> 01:14:58.920
Select chat model.

01:15:11.960 --> 01:15:15.320
We don't need memory for this agent so we will leave that off.

01:15:15.680 --> 01:15:17.600
Now we can start adding the tools.

01:15:18.400 --> 01:15:20.080
This is our calendar agent.

01:15:20.080 --> 01:15:23.720
So we want to create and get events from our calendar right.

01:15:24.160 --> 01:15:27.160
So search for Google Calendar.

01:15:32.320 --> 01:15:34.160
So other counties already connected.

01:15:34.160 --> 01:15:35.200
So we are good to go.

01:15:35.480 --> 01:15:41.680
If you are using the cloud service, you might not need to enter the client ID and secret to set up

01:15:41.680 --> 01:15:42.480
credentials.

01:15:45.520 --> 01:15:48.240
But for the rest of us, we already done the hard part.

01:15:48.640 --> 01:15:52.080
So the first tool we are going to add is to create an event.

01:15:52.520 --> 01:15:54.560
So let's rename it.

01:16:03.200 --> 01:16:05.320
Will connect it to our calendar.

01:16:05.320 --> 01:16:08.200
And now we just need to configure a few details.

01:16:10.800 --> 01:16:15.640
The leaf resource as an event we want to create an email.

01:16:16.880 --> 01:16:19.080
Select your email address from the list.

01:16:22.120 --> 01:16:29.480
Now we have to specify the start, start time and end time and any additional properties like attendees.

01:16:30.360 --> 01:16:35.720
We will also add a summary, which is basically the event's title.

01:16:36.000 --> 01:16:38.240
So the text that shows up on the calendar.

01:16:43.640 --> 01:16:45.600
So let's do it one by one.

01:16:47.840 --> 01:16:57.920
We will pull the start time using from AI expression once again to let the large language model to do

01:16:57.920 --> 01:16:59.960
it automatically.

01:17:01.960 --> 01:17:11.120
So copy this from AI expression from curly braces all the way to the closing curly braces.

01:17:14.520 --> 01:17:16.680
Remember to switch to the expression.

01:17:19.080 --> 01:17:20.320
And paste it right here.

01:17:23.320 --> 01:17:26.880
Change the placeholder name to start time.

01:17:31.510 --> 01:17:33.990
You can add the description if you want.

01:17:36.350 --> 01:17:37.350
So it's the time.

01:17:40.950 --> 01:17:46.270
The user asked for the event.

01:17:49.350 --> 01:17:50.270
To start.

01:17:54.230 --> 01:17:54.910
Great.

01:17:56.870 --> 01:18:01.390
Now we have to do exactly the same thing for the end time.

01:18:02.070 --> 01:18:03.910
So let's just copy and paste it.

01:18:04.550 --> 01:18:08.190
Now let's change the placeholder name to End time.

01:18:12.150 --> 01:18:13.510
And the description.

01:18:18.390 --> 01:18:19.110
That's great.

01:18:24.350 --> 01:18:26.270
Now we have to add summary.

01:18:35.110 --> 01:18:36.190
For the summary.

01:18:36.230 --> 01:18:41.710
We will also pull that from I expression.

01:18:43.630 --> 01:18:45.190
So let's copy it.

01:18:49.590 --> 01:18:54.310
And just change the placeholder and the description.

01:18:55.510 --> 01:18:58.150
So let's say simply name.

01:19:04.830 --> 01:19:07.190
And it's the name of the calendar event.

01:19:17.430 --> 01:19:18.150
Great.

01:19:19.750 --> 01:19:28.110
Next we will add a sample query in the Execute workflow trigger node so we can play around with the

01:19:28.110 --> 01:19:28.710
data.

01:19:33.350 --> 01:19:39.270
Let's say we ask the calendar agent to set up an event at 3:00 pm for a meeting.

01:19:53.830 --> 01:19:56.270
So here we have to provide the prompt.

01:19:58.550 --> 01:20:03.550
Set up and event.

01:20:07.190 --> 01:20:08.310
At 3 p.m..

01:20:10.350 --> 01:20:11.070
Meeting.

01:20:15.190 --> 01:20:15.790
Great.

01:20:19.750 --> 01:20:20.870
Now let's save it.

01:20:22.630 --> 01:20:23.710
The data is pinned.

01:20:27.590 --> 01:20:31.750
In this case, we are just blocking out time in our supervisor agent.

01:20:32.030 --> 01:20:35.710
But since we didn't specify an end time in the query.

01:20:35.990 --> 01:20:38.470
So how long is the meeting for?

01:20:39.750 --> 01:20:49.030
Later, we modified the agents prompt to assume the event lasts for 30 minutes or an hour.

01:20:49.030 --> 01:20:54.630
After the start time of the meeting in our supervisor agents prompt.

01:20:56.750 --> 01:20:58.190
Now let's save the workflow.

01:21:02.510 --> 01:21:03.390
And test it.

01:21:10.790 --> 01:21:16.870
Yes, we got an error because we didn't specify the prompt, so let's do it now.

01:21:21.510 --> 01:21:22.750
So define below.

01:21:24.950 --> 01:21:27.670
And simply drag and drop the query property.

01:21:31.230 --> 01:21:37.830
Now we will update the agent's prompt to include the current date and time so it knows when to create

01:21:37.830 --> 01:21:38.470
events.

01:21:38.790 --> 01:21:46.190
Because while these agents are pretty good at figuring out which tools to call, adding system prompts

01:21:46.190 --> 01:21:51.030
like this can make a big difference, especially depending on the model you are using.

01:21:51.830 --> 01:21:52.830
So let's do it now.

01:21:55.430 --> 01:22:04.670
Click on add option, Add system message and we'll keep the prompt short and to the point since it's

01:22:04.670 --> 01:22:06.350
just a calendar agent.

01:22:12.430 --> 01:22:18.220
You are a calendar assistant with access to various tools to manage Calendar tasks.

01:22:18.260 --> 01:22:20.380
The current date and time is.

01:22:20.980 --> 01:22:32.500
I forgot to switch over to the expression mode, so thanks to this, agent is able to figure out what

01:22:32.500 --> 01:22:34.740
the current date and time is.

01:22:36.300 --> 01:22:37.980
So create event.

01:22:40.820 --> 01:22:45.180
Create event with attendee and also get events.

01:22:48.700 --> 01:22:49.860
Okay now let's test it.

01:22:52.380 --> 01:22:53.100
Hit save.

01:22:58.740 --> 01:22:59.820
And this workflow.

01:23:06.380 --> 01:23:06.940
Great.

01:23:08.420 --> 01:23:10.620
Now let's look at the execution.

01:23:31.980 --> 01:23:34.300
As you can see, it's working perfectly fine.

01:23:41.740 --> 01:23:45.140
Now let's add another tool to create events with attendees.

01:23:45.460 --> 01:23:52.940
We are doing this in a separate tool because adding attendees requires extra configuration.

01:23:53.540 --> 01:23:56.220
We need to add additional fields.

01:23:56.700 --> 01:24:00.420
If we left it all in one tool, it could cause issues.

01:24:00.820 --> 01:24:02.220
If there is no attendee.

01:24:02.380 --> 01:24:06.380
It might return an error when trying to create the event.

01:24:07.140 --> 01:24:08.820
So let's make it easy.

01:24:08.820 --> 01:24:13.380
So we need just to copy our create Eight.

01:24:14.020 --> 01:24:14.460
Events.

01:24:14.500 --> 01:24:14.980
Note.

01:24:20.980 --> 01:24:22.060
And paste it here.

01:24:24.940 --> 01:24:26.220
Let's rename it to.

01:24:32.980 --> 01:24:34.580
Event with attendee.

01:24:46.500 --> 01:24:48.460
So everything is exactly the same.

01:24:48.460 --> 01:24:50.500
We just need to specify attendee.

01:24:52.140 --> 01:24:53.180
So scroll down.

01:24:56.100 --> 01:24:58.820
Add filled attendees.

01:25:03.100 --> 01:25:05.220
Let's use our awesome expression.

01:25:09.300 --> 01:25:18.980
So the placeholder is attendee email and the description is the email of the user asks the event to

01:25:18.980 --> 01:25:20.060
be scheduled with.

01:25:21.020 --> 01:25:23.980
Now that we've got event creation working.

01:25:26.620 --> 01:25:29.740
Let's add one more tool to get events from the calendar.

01:25:30.620 --> 01:25:35.860
So this will allow the agent to retrieve events based on specific dates.

01:25:37.300 --> 01:25:42.340
Let's just actually let's rename this agent to Calendar agent.

01:25:53.780 --> 01:25:55.860
And also our workflow to.

01:25:58.620 --> 01:25:59.740
Calendar agent.

01:26:03.860 --> 01:26:04.660
And hit save.

01:26:16.770 --> 01:26:21.010
And this node to create event.

01:26:29.770 --> 01:26:33.410
Let's search for Google Calendar again.

01:26:39.010 --> 01:26:44.490
This time we want to retrieve emails from our inbox.

01:26:45.170 --> 01:26:47.690
So change operation to get money.

01:26:50.170 --> 01:26:51.530
Select your email address.

01:26:56.770 --> 01:26:58.930
We want all the emails to be returned.

01:26:59.130 --> 01:27:00.450
So enable this.

01:27:09.050 --> 01:27:13.490
We want to get events from one day before the requested date.

01:27:14.810 --> 01:27:18.210
So at option select after.

01:27:20.410 --> 01:27:25.170
Which the expression we will use from I expression again.

01:27:27.690 --> 01:27:33.370
As a placeholder we have start date and as the description the day before the requested date.

01:27:35.930 --> 01:27:38.930
We have to do the same for before field.

01:27:45.290 --> 01:27:50.530
But this time we want to get events up to one day after the requested date.

01:27:52.130 --> 01:27:54.850
So switch over to expression mode.

01:27:59.010 --> 01:28:04.090
And date as a placeholder and as a description the day after the requested date.

01:28:05.170 --> 01:28:12.050
This helps us retrieve events dynamically based on the user's input, instead of just pulling events

01:28:12.050 --> 01:28:14.730
from a fixed date like today.

01:28:16.370 --> 01:28:22.850
Finally, we need to ensure that the calendar agent sends responses back to the supervisor agent.

01:28:37.330 --> 01:28:40.930
Let's rename it to get events.

01:28:50.650 --> 01:29:01.210
We will add a set node as in the previous example in the email agent to search for set node.

01:29:05.730 --> 01:29:07.650
We need to add a response field.

01:29:08.930 --> 01:29:12.810
So the name is response again.

01:29:15.090 --> 01:29:16.330
Grab the output.

01:29:18.410 --> 01:29:19.410
Drop over here.

01:29:21.730 --> 01:29:22.370
Great job.

01:29:22.410 --> 01:29:27.050
Now let's connect this calendar agent to our supervisor agent.

01:29:27.610 --> 01:29:28.490
So hit save.

01:29:32.250 --> 01:29:33.050
Adding a tool.

01:29:35.490 --> 01:29:37.570
Select called Workflow tool.

01:29:41.370 --> 01:29:43.330
Rename it to Calendar agent.

01:29:58.530 --> 01:30:00.010
We need to provide a description.

01:30:00.010 --> 01:30:03.330
So They still.

01:30:07.530 --> 01:30:08.690
Manage the calendar.

01:30:13.370 --> 01:30:14.250
Great stuff.

01:30:15.890 --> 01:30:21.010
Now we are going to connect the calendar agent workflow we just created.

01:30:23.890 --> 01:30:26.490
We have to refresh this workflow.

01:30:29.450 --> 01:30:34.210
Because we didn't refresh it since we have created our calendar agent.

01:30:34.650 --> 01:30:35.530
So hit save.

01:30:37.290 --> 01:30:40.170
Now our calendar agent appears in the list.

01:30:41.650 --> 01:30:42.610
So select it.

01:30:45.170 --> 01:30:50.090
And the response field will handle sending data back to the supervisor agent.

01:30:53.410 --> 01:30:54.010
Great.

01:30:56.050 --> 01:30:56.930
Let's save it.

01:31:00.800 --> 01:31:01.440
Great.

01:31:01.480 --> 01:31:08.840
Now we are setting up a research agent that can answer questions by searching the internet, checking

01:31:08.840 --> 01:31:14.400
articles, and using sources like Wikipedia and set API.

01:31:15.000 --> 01:31:22.440
It's a lot easier to set up this agent than the email and calendar agents, but still very useful.

01:31:23.520 --> 01:31:29.880
So the goal here is to show you how you can assign different tools to your agents, making them more

01:31:29.880 --> 01:31:34.520
flexible and reusable across multiple workflows.

01:31:35.520 --> 01:31:39.400
So it's exactly the same process we need to create completely new workflow.

01:31:41.560 --> 01:31:46.200
So let's go back to our home page at First Step.

01:31:49.800 --> 01:31:55.320
So we want to trigger this workflow when it's called by another workflow.

01:32:01.240 --> 01:32:02.280
Other agents.

01:32:12.520 --> 01:32:13.600
Remove the trigger.

01:32:20.880 --> 01:32:22.640
Large language model as a chat model.

01:32:24.880 --> 01:32:25.840
To do the same.

01:32:27.920 --> 01:32:29.200
GPT four mini.

01:32:32.400 --> 01:32:33.560
We don't need a memory.

01:32:35.320 --> 01:32:38.720
Then we will add tools starting with Wikipedia.

01:32:39.840 --> 01:32:40.720
So add tool.

01:32:42.160 --> 01:32:43.400
Search for Wikipedia.

01:32:50.560 --> 01:32:53.000
Let's add the prompt to our agent.

01:32:56.520 --> 01:32:59.200
So adoption system message.

01:33:02.080 --> 01:33:08.600
The system message I have prepared is you are a research assistant with access to Wikipedia and serve

01:33:08.640 --> 01:33:09.080
API.

01:33:09.520 --> 01:33:15.560
First search for search Wikipedia and if you don't find the answer, use search API.

01:33:18.760 --> 01:33:26.760
So this setup is efficient because it uses resources first and only calls setup API when needed.

01:33:26.960 --> 01:33:28.720
Saving API credits.

01:33:29.600 --> 01:33:34.760
Setup API offers a free plan that includes 100 searches per month.

01:33:36.000 --> 01:33:48.480
So basically you can use this research agent 100 times per month in order to connect API ad to search

01:33:48.480 --> 01:33:49.680
for Serp API.

01:33:53.160 --> 01:33:56.760
Now we have to connect credentials.

01:33:57.640 --> 01:33:59.480
So go to servicom.

01:34:01.000 --> 01:34:02.120
Create an account.

01:34:03.080 --> 01:34:04.480
Go to API key.

01:34:09.080 --> 01:34:10.600
Create your API key.

01:34:10.920 --> 01:34:13.960
Copy it and paste it into an A-10.

01:34:15.720 --> 01:34:17.480
So we need to create new credential.

01:34:20.480 --> 01:34:21.760
And paste it right here.

01:34:23.320 --> 01:34:24.360
Then click save.

01:34:25.000 --> 01:34:27.360
And it should show as successful.

01:34:30.400 --> 01:34:31.680
Then save workflow.

01:34:36.120 --> 01:34:36.600
All right.

01:34:36.640 --> 01:34:39.240
Now let's connect this agent to our supervisor.

01:34:39.240 --> 01:34:39.760
Agent.

01:34:43.960 --> 01:34:45.520
First let's rename it to.

01:34:48.080 --> 01:34:49.160
Research agent.

01:34:52.800 --> 01:34:56.760
And also our subagent to make it clear.

01:35:10.960 --> 01:35:11.560
Great.

01:35:13.600 --> 01:35:14.240
Save it.

01:35:16.920 --> 01:35:19.240
Let's go back to our main workflow.

01:35:26.480 --> 01:35:30.240
Let's move this tool down.

01:35:35.920 --> 01:35:36.760
Adding a tool.

01:35:39.560 --> 01:35:41.120
Call a workflow tool.

01:35:45.840 --> 01:35:49.520
Rename it to please search agent.

01:36:08.470 --> 01:36:14.510
I will call this tool to search the internet and answer the user's questions.

01:36:17.070 --> 01:36:20.270
So simply call tool.

01:36:23.070 --> 01:36:25.590
To search the internet.

01:36:29.070 --> 01:36:30.070
And answer.

01:36:34.670 --> 01:36:35.870
Their users questions.

01:36:52.270 --> 01:36:55.470
Just select the research agent from the list.

01:37:02.910 --> 01:37:03.670
And that's it.

01:37:05.830 --> 01:37:06.550
Hit save.

01:37:14.990 --> 01:37:16.150
Congratulations.

01:37:16.310 --> 01:37:23.150
You just built your team of AI agents and you have learned how to create subagents like the email agent,

01:37:23.150 --> 01:37:31.470
calendar agent, and the research agent all working together under the supervision of the main supervisor

01:37:31.470 --> 01:37:32.070
agent.

01:37:32.550 --> 01:37:40.270
You can easily add more sub agents to handle new tasks, and if you want your agents to remember things

01:37:40.270 --> 01:37:46.190
over time, you can connect a vector database to give them persistent memory.

01:37:46.790 --> 01:37:47.790
So great job!
