WEBVTT

00:00.090 --> 00:02.820
-: Hey, let me walk you through the GPT store.

00:02.820 --> 00:05.730
So now I'll walk you through how to build a custom GPT

00:05.730 --> 00:08.970
and why you might want to do that, as well as

00:08.970 --> 00:10.500
what the benefits are for doing it.

00:10.500 --> 00:15.500
So GPTs is the app store essentially, but for AI.

00:15.510 --> 00:17.490
So OpenAI has been trying to get more

00:17.490 --> 00:19.260
and more people to build these

00:19.260 --> 00:21.000
and you have some really big names that are built,

00:21.000 --> 00:22.380
stuff like Canva,

00:22.380 --> 00:25.650
and then you have some of the official ones by ChatGPT,

00:25.650 --> 00:29.610
like there's the Dall-E, the data analyst one, et cetera.

00:29.610 --> 00:32.093
But then there's a lot that other people have made,

00:32.093 --> 00:34.740
as you can have a look through these.

00:34.740 --> 00:36.890
One particularly interesting one is Grimoire, which is one

00:36.890 --> 00:40.860
of the popular ones that wasn't built by the ChatGPT team.

00:40.860 --> 00:42.720
It's supposed to be really good for programming.

00:42.720 --> 00:44.370
You can click into any of these,

00:44.370 --> 00:47.460
like if we specifically wanted to see this, we can see

00:47.460 --> 00:50.340
how many conversations it's had and the ratings.

00:50.340 --> 00:52.200
You can click start chat.

00:52.200 --> 00:53.057
You can say, yeah, here we go.

00:53.057 --> 00:55.443
I want to create my first chat.

00:56.820 --> 01:01.410
And what it does is it has a bunch of different things

01:01.410 --> 01:03.540
that it can do in the background.

01:03.540 --> 01:06.420
Basically anything ChatGPT can do, it can do too,

01:06.420 --> 01:11.420
but it gives the creator full control over the custom

01:11.730 --> 01:14.010
prompts that it uses in the background.

01:14.010 --> 01:16.800
It can also write code, it can generate images,

01:16.800 --> 01:19.680
it can take in images as well for vision,

01:19.680 --> 01:24.480
but it can do some cool stuff with function calling as well.

01:24.480 --> 01:28.050
I'm gonna show you an example there, so you can see

01:28.050 --> 01:30.000
that this guy is coded up and away.

01:30.000 --> 01:31.980
It's gonna start with, you know,

01:31.980 --> 01:34.260
I guess a bit more of information.

01:34.260 --> 01:36.960
It's sort of things that you wouldn't normally get from

01:36.960 --> 01:39.720
ChatGPT or one of the things he's implemented here is he is

01:39.720 --> 01:41.520
told it to always use hotkeys

01:41.520 --> 01:46.440
and then to do what the user says, if you do,

01:46.440 --> 01:48.810
if it does get a responses, N right,

01:48.810 --> 01:51.540
it's he's recommending different tools like Netlify,

01:51.540 --> 01:54.870
et cetera, and then giving you next steps.

01:54.870 --> 01:58.620
Cool, so that is an example of a GPT.

01:58.620 --> 02:03.014
Now I built a GPT, which is JokeGPT,

02:03.014 --> 02:05.370
trying to get it to tell funny jokes.

02:05.370 --> 02:07.470
So I'll show you an example of that.

02:07.470 --> 02:08.740
Just click tell me a joke

02:11.160 --> 02:12.900
and you can see it starting an action.

02:12.900 --> 02:14.970
I'll explain why it does that later.

02:14.970 --> 02:17.310
This is actually one issue that I have

02:17.310 --> 02:19.890
for GTS in general, but here we go.

02:19.890 --> 02:22.320
Let's see how it does with the joke.

02:22.320 --> 02:25.200
Man dating nowadays is trying to download a movie in 1999,

02:25.200 --> 02:26.490
you wait forever, it's never what was

02:26.490 --> 02:28.110
advertised and you end up with a virus.

02:28.110 --> 02:30.600
Okay, so that is not the sort of joke

02:30.600 --> 02:33.270
that you normally get from ChatGPT.

02:33.270 --> 02:37.590
So just to say here, tell me a joke.

02:37.590 --> 02:40.050
It's pretty bad at jokes, right?

02:40.050 --> 02:43.050
Like it doesn't want to tell anything interesting.

02:43.050 --> 02:44.760
Actually you can see they're probably doing some prompt

02:44.760 --> 02:45.930
prewriting in the background.

02:45.930 --> 02:48.150
Here's a lighthearted joke for you, okay?

02:48.150 --> 02:49.740
This is one of the favorites, right?

02:49.740 --> 02:51.660
Why don't scientists trust atoms?

02:51.660 --> 02:53.010
Because they make up everything.

02:53.010 --> 02:56.970
If you ask ChatGPT to tell me a joke a hundred times,

02:56.970 --> 02:58.500
I think something like

02:58.500 --> 03:02.040
90% of the jokes will be one of 25 jokes.

03:02.040 --> 03:05.250
And this is actually the most popular one that it tells.

03:05.250 --> 03:07.260
So I wanted to get it to tell better jokes

03:07.260 --> 03:09.420
and also I wanted to be able to tell jokes

03:09.420 --> 03:12.210
that like are actually funny and not PC

03:12.210 --> 03:14.510
and in the style of different comedians as well.

03:14.510 --> 03:17.410
So tell me a joke in the style

03:18.390 --> 03:22.350
Dave Chappelle about vegans.

03:22.350 --> 03:24.303
So see what comes back with,

03:25.710 --> 03:29.790
one of the things I find if you do normal ChatGPT,

03:29.790 --> 03:31.470
when you ask it to do stuff like this,

03:31.470 --> 03:34.680
it will sometimes refuse, sometimes it will say

03:34.680 --> 03:36.780
that there's no, I'll give you a big

03:36.780 --> 03:37.830
disclaimer at the beginning.

03:37.830 --> 03:40.470
Super annoying because it doesn't want to offend anyone.

03:40.470 --> 03:41.473
But here it actually does a pretty good job.

03:41.473 --> 03:44.610
Man, you ever notice how vegans treat picking a restaurant

03:44.610 --> 03:45.720
Like they're diffusing a bomb.

03:45.720 --> 03:46.553
It's like easy.

03:46.553 --> 03:47.520
Don't rush into anything we need

03:47.520 --> 03:49.710
to consider the salad options, blah, blah, right?

03:49.710 --> 03:52.170
So yeah, it's funny, it's pretty good

03:52.170 --> 03:54.270
and you can keep going with it as well

03:54.270 --> 03:57.720
and just generate as many jokes as you want.

03:57.720 --> 04:00.720
Cool, so how does this work on the backend?

04:00.720 --> 04:02.730
I'm just about to show you that and I'll show you why it's

04:02.730 --> 04:05.343
doing this action thing every time as well.

04:07.470 --> 04:08.863
Here we go.

04:08.863 --> 04:11.288
Maybe this should stop being so delicious.

04:11.288 --> 04:12.121
(man laughs)

04:12.121 --> 04:14.190
Okay, all right, I dunno if you, this is your style

04:14.190 --> 04:15.900
of humor, but you could actually program your

04:15.900 --> 04:17.970
own here with this information.

04:17.970 --> 04:20.670
So I'm gonna go in, I'm gonna go to EditGPT,

04:20.670 --> 04:23.697
this is something I can do because it's my GPT

04:23.697 --> 04:26.510
and I'll show you the internals of what it is.

04:26.510 --> 04:29.160
So you just provide a name in the description,

04:29.160 --> 04:32.130
but then you put some instructions in here.

04:32.130 --> 04:35.610
So this is your system prompt, right?

04:35.610 --> 04:38.597
And you can see that I've got, write an original joke,

04:38.597 --> 04:40.590
you're a standup comedian on stage

04:40.590 --> 04:41.940
and I'm saying

04:41.940 --> 04:44.100
you should match the style of Dave Chappelle.

04:44.100 --> 04:47.100
And I've also said don't use the n word, et cetera.

04:47.100 --> 04:49.169
I've told it you can bleep things out,

04:49.169 --> 04:51.240
right, it's bleeped out here.

04:51.240 --> 04:54.390
You can, and then I have some instructions here, which is

04:54.390 --> 04:56.400
where we're gonna get into why it's

04:56.400 --> 04:58.230
calling an API every time.

04:58.230 --> 05:00.510
So I'm telling you, you must call the clean joke action

05:00.510 --> 05:03.660
every time before delivering the joke to the user.

05:03.660 --> 05:04.860
And the reason I do that is

05:04.860 --> 05:07.440
because this is what the joke actually looks like.

05:07.440 --> 05:12.440
So I've got JokeGPT generating JSON with a comedian,

05:12.570 --> 05:15.360
the disclaimer and then the actual joke.

05:15.360 --> 05:17.010
So it actually generates that,

05:17.010 --> 05:20.730
but then it sends that to an API that I made,

05:20.730 --> 05:25.290
which just gets rid of the comedian and the disclaimer

05:25.290 --> 05:27.750
and only provides the joke back.

05:27.750 --> 05:29.520
If you look, this is the API,

05:29.520 --> 05:30.840
I'm just using Python anywhere.

05:30.840 --> 05:33.960
It's free as long as you refresh it every three months.

05:33.960 --> 05:35.434
And I just used a basic flask.

05:35.434 --> 05:37.890
In fact I asked ChatGPT to code this for me.

05:37.890 --> 05:40.080
So you didn't even really need to know how to code.

05:40.080 --> 05:43.027
But all this does is it takes the,

05:44.479 --> 05:48.867
takes the data and then you name my API key

05:49.890 --> 05:52.313
and then it figures out it gets the joke part

05:52.313 --> 05:54.240
and then it just returns the joke.

05:54.240 --> 05:57.180
I also have it returning a privacy policy

05:57.180 --> 06:00.950
because that's a requirement, for ChatGPT.

06:00.950 --> 06:02.670
So I've just included that in there.

06:02.670 --> 06:04.560
But yeah, I even got ChatGPT

06:04.560 --> 06:06.510
to generate this privacy policy for you.

06:06.510 --> 06:09.120
I'm not a lawyer so no, don't worry.

06:09.120 --> 06:11.490
Now I have a few different prompts in here.

06:11.490 --> 06:12.630
So it gives you an example

06:12.630 --> 06:14.070
of the types of jokes that I want.

06:14.070 --> 06:15.353
So it's, they're not as PC, right?

06:15.353 --> 06:17.400
There's a Ricky Gervais joke

06:17.400 --> 06:20.220
and then I have some angry instructions at the bottom

06:20.220 --> 06:21.780
in caps lock just to make sure

06:21.780 --> 06:24.480
it always calls that clean joke thing.

06:24.480 --> 06:26.760
So what is the clean joke thing?

06:26.760 --> 06:28.740
So first of all, I have web browsing so I could tell it

06:28.740 --> 06:30.780
to a good search for a joke as well.

06:30.780 --> 06:32.490
That's another thing by the way, it can do.

06:32.490 --> 06:34.470
But lemme just click on this.

06:34.470 --> 06:37.290
So this is the schema for my API

06:37.290 --> 06:39.930
and you can see it's a JokeGPT service.

06:39.930 --> 06:42.420
And then there's a path called clean,

06:42.420 --> 06:43.980
and it's called Clean Joke,

06:43.980 --> 06:45.390
that's our operation ID.

06:45.390 --> 06:47.460
And it says that this endpoint allows you

06:47.460 --> 06:49.560
to for submitting a joke for cleaning with comedian's name

06:49.560 --> 06:52.410
and a disclaimer and it's just given an example of

06:52.410 --> 06:54.210
what goes in and what goes out.

06:54.210 --> 06:57.500
But yeah, you can see that it gives a, you know,

06:57.500 --> 07:01.050
it basically describes what my API does,

07:01.050 --> 07:03.840
and this is passed into JokeGPT.

07:03.840 --> 07:06.180
So it knows that this is an action it can do.

07:06.180 --> 07:07.860
And again, this looks really complicated,

07:07.860 --> 07:10.860
but I literally just asked Chat GPT, I said,

07:10.860 --> 07:15.780
here's my API code, can you turn this into OpenAI schema?

07:15.780 --> 07:17.550
And it did a really good job.

07:17.550 --> 07:19.440
Cool, and that is how that works.

07:19.440 --> 07:21.060
And you can see it's a post method.

07:21.060 --> 07:24.300
You can also test it just to check that it works.

07:24.300 --> 07:26.040
That is how you develop it.

07:26.040 --> 07:29.580
One of the recommendations I have here, by the way is

07:29.580 --> 07:33.630
to test and learn what prompts work in the playground first

07:33.630 --> 07:34.800
and then just get that working

07:34.800 --> 07:39.450
before you turn this into a, an actual tool.

07:39.450 --> 07:42.430
The other thing is it does allow you to upload

07:43.350 --> 07:44.880
different things for knowledge,

07:44.880 --> 07:46.860
but it doesn't work that well to be honest.

07:46.860 --> 07:48.930
Like it can only search these things.

07:48.930 --> 07:52.440
It doesn't have, this is a big list of loads of funny jokes.

07:52.440 --> 07:54.450
It doesn't actually have them in context

07:54.450 --> 07:56.310
when it's telling you a joke.

07:56.310 --> 07:57.450
So it can do a search

07:57.450 --> 07:58.453
with these things and I left it in there

07:58.453 --> 08:00.180
because it doesn't hurt anything,

08:00.180 --> 08:02.850
but just know that basically you upload here

08:02.850 --> 08:04.440
that's like not in the prompt.

08:04.440 --> 08:06.270
It's probably not gonna do a great job at.

08:06.270 --> 08:09.120
It's pretty good at things like if you have a company

08:09.120 --> 08:10.650
documentation and you ask it,

08:10.650 --> 08:13.800
can you search the company documentation for X

08:13.800 --> 08:15.180
and then it can do that pretty well.

08:15.180 --> 08:16.320
But that's about it.

08:16.320 --> 08:17.280
The other thing is you want

08:17.280 --> 08:18.990
to turn off things that you're not using.

08:18.990 --> 08:21.900
So I've turned off code interpreter and image generation.

08:21.900 --> 08:24.780
And then also I recommend don't click this create button.

08:24.780 --> 08:28.740
This is an, very meta, it's a basically like a ChatGPT

08:28.740 --> 08:30.450
that creates CustomGPTs.

08:30.450 --> 08:32.550
But I find that whenever I use it, like it starts

08:32.550 --> 08:34.170
to delete crap that I've already put in there.

08:34.170 --> 08:36.360
So I just fill this form in normally.

08:36.360 --> 08:37.193
Cool.

08:37.193 --> 08:39.780
And you can hit save and you can publish just like anything.

08:39.780 --> 08:42.780
Anyway, that is my custom JokeGPT.

08:42.780 --> 08:45.450
One of the real problems I have with it is that it call,

08:45.450 --> 08:47.790
it asks for permission to make the API calls

08:47.790 --> 08:49.800
and it calls the API every time.

08:49.800 --> 08:51.600
I think that's a bit of a pain

08:51.600 --> 08:54.060
and probably why this hasn't got much usage.

08:54.060 --> 08:55.110
But yeah, at the end

08:55.110 --> 08:56.970
of the day this was just made for me to play around.

08:56.970 --> 08:59.280
So yeah, hopefully this helps you

08:59.280 --> 09:01.260
and you build your own custom GPT

09:01.260 --> 09:05.310
and are more successful than what I have done with this one.

09:05.310 --> 09:07.260
Right, hopefully that's useful for you.
