WEBVTT

NOTE Sentence-level transcript of https://www.youtube.com/watch?v=33Oct2hqGnk

NOTE One cue per sentence. Cue ids are the line anchors on /transcripts/33Oct2hqGnk.html. A cue ends where the next begins, or 2 s after its last word.

s1
00:00:01.309 --> 00:00:03.309
[music]

s2
00:00:12.719 --> 00:00:14.320
Hi everyone.

s3
00:00:14.320 --> 00:00:16.560
Um, welcome, welcome.

s4
00:00:16.560 --> 00:00:20.400
Agents that forge their own tools.

s5
00:00:20.400 --> 00:00:22.320
What is so great about this?

s6
00:00:22.320 --> 00:00:24.000
Can't your claw code do this?

s7
00:00:24.000 --> 00:00:29.359
Or can't your cursor or your code editors, can't they all write their own tools?

s8
00:00:29.359 --> 00:00:31.359
So what am I even talking about here?

s9
00:00:31.359 --> 00:00:32.800
Why is this such a big deal?

s10
00:00:32.800 --> 00:00:33.120
Right?

s11
00:00:33.120 --> 00:00:38.320
Like any all of your agents can write tools by themselves.

s12
00:00:38.320 --> 00:00:45.120
But how many agents do you know that can fix code at runtime?

s13
00:00:45.120 --> 00:00:47.360
Let's say you've got something in production.

s14
00:00:47.360 --> 00:00:48.079
It's running.

s15
00:00:48.079 --> 00:00:50.640
Everything looks great, but something is failing.

s16
00:00:50.640 --> 00:00:51.840
Then what happens?

s17
00:00:51.840 --> 00:01:01.440
you have to probably bring it down, fix it by yourself and then restart it and then work with your clot code or whichever editor you're using and then bring it back up, right?

s18
00:01:01.440 --> 00:01:07.119
But imagine if your agent was smart enough to figure out, oh man, there is a bug here.

s19
00:01:07.119 --> 00:01:08.560
Something's not working.

s20
00:01:08.560 --> 00:01:10.880
I'm falling falling into an error.

s21
00:01:10.880 --> 00:01:12.560
I need to fix myself.

s22
00:01:12.560 --> 00:01:16.080
And it realizes what it can do to fix itself.

s23
00:01:16.080 --> 00:01:20.799
Writes its own tools all writes its own agents and fixes itself.

s24
00:01:20.799 --> 00:01:22.799
How cool would that be, right?

s25
00:01:22.799 --> 00:01:26.159
And that's what I'm here to talk to you about today.

s26
00:01:26.159 --> 00:01:33.600
Let me quickly show you a demo because I think I like leading in with demos so you know what you're getting into.

s27
00:01:33.600 --> 00:01:34.799
So, let's start with that.

s28
00:01:34.799 --> 00:01:35.360
Right.

s29
00:01:35.360 --> 00:01:38.320
So, here I have a and you can see my screen.

s30
00:01:38.320 --> 00:01:40.560
I'm hoping it's big enough I can zoom in.

s31
00:01:40.560 --> 00:01:40.880
Okay.

s32
00:01:40.880 --> 00:01:45.119
So, I have a simple agent here called agents.py.

s33
00:01:45.439 --> 00:01:49.600
This agent, we can go over the code in a bit, but this agent has nothing.

s34
00:01:49.600 --> 00:02:02.159
It's just got it's just got a pretty cool system prompt and then it's calling the system prompt and it's got three tools and if you look at the tools package there are actually no tools files that are written.

s35
00:02:02.159 --> 00:02:07.040
So technically this agent has no capability by itself, right?

s36
00:02:07.040 --> 00:02:09.119
It shouldn't be able to do anything, right?

s37
00:02:09.119 --> 00:02:13.920
All it should technically hallucinate because of the LLM that is running under the hood.

s38
00:02:13.920 --> 00:02:18.480
But let's say I say something like okay so first I'm going to start running this.

s39
00:02:18.480 --> 00:02:20.640
So we know it's running.

s40
00:02:20.640 --> 00:02:20.959
Okay.

s41
00:02:20.959 --> 00:02:24.239
So in runtime right now this is running.

s42
00:02:24.239 --> 00:02:43.920
Now I'm going to say hey you know what um help me calculate something uh some complex math equation right when I say this this agent which technically has nothing available

s43
00:02:43.920 --> 00:02:56.319
is going to be calling the three tools that it's got and we'll look into the tools that it's got in just a bit and it's going to say oh you know what let me create a math calculator tool because that's what you're asking for.

s44
00:02:56.319 --> 00:03:03.519
And it's not just going to create, it's going to let me use this tool that I'm creating right now at runtime without having to rerun it.

s45
00:03:03.519 --> 00:03:04.000
So, okay.

s46
00:03:04.000 --> 00:03:06.080
So, it's clearly gone ahead and created.

s47
00:03:06.080 --> 00:03:07.920
So, let's look at tools again.

s48
00:03:07.920 --> 00:03:13.120
It's created the math calculator tool and it's saying, okay, I do all these things.

s49
00:03:13.120 --> 00:03:14.959
I've got min, max, blah, blah, blah.

s50
00:03:14.959 --> 00:03:17.360
It's gone and created this entire new tool.

s51
00:03:17.360 --> 00:03:19.200
So, it's saying I can do all these things, right?

s52
00:03:19.200 --> 00:03:33.360
So, let's say calculate uh oh yikes uh what's the square of blah blah blah some number right I'm just typing out a random number so now it's calling that math calculator

s53
00:03:33.360 --> 00:03:42.959
tool that it just wrote by itself and it's giving me the answer not just that right so let's say I give it something completely out of blue and I say uh cool

s54
00:03:42.959 --> 00:03:51.200
whatever count number of characters in my word.

s55
00:03:51.200 --> 00:03:51.680
Okay.

s56
00:03:51.680 --> 00:03:58.080
So then, so then it's like, okay, so it's going to check if it can use any of the tools that it's currently got access to.

s57
00:03:58.080 --> 00:03:58.799
It doesn't.

s58
00:03:58.799 --> 00:04:08.080
So what it's saying is, okay, let me write a tool to count the number of characters you want because clearly it knows that it does not have the capability to do it.

s59
00:04:08.080 --> 00:04:10.799
And so it's going ahead and it's creating a there we go.

s60
00:04:10.799 --> 00:04:15.439
Even before I could finish speaking, it created a character counter for us.

s61
00:04:15.439 --> 00:04:21.680
So, let's say um do it for this word.

s62
00:04:21.680 --> 00:04:22.720
And it's not even a word.

s63
00:04:22.720 --> 00:04:24.880
I'm just going to put random things.

s64
00:04:24.880 --> 00:04:25.280
You know what?

s65
00:04:25.280 --> 00:04:28.479
I should have actually done something that I could count so I can validate it.

s66
00:04:28.479 --> 00:04:30.080
But the thing is it's calling a tool.

s67
00:04:30.080 --> 00:04:35.280
It's calling the character counter tool and it's telling me that it's got 28 letters.

s68
00:04:35.280 --> 00:04:36.720
Let's do it something we can test.

s69
00:04:36.720 --> 00:04:39.280
So, I'm just going to do it for these three letters, right?

s70
00:04:39.280 --> 00:04:40.400
We'll see if it knows.

s71
00:04:40.400 --> 00:04:41.919
So, I'm not even telling it what to do.

s72
00:04:41.919 --> 00:04:43.360
I'm just typing three letters.

s73
00:04:43.360 --> 00:04:45.680
It knows that it has to do it and it's doing it.

s74
00:04:45.680 --> 00:04:47.440
How powerful is this?

s75
00:04:47.440 --> 00:04:54.880
So, what I want to leave you with today is show you how you can build something like this where you can use it.

s76
00:04:54.880 --> 00:05:00.320
I think it's pretty powerful and how we can implement it in our work day-to-day work.

s77
00:05:00.320 --> 00:05:01.120
Very niche.

s78
00:05:01.120 --> 00:05:03.520
So, now let's get down to the code.

s79
00:05:03.520 --> 00:05:07.199
This is an idea called meta tooling.

s80
00:05:07.199 --> 00:05:12.320
and I'm using an open-source framework called Strand Agents.

s81
00:05:12.320 --> 00:05:15.840
And my name is Sandy and I work at AWS.

s82
00:05:15.840 --> 00:05:26.560
And we at AWS built Strand agents as an open-source a aentic harness that you can use to run your LLMs with, right?

s83
00:05:26.560 --> 00:05:31.280
And so, um, how show of hands, how many developers do we have in the room?

s84
00:05:31.280 --> 00:05:31.840
A quick show.

s85
00:05:31.840 --> 00:05:32.639
Oh, most of you.

s86
00:05:32.639 --> 00:05:33.039
Brilliant.

s87
00:05:33.039 --> 00:05:34.400
I'm talking to the right audience.

s88
00:05:34.400 --> 00:05:36.880
If not, I will change things around a little bit.

s89
00:05:36.880 --> 00:05:40.880
So, if you guys like getting into the code, I'm going to get into the code with me.

s90
00:05:40.880 --> 00:05:41.600
Right.

s91
00:05:41.600 --> 00:05:50.800
So, the main thing we need here for agents and I have a slide deck that goes with it is we need just three types of tools.

s92
00:05:50.800 --> 00:05:59.199
The editor, the shell, and the load tool along with the system prompt that lets us implement this function.

s93
00:05:59.199 --> 00:06:04.479
So I'm going to quickly go to my slide deck that helps us understand this better.

s94
00:06:04.479 --> 00:06:07.120
Like I mentioned, this is strand agent.

s95
00:06:07.120 --> 00:06:13.120
This is our agentic AI harness and you can use your own LLMs, bring your own models.

s96
00:06:13.120 --> 00:06:24.639
Another cool part because this is uh an harness is the fact that if let's say tomorrow there's a new the state-of-the-art LLM that comes out, you don't have to rewrite all of your system prompt.

s97
00:06:24.639 --> 00:06:26.160
You don't have to rewrite the structure.

s98
00:06:26.160 --> 00:06:28.560
You don't have to change your entire architecture.

s99
00:06:28.560 --> 00:06:33.600
you can keep it as it is and whichever model you use you can just replace it.

s100
00:06:33.600 --> 00:06:39.440
So it also lets you experiment with model performance without really rewriting your entire architecture.

s101
00:06:39.440 --> 00:06:40.960
So it's super super powerful.

s102
00:06:40.960 --> 00:06:44.080
Supports MCP AA all of that cool stuff.

s103
00:06:44.080 --> 00:06:46.240
Has a bunch of model providers.

s104
00:06:46.240 --> 00:06:47.440
Um you can get started.

s105
00:06:47.440 --> 00:06:48.800
So what do we do?

s106
00:06:48.800 --> 00:06:49.680
Very simple right?

s107
00:06:49.680 --> 00:06:51.120
Five lines of code.

s108
00:06:51.120 --> 00:06:54.479
Uh import agent from there import shell.

s109
00:06:54.479 --> 00:06:59.599
Shell is the very first tool that we need because we need to give it access to the directory.

s110
00:06:59.599 --> 00:07:00.800
We need to give it access.

s111
00:07:00.800 --> 00:07:04.960
It needs to know what it's running, where it's running, where your codebase is located.

s112
00:07:04.960 --> 00:07:08.000
So that is just one of the tools that you need.

s113
00:07:08.000 --> 00:07:12.800
And then if you ask it what can you do, it understands what's going on under the hood.

s114
00:07:12.800 --> 00:07:17.280
So to techniques technically start being able to use it on the fly, right?

s115
00:07:17.280 --> 00:07:23.680
So then let's get into what I actually just built a couple of minutes ago and I showed you over here.

s116
00:07:23.680 --> 00:07:25.280
What am I trying to do?

s117
00:07:25.280 --> 00:07:30.880
The idea because this is communitydriven, AWS manages it and maintains it for you.

s118
00:07:30.880 --> 00:07:36.639
People write a lot of pre-built inbit tools, but there's also community written tools.

s119
00:07:36.639 --> 00:07:42.560
And so all you need is three tools to be able to start implementing matter tooling.

s120
00:07:42.560 --> 00:07:43.759
So what do you need?

s121
00:07:43.759 --> 00:07:51.280
First of all, you need to have a system prompt that tells your agent what a good tool looks like.

s122
00:07:51.280 --> 00:07:52.479
How does that work?

s123
00:07:52.479 --> 00:07:56.080
We have to start with the at tool decorator function.

s124
00:07:56.080 --> 00:07:57.919
That's how it knows it's a tool.

s125
00:07:57.919 --> 00:07:58.560
Excuse me.

s126
00:07:58.560 --> 00:08:00.240
That's how it knows it's a tool.

s127
00:08:00.240 --> 00:08:04.720
And then you tell it what a tool looks like and where it should be stored, right?

s128
00:08:04.720 --> 00:08:06.639
And so you call the system prompt there.

s129
00:08:06.639 --> 00:08:07.919
That's all you say.

s130
00:08:07.919 --> 00:08:11.680
And then you can give it access to different tools.

s131
00:08:11.680 --> 00:08:24.400
I highlighted load tools from directory equals true because that is what enables you to enables the agent to start letting it run the tools that it's generated at runtime

s132
00:08:24.400 --> 00:08:25.520
dynamically.

s133
00:08:25.520 --> 00:08:31.039
And we later on decided we should just make this into a fun into a tool by itself.

s134
00:08:31.039 --> 00:08:33.360
So now that's become the load tool.

s135
00:08:33.360 --> 00:08:40.000
So now when you go and say hey create two create five new tools for yourself and start using them it's going to know what it's going to do.

s136
00:08:40.000 --> 00:08:43.440
So let's go back to the code that I showed you earlier, right?

s137
00:08:43.440 --> 00:08:44.159
Same thing.

s138
00:08:44.159 --> 00:08:51.519
It's got the system prompt and here I'm saying you are the meta tooling agent that creates your own tools and custom tools at runtime.

s139
00:08:51.519 --> 00:08:55.839
So I'm defining the tool template and telling it what a tool looks like.

s140
00:08:55.839 --> 00:08:59.440
I'm giving it the tool specification of what it's supposed to look like.

s141
00:08:59.440 --> 00:09:04.640
And then I'm giving it rules for what it's supposed to do and where it's supposed to write into.

s142
00:09:04.640 --> 00:09:09.120
And I'm also telling it always check if it if it exists or not.

s143
00:09:09.120 --> 00:09:24.320
only if it doesn't exist then write a new tool and I'm telling it so I'm giving it three tools editor which allows it to write the shell tool which shows it what it has and the load tool which allows it to load from the directory

s144
00:09:24.320 --> 00:09:40.800
the tool from the directory dynamically and this is all you need and it takes just one line of code right system prompt equals system prompt three different tools and this is just code so that I can chat with it continuously.

s145
00:09:40.800 --> 00:09:50.000
And so when I do this, it's actually able to start running create five random tools for yourself.

s146
00:09:50.000 --> 00:09:53.839
And so it's going to start creating these five new tools.

s147
00:09:53.839 --> 00:10:08.240
And the power of this is like I said, when you're deploying code into production, you need you might want a way to for the agent to be smart enough to figure out what's wrong and to be able to answer questions for itself.

s148
00:10:08.240 --> 00:10:18.560
Let's say you're you're building this app that's supposed to book flight tickets domestically, but let's say you have one user who's saying, "No, no, I want a flight ticket from, I don't know, India to Hong Kong."

s149
00:10:18.560 --> 00:10:27.040
And your agent gives up because it's not been explicitly programmed to do that, or it's not been trained to have access to be able to do that.

s150
00:10:27.040 --> 00:10:28.480
But do you just want it to fail?

s151
00:10:28.480 --> 00:10:29.839
Do you want it to run into an error?

s152
00:10:29.839 --> 00:10:36.160
Do you want to give it back to your deployment to your engineering team and have a turnaround of two weeks and then come back?

s153
00:10:36.160 --> 00:10:37.839
No. You want to be able to solve it.

s154
00:10:37.839 --> 00:10:42.079
So this is one of the ways by which you can handle that right.

s155
00:10:42.079 --> 00:10:45.600
So again let's get back to the code and we have more cool things coming up.

s156
00:10:45.600 --> 00:10:51.279
Now I was speaking about tools that can this agent that can write it own write its own tools.

s157
00:10:51.279 --> 00:10:53.200
Can it also write its own agents?

s158
00:10:53.200 --> 00:10:54.000
Yes it can.

s159
00:10:54.000 --> 00:10:57.519
And I have another demo for that but wait until the last few minutes for that.

s160
00:10:57.519 --> 00:10:58.160
Right.

s161
00:10:58.160 --> 00:11:05.519
So when we talk about agents that write their own u agents also we want to understand agentic patterns.

s162
00:11:05.519 --> 00:11:07.440
We have three primary patterns.

s163
00:11:07.440 --> 00:11:13.519
The first one is swarm where you have sub agents that work with each other in parallel.

s164
00:11:13.519 --> 00:11:18.880
So they work on a task in a combined fashion and they take different parts of the task themselves.

s165
00:11:18.880 --> 00:11:28.880
Then you have a graph where the result of one sub aent gets fed into the other sub aent and then there's a handoff and then you could also have workflows

s166
00:11:28.880 --> 00:11:31.040
that have a combination of all of these.

s167
00:11:31.040 --> 00:11:31.600
Right?

s168
00:11:31.600 --> 00:11:35.839
So with the workflow, you could have a parallel set of sub aents calling each other.

s169
00:11:35.839 --> 00:11:39.440
And then there could be nodes and graphs and all of that cool stuff.

s170
00:11:39.440 --> 00:11:46.079
And so this and so they all of this can be created by just the agent itself.

s171
00:11:46.079 --> 00:11:47.040
We don't need to.

s172
00:11:47.040 --> 00:11:51.360
We can do it our own selves, but we don't necessarily need to.

s173
00:11:51.360 --> 00:11:56.240
So um let's quickly go check how that looks.

s174
00:11:56.240 --> 00:11:58.399
Um so this is the exact same thing.

s175
00:11:58.399 --> 00:12:00.640
This is for my meta agents.

s176
00:12:00.640 --> 00:12:01.839
I'm doing the exact same thing.

s177
00:12:01.839 --> 00:12:03.839
I've given it three tools over here.

s178
00:12:03.839 --> 00:12:09.839
I'm actually if you look at my agents file, it's pretty empty and I'm saying agent as the tool file template.

s179
00:12:09.839 --> 00:12:13.120
So I'm saying just break it into two to four sub agents.

s180
00:12:13.120 --> 00:12:14.079
I'm keeping it simple.

s181
00:12:14.079 --> 00:12:15.920
No swarm, nothing fancy here.

s182
00:12:15.920 --> 00:12:18.399
Simple demo and use it.

s183
00:12:18.399 --> 00:12:21.519
And this is the tool spec for what an agent should look like.

s184
00:12:21.519 --> 00:12:24.399
And I'm happy to share the code with you after this, right?

s185
00:12:24.399 --> 00:12:26.240
And these are the rules that it follows.

s186
00:12:26.240 --> 00:12:27.120
Same thing, right?

s187
00:12:27.120 --> 00:12:28.800
One line is all it takes.

s188
00:12:28.800 --> 00:12:37.920
system prompt equals system prompt three tools and then say so I'm going to start running this now python 3 agent.py pie.

s189
00:12:37.920 --> 00:12:48.320
And so I'm flying to Hawaii or whichever place to some uh to Hawaii.

s190
00:12:48.320 --> 00:12:49.600
Let's just say Hawaii.

s191
00:12:49.600 --> 00:12:54.160
Help me plan my itinerary.

s192
00:12:54.160 --> 00:12:55.120
Okay.

s193
00:12:55.120 --> 00:12:56.560
So this is all I'm telling it.

s194
00:12:56.560 --> 00:13:00.320
I'm not even telling it, hey go make your own agent or go create your own rule.

s195
00:13:00.320 --> 00:13:01.519
This is all I'm telling it.

s196
00:13:01.519 --> 00:13:04.000
This is how your customers would chat with it, right?

s197
00:13:04.000 --> 00:13:07.200
they just tell them what their problem is and they expect you to figure it out.

s198
00:13:07.200 --> 00:13:07.680
Right?

s199
00:13:07.680 --> 00:13:10.480
So, this agent is going to be like, "Oh, great.

s200
00:13:10.480 --> 00:13:16.000
Um, here I'm going to be printing out I'm going to be creating these into three focus sub aents.

s201
00:13:16.000 --> 00:13:24.480
The flight agent, the activities agent, the itinerary agent, and it's calling the editor tool three times, one for each of these."

s202
00:13:24.480 --> 00:13:27.200
So, I see that it's already created the activities.

s203
00:13:27.200 --> 00:13:29.040
Yeah, it's creating It's pretty fast.

s204
00:13:29.040 --> 00:13:31.680
It's creating the activities agent.

s205
00:13:31.680 --> 00:13:34.160
It's created like a flight agent that's doing something.

s206
00:13:34.160 --> 00:13:35.680
It's created an itinary agent.

s207
00:13:35.680 --> 00:13:45.120
The let me call out that the one thing this can't currently do right now is access real-time information because I've been given it a tool that has access to real world API.

s208
00:13:45.120 --> 00:13:45.600
Right?

s209
00:13:45.600 --> 00:13:55.680
So assuming you add that on you can ask it what's the weather like and it'll be like you know what let me write a tool that can always grab the latest weather in whichever location and recommend stuff.

s210
00:13:55.680 --> 00:13:59.760
So based off of that, it created those agents.

s211
00:13:59.760 --> 00:14:04.240
And if you look at it somewhere here, it should technically be calling those agents.

s212
00:14:04.240 --> 00:14:04.720
There we go.

s213
00:14:04.720 --> 00:14:07.120
See, it's calling the activities agents.

s214
00:14:07.120 --> 00:14:09.680
And then it's saying these are the ma main airports.

s215
00:14:09.680 --> 00:14:11.279
These are the best beaches.

s216
00:14:11.279 --> 00:14:14.560
These are what it is, and this is what you have to do.

s217
00:14:14.560 --> 00:14:20.079
And so how amazing is is it that you can now have your agent.

s218
00:14:20.079 --> 00:14:25.519
So you now your focus is not just building a good agentic system that can get the job done.

s219
00:14:25.519 --> 00:14:36.160
You would also maybe want to start thinking about healing, writing self-healing code, about creating an agent that can sort of go over itself, look at what bugs are there and fix itself.

s220
00:14:36.160 --> 00:14:39.279
Had this been a longer session, I usually do longer sessions.

s221
00:14:39.279 --> 00:14:44.240
I usually ask the audience to ask it to do crazy stuff and I try breaking it.

s222
00:14:44.240 --> 00:14:46.560
And what happens is this actually ends up breaking.

s223
00:14:46.560 --> 00:14:50.240
you'll see a bunch of errors coming up and this thing is just talking chatting away.

s224
00:14:50.240 --> 00:15:04.800
So I need to probably set the max token somewhere here but um and so it actually ends up erroring and breaking but it recognizes that it's erroring and it says oh man I'm ering let me fix myself and it would go and fix the same

s225
00:15:04.800 --> 00:15:08.320
fix this exact same tool or agent that it's got here.

s226
00:15:08.320 --> 00:15:15.120
So now if I'm like I don't want Hawaii why do you make it for Hawaii do for something else going to be like sure let me do it let me update the agent.

s227
00:15:15.120 --> 00:15:17.120
So it's super super powerful.

s228
00:15:17.120 --> 00:15:22.000
But then again we have to keep in mind that this is just autonomously doing things by itself.

s229
00:15:22.000 --> 00:15:27.440
With great power also comes great responsibility even greater responsibility.

s230
00:15:27.440 --> 00:15:28.959
So what do we need to do with it?

s231
00:15:28.959 --> 00:15:29.199
Right?

s232
00:15:29.199 --> 00:15:31.519
We need a eval.

s233
00:15:31.519 --> 00:15:34.720
What are some inbuilt evals that str agent has?

s234
00:15:34.720 --> 00:15:37.279
We we have totally eight different evals.

s235
00:15:37.279 --> 00:15:39.920
The first one is at an overall session level.

s236
00:15:39.920 --> 00:15:44.000
We want to figure out if I told it hey book my flight tickets is it actually booking?

s237
00:15:44.000 --> 00:15:45.680
Did it achieve the end goal?

s238
00:15:45.680 --> 00:15:47.360
That is part one of it, right?

s239
00:15:47.360 --> 00:15:48.639
End goal achievement.

s240
00:15:48.639 --> 00:15:51.759
Second thing we want to look at it is at a trace level.

s241
00:15:51.759 --> 00:15:53.360
Um was it actually helpful?

s242
00:15:53.360 --> 00:15:59.199
If I say what is my balance and says my balance is 500 bucks, is that the expected type of answer?

s243
00:15:59.199 --> 00:16:00.000
Part one.

s244
00:16:00.000 --> 00:16:02.000
Part two, did it make up the answer?

s245
00:16:02.000 --> 00:16:04.560
Is that the actual answer that you're supposed to get?

s246
00:16:04.560 --> 00:16:06.560
You need to be able to evaluate that.

s247
00:16:06.560 --> 00:16:08.079
But it doesn't just end there.

s248
00:16:08.079 --> 00:16:09.440
What about tool access?

s249
00:16:09.440 --> 00:16:10.000
Right?

s250
00:16:10.000 --> 00:16:14.959
What about did it use the right tool to get to that answer or did it use the wrong tool?

s251
00:16:14.959 --> 00:16:18.959
And within that specific tool, did it use the right parameter?

s252
00:16:18.959 --> 00:16:23.519
Is the account ID actually one two three or is it supposed to be is it messing up?

s253
00:16:23.519 --> 00:16:30.079
We want insight into what is going on so that we can trust it and reliably give it access.

s254
00:16:30.079 --> 00:16:32.000
Again, not just it doesn't just end there.

s255
00:16:32.000 --> 00:16:35.519
We also want to understand inter agent dependency.

s256
00:16:35.519 --> 00:16:44.639
When we're building multi-agentic systems, we want to look at the overall outcome and the overall response if it's the way you wanted it to be.

s257
00:16:44.639 --> 00:16:49.920
You want to make sure that it's calling the different tools and the different sub aents in the right sequence.

s258
00:16:49.920 --> 00:16:58.560
And you also want to take a deeper dive into what the messages, the inter agent communication looks like and if that's up to the mark.

s259
00:16:58.560 --> 00:17:04.480
All of this together gives us the full end to end agent conversation within our session.

s260
00:17:04.480 --> 00:17:06.240
This gives us the insight.

s261
00:17:06.240 --> 00:17:08.959
Again, this also isn't good enough, right?

s262
00:17:08.959 --> 00:17:12.000
We want to make sure it doesn't cause undue damage.

s263
00:17:12.000 --> 00:17:18.559
If this meta tooling or this meta agent can spin off tools and agents, it can also modify and delete.

s264
00:17:18.559 --> 00:17:20.480
Do I want it to delete my data?

s265
00:17:20.480 --> 00:17:24.400
Do I want it to delete stuff that I have put all of my effort into building?

s266
00:17:24.400 --> 00:17:26.400
No. So, what do I do?

s267
00:17:26.400 --> 00:17:28.559
I have to have guard rails in place.

s268
00:17:28.559 --> 00:17:30.240
Four different types of guard rails.

s269
00:17:30.240 --> 00:17:32.720
The first one is your environment.

s270
00:17:32.720 --> 00:17:35.760
We need to make sure that we're sandboxing the environment.

s271
00:17:35.760 --> 00:17:45.440
And when I say sandboxing the environment, it's not your typical sandbox where your agent is in one container and you're protecting it from the rest of the world.

s272
00:17:45.440 --> 00:17:57.919
We want the environment in which this code is executing to be sandboxed and Strands recently launched a feature about I think a few weeks ago where we can sandbox

s273
00:17:57.919 --> 00:18:12.000
the code execution environment and that is what guarantees that it doesn't touch the rest of your code execution environments and it doesn't mess up everything else and it doesn't write into wrong places and delete from the wrong places.

s274
00:18:12.000 --> 00:18:12.480
Right.

s275
00:18:12.480 --> 00:18:14.400
Next we have to constrain the tools.

s276
00:18:14.400 --> 00:18:16.240
We have to constrain permissions.

s277
00:18:16.240 --> 00:18:24.160
We have to constrain the who's got access and who can ask it questions and what types of questions we need to ask and observability.

s278
00:18:24.160 --> 00:18:37.440
All of your evals, your hotel, your telemetry, all of that data needs to be there in order to be able to say that, hey, reliably and say, hey, I think I can go ahead

s279
00:18:37.440 --> 00:18:52.960
and build an agentic system that can think for itself that it can do more than what it's just been set out to do because it can fix things when things are broken on the fly, on the run,

s280
00:18:52.960 --> 00:18:57.440
and it can solve more capabilities than it has been initially taught to.

s281
00:18:57.440 --> 00:19:03.919
This is the starting of self-improving agents and the self- evvolving agents.

s282
00:19:03.919 --> 00:19:08.480
At some point, I'm convinced they will take over the world and I'm I'm going to be at risk.

s283
00:19:08.480 --> 00:19:11.840
But until then, I think this is incredible.

s284
00:19:11.840 --> 00:19:22.480
And if anything, if I want to leave you with anything, I would want you to I would want to leave you with a quick idea of where Strands is, where Strand started with and where we are at now.

s285
00:19:22.480 --> 00:19:25.360
We started with building their own tools.

s286
00:19:25.360 --> 00:19:30.160
We we moved to getting them to update uh to create agents by themselves.

s287
00:19:30.160 --> 00:19:33.280
Now it's at a point where they can update their own source code.

s288
00:19:33.280 --> 00:19:37.039
Fun fact, we created Strand agents three years ago internally.

s289
00:19:37.039 --> 00:19:40.640
It was supposed to be this internal thing before agents was even a thing.

s290
00:19:40.640 --> 00:19:45.600
And it was so powerful that we said, you know what, let's just open source it and give it back to the community.

s291
00:19:45.600 --> 00:19:49.039
And we wrote the Python version of Strands.

s292
00:19:49.039 --> 00:19:54.480
And the Python version of strands wrote by itself the TypeScript version of Stand.

s293
00:19:54.480 --> 00:19:56.720
So, it did update its own source code.

s294
00:19:56.720 --> 00:19:57.679
It's pretty powerful.

s295
00:19:57.679 --> 00:19:59.039
I'm pretty psyched.

s296
00:19:59.039 --> 00:20:06.320
And if if this is my call to action, if uh this sounds interesting to you, reach out to me.

s297
00:20:06.320 --> 00:20:09.120
Scan these and we can have a conversation later.

s298
00:20:09.120 --> 00:20:12.799
I'm happy to share my slide deck and my code with you.

s299
00:20:12.799 --> 00:20:14.960
Um and we can chat offline.

s300
00:20:14.960 --> 00:20:17.039
Um thank you very much.

s301
00:20:17.039 --> 00:20:18.320
This is my LinkedIn.

s302
00:20:18.320 --> 00:20:22.640
Uh, we have 30 seconds to go, I think.
