WEBVTT

1
00:00:02.806 --> 00:00:05.435
Dive deep into the realm of large language models,

2
00:00:05.816 --> 00:00:06.760
prompt engineering,

3
00:00:07.061 --> 00:00:07.944
and best practices.

4
00:00:08.744 --> 00:00:13.140
With over 25 years of combined AI and product engineering experience,

5
00:00:13.501 --> 00:00:14.324
here are your hosts,

6
00:00:14.724 --> 00:00:16.844
Bradley Arsenault and Justin Macaron.

7
00:00:21.090 --> 00:00:22.080
Good evening,

8
00:00:22.121 --> 00:00:22.444
Justin.

9
00:00:23.107 --> 00:00:23.412
Hello,

10
00:00:23.656 --> 00:00:24.063
Brad.

11
00:00:25.047 --> 00:00:25.509
Justin,

12
00:00:25.810 --> 00:00:26.231
you know,

13
00:00:27.194 --> 00:00:30.004
a situation came up recently where...

14
00:00:31.190 --> 00:00:42.108
We had to make the choice between do we try to do everything all in one prompt or do we do break it apart into six prompts?

15
00:00:42.609 --> 00:00:42.809
And,

16
00:00:42.849 --> 00:00:43.110
you know,

17
00:00:43.190 --> 00:00:47.461
there's this like trade off where if we do it all in one prompt,

18
00:00:48.524 --> 00:00:50.008
we're going to lose accuracy.

19
00:00:50.189 --> 00:00:51.898
It's kind of like not the best practice,

20
00:00:51.958 --> 00:00:52.179
really,

21
00:00:52.400 --> 00:00:53.848
but it's a little bit faster.

22
00:00:54.746 --> 00:00:59.537
Whereas if we break it apart and do the six prompts,

23
00:00:59.858 --> 00:01:01.000
you get better results,

24
00:01:01.241 --> 00:01:02.524
more predictable results.

25
00:01:04.686 --> 00:01:05.410
And I was just thinking,

26
00:01:05.651 --> 00:01:07.861
this trade-off shows up in software a lot,

27
00:01:07.922 --> 00:01:08.344
doesn't it?

28
00:01:08.904 --> 00:01:14.584
Where we kind of have pressures that push us to write this kind of crappy code.

29
00:01:15.504 --> 00:01:20.844
But whereas we have best practices of software design.

30
00:01:21.649 --> 00:01:24.564
that are kind of similar in the prompt design as well,

31
00:01:24.684 --> 00:01:25.664
breaking things apart,

32
00:01:25.844 --> 00:01:29.084
kind of focusing on each function on one thing at a time.

33
00:01:29.508 --> 00:01:29.630
Like,

34
00:01:29.630 --> 00:01:30.663
have you found that as well,

35
00:01:32.472 --> 00:01:36.663
that there's a lot of this software design in prompt design as well?

36
00:01:37.644 --> 00:01:38.047
Yeah,

37
00:01:39.336 --> 00:01:40.564
I think it's very similar.

38
00:01:41.064 --> 00:01:41.597
I think that,

39
00:01:41.637 --> 00:01:41.883
you know,

40
00:01:42.547 --> 00:01:45.784
that guy that introduced me to a while back,

41
00:01:46.652 --> 00:01:47.844
I love his YouTube videos.

42
00:01:48.004 --> 00:01:48.267
His name is

43
00:01:48.814 --> 00:01:49.564
Dave Farley.

44
00:01:50.285 --> 00:01:52.326
And he talks about these best practices,

45
00:01:52.426 --> 00:01:52.687
right?

46
00:01:53.987 --> 00:01:55.188
Do not repeat yourself,

47
00:01:55.909 --> 00:01:56.709
decomposition,

48
00:01:56.769 --> 00:01:58.010
making things smaller,

49
00:01:58.110 --> 00:01:58.351
you know,

50
00:01:58.411 --> 00:02:00.192
making things iterative.

51
00:02:00.973 --> 00:02:03.334
And this is a concept that's not new.

52
00:02:03.594 --> 00:02:05.536
It's something that's been around for the last 60 years,

53
00:02:05.616 --> 00:02:05.836
right?

54
00:02:06.296 --> 00:02:07.477
IBM started it,

55
00:02:07.477 --> 00:02:07.677
you know,

56
00:02:07.697 --> 00:02:07.918
in the

57
00:02:08.838 --> 00:02:10.179
1970s or even earlier.

58
00:02:10.800 --> 00:02:16.844
And I think it's still very applicable in 2024 when we're building very complex AI applications.

59
00:02:17.087 --> 00:02:18.323
And I actually don't think there's a way.

60
00:02:19.145 --> 00:02:22.260
to build very complex AI applications around it.

61
00:02:23.225 --> 00:02:27.427
We must make sure that the components we build are small,

62
00:02:28.071 --> 00:02:28.594
testable,

63
00:02:29.218 --> 00:02:29.620
reusable.

64
00:02:30.600 --> 00:02:30.821
And

65
00:02:32.027 --> 00:02:34.760
I have a hard time seeing it any other way.

66
00:02:35.401 --> 00:02:36.734
And to your point,

67
00:02:37.037 --> 00:02:37.299
you know,

68
00:02:37.820 --> 00:02:39.060
when presenting with a problem,

69
00:02:40.322 --> 00:02:41.440
six prompts or one.

70
00:02:42.337 --> 00:02:42.979
I tend,

71
00:02:43.220 --> 00:02:43.562
you know,

72
00:02:44.084 --> 00:02:48.692
to go down the six prompt route because we'll be able to write them better,

73
00:02:49.132 --> 00:02:49.737
test them better,

74
00:02:50.161 --> 00:02:50.423
you know,

75
00:02:50.645 --> 00:02:51.472
and iterate.

76
00:02:53.377 --> 00:02:54.772
Like along a lot of metrics,

77
00:02:55.696 --> 00:02:58.392
the six prompt result is better.

78
00:02:58.693 --> 00:03:08.112
And only along a very narrow set of kind of like incoherent metrics might you possibly choose the one prompt design.

79
00:03:08.372 --> 00:03:08.818
And it's like,

80
00:03:08.1000 --> 00:03:10.072
that's the weird design.

81
00:03:10.748 --> 00:03:11.069
you know,

82
00:03:11.470 --> 00:03:13.618
the best practice is clearly to break it apart.

83
00:03:14.360 --> 00:03:15.364
And I would actually,

84
00:03:15.464 --> 00:03:16.388
while you were talking there,

85
00:03:16.388 --> 00:03:21.691
I was just thinking that should we be thinking about these prompts literally as,

86
00:03:21.852 --> 00:03:23.499
as if they were functions in the code,

87
00:03:23.499 --> 00:03:25.366
but just with a different programming language,

88
00:03:25.666 --> 00:03:28.033
it's like the programming language of like English.

89
00:03:29.718 --> 00:03:30.400
Absolutely.

90
00:03:30.480 --> 00:03:31.262
I think I,

91
00:03:31.563 --> 00:03:31.684
I,

92
00:03:32.226 --> 00:03:32.527
you know,

93
00:03:32.768 --> 00:03:35.480
when we take a look at a function in source code,

94
00:03:35.500 --> 00:03:36.022
whether that's,

95
00:03:36.022 --> 00:03:36.304
you know,

96
00:03:37.159 --> 00:03:51.218
java or javascript or or c-sharp or python we rarely look at a hundred line function and say wow you know this is a great function we i i think that as engineers we kind of gravitate and

97
00:03:51.258 --> 00:04:03.836
prefer functions that are smaller in nature because we can read them better we understand them better we know what the input is we know what the output is the transformation that's happening in the function that that

98
00:04:04.037 --> 00:04:06.799
That data transformation is a little bit more clear.

99
00:04:07.320 --> 00:04:08.801
And I think that prompt,

100
00:04:09.281 --> 00:04:09.882
because they're,

101
00:04:10.122 --> 00:04:10.402
you know,

102
00:04:10.883 --> 00:04:12.044
mostly English,

103
00:04:13.545 --> 00:04:14.526
natural language,

104
00:04:15.387 --> 00:04:16.107
as humans,

105
00:04:16.448 --> 00:04:19.750
we're much better suited to understand smaller,

106
00:04:20.631 --> 00:04:20.891
you know,

107
00:04:21.011 --> 00:04:21.592
sentences,

108
00:04:21.712 --> 00:04:23.293
paragraphs than larger ones.

109
00:04:24.154 --> 00:04:24.915
And as a result,

110
00:04:25.295 --> 00:04:26.316
we make better decisions.

111
00:04:28.298 --> 00:04:29.563
It focuses important.

112
00:04:29.583 --> 00:04:32.576
We can only keep so much in our brain at the same time.

113
00:04:33.473 --> 00:04:33.935
And

114
00:04:34.959 --> 00:04:37.148
I guess the model is the same in a lot of ways.

115
00:04:37.529 --> 00:04:42.922
It also has a fixed capacity that whether you give it a larger problem or a smaller problem,

116
00:04:42.942 --> 00:04:45.548
there's only the same number of neurons in the neural network.

117
00:04:46.948 --> 00:04:50.260
So I guess from a programming best practice,

118
00:04:50.540 --> 00:04:51.143
I mentioned,

119
00:04:51.143 --> 00:04:51.464
you know,

120
00:04:51.584 --> 00:04:52.668
do not repeat yourself.

121
00:04:52.928 --> 00:04:53.057
Try.

122
00:04:53.960 --> 00:04:55.712
where we can kind of like reuse these props.

123
00:04:56.876 --> 00:04:58.001
I discussed a bit about,

124
00:04:58.081 --> 00:04:58.302
you know,

125
00:04:58.463 --> 00:05:00.412
decomposition where one...

126
00:05:00.634 --> 00:05:01.020
Hold on,

127
00:05:01.020 --> 00:05:01.751
let's go into that.

128
00:05:01.953 --> 00:05:02.429
So dry.

129
00:05:03.072 --> 00:05:03.926
So you're...

130
00:05:04.443 --> 00:05:08.997
A suggestion here is like you have a prompt that maybe comes up with hashtags.

131
00:05:09.840 --> 00:05:21.183
Do you think that prompt should be reused throughout your company like does he do or your product and in different ways like you would have one standard hashtag prompt like let's go into that concept a little bit here.

132
00:05:22.521 --> 00:05:23.662
I think so.

133
00:05:23.963 --> 00:05:29.407
I think that as an organization or as an individual or as a business,

134
00:05:29.868 --> 00:05:32.870
you're spending money to build source code.

135
00:05:32.890 --> 00:05:34.651
You're spending money to build functions.

136
00:05:34.712 --> 00:05:37.274
You're spending money to build AI features.

137
00:05:38.755 --> 00:05:40.576
If you build it and it works,

138
00:05:42.498 --> 00:05:44.880
why wouldn't we reuse it?

139
00:05:45.634 --> 00:06:02.561
right engineering effort has already gone into it the the the nuances the scope all that kind of of hard work has already gone into it why aren't we reusing this kind of stuff so i'm i'm a big fan of prompt reusability i yeah

140
00:06:03.022 --> 00:06:11.332
there could be reasons not to reuse it and like that would be like another important programming best practice um you

141
00:06:12.123 --> 00:06:16.260
which is like the single stakeholder rule or the single responsibility rule,

142
00:06:17.041 --> 00:06:24.220
which is that the code should only have one interested party or like have serve only one master.

143
00:06:24.481 --> 00:06:25.544
And like the reason is,

144
00:06:25.765 --> 00:06:26.467
is that like,

145
00:06:27.410 --> 00:06:29.557
let's say you have a prompt that does hashtags,

146
00:06:30.379 --> 00:06:30.620
you know,

147
00:06:30.820 --> 00:06:41.180
the hashtags that are needed by your company's marketing department might be very different than what's needed by your HR department for their recruiting.

148
00:06:41.983 --> 00:06:45.470
And so if you have one hashtag master prompt,

149
00:06:46.673 --> 00:06:50.080
it might not be serving the needs of these different departments very well.

150
00:06:50.280 --> 00:06:58.080
So that's another kind of interesting programming best practice that could bleed into prompt design.

151
00:06:59.280 --> 00:06:59.444
Yeah,

152
00:06:59.567 --> 00:06:59.690
no,

153
00:06:59.812 --> 00:07:00.160
for sure.

154
00:07:02.125 --> 00:07:07.480
If there are two different business units that need very different hashtags.

155
00:07:08.544 --> 00:07:10.536
there's definitely a case there where,

156
00:07:10.776 --> 00:07:13.416
where we may need different functions or different prompts.

157
00:07:14.879 --> 00:07:18.036
Here's the real challenge is that in the beginning,

158
00:07:18.137 --> 00:07:19.396
they might need the same prompt.

159
00:07:20.886 --> 00:07:21.255
And then,

160
00:07:21.821 --> 00:07:22.156
so like,

161
00:07:22.196 --> 00:07:25.056
let's say the same prompt works for both departments in the beginning.

162
00:07:25.637 --> 00:07:30.076
Then one of the departments unbeknownst to the other comes to you and is like,

163
00:07:30.136 --> 00:07:30.236
Hey,

164
00:07:30.276 --> 00:07:33.956
can we modify that prompt and like to serve our needs a little bit better?

165
00:07:34.116 --> 00:07:34.696
And suddenly

166
00:07:35.527 --> 00:07:40.964
The prompt is impacting this other department that just gets swept in the ring because you've reused a prompt.

167
00:07:41.744 --> 00:07:42.005
And then,

168
00:07:42.306 --> 00:07:42.626
you know,

169
00:07:42.887 --> 00:07:48.884
various bureaucratic processes pull it towards the marketing department and pisses off the HR department.

170
00:07:50.493 --> 00:07:51.697
I think that maybe,

171
00:07:51.797 --> 00:07:52.078
you know,

172
00:07:52.259 --> 00:07:52.881
versioning,

173
00:07:52.921 --> 00:07:56.592
that's where versioning and source code control come in.

174
00:07:57.594 --> 00:07:58.198
I don't think,

175
00:07:58.218 --> 00:07:58.479
you know,

176
00:07:58.519 --> 00:07:59.606
that these proms should be,

177
00:07:59.686 --> 00:07:59.928
you know,

178
00:08:00.048 --> 00:08:00.672
single version.

179
00:08:00.812 --> 00:08:02.732
I think that there should be multiple versions.

180
00:08:03.292 --> 00:08:05.871
Almost like Docker containers,

181
00:08:05.911 --> 00:08:06.072
right?

182
00:08:06.172 --> 00:08:09.644
Where we have the latest or we could also go back and like check out the,

183
00:08:09.664 --> 00:08:10.506
you know,

184
00:08:10.647 --> 00:08:12.172
specific Docker container images.

185
00:08:13.676 --> 00:08:14.532
Very similar to that.

186
00:08:14.632 --> 00:08:14.753
So

187
00:08:16.760 --> 00:08:19.792
I guess another component over here is.

188
00:08:20.811 --> 00:08:21.734
Single responsibility,

189
00:08:21.794 --> 00:08:22.857
which you just discussed,

190
00:08:24.001 --> 00:08:26.388
keeping things small that I think we all discussed.

191
00:08:26.991 --> 00:08:28.848
Is there anything else in this program?

192
00:08:28.988 --> 00:08:31.748
I think we can dive a little further into decomposition.

193
00:08:33.849 --> 00:08:37.955
That's another element of that project,

194
00:08:38.115 --> 00:08:46.648
which is decomposing things makes it a lot easier for the AI to execute and produce the result.

195
00:08:47.595 --> 00:08:55.072
And so it's like all of these different programming best practices seem to apply exactly the same in prompt engineering.

196
00:08:58.451 --> 00:08:58.995
they really do.

197
00:09:00.039 --> 00:09:01.674
And I think that there are benefits here,

198
00:09:01.734 --> 00:09:01.936
right?

199
00:09:02.599 --> 00:09:05.056
So we're not just doing this because it's fun.

200
00:09:05.317 --> 00:09:05.881
We're not just,

201
00:09:05.881 --> 00:09:06.143
you know,

202
00:09:06.284 --> 00:09:09.496
decoupling these prompts or these functions because it's fun.

203
00:09:10.317 --> 00:09:12.428
I think that there's tangible,

204
00:09:13.011 --> 00:09:13.996
real benefit to it.

205
00:09:14.016 --> 00:09:15.656
And I think it's been proven throughout history.

206
00:09:16.299 --> 00:09:18.430
And let's just go down this list of,

207
00:09:18.711 --> 00:09:18.993
you know,

208
00:09:19.194 --> 00:09:19.596
benefits.

209
00:09:20.938 --> 00:09:23.836
Are smaller functions easier to test than larger ones?

210
00:09:24.278 --> 00:09:24.995
Let's start off there.

211
00:09:26.720 --> 00:09:43.059
smaller prompts smaller prompts smaller functions same thing especially if the prompt output is short because then i can just like eyeball a bunch of outputs i'm like good good good good good good oh okay that one was bad okay good good good so like it's nice when the the outputs are really small on

212
00:09:43.039 --> 00:09:49.333
the prompt or are they easier to build are are smaller prompts easier to build than really big

213
00:09:49.704 --> 00:10:04.499
yeah yeah yeah it's you get straight to the point it usually works like you don't have to do any messy you know when you have to like copy an instruction like three times it's like keep it short no keep it short keep it shorter you know eventually it listens like you

214
00:10:04.519 --> 00:10:07.560
when you have smaller prompts it just seems to work a lot better

215
00:10:07.617 --> 00:10:07.917
Okay.

216
00:10:09.158 --> 00:10:11.800
And so now we have prompts that are really easy to test.

217
00:10:11.800 --> 00:10:13.481
We have prompts that are really easy to build.

218
00:10:13.861 --> 00:10:14.722
What about monitoring?

219
00:10:16.403 --> 00:10:19.085
I feel that the whole monitoring process,

220
00:10:19.446 --> 00:10:19.726
right?

221
00:10:19.826 --> 00:10:22.128
You mentioned monitoring small outputs,

222
00:10:22.288 --> 00:10:23.168
eyeballing the results.

223
00:10:23.549 --> 00:10:32.755
I assume that using maybe even a third-party library or a separate tool to do monitoring would be a lot easier to do with smaller outputs,

224
00:10:32.835 --> 00:10:33.596
smaller prompts.

225
00:10:35.101 --> 00:10:35.942
Yes,

226
00:10:36.382 --> 00:10:36.943
I think so,

227
00:10:37.283 --> 00:10:41.569
that it's going to be a lot easier to feed that data around to other systems,

228
00:10:42.190 --> 00:10:44.193
feed that into secondary models,

229
00:10:44.233 --> 00:10:46.476
if you want to classify the output to,

230
00:10:46.977 --> 00:10:47.217
you know,

231
00:10:47.217 --> 00:10:49.520
check for error conditions or weird outputs.

232
00:10:51.400 --> 00:10:52.021
Absolutely.

233
00:10:52.101 --> 00:10:52.542
Whereas like,

234
00:10:52.542 --> 00:10:53.744
if you have one big prompt,

235
00:10:53.784 --> 00:10:54.465
there's,

236
00:10:54.705 --> 00:10:56.267
there's like going to be a bottleneck there,

237
00:10:56.267 --> 00:10:57.730
you have to produce all this output,

238
00:10:57.790 --> 00:11:00.494
then you have to feed all of that into a secondary model.

239
00:11:01.836 --> 00:11:02.076
You know,

240
00:11:02.076 --> 00:11:02.657
it doesn't,

241
00:11:03.358 --> 00:11:04.540
it doesn't streamline very well.

242
00:11:06.038 --> 00:11:09.172
One of the things I like to do a lot of is iterate.

243
00:11:09.492 --> 00:11:09.613
So,

244
00:11:09.894 --> 00:11:13.072
and I think everybody does a lot of iteration when they build their prompts.

245
00:11:13.172 --> 00:11:13.673
They write,

246
00:11:13.693 --> 00:11:13.954
you know,

247
00:11:14.375 --> 00:11:15.517
the first initial prompt,

248
00:11:15.577 --> 00:11:16.338
they see it work,

249
00:11:16.679 --> 00:11:21.829
then they'll go back in time and they'll kind of like rerun it and rerun it and rerun it until they see it,

250
00:11:22.230 --> 00:11:22.470
you know,

251
00:11:22.711 --> 00:11:23.372
really work well.

252
00:11:24.260 --> 00:11:25.412
And that troubleshooting.

253
00:11:26.937 --> 00:11:27.864
for me personally,

254
00:11:28.506 --> 00:11:33.144
seems to work a lot better when I'm working with smaller prompts because there are fewer words to tweak.

255
00:11:33.505 --> 00:11:34.138
You mentioned,

256
00:11:34.138 --> 00:11:34.383
you know,

257
00:11:34.786 --> 00:11:35.324
make it shorter,

258
00:11:35.769 --> 00:11:36.384
make it shorter,

259
00:11:36.504 --> 00:11:36.628
no,

260
00:11:36.689 --> 00:11:37.184
make it shorter.

261
00:11:37.344 --> 00:11:39.744
It's a lot easier to just say it once with a small prompt.

262
00:11:40.085 --> 00:11:40.289
Also,

263
00:11:40.289 --> 00:11:44.704
it just like takes like a lot less time because like if you have a big prompt,

264
00:11:44.886 --> 00:11:47.504
but you're just trying to modify one section of it,

265
00:11:47.544 --> 00:11:49.704
but you have to rerun that whole giant output.

266
00:11:50.170 --> 00:11:51.060
these things are slow.

267
00:11:51.200 --> 00:11:52.540
That's like the most annoying part.

268
00:11:53.183 --> 00:11:55.560
It's killing me right now how slow these things are,

269
00:11:55.601 --> 00:11:56.740
even with the turbo models.

270
00:11:56.962 --> 00:11:57.178
Yeah.

271
00:11:58.563 --> 00:12:00.460
These large language models are not fast.

272
00:12:00.580 --> 00:12:01.058
They are slow.

273
00:12:01.583 --> 00:12:02.350
They're magical,

274
00:12:02.391 --> 00:12:03.340
but they're also pretty slow.

275
00:12:03.881 --> 00:12:04.839
They're damn slow.

276
00:12:06.001 --> 00:12:09.840
One of the techniques over here to increase speed is fine-tuning.

277
00:12:10.281 --> 00:12:11.680
We could fine-tune AR models.

278
00:12:11.800 --> 00:12:13.500
We could fine-tune classification models.

279
00:12:13.620 --> 00:12:14.386
We could fine-tune,

280
00:12:14.386 --> 00:12:14.649
you know,

281
00:12:15.173 --> 00:12:16.000
open-source models.

282
00:12:16.121 --> 00:12:18.940
And fine-tuning is also...

283
00:12:19.775 --> 00:12:23.706
a lot easier to do when dealing with a very narrow subset,

284
00:12:23.706 --> 00:12:26.012
with a very narrow scope of data.

285
00:12:28.133 --> 00:12:28.434
Is it?

286
00:12:28.695 --> 00:12:28.996
Is it?

287
00:12:29.076 --> 00:12:29.357
Okay,

288
00:12:29.497 --> 00:12:31.322
so let's dive into that.

289
00:12:31.984 --> 00:12:34.852
What makes fine-tuning easier with the smaller data?

290
00:12:35.753 --> 00:12:37.526
So if we take a look at binary classification,

291
00:12:37.606 --> 00:12:38.050
for example,

292
00:12:38.050 --> 00:12:40.099
or even multi-class classification,

293
00:12:40.099 --> 00:12:43.032
or let's say we take a look at named entity recognition,

294
00:12:43.532 --> 00:12:43.794
right?

295
00:12:44.377 --> 00:12:46.792
All these use cases are very focused.

296
00:12:47.519 --> 00:12:49.732
in one very narrow scope of work.

297
00:12:50.152 --> 00:12:56.891
And that is to classify something for use case A or extract something for use case B.

298
00:12:57.715 --> 00:12:59.372
We're not trying to boil the ocean over here.

299
00:12:59.452 --> 00:13:00.766
We're doing one thing really,

300
00:13:00.827 --> 00:13:01.272
really well.

301
00:13:01.814 --> 00:13:05.532
And when we build these prompts in a really small way,

302
00:13:06.054 --> 00:13:08.772
we're able to log the input and output.

303
00:13:10.145 --> 00:13:13.148
We're able to monitor the input and output,

304
00:13:13.388 --> 00:13:14.029
measure it,

305
00:13:14.549 --> 00:13:20.835
and ultimately collect enough data over time to be able to fine tune these models that one,

306
00:13:21.776 --> 00:13:24.679
not only potentially operates a lot faster,

307
00:13:25.340 --> 00:13:30.004
but also probably does a better job from an accuracy perspective.

308
00:13:31.290 --> 00:13:31.472
Yep.

309
00:13:31.736 --> 00:13:31.857
Yep.

310
00:13:31.898 --> 00:13:32.404
Absolutely.

311
00:13:33.984 --> 00:13:38.024
Everything's aligned with the breaking the prompts apart.

312
00:13:38.903 --> 00:13:41.711
So I guess to conclude,

313
00:13:42.252 --> 00:13:45.160
that ultimately leads to a higher quality.

314
00:13:45.662 --> 00:13:49.259
Let's touch on really quickly why.

315
00:13:50.290 --> 00:13:52.924
why aren't people doing the following these principles?

316
00:13:53.028 --> 00:13:53.463
Like what,

317
00:13:53.604 --> 00:13:54.003
what in,

318
00:13:54.144 --> 00:14:00.363
in what scenarios are people just trying to make these like super mega prompts or they're not,

319
00:14:00.704 --> 00:14:05.404
they're not breaking things apart in terms of requirements.

320
00:14:05.648 --> 00:14:06.320
Like what,

321
00:14:06.745 --> 00:14:09.124
what leads them to not follow these best practices?

322
00:14:10.352 --> 00:14:10.883
First of all,

323
00:14:11.044 --> 00:14:12.702
I love the term mega prompt.

324
00:14:16.180 --> 00:14:16.304
I,

325
00:14:16.304 --> 00:14:16.433
I,

326
00:14:17.229 --> 00:14:19.591
I think that sometimes,

327
00:14:19.831 --> 00:14:20.211
you know,

328
00:14:21.212 --> 00:14:22.393
as engineers,

329
00:14:22.893 --> 00:14:28.537
it's easy to be led in a certain direction,

330
00:14:28.577 --> 00:14:34.702
especially with the hype going on in the market right now and different,

331
00:14:34.742 --> 00:14:35.042
you know,

332
00:14:36.163 --> 00:14:36.763
players,

333
00:14:37.584 --> 00:14:39.886
companies that are coming out with new technologies,

334
00:14:40.006 --> 00:14:42.808
new tools every week that are kind of promising the world.

335
00:14:43.110 --> 00:14:45.406
And I think it's very easy to kind of...

336
00:14:46.278 --> 00:14:54.216
Get in this space where we truly believe that everything's magic and we try to make magic happen with one of these mega props.

337
00:14:54.776 --> 00:14:56.976
And I don't think that this is very magical.

338
00:14:57.156 --> 00:14:59.856
I think that this is just pure software engineering.

339
00:15:00.258 --> 00:15:01.183
And as a result,

340
00:15:01.203 --> 00:15:03.615
I think that we shouldn't be.

341
00:15:05.415 --> 00:15:06.699
swayed too,

342
00:15:06.779 --> 00:15:09.428
too much with other people's marketing efforts.

343
00:15:09.809 --> 00:15:15.108
And I think that we should stay true to true programming best practices.

344
00:15:16.129 --> 00:15:21.888
And that is truly to make sure that the things that we build are modular and functional in nature.

345
00:15:22.992 --> 00:15:25.148
And I don't know if you feel the same way.

346
00:15:25.652 --> 00:15:27.128
I'd actually love to hear your take on it.

347
00:15:28.867 --> 00:15:38.864
I think that actually it's interesting how much of our software best practices seem to also apply to prompt engineering.

348
00:15:40.104 --> 00:15:40.244
And

349
00:15:40.725 --> 00:15:41.868
I'm wondering,

350
00:15:42.008 --> 00:15:43.632
and we're kind of out of time here,

351
00:15:43.712 --> 00:15:48.864
but we should go into another episode and we should discuss some other software concepts like inheritance.

352
00:15:49.507 --> 00:15:51.044
Does inheritance apply to prompts?

353
00:15:51.144 --> 00:15:52.924
Give me your quick take before we close out here.

354
00:15:54.381 --> 00:15:56.544
I think it does.

355
00:15:56.944 --> 00:15:58.006
I think that,

356
00:15:58.547 --> 00:15:58.827
you know,

357
00:15:59.468 --> 00:16:02.052
we've already discussed schemas and,

358
00:16:02.232 --> 00:16:02.533
you know,

359
00:16:02.673 --> 00:16:07.440
how prompts should or how functions should be able to consume data.

360
00:16:08.361 --> 00:16:09.122
I think that,

361
00:16:10.664 --> 00:16:10.944
you know,

362
00:16:11.765 --> 00:16:17.332
you're getting me on the spot over here with all inheritance questions,

363
00:16:18.193 --> 00:16:23.560
but I definitely think that many programming best practices.

364
00:16:24.688 --> 00:16:26.340
also play a role in prompt engineer.

365
00:16:27.662 --> 00:16:28.099
All right.

366
00:16:28.363 --> 00:16:29.139
Let's end it there.

367
00:16:30.026 --> 00:16:30.354
All right,

368
00:16:30.395 --> 00:16:30.559
man.

369
00:16:30.981 --> 00:16:31.284
Brad,

370
00:16:31.728 --> 00:16:32.960
always a pleasure to chat with you.

371
00:16:33.761 --> 00:16:34.180
Take care.

372
00:16:34.526 --> 00:16:34.919
Until next time.

373
00:16:35.260 --> 00:16:36.115
Great chatting with you,

374
00:16:36.135 --> 00:16:36.420
Justin.

375
00:16:36.662 --> 00:16:37.240
Have a good evening.

376
00:16:37.870 --> 00:16:37.999
Bye-bye.

377
00:16:39.384 --> 00:16:40.479
Thank you for joining us.

378
00:16:40.924 --> 00:16:42.540
If you've enjoyed today's episode,

379
00:16:42.900 --> 00:16:45.780
hit subscribe and stay updated on our latest content.

380
00:16:46.300 --> 00:16:47.680
We appreciate your support.

