WEBVTT

00:00.040 --> 00:00.480
Okay.

00:00.520 --> 00:02.920
Next up, a super important integration.

00:02.960 --> 00:05.360
A nice and easy one that you're gonna enjoy.

00:05.560 --> 00:09.160
It's a powerful platform that is called Fire Crawl.

00:09.440 --> 00:16.160
And this is a platform that supports a bunch of different web related activities web scraping, web

00:16.160 --> 00:22.880
crawling, looking for links on a web page, and parsing a web page and running searches.

00:23.240 --> 00:28.760
Turn websites into LM ready data is what it says in the headline, and that sounds like a jolly good

00:28.760 --> 00:29.560
thing for us to do.

00:29.920 --> 00:32.000
And the good news is that it is.

00:32.040 --> 00:33.520
It has a free tier.

00:33.560 --> 00:34.680
It has a free plan.

00:34.840 --> 00:38.880
Uh, that is uh, I'm in the UK, so we're getting we're getting, uh, pounds here.

00:39.040 --> 00:43.920
Uh, wherever you are, you will get the, uh, the right, um, the right currency.

00:44.160 --> 00:46.600
Uh, and it's very, very popular.

00:46.640 --> 00:48.480
A great thing for, uh, for us to do.

00:48.480 --> 00:52.040
And so we are going to sign up for a fire crawl plan.

00:52.080 --> 00:55.360
Fire crawl is the the website here.

00:55.360 --> 01:02.070
And so sign up, uh, and, uh, I will continue with Google and I will authenticate with my Google

01:02.070 --> 01:04.910
account and in we come.

01:04.950 --> 01:07.670
And I'm going to say they've done their OAuth two.

01:08.350 --> 01:09.270
As you now know.

01:09.310 --> 01:13.750
You know the pain that Fire Crawl had to go through to be able to put up that box and the redirect URL

01:13.790 --> 01:14.390
they will have got.

01:14.390 --> 01:14.870
Right.

01:14.990 --> 01:16.630
Um, and here we are.

01:16.670 --> 01:22.990
We've come in uh, and uh, email has been verified and, uh, these are things to get started that

01:22.990 --> 01:25.630
we won't do any of this, uh, we will get ourselves set up.

01:25.630 --> 01:26.310
Continue.

01:26.550 --> 01:30.750
Um, and we're about to complete the setup of our fire crawl account.

01:30.790 --> 01:34.230
Next up, you have a terms of Service screen to to review.

01:34.470 --> 01:39.430
Uh, for example, the description is that fire crawls an API that converts any website into LLM friendly

01:39.430 --> 01:45.190
data, provides tools to extract structured data from web pages, ensuring data is clean and ready for

01:45.190 --> 01:46.470
use in AI apps.

01:46.710 --> 01:49.910
And you'll have to scroll all the way through all of this, and then you'll be able to turn that to

01:49.950 --> 01:51.510
yes, and then you'll be able to continue.

01:51.550 --> 01:57.030
We'll show you a little bit of code that you can ignore and proceed on to, to the, uh, the dashboard

01:57.030 --> 01:57.390
screen.

01:57.390 --> 02:01.170
It's actually it starts by saying invite your team, which we will not do.

02:01.530 --> 02:04.050
Personal is fine and choose your plan.

02:04.050 --> 02:11.490
We will get started with the free one allows us to scrape 500 pages, get started and it says welcome

02:11.490 --> 02:12.410
to five crore at the top.

02:12.410 --> 02:13.250
And here we are.

02:13.290 --> 02:19.050
Here we are at the dashboard screen and you can see that we have, uh, all, all sorts of things,

02:19.090 --> 02:25.690
the different things that it can do is scrape, which is to get data from a website search, which is

02:25.690 --> 02:30.890
given a search term, be able to, to look for, for do a, do a, basically like a Google search crawl

02:30.890 --> 02:35.490
is given a web page, find all of the links out different pages and get that data.

02:35.490 --> 02:36.930
And then the agent.

02:36.930 --> 02:38.770
Everyone has agent functionality these days.

02:38.770 --> 02:41.610
We're going to be building that kind of thing using these.

02:41.850 --> 02:44.970
There is an MCP integration that we'll learn all about tomorrow.

02:45.130 --> 02:49.490
Uh, but uh, for now, what we really need is the API key.

02:49.810 --> 02:56.600
That is the thing at this point to be copying into your clipboard, uh, so that we can use it in N810.

02:56.640 --> 02:58.480
Okay, so now we go back to N810.

02:58.520 --> 03:02.480
We go back into my first folder and let's go back to the Deep Seek project.

03:02.520 --> 03:03.440
Here it is.

03:03.720 --> 03:04.000
Okay.

03:04.080 --> 03:05.360
First thing a little bit confusing.

03:05.360 --> 03:11.720
I just want you to create a new node and type fire crawl and look at this fire crawl node.

03:11.720 --> 03:16.080
What you'll see here, probably if you're like me, is that there's this install node button.

03:16.240 --> 03:21.040
And this is, is going to install this as, as a node that we can use in cloud.

03:21.080 --> 03:24.840
And I'm going to press this so that we install the fire crawl node.

03:25.080 --> 03:26.400
And that is done.

03:26.640 --> 03:29.520
And that package has been installed.

03:29.880 --> 03:31.840
Um okay great.

03:32.080 --> 03:34.200
Now let's use it okay.

03:34.240 --> 03:39.760
And now I'm thrilled to introduce to you the final piece of a new learning for today, a really big

03:39.760 --> 03:42.840
one, uh, topic called structured outputs.

03:43.040 --> 03:47.560
So we're about to add here, fire crawl to to run a web search.

03:47.720 --> 03:51.440
And it turns out that fire crawl isn't available in as a tool.

03:51.440 --> 03:55.830
There's no fire crawl tool, so we can't just simply plug it into the AI agent.

03:55.830 --> 03:58.670
We have to put it in as a node to come after the output.

03:58.670 --> 04:03.870
So the agent will make some output and that will become the input into driving our web search.

04:04.070 --> 04:10.230
But there's a problem here, which is that LMS just generate output content in an unstructured way.

04:10.230 --> 04:15.190
It doesn't conform to any particular JSON spec, it's just the response that the LLM has.

04:15.390 --> 04:16.670
And that's not what we want here.

04:16.670 --> 04:21.030
We want it to produce some JSON according to a particular format.

04:21.230 --> 04:24.990
And luckily there's a way to do it and it's absolutely crucial.

04:24.990 --> 04:29.270
And I, I use it all the time, as do do all practitioners in the field.

04:29.310 --> 04:33.750
It's this technique called structured outputs and it's built into n810.

04:33.790 --> 04:35.790
And that's what we're going to use right now.

04:35.790 --> 04:40.150
So for any AI agent like this you can double click on it, bring it up.

04:40.150 --> 04:44.030
And there is this require specific output format.

04:44.030 --> 04:45.390
We're going to turn that on.

04:45.790 --> 04:47.230
And that's so crucial.

04:47.230 --> 04:54.540
And once we've done that look at this A new a new thing has appeared in in this this this node cluster.

04:54.700 --> 04:59.060
Uh, and it is something to connect an output parser to.

04:59.260 --> 05:03.100
And one of the output parses is called a structured output parser.

05:03.100 --> 05:04.940
And that's the one we want right now.

05:05.140 --> 05:12.500
And it's one that says hey LM whatever you produce, it's got to conform to a particular type of JSON.

05:12.500 --> 05:14.060
We need you to do that.

05:14.060 --> 05:15.900
And as a result, it will.

05:15.980 --> 05:21.460
And it's really cool that Nan allows us to do it by just giving some example JSON.

05:21.620 --> 05:27.260
And then it will guarantee that the LM will generate an output that conforms to this.

05:27.260 --> 05:28.900
So look, I'm going to have a bunch of JSON.

05:28.900 --> 05:32.140
I'm not going to have what they put in as the default state and cities.

05:32.260 --> 05:44.460
Instead I'm going to have uh search query, colon, uh, internet search or whatever.

05:44.860 --> 05:47.740
Uh, it's an internet search perhaps would be a bit better.

05:47.900 --> 05:49.100
Uh, doesn't matter.

05:49.100 --> 05:50.300
But this is an example.

05:50.300 --> 05:56.680
Very simple piece of Jason Jason with only one key value pair search, query and internet search.

05:56.680 --> 06:02.440
And I'm gonna I'm gonna make this this this is going to be the, the output, uh, query structure.

06:02.440 --> 06:07.080
And that's saying to the LM, whatever you generate, you can generate whatever you want as long as

06:07.080 --> 06:08.720
it conforms to this.

06:08.720 --> 06:12.280
Jason, this type of Jason generates it from this Jason example.

06:12.560 --> 06:13.080
Okay.

06:13.120 --> 06:15.720
And now we come back here and you can see that that's there.

06:15.720 --> 06:18.680
And that is what this agent is going to generate.

06:18.680 --> 06:21.440
And just to keep it coherent I'm going to double click here.

06:21.440 --> 06:23.720
And I'm going to add in a system prompt.

06:23.760 --> 06:26.240
Come here to Options System message.

06:26.240 --> 06:30.920
And we're going to change your a helpful assistant to be something that makes its task slightly more

06:30.920 --> 06:31.480
clear.

06:31.520 --> 06:32.000
Here we go.

06:32.040 --> 06:40.720
Let's say something like you come up with search queries for an internet search.

06:43.400 --> 06:48.920
To best, uh, answer the user's question.

06:49.600 --> 06:50.630
That's what we'll say.

06:50.630 --> 06:53.870
You come up with search queries for an internet search, or we'll say search query.

06:54.110 --> 07:01.190
With a search query, you come up with a search query for an internet search to best answer the user's

07:01.190 --> 07:02.110
question.

07:02.390 --> 07:02.990
All right.

07:02.990 --> 07:04.470
That's how we're setting it.

07:04.510 --> 07:05.470
Save that.

07:05.510 --> 07:06.510
Come back here.

07:07.350 --> 07:09.350
Uh, we didn't need to save it, but but I did.

07:09.510 --> 07:13.390
Uh, and with that, we're now going to try this out before we add the parser on.

07:13.390 --> 07:14.750
Let's just see what happens.

07:14.790 --> 07:15.350
Okay.

07:15.390 --> 07:18.230
So I'm going to come in here, I'm going to I'm going to open the chat.

07:18.230 --> 07:31.030
And I'm going to say, uh, I'd like to find out what are the best LMS to be using in 2026.

07:31.230 --> 07:35.750
And that is the message that we are going to give to our model.

07:36.070 --> 07:40.270
And it's got that system prompt that tells it that it's going to try and make a search query and it's

07:40.270 --> 07:40.750
run.

07:40.750 --> 07:43.670
And if we double click on this what you'll see has come out.

07:43.710 --> 07:45.150
We'll switch to the JSON view.

07:45.310 --> 07:52.020
You will see that it's produced in under output something which conforms to the structured outputs that

07:52.020 --> 07:52.980
we requested.

07:52.980 --> 07:56.660
It conforms exactly, and it always will.

07:56.860 --> 07:58.540
And I can't emphasize enough.

07:58.580 --> 08:03.420
This is an incredibly powerful trick to use with LMS.

08:03.660 --> 08:10.580
LMS give us this this rich ability to make a nuanced decisions based on their inputs, which is great.

08:10.580 --> 08:15.980
But one of the downsides is that what they produce could be they can they can produce tokens that are

08:15.980 --> 08:17.980
very unstructured and can be anything.

08:17.980 --> 08:22.540
So trying to turn that into an organized workflow can be quite challenging, particularly if you're

08:22.540 --> 08:23.580
not using tools.

08:23.780 --> 08:25.380
This is the answer.

08:25.620 --> 08:27.580
Always use structured outputs.

08:27.580 --> 08:28.100
Turn on.

08:28.100 --> 08:29.700
Require specific format.

08:29.740 --> 08:31.620
Fix a JSON format.

08:31.620 --> 08:37.380
Make sure your system prompt is consistent so it's clear what the LM has to do, and your outputs will

08:37.380 --> 08:44.140
conform to a structure like this with a nice search query in this case, but with whatever you want

08:44.140 --> 08:44.860
it to do.

08:44.900 --> 08:49.770
And this is now ideal for us to hook up to the next step in the process.

08:49.770 --> 08:53.130
And of course, the next step in the process is going to be fire crawl.

08:53.250 --> 08:55.890
So we add in Fire Crawl right here.

08:56.050 --> 09:01.650
We are going to say search and optionally scrape web results.

09:01.650 --> 09:02.450
Here it is.

09:02.770 --> 09:06.130
Credentials connect with is fire crawl account.

09:06.130 --> 09:10.450
So you've pasted in your your API key as I have.

09:10.490 --> 09:14.330
And you've got the connection tested successfully in here.

09:14.490 --> 09:16.210
I hope all is good.

09:16.370 --> 09:19.090
Uh, so we're going to, uh sorry.

09:19.130 --> 09:20.050
Come on in here.

09:20.450 --> 09:25.530
So the field that needs to be specified is what is it going to query on.

09:25.650 --> 09:26.770
And of course it's right here.

09:26.770 --> 09:31.010
It's the search query because this is exactly what came from the AI agent.

09:31.050 --> 09:35.130
You can either type in the expression yourself or you can drop it in there.

09:35.170 --> 09:36.930
It switches to expressions automatically.

09:36.930 --> 09:41.010
It is of course JSON output dot search query.

09:41.010 --> 09:42.690
And there is the example.

09:42.890 --> 09:45.530
And everything here looks good.

09:45.990 --> 09:49.310
Uh, okay with that, let's come back here.

09:49.470 --> 09:52.070
Let me copy this message that I had before.

09:52.110 --> 09:55.190
Let's start a fresh chat using this.

09:55.230 --> 09:56.350
Paste this in.

09:56.510 --> 10:00.510
And now everything runs off it goes.

10:02.310 --> 10:05.270
It's gone to deep seek again through open router.

10:05.310 --> 10:08.150
The structured output came out and it ran.

10:08.150 --> 10:10.390
Let's double click on here to see what came out.

10:10.430 --> 10:18.670
What came out is a bunch of URLs, titles and descriptions of of information that it retrieved based

10:18.670 --> 10:19.710
on that.

10:19.710 --> 10:23.150
That question about finding 2026 models.

10:23.150 --> 10:28.030
And you can see it's got some good links there to a Forbes article, to Zapier, to to all sorts of

10:28.030 --> 10:28.430
things.

10:28.430 --> 10:30.310
Here it is working.

10:30.470 --> 10:33.750
We have just scraped the internet using Fire Crawl.

10:33.870 --> 10:40.030
Um, based on a general question that we asked, and we used an AI agent to turn that question into

10:40.030 --> 10:42.550
a search term for fire crawl.

10:42.550 --> 10:45.070
That is a great integration together.
