Free YouTube Transcribe

Video transcript

Agentic AI – Complete Course for Beginners

freeCodeCamp.org · 242,791 words · 1104 min read

Want to search this transcript, jump the video from any line, or download it as TXT, SRT, or VTT?

Open in the transcript tool

Full transcript

Introduction & Planning

0:00Learn how to build productionready

0:01multi- aent systems and automate

0:04workflows using lang chain and langraph.

0:08You'll master everything from core

0:10agentic fundamentals and pideantic

0:12validation to advanced sequential

0:15parallel and conditional langraph

0:17workflows. Along the way, you'll

0:19implement chat memory, rag, and human in

0:23the loop controls and finish by

0:25deploying your applications to AWS and

0:28render through real world projects like

0:30a custom chat GPT trip planner and auto

0:34content agent. Papy created this course.

0:38Hi guys, my name is BPI and you are

0:41welcome to my course. In this course

0:44you'll try to master the complete

0:46agentic AI with the help of Lang graph.

0:49If you have seen over the internet and

0:51everywhere nowadays people are moving

0:54towards agentic AI system.

0:56Previously we used to work on the LLM

0:59based application rag based application

1:01but right now agent is getting very much

1:03important and crucial for the

1:06application development. Nowadays AI

1:08agents are becoming very much powerful

1:10because of its automated workflows. So

1:13right now you only need to provide a

1:15prompt and from your prompt itself your

1:17agents can understand your goals and

1:19these goals would be divided into

1:21multiple tasks and all of the task would

1:23be completed by using some kinds of

1:25tools. Your AI agents can decide which

1:28tool to use to perform what kinds of

1:30task. So these kinds of automated

1:33workflows your AI agents is having and

1:35with the help of that it can perform any

1:36kinds of task you'll be providing to

1:38your AI agents. So that's why this is

1:40far better than our traditional geni

1:43application development because right

1:45now with the help of agents we can

1:47automated the workflows. So in this

1:49course guys I'm going to teach you each

1:51and everything you need to master the

1:53agentic AI with the help of langraph. Uh

1:55but before that first of all we'll try

1:57to understand my course plan. This

1:59course I have divided into multiple

2:00phases. So as you can see this is my

2:03entire plan for this course uh agentic

2:05using langraph. So first of all uh in

2:08the phase one we'll try to complete the

2:10introduction to uh agentic AI. First of

2:12all we'll try to understand what is

2:15agentic AI. Okay how AI agent works.

2:17We'll try to see the difference between

2:19LLA maps and AI agents application.

2:21We'll try to see the agentic behaviors

2:23like reasoning planning memory tool.

2:25Okay decision making. Then we'll try to

2:27see some real world use case of agentic

2:29AI traditional AI versus generative AI

2:32versus agent AI system. Okay. Then uh

2:34we'll try to see the evaluation from

2:36chat bots to automated agents. Okay.

2:38We'll try to see each and everything.

2:40Then uh some other stuff we'll try to

2:42cover as you can see like limitations uh

2:45why agent why agents need memory tools

2:47workflows control logic then agent

2:50architecture prompt and system

2:51instruction tools memory planning

2:54reflection environment interaction and

2:56human feedback okay then in phase two

2:59I'll try to start with asynchronous

3:00programming and pentic because uh if you

3:04are uh if you are already working with

3:07AI agents I think you know that uh you

3:09need these kinds to asynchronous

3:11programming because all of the agents

3:12are using especially all of the agents

3:15framework are using this kinds of

3:16asynchronous programming in the back

3:17end. Okay. So in this course I'm going

3:19to focus on the langraph. So langraph

3:22internally uses asynchronous programming

3:24that means you can run your agents in

3:26parallel. Okay. We'll try to understand

3:28this asynchronous programming. Okay. Why

3:30it is required for AI agents? How we can

3:32code inside Python. Okay. Then we'll

3:35also try to see about the pyic.

3:38So, pyic is a python library and uh we

3:42use this pentic for the uh data

3:44validation okay model validation uh and

3:47uh these things you need whenever you

3:49are implementing the agents okay I'm

3:51going to tell you why it is required and

3:53why you have to learn this pidentic as

3:55well okay so each and everything we'll

3:57try to cover in the phase two then in

3:59phase three guys I will start with our

4:01first uh orchestration framework which

4:03is langen now you can ask me why we'll

4:06be learning the langin Because if you

4:08know lang graph is a product of langchen

4:10okay langchen team has developed lang

4:12graph right. So that's why to master

4:15this lang lang graph we need some

4:19knowledge on langchen first of all we

4:20have to understand uh whenever we do

4:23didn't have this kinds of langraph

4:24framework so how people used to create

4:26the agents with the help of langchen so

4:28that's why we'll try to use langen to

4:30build this kinds of agents and multi-

4:32aents workflows okay and uh still if you

4:35are using lang graph you need to use

4:36langen because from the langen uh you

4:38will be loading the large language model

4:40you will be loading the prom templates

4:42okay all of the utility related ated

4:43code you will be writing with the help

4:44of langchen and lang graph you'll be

4:47using for building your agent workflows

4:50okay that's why langchen understanding

4:51is little bit required that's why I'm

4:53going to complete this langchen inside

4:54this particular course then we'll start

4:57with the phase four which is uh lang

5:00graph so here we'll try to understand

5:02each and every component of lang graph

5:04as you can see what is lang graph why

5:06lang graph is required langchen versus

5:08lang graph then graph based aent

5:10workflows state management node and ages

5:12okay state nodes edges then conditional

5:14edges. Okay. Start and end nodes, graph

5:17compilation, state graph, checkpointer,

5:19masses state, sequential workflows,

5:21parallel workflows, conditional

5:22workflows, iterative workflows. Okay.

5:25Then um we'll try to see basic chatbot

5:28architecture, masses handling, state

5:29management, user input and we'll try to

5:32see how we can implement agentic chatbot

5:34with the help of langraph. So after that

5:36we'll start with phase five. So here

5:38we'll try to learn about the memory

5:40planning, monitoring and autonomous

5:42system. So here we'll just try to learn

5:45um why what is persistence memory, why

5:47it is required, agent memory, short-term

5:49memory, chat history, how we can stream

5:51the responses, okay, chat trading,

5:54conversation management, permanent chat

5:57persistence memory with database, okay,

5:59tool integr uh integration in Langraph,

6:01okay, inside the uh um aentki

6:04application. Then we'll try to see

6:06different different tools. Okay. Then

6:08we'll also try to learn like how we can

6:10integrate RG that means rag features

6:12inside our AI agents. Then vector

6:14database integration. Okay. Then uh

6:17we'll be learning another important

6:18concept which is human in the loop. Uh

6:20that means HITL. This is required

6:22nowadays all the agentic application are

6:24having this kinds of human in the loop

6:26integration. Then we'll try to see the

6:28monitoring our agent monitoring agent

6:30tracing with the help of Langmith. Then

6:32we'll also see how we can debug um the

6:34agent behavior.

6:36Then uh phase six guys we'll try to

6:38start with the deployment and production

6:40grade engineering. So here we'll try to

6:42dockerize the entire agents. Okay. Then

6:45we'll try to add the fast API back end

6:47database setup GitHub action CI/CD AWS

6:49deployment render deployment. Okay.

6:52Environment variable then production

6:54folder structure logging monitoring each

6:56and everything we'll try to cover. Then

6:58uh the final phase uh phase seven we'll

7:00try to start with some uh end to end

7:02real world AI agents uh project

7:04implementation. So we'll be implementing

7:07basically three major project here in

7:09this course. The first project I'll be

7:10implementing one end to end agentic

7:12chatbot with the help of lang graph

7:14database langismith tools rag htl AWS

7:17and render. And second project we'll be

7:19implementing uh uh our own chat GP agent

7:22with the help of LLM langraph fast API

7:25lang chroma uh SQL alchemy database and

7:28AWS. And third project uh project we'll

7:30be implementing uh called tripmate AI.

7:33This should be end to end multi-agent,

7:35table, planner agent with grock,

7:37langraph, postgrql and fast API. Okay.

7:40So these are the three major project

7:41we'll be implementing in this course.

7:43Then uh you can ask me what would be the

7:45course requirement uh to start this code

7:47course. What are the things I need to

7:49know? I'm expecting you are familiar

7:51with uh advanced Python programming

7:53because all of the coding I'll be doing

7:55I'll be coding in advanced Python. Then

7:57basics of generative AI knowledge is

7:59required if you're understanding about

8:01agent AI agents especially. So you need

8:03some understanding about uh generate EBI

8:05at least about the large language model.

8:07Okay, these are the thing. Then software

8:09requirement wise you should have anagon

8:11installed in your system VS code G and

8:13GitHub and docker desktop and postman.

8:15Okay, so these are the tools if you have

8:16you can start with this course. But

8:18don't worry, I will take care each and

8:19everything. If you are not familiar with

8:21this concept, I'll take care I'll try to

8:23teach in a such a way so that you will

8:25be getting all of the concept in a clear

8:27way. Okay. So yes guys uh this is the

8:29plan entire plan and throughout the

8:30entire course we'll be completing all of

8:32this concept and trust me the way I'm

Evolution from LLMs to Agentic AI

8:34going to complete all of the concept you

8:36will be loving a lot and after this you

8:38won't be having any kinds of doubt okay

8:40so if you're already familiar with

8:42agenti uh I will still tell you just try

8:44to go through the entire course I think

8:46you will be learning u some new concept

8:48here some some new implementation here

8:50okay so definitely you will be enjoying

8:53the entire course okay so yes guys this

8:55is the entire plan now let's start with

8:57the course concept. First of all, I'll

9:00uh give you the idea about the evolution

9:02of uh agentic AI how agentic AI came

9:05okay from the traditional large language

9:08model then we'll try to start with the

9:09other concept as well. So in this video

9:12first of all we'll try to understand and

9:15see the complete evolution of this

9:17agentic like how agentic came and uh

9:21what we used to do in our traditional

9:24generative application.

9:26uh first of all I will give you the

9:27entire understanding how agentic AI came

9:30what are the things they have introduced

9:32then uh I'm going to discuss about uh

9:35the detailed understanding of agentic AI

9:39uh the characteristic of agentic AI

9:41different component of agentic AI we'll

9:43try to understand with a good example so

9:46guys you can see on my screen here I

9:49have already written the definition like

9:52what is agentic AI so if you see here uh

9:56agent is nothing but uh it's a type of

9:59artificial intelligence that can take up

10:02a task or goal from a user and uh then

10:06work towards completing it on its own

10:10with minimal

10:12uh human guidance. Okay. And it plans,

10:16takes actions, adapts to change and

10:19seeks helps only when necessary. So by

10:23this definition itself I think uh you

10:26are getting little bit of understanding

10:29what I'm trying to say. Um those who are

10:32already familiar with uh chart GPT or

10:36any other uh agentic AI system uh if you

10:40have already used like u um VS code then

10:44anti-gravity cursor AI cloudy desktop

10:47right so this kinds of application if

10:49you have already used so there you will

10:51see that whenever user uh gives any

10:55kinds of uh prompt right based on the

10:58prompt uh that application decides what

11:00to you let's say if you are asking a

11:02very simple questions let's say you are

11:04asking tell me about Python so most of

11:08the large language model um have been

11:11trained with lots of data okay um

11:14especially whatever data we are having

11:17on the internet so they have used those

11:19data and they have trained those are the

11:21model and every model is having a

11:24knowledge cutoff okay every model is

11:26having a knowledge cutoff knowledge

11:27cutff means a specific date uh till they

11:31have trained the model. Let's say if I'm

11:33talking about uh chart GPT or let's say

11:36GPT uh 3.5 tour let's say GPT4 you will

11:40see that those model uh probably they

11:43have trained u uh on the year 2022

11:48or 2023 around okay uh till the date

11:52they have taken all of the data from the

11:54internet and they have trained those are

11:55the model so uh whenever I'm asking

11:58about the python so definitely uh in

12:012020 22 or 2023 this information was

12:04available on the internet and definitely

12:06our large language having this kinds of

12:09knowledge right so it will be able to

12:11give you the answer in short or directly

12:14but whenever I'm asking anything which

12:17is latest say I'm asking um I'm asking a

12:20latest information I'm asking like tell

12:23me about uh like uh the latest news of

12:27Iran and USA okay over in 2026 six. So

12:31that time definitely uh if you are using

12:34a single large language model okay uh

12:37this kinds of large language model won't

12:39be able to give you the response okay it

12:41will tell I don't have enough context

12:43okay uh after 2022 or 2003 so I I can't

12:48um answer your questions okay this kinds

12:51of I think you will uh get the answer if

12:54you have used the older chart GPT I

12:56think you are getting what I'm trying to

12:57say so but if I'm talking about uh

13:01nowadays uh whatever application we are

13:03using like clouded desktop then

13:06anti-gravity cursor id if I'm giving any

13:09kinds of uh prompt let's say I'm telling

13:12um just try to uh implement a

13:15application for me let's say implement a

13:18python game for me so what it it will do

13:20it will try to take that prompt as a

13:23command and it will automatically let's

13:25say plan for a task like what to do okay

13:28how uh it can implement the entire game

13:31for you. So to implement a game first of

13:33all it has to uh create the environment.

13:35It has to uh add the requirements. It

13:38has to uh create the user interface. It

13:41has to make the character. Okay. So one

13:43by one all of the plan would be sorted

13:45then once all the plan is ready. Okay.

13:48It will execute the plan one by one and

13:51it will complete the entire system and

13:53definitely in between it will try to

13:55test that particular let's say

13:57application. Okay. If uh it uh doesn't

14:00get any kinds of bugs, it will continue

14:02and it will complete that particular uh

14:04work for you. Okay. So that means

14:07everything is happening automatically

14:09and sometimes you will see that in

14:10between it will ask a human interaction.

14:13It will ask for a human input. Let's say

14:15whenever it will try to implement a game

14:18that time it might ask you what kinds of

14:21color you want for this particular

14:22environment. How many character you want

14:24in this particular game? what would be

14:26the let's say car color what would be

14:29the car speed okay so sometimes it will

14:32ask some kinds of questions to the human

14:34okay for the guidance and once uh we'll

14:37try to provide the feedback or let's say

14:39our input it will take that input again

14:41it will try to continue the workflow

14:44okay so that's why here you can see it

14:46is telling with minimal human guidance

14:48okay not not complete human guidance we

14:51give like very minimal human guidance

14:53here and it try to uh plans takes action

14:56okay adapt to changes let's say it has

14:59let's say it has to do one particular

15:01changes in the environment or let's say

15:03color or let's say any character it will

15:05automatically do that okay and it seeks

15:08help only when necessary so guys before

15:11I uh give you the entire discussion on

15:14this agentic AI first of all I want to

15:17walk you through the fundamental concept

15:19of generative application like so far

15:21whatever application uh we usually uh

15:25Great. Okay. And how this agentic uh AI

15:28or let's say AI agents came in the

15:29market. Then we'll try to understand uh

15:32this agent concept. So for this guys I'm

15:35going to take you on my whiteboard and

15:37then we'll try to discuss each and

15:38everything. So guys I'm inside my board.

15:41So here I'm going to write down each and

15:43everything.

15:44So see whenever I'm talking about

15:48uh AI agents right

15:52AI

15:55agent

15:57so this is the application of generative

16:00AI

16:04okay this falls into generative AI

16:07domain and uh those who are already

16:10working with generative AI so I am

16:12having a dedicated course on my channel

16:15the complete generative BI course. So

16:16there I have already discussed the

16:18foundation of generative BI. So in that

16:20course I have already taught you um all

16:23the concept regarding generative AI

16:26large language model. Okay uh retrieval

16:28augmented generations. Uh so each and

16:30everything I have already covered there.

16:32So if you are not familiar with

16:33generative AI first of all try to

16:35complete that particular course then it

16:37would be easy for you to understand.

16:39Okay. So in generative AI uh the main

16:42component we usually work with large

16:46language model. Okay large language

16:48model. So there are different different

16:50large language model nowadays. I think

16:52you know um there are some organization

16:55there are some company they have

16:58launched different different models. If

17:00I'm talking about meta okay meta AI so

17:03they have launched something called

17:05llama.

17:09Okay. Llama. Then if I'm talking about

17:14OpenAI, they have launched GPT.

17:18Okay. Then we are having Mistral.

17:25We are having

17:27Gemini.

17:29Okay. This is from Google. So that's how

17:32we are having different different large

17:34language model. Uh nowadays we usually

17:36use. So previously whenever we started

17:40generative BI that time um we used to uh

17:46only use a fine-tune uh fine-tune based

17:49or let's say uh pretend based large lang

17:51based model. Let's say here I'm having a

17:53large lang based model. So we used to

17:57provide a prompt

18:00okay prompt and it used to give a

18:03response.

18:06Okay. Response. So basically we used to

18:09use this large lang based model for text

18:11generation. Okay. For very uh good

18:14quality text generation or uh for some

18:18other task also we used to use like for

18:20language translation.

18:27Okay. Then for text summarization

18:35then definitely for chat operation how

18:39we used to ask different kinds of

18:41question and we used to get the response

18:44then definitely for

18:47like uh some other NLP task like any

18:52and so on. Okay. So initially those who

18:56have already used this chart GPT I think

18:58you are trying to relate the concept

19:00what I'm trying to say it was like a

19:03very basic application okay we used to

19:05use for this kinds of text generation

19:06task but slowly what they did uh they

19:10actually introduced uh also image

19:12generation okay image

19:17generation

19:20so image generation happens whenever

19:22they introduce something called

19:23multimodel system. So in the multimodel

19:26uh you not only generate the text there

19:28you can also generate the image. Okay

19:31but what was the problem with this kinds

19:33of application as I already told you

19:35let's say if I'm talking about any kinds

19:37of large language model it is having a

19:40knowledge cutff okay this is having a

19:45knowledge

19:47cutff

19:50so what is knowledge cutff let's try to

19:52understand. So for this let's go to the

19:54Google and here if I am searching for

19:57any kinds of model. Let's say I'm

19:58searching for open AI models. Let's open

20:02up the models.

20:05Now let's pick any kinds of model from

20:07this openi. So let's say if I'm talking

20:10about the GPT4 uh 5.4 mini or let's see

20:13if I'm taking any older model. Older

20:15model. Yeah. So I think here some models

20:19are available. Let's say if I'm talking

20:21about this um

20:25the view wall.

20:27Let's say if I'm talking about this

20:28GPT4.1. So if I click on this model, you

20:32will see that this model having a

20:34configuration. Configuration means the

20:36context window like uh how much context

20:39it can take then maximum output tokens

20:43how how much token it can generates and

20:46there is a section called knowledge

20:47cutoff. Okay. So here the knowledge

20:50cutoff you can see January 1, 2024 that

20:53means this model uh has been trained uh

20:57till January 1, 2024

21:00uh internet data. Okay. So if you're

21:02asking anything after that let's say

21:04you're asking February 1, 2024

21:07definitely um this model is not going to

21:10give you the response because this model

21:12doesn't have uh the knowledge after uh

21:15January 1, 2024. Okay, whatever let's

21:19say uh recent uh update uh we are having

21:22on the internet this this model doesn't

21:24know about that. So the main problem I

21:27think you can understand let's say if my

21:29prompt

21:30is uh before okay before this particular

21:33knowledge cutff the information I'm

21:35looking for on from my large language

21:37model definitely this model uh can give

21:40you the response but if it is after the

21:42knowledge cutff that time it will not

21:44able to give you the response okay it

21:46will tell I don't have the um context I

21:49don't have the informations okay after

21:51this particular knowledge cutff so I'm

21:52extremely sorry for that so that that is

21:55the uh things actually uh uh happened uh

21:59whenever charg came okay uh initially in

22:02the market and I think you remember okay

22:05uh charg used to give this kinds of

22:07response then uh what uh they have

22:10introduced

22:11they have introduced a concept called

22:13rag okay why they have introduced the

22:16concept called rag because now let's say

22:19if I want to add some other information

22:21let's say this is 2026

22:24so now I have to I want to add some more

22:26informations okay inside my large bank

22:29model. So what I have to do I have to

22:31finetune this model right I have to

22:35fine tune this model and finetuning

22:38means we are taking the pre-ten model

22:42okay and on top of that we are adding

22:44some new data

22:47adding new latest data and we are

22:50training few parameters here okay and

22:52whenever I'm talking about the LLM

22:54parameters it will count like from

22:56million right million to billion

23:00Okay, this is the issue. So fine-tuning

23:02is not an easy task. For this you need a

23:04good resources then um good budget.

23:07Okay, then you you should have also

23:10time. If you're having these kinds of

23:12things then you can easily fine-tune one

23:14large language model. Okay, there is no

23:17issue with that. So for the company this

23:20fine-tuning task was easy because

23:21they're having a good resources. They're

23:23having uh like very uh heavy investment.

23:26Okay, they're having lots of time. So

23:28they can do that. But what about for the

23:30developers? Let's say if I'm creating a

23:32application, okay, for my client and if

23:35any new data is coming and I want my

23:38application to be aware on top of this

23:40new data. So for me for for me as a

23:43developer, this is this is going to be

23:45like very hectic task like for

23:47fine-tuning a model because I don't have

23:49this kinds of supercomput with me. I

23:51don't have this much of budget okay so

23:54that I can purchase a good cloud for the

23:56training. I don't have that much of time

23:58time so that my client will wait for me

24:01because they has to also do the business

24:02right if I'm running my business also

24:04this should be continuously running and

24:06I should have handled all of the client

24:09with the latest informations and

24:11everything okay so that time researcher

24:14introduced something called rag concept

24:17okay this is called retrieval

24:21okay retrieval augmented

24:27generation.

24:30Okay. Reg rack component. In the rack

24:33component uh concept what we used to do

24:36let's say we are having a large language

24:37model. This is completely fine.

24:40Let's say we are having a large language

24:42model.

24:47Okay. So it will be connected to a

24:51knowledge base.

24:54So knowledge base is basically a

24:56database.

24:58Okay, it's a vector database.

25:02So this is called knowledge base. So it

25:04is having all the latest information,

25:11latest data I can say.

25:15Okay. So this data you have to store in

25:18the knowledge base and you have to

25:19connect with your large language model.

25:23Okay. And for this kind uh connection we

25:26use the orchestration framework. Some

25:27orchestration framework uh I think you

25:29know inside generate we are having lang

25:32chain we are having llama index. Okay.

25:33So this is called orchestration

25:35framework. So we use this kinds of

25:36orchestration framework uh to make the

25:39connection with our LLM.

25:41Okay. Now if user is asking anything

25:45okay let's say user is giving uh input.

25:48Okay. First of all, this input would be

25:50verified in the uh pre-ten model that

25:54means the large language model itself.

25:56First of all, it will try to check

25:57whether this information he's asking or

26:01what kinds of uh question they're

26:02asking. It is available in the LLM

26:05itself or not. It is available in this

26:07knowledge cutff or not. If it is having

26:11okay in this knowledge cutff, this will

26:13give you the response directly. This

26:15will give you the response. Okay, this

26:18will give you the response directly.

26:21But what about this information is not

26:23available that time. It will go to the

26:25knowledge base. It will go to the

26:27knowledge base. Okay, it will do

26:28something called semantic search,

26:30similarity search. This will get the

26:32relevant uh result about the questions

26:36user is asking. Then this particular

26:39relevant answer again your large

26:42language model will take it will try to

26:44analyze it will try to um it will try to

26:47clean up it will try to rearrange the uh

26:50response then it will try to send it to

26:52the

26:54user again. Okay that's how the entire R

26:57system works.

26:59Okay system works. So basically the

27:02major component we have added this

27:03knowledge base and adding data in the

27:06knowledge base. It is super easy because

27:08only you just need to uh fetch the

27:11latest informations and add in the

27:13knowledge base and uh your LM is already

27:16connected to the knowledge base. So

27:17anytime if you're asking any kinds of

27:19question it will uh bring that

27:21particular latest informations and uh it

27:23will do the refining operation then it

27:25will pass to the human. Okay. So this

27:27will work like that. Okay. And this was

27:31the like uh very famous technique uh

27:34that time even nowadays also we use the

27:37same technique we we create the rag

27:39application and this actually helps us

27:42uh from this finetuning operation

27:44because here we are not doing the

27:46finetuning okay on our LLM only we're

27:49just working on the knowledge base we

27:50are adding the data in our vector

27:52database this is the things right but

27:55there are some problem with this vector

27:57database or this RG system what is the

27:59problem. Whenever I'm talking about the

28:02real time data, realtime data means the

28:03data is continuously changing. Let's say

28:05if I'm talking about weather

28:06informations, if I'm talking about

28:08temperature, if I'm talking about uh the

28:11latest news, okay, it is continuously

28:13changing. That time it is not possible

28:16for me to sit down whole day and take

28:20all of the latest informations and like

28:22add in my knowledge base. Okay, that

28:24that kinds of things we can't ever do

28:26that. So that that is why this rack

28:30system fails. Let's see if we're asking

28:32questions to the rack system. Let's say

28:34tell me about latest news. Okay, right

28:37now in the morning. So definitely this

28:39information is not available in the

28:40knowledge base. Okay, let's say morning

28:42news you have added but what about the

28:45afternoon news? What about after 1 hour

28:47news? Okay, so these kinds of things you

28:49don't have. Okay, so that time your

28:53application won't be able to give you

28:54the response. So what you have to do

28:56that time you have to

28:59uh you have to think about a different

29:01approach. So that's why researcher

29:03thought why not we can create a agent.

29:06Okay why not we can create a agent. So

29:08that agent will be connected with some

29:11tool. Okay tool means we can use

29:13different different tool here. Uh let's

29:15say uh we can use any kinds of search

29:17tool. We can use any kinds of uh storage

29:20tool. We can use any kinds of calendar

29:22tool, Google drive tool. whatever we can

29:24use but there should be some kinds of

29:26tool. So with the help of that

29:28particular tool my AI agents will try to

29:30fetch the informations and it will give

29:33to the user. Okay. So what they

29:34introduce that time they introduce a

29:38agent system. Let's say this is your

29:41agent.

29:43Okay. Agent uh internally it is using a

29:46large language model only. Okay.

29:47Whenever user is giving any kinds of

29:49input it is connected with some kinds of

29:51tool. Okay. So let's say if I'm asking

29:54for uh any latest informations that time

29:56it is connected with a search tool okay

29:59internet search tool. So mostly this

30:01will search on the Google and Google is

30:03continuously updating okay with latest

30:05informations. So if you're asking any

30:07realtime question first of all what it

30:09will do it will um use this search tool.

30:12It will search over the internet it will

30:14get the informations okay latest

30:16informations and your agent LLM is

30:18trying to refining that and it is giving

30:20you the response again. Okay. And why

30:24I'm calling this particular system as a

30:25agent? Because your application is smart

30:28enough to understand what it needs to

30:31call this call this tool where when it

30:34doesn't need to call this tool. Okay.

30:35This kinds of uh reasoning capacity your

30:38application will be having. Okay. That's

30:40why we call it as a agentic agentic

30:42system. Okay. Here we are not deciding

30:45when to call this particular tool. You

30:47just give the prompt okay to the

30:49application. applicant uh application

30:51will decide whether I has I have to call

30:54this tool to get uh uh give the response

30:57or I have this information with me so I

31:00can give you the response okay so this

31:02kinds of capacity it was having so this

31:05was the first agent they have introduced

31:07with some realtime tool so if I uh take

31:10you to the chart GPT so let me give you

31:13the example so I'll open the chart GPT

31:17and uh here let's say

31:21I'm asking a question. Let's say I'm

31:23asking tell me

31:26about

31:28okay Python.

31:31Now see what will happen.

31:34Uh this is directly giving you the

31:37answer. Okay. It is not referring any

31:39kinds of tool search tools. It is not

31:41searching on the internet. Okay. Instead

31:43of that what it is doing? It is giving

31:45you the direct answer. Okay. because

31:48this information is already available in

31:50the knowledge bed itself. Okay,

31:52knowledge uh knowledge uh LLM knowledge

31:55itself. Okay, because it is already uh

31:58having uh before the knowledge cutoff.

32:01Get it? But whenever I'm searching for

32:04any other question, let's say I'm

32:05telling tell me

32:08the

32:10latest

32:14news

32:19News of

32:21India election.

32:26Now if I search that now see it is

32:29searching for web. Okay it is searching

32:31for web. It is using a internal search

32:34tool and with the help of that it is

32:36searching over the internet and it is

32:39referring some trusted uh let's say

32:42sources like Alajira ABC news. Okay,

32:46that's how it is searching on different

32:48different website. Okay, now if I open

32:50this website, you can see that this is a

32:52website. This is another website. Okay,

32:54and this website has already this kinds

32:56of latest news. It is bringing that

32:59particular informations. It is passing

33:01it to the LLM. LM is trying to refining

33:04LM is trying to summarizing all of these

33:07let's say uh all of this content of

33:10these kinds of sources and this is

33:13refining and giving you the

33:15answer okay refined version of answer

33:18okay so this is called actually um agent

33:22system okay it is utilizing some kinds

33:25of uh tools in the back end and this

33:28application is automatically deciding

33:30when it needs to call that tool tool

33:33when it doesn't need to call that tool.

33:36Okay, not only that, this is a simple

33:38example I have shown if you have already

33:40used uh like uh anti-gravity. Let's say

33:44if I open up my anti-gravity.

33:47So this is my anti-gravity. So here I

33:49can uh give the prompt to the agent. So

33:53let's say here I am telling

33:56um create

33:59a

34:01car racing game using Python.

34:11Okay, Python. Now here you can um select

34:14different different model because

34:16internally I told you agent uses a large

34:18language model. Okay, because this is

34:20the brain. Okay, it is having the

34:22reasoning power and it decides actually

34:25when to use the tool when uh it doesn't

34:27need to use the tool. Okay, so here you

34:30can select different different model. So

34:31anticip supports these are the model you

34:33can select any of them. Now if you give

34:36this prompt you will see that

34:37automatically first of all it will try

34:40to make the plan. Okay, what to do? Now

34:42see it is telling generating. Let's

34:44wait. Now see it is thinking. Okay, it

34:47is thinking. Now it is trying to making

34:50the entire plan for you. Okay. How it is

34:53going to uh create that particular uh

34:56racing game with the help of Python.

34:58What are the resources it need? What are

34:59the tools it needs? It will try to make

35:02the entire plan. See this is the plan.

35:05You can see this is the plan. Okay.

35:06Proposed plan. Now what it will do in

35:09the plan? First of all, it will do the

35:11initialization. Set up the pygram

35:13display front and clock. Then player

35:16card, obstacle, uh collision stone

35:18detection, score system, give over

35:22screen. Okay. Then what are the

35:24requirement? It needs verification plan.

35:26So this is the agent plan guys. That's

35:28how one agent works. First of all, it

35:30has to make a plan and based on the

35:32plan, it will start working on that.

35:36Okay. Now I told you in the definition

35:38itself uh it will seek for help when it

35:43necessary. That means little bit of

35:45human interaction is also needed. Now

35:47this plan is proposed to me. Now I can

35:50review the plan. Okay. I can make some

35:52changes. Okay. So let's say if you want

35:55to change anything. Let's say you don't

35:57need this particular step. You can

35:58change anything. Okay. You can change

36:00anything. You can edit anything. Okay.

36:02Then you can review it. You can like

36:05tell okay this plan is completely fine

36:07for me. You can continue. Now let's say

36:08if I do uh

36:12uh the plan

36:16is fine.

36:18Go ahead.

36:21Okay.

36:22Now if I give the prompt

36:25I think prompt uh you can't see because

36:27this is uh just uh beside my image but I

36:32think you can see okay uh the prompt I

36:34have given. Now see now it has started

36:37working on the plan okay one by one it

36:40will work on all of the plan okay and it

36:43will try to implement the entire game

36:45for you okay so this is called AI agents

36:49nowadays so AI agents is like uh this is

36:53not uh I mean um I mean uh restricted to

36:58the tools only okay now it can automate

37:01the workflow this is called automation

37:03right here I'm not writing the code. See

37:05my agent is writing all of the code and

37:08it is asking for the approved. Okay, if

37:10I show you, if I let's say show you, so

37:14here you can see it is telling do you

37:16want to run this pip install command. So

37:19it is asking for human interaction. Now

37:20if I give the human interaction if I

37:22give if I tell yes do it. If I tell okay

37:26I accept the code now the rest of the

37:29task it will automatically do that for

37:30me. Okay. So this is called AI agents.

37:33Now I think you have understood this

37:35particular definition. Now let me show

37:37you the definition once more time.

37:40So this is the definition guys. Okay. So

37:42here you can see agentic is a type of AI

37:45that can take up a task or goal from a

37:47user. So the here the task and goal I

37:50have given just create a car racing game

37:52with the help of Python. So then what it

37:54will do it will work towards completing

37:56uh this particular task is own with

37:58minimal human guidance. First of all it

38:00will try to plan. Okay. Then it will

38:02take action, adapt the changes. Okay,

38:04let's say whenever it requires any kinds

38:06of changes, it will automatically do

38:07that and seek help when it necessary.

38:09That means it will uh ask for my help.

38:12Okay, if I want to change anything uh so

38:15it will ask for that particular help for

38:17me, it will ask for ask uh for my

38:20feedback. Okay, if I give the feedback,

38:22it will start working on that. Okay. So

38:24I think guys you have understood uh the

38:27entire uh evaluation of this uh agentic

38:31AI how this agentic AI came okay right

38:34now in the market. Now in the next video

38:36guys what I'm going to do I'm going to

38:39uh discuss this agentic AI in detail.

38:42Okay the application working mechanism.

38:46Okay, I'm going to show you one example

38:49like how uh one aentk application works.

38:52Whenever we give any kinds of uh

38:54command, okay, we give any kinds of

38:56prompt. I think you have seen although

38:57in anti-gravity we given a prompt and it

38:59creates the plan. After creating the

39:01plan, what it will do, okay, each and

39:02everything I'm going to give you. I'm

39:04going to uh tell you the characteristic

39:07of this agent. What are the

39:08characteristic it follows? What are the

39:10component it is having? Okay. So with a

39:12good example, we'll try to understand

39:14the entire concept in the next video. So

39:16yeah, this was uh uh this was only the

39:19understanding uh like about this agenti

39:23evaluation like how this aenti came in

39:25the market and whatever traditional

39:27application we used to create in the

39:29geni. Uh nowadays people are uh actually

39:32um uh people are moving to the agentic

39:35protocol. People are moving moving to

39:36the workflow automation instead of

39:38creating the simple uh actually take

39:40generation based application because

39:42right now uh everything can be automated

39:45all the workflow can be automated. Okay.

39:47Uh instead of working on manually uh we

39:50can create a agents and that that agents

39:53will try to complete that particular

39:55task for me. That's how you can also

39:57scale up your business. You can uh you

40:00can actually uh uh create some agents

40:03for your business. So it will run

40:05automatically. It's a customer support

40:07agents you can create okay automatically

40:10uh email center agents you can create.

40:12So that's how you can minimize the uh

40:15employee in your company and you can uh

40:17save your budgets okay but let's say if

40:19you don't have this kinds of agent

40:21system that time what you have to do you

40:23have to hire someone to do that

40:24particular task. Okay, that's why

40:26companies are uh adopting this AI agents

40:29in their uh application development in

40:32their workflow automations. Okay,

40:34they're replacing some low-level

40:36employee uh which uh they feel like okay

40:39I don't need this kinds of employee and

40:40I can do this kinds of work uh automated

40:43way. Okay, people are uh thinking in

40:46that way. Okay, you have to also be

40:48smarter. Now people ask like uh whether

40:51we'll have the job or not. Okay,

40:53definitely you will have this job but

40:56you have to learn these kinds of

40:57technology. If you know these kinds of

41:00technology then tell me who will replace

41:01you. But if you don't know this

41:03technology let's say still you do the

41:05Excel uh uh let's say uh data collection

41:09autom uh data collection let's say uh

41:12strategy. Now tell me I can easily

41:14create a agents and I can do the Excel

41:16data collection.

41:18Okay. I can um easily handle the

41:21customer automation. I don't need

41:23someone to handle my customer. Let's say

41:25whatever customer uh are coming to my

Agentic AI: Core Characteristics & Components

41:28website. Okay, I don't need to like uh

41:30hire someone to sit and reply for that.

41:33So what I will do, I'll just create a

41:34agents. I'll give all of the

41:35informations about my website, all of my

41:38services. My agents will take care

41:40everything. Okay, this is the things uh

41:42nowadays people are moving. Okay, so

41:44yeah, trust me guys, this uh particular

41:46skill is having high demand in the

41:48market. So if you can master this one

41:50definitely you can um you can get lots

41:53of opportunity. Okay and I will try to

41:56complete this agentic in such a way so

41:59that uh after completing it you can

42:01create any kinds of agentic

42:03applications. So in this video I'm going

42:06to discuss about the detailed discussion

42:09about agentic AI. How uh one AI agent

42:12works how one agentic AI application

42:15works. we'll try to understand uh each

42:18and everything with a good example.

42:20Apart from that, I'm going to also

42:22discuss about the key characteristics

42:24and key component of agenti system. So

42:27this is going to be one amazing

42:29discussion guys. Make sure you watch uh

42:32till the end and if you have any kinds

42:34of doubt feel free to comments in the

42:36comment section. So instead of talking

42:39too much guys let's start with our

42:41discussion.

42:42So guys on my screen I think you have

42:44seen the definition of agentic AI. So

42:47this definition is already familiar with

42:49you. Uh in my previous video I have

42:51already given you the walk through. Let

42:53me uh again give you the walkthrough of

42:56the definition. As you can see, agentic

42:59AI is a type of AI that can take up a

43:02task or goal from a user and then work

43:06towards completing it on its own with

43:10minimal human guidance. It plans, takes

43:13action, adapt to changes

43:17and seeks helps when uh necessary. So in

43:21my previous uh video guys, I have given

43:24you the demo of a AI agents application.

43:26And I think I showed you the

43:28anti-gravity example. So there what

43:30happens? Let's say whenever I used to

43:32give a prompt. Uh there I given a prompt

43:34like just uh create a game for me, color

43:37racing game for me with the help of

43:38Python. So what it was doing? It was

43:41creating a complete plan. Okay, I think

43:43you remember it was creating a complete

43:45plan like what to do, what are the

43:47environment it should use, what are the

43:48package it should use. Okay, then uh

43:51what should be the color, what should be

43:53the uh let's say involvement. So it each

43:56and everything it was uh like making the

43:59plan. Okay. After making the plan guys

44:02what uh it started it was looking for my

44:05confirmation whether if everything is

44:07fine or not. So it was looking for a

44:10minimal human interaction. Okay minimal

44:12human guidance. uh so whenever I

44:14approved everything it started uh taking

44:17the actions that means one by one all of

44:19the plan it was starting executing right

44:22and it was uh creating that particular

44:24games for me okay so that's why uh this

44:28definition is uh I think pretty clear

44:30like how one agentic system works but if

44:33I'm talking about a simple chatbot okay

44:35uh uh so in simple chatbot what happens

44:38you just try to do some question answer

44:40okay it will give you the answer with

44:42respect to that But it doesn't have any

44:44kinds of let's say tool integration. It

44:46doesn't have any kinds of let's say

44:49reasoning capacity. So that it can

44:52automatically think like okay now I have

44:54to use the tool and now I don't have to

44:57use the tool. Okay but in aenti

44:59application it has the cap capabilities

45:04for selecting uh any kinds of tools it's

45:07required. Okay. Let's say you are uh you

45:10are uh doing some automatic coding or

45:12let's say you are creating a game right

45:14that time what kinds of tools it is

45:15required it will automatically call that

45:17tool and it will start creating that

45:19particular application for you. So let

45:22me give you one example guys uh how this

45:24agentic system works.

45:27So as you can see guys uh this is the

45:29example I have taken. So let's say uh

45:32this is our agentic uh agentic system.

45:34Okay, this is a aentic AI application.

45:37So let's say DSP with BPI uh wants to

45:41hire some backend engineer or let's say

45:44some other kinds of engineer. So what I

45:46have done I have created this agent

45:48system okay for my platform. Now uh

45:52let's say if I'm not using this kinds of

45:54platform so what I have to do maybe I

45:56have to hire someone okay so he will try

45:59to or she will try to prepare everything

46:03okay for this particular job role that

46:05means the job description then once job

46:07description is ready uh he or she will

46:10be posting over different different job

46:12platform then uh they will continuously

46:15monitoring that how many applications

46:17are coming once uh application are

46:20getting submitted Again they will try to

46:22review that if application is coming

46:24very less again they will try to update

46:26that particular job description with a

46:28different job role again try to upload

46:30that okay that's how they will be

46:33continuously monitoring and once

46:34application got submitted we'll try to

46:36review that and once reviewed everything

46:38is fine okay let's say we got some

46:40amazing candidate we'll start uhuling

46:43the interview we'll take the interview

46:44after uh taking the interview what I

46:46have to do I have to uh I have to

46:50actually

46:51prepare a offer letter for him. Then

46:54we'll be sending the offer letter and

46:56once offer letter is approved then we'll

46:58try to u u do the onboarding operation.

47:01So this is a like very long and

47:03time-taking process and here I have to

47:05definitely uh pay for that particular

47:08work right uh let's say the person I'm

47:10hiring for this one so definitely I have

47:12to pay for uh that right but let's say I

47:14don't want to pay because nowadays

47:16people are using agenti system so what

47:18I'm going to do let's say I have created

47:20this agent for me so what this agent

47:23does so this agent is already connected

47:25with my platform DS with BP so it is

47:27having all the data okay about my uh

47:30about my let's say platform and I have

47:33already told uh this particular agents

47:36like what kinds of candidate I want what

47:38kinds of job requirement they are having

47:40what is the salary okay each and

47:42everything I have given uh uh okay uh uh

47:44to this particular agent now here what

47:47I'm going to do I'm going to simply give

47:48a prompt I want to hire a backend

47:50engineer and uh they should have two to

47:54four years of experience okay let's say

47:56this is my prompt so first of all I

47:58think you remember what a agent will do,

48:01right? A agent will first of all try to

48:03make a plan. Okay, a agent will try to

48:06make a plan. But how it is going to make

48:08the plan? First of all, the command the

48:11prompt you are giving this command and

48:13prompt would be taken as a goal. So as

48:15you can see uh my agent goal is hire a

48:18remote backend engineer. Okay. Uh uh

48:21their experience should be two to four

48:22years of experience and this is the plan

48:25actually it has automatically created.

48:27Now just try to see the plan. Okay. The

48:29way actually a manual human will do

48:32that. It has done the same thing. Okay,

48:34but with a revised version. Now you can

48:37see it is giving me a plan. First of

48:40all, it will try to make a draft job

48:42description and post on best platform.

48:45Okay, let's say LinkedIn it can post.

48:48No, it can post. Okay, then some other

48:53job uh platforms are also available.

48:55Okay. So there it will try to post that

48:57particular job description. So once

49:00posted it will continuously monitor the

49:02pipeline. Okay. Monitor the pipeline

49:04means let's say I have posted a job

49:06description. It it uh it doesn't mean

49:08that I will just try to disappear right

49:11automatically application will come.

49:13It's it's not like that. You have to

49:14continuously monitor that particular

49:16applica job description like how many

49:19applications are coming uh what are the

49:21candidates are applying for? Is there

49:23any issue or not? Right? we have to

49:25continuously monitor that particular

49:26pipeline. So what we are going to do

49:28guys, we'll be continuously monitoring

49:32that pipeline. So agent is also telling

49:34will monitor the pipeline and adjust

49:36strategy if needed. Okay, so it will

49:39automatically adjust. Okay, this

49:41particular strategy if needed. Let's say

49:43you are getting very less application.

49:45Let's say your expectation is let's say

49:4850 application but you are receiving

49:50four to five application that time

49:51definitely this is not uh meets your

49:54expectation right definitely there

49:56should be some problem with the job

49:57description that's why candidate are not

49:59preferring that uh uh preferring your

50:01job description so what agent will do

50:04maybe agent will try to change the job

50:06description let's say instead of backend

50:08engineer maybe uh it will tell like

50:10fully stack engineer or let's say fully

50:13stack AI engineer okay or let's say web

50:15developer. These kinds of uh job ro

50:18again it will try to set and again it

50:20will prepare the job description. Again

50:21it will post on the platform. Okay. Then

50:24again it will continuously monitor that

50:26particular pipeline. Then let's say now

50:29this particular pipeline is working

50:31fine. Uh so people are applying for that

50:34particular job role. We are getting lots

50:35of candidate. So from the all of the

50:37candidate guys we'll try to filter out

50:39like what would be the best fit for this

50:42job. for this particular job role we'll

50:44try to select that particular candidate.

50:46So agent will try to select that

50:47candidate and maybe let's say it will

50:49take two to three candidate and it will

50:51schedule interviews for them. Right? So

50:53once interviews is scheduled then uh it

50:56will uh we'll be taking the interview

50:59then after that uh let's say we selected

51:02a candidate agent will try to draft the

51:06offer letter. So offer letter would be

51:08created and it will be sending to the

51:10candidate. Once candidate is approved

51:12then uh it will start the onboarding

51:15process. Okay. So this is the entire

51:17plan it has proposed. Okay. It has the

51:19entire plan it is proposed. Okay. Now

51:22after preparing this particular plan I

51:24think you remember it will first of all

51:28okay it will first of all ask me should

51:31I continue with that? So definitely you

51:33have to give a permission. Yes continue.

51:35Okay. Then what it will do? It will

51:37first of all see what was the first

51:39plan. First one is drafting the job job

51:42description. Okay. So it will tell now I

51:44will first start with the drafting the

51:46job description taking help from the

51:48company documents like let's say I have

51:50already given my platform access okay DS

51:53with buppy platform access. So it is

51:55having all the documents all the data

51:57okay what are the things I am having the

51:59requirement it will try to take all of

52:00the data and it will try to prepare a

52:02job description for that and now it is

52:05telling do you want me to make some

52:06changes I'll try to review the entire

52:08let's say job description if completely

52:11fine with me so I'll just try to tell no

52:13this is absolutely fine you can continue

52:15with that now let's say my agent has

52:17prepared one job description for the

52:19backend engineer let's say we are

52:20looking for a remote backend engineer

52:22with two to four years of experience in

52:24backend development ment blah blah blah.

52:26Okay. So once this particular job

52:28description is ready, now the second

52:31plant was posting the job description in

52:33a different platform. Okay. Now it will

52:35tell all right shall I go ahead and post

52:37this job description on the following

52:39platforms like LinkedIn, no etc. Uh so I

52:43will try to review again and again I'll

52:44tell the yes you can do that. Then what

52:46it will do? It will try to post that

52:48particular job description.

52:51uh uh then uh it will tell I will

52:53continuously monitor the application and

52:54keep you posted and for uh posting this

52:57particular job description on a

52:58different platform we have to connect

53:00with the API of the platform okay so

53:03this particular API we can call it as a

53:05tool okay so LinkedIn having a tool no

53:09is having a tool okay that's how there

53:11are uh thousands of like u uh I mean job

53:16posting platform they're having the tool

53:19so you just need to give the tool access

53:20to the agent. So agent will try to

53:22decide when to call what kinds of tool.

53:25Okay, maybe you can't see now I think it

53:27is visible. So just right hand side you

53:29can see uh it is calling the API okay as

53:32a tool and it is trying to access over

53:35the LinkedIn and no and it is posting

53:37that particular job description in that

53:39particular platform. Okay so that's how

53:42this kinds of agent works. Now what

53:44should be the next plan? Let me show you

53:47what should be the next plan. Next plan

53:49would be revising the job description.

53:52Okay, let's say it was continuously

53:54monitoring. Okay, it was continuously

53:56monitoring the pipeline. Then it just

53:59received uh you can see the job posting

54:01uh posting has received only two

54:03applications so far much below our

54:05expectation. Let's say my expectation

54:06was 20 application but I'm getting only

54:09two applications. So definitely there

54:11would be some problem with my job

54:13description. So my agent has suggested

54:15me some kinds of feedback. Okay, you can

54:18see it is suggested some action. So it

54:20is telling uh broaden job description to

54:23include fully stack that uh that means

54:26instead of giving the backend engineer

54:28maybe we can make it to fully stack

54:30engineer because fully stack engineer uh

54:33might have demand in the market and

54:35people are looking for this kinds of job

54:38and promote job on LinkedIn or let's say

54:41no okay so what it is trying to say it

54:44is trying to say like why not we can

54:46promote that particular

54:48job on the LinkedIn

54:50by doing the advertisement. Okay, maybe

54:53by doing the advertisement uh it will go

54:55to that particular candidate and he or

54:58she might be interested and they can

54:59apply. Now it is telling shall I proceed

55:01with that? So if I'm fine with this

55:03particular suggestion I'll do yes

55:06please. Okay, you just continue. So this

55:08is called actually

55:10what I think you can see the definition.

55:13Let me show you see adapt to changes.

55:16Okay, adapt to changes and seeks helps

55:18when necessary. Okay, my agent itself is

55:21trying to planning, taking action and it

55:24is doing the changes if it's required

55:26and it is also seeking the helps when it

55:28necessary. It is trying to wait for my

55:30confirmation and it is doing all of the

55:33work for me. Okay. Now what it will do

55:35again it will try to uh change that

55:37particular job description. Revised

55:39version of job description would be

55:40posted and also promotion marketing

55:43would be activated. Then again it will

55:45start monitoring the entire process.

55:47Okay. So here now

55:51um what it will do guys it will try to

55:53continuously monitor. Now let's say uh

55:56here we are getting our expectation

56:00right now let's say u revive job

56:03description posted promotion activated

56:05and it is continuously monitoring. Now

56:07let's say eight application received.

56:09Okay this is uh completely fine. Uh so

56:11what I can do uh I can screen them using

56:14our checklist strong candidate partial

56:18matches and weak matches. Okay that

56:19means it will try to divide all of the

56:21candidate in three category. The first

56:23category would be strong candidate let's

56:25say from eight application two are

56:26strong three are partial matches and

56:29three weak matches. Okay. So what it

56:32will do it will try to only select the

56:34strong candidate. Okay. with respect to

56:36my um let's say u company's requirement.

56:41Now it is telling shall I schedule the

56:42interviews with the top two. So if

56:45everything is goes fine I'll tell okay

56:46you can continue with that. Okay. So

56:49what it will do it will try to uh

56:51schedule the interview. But beforeuling

56:54what it will tell it will first of all

56:57try to check my availability. So for the

56:59availability what I can do maybe I can

57:01give my calendar access to my agent.

57:03Okay, I think you know that we can

57:05integrate any kinds of tool. Okay, any

57:07kinds of applications to the agents

57:09nowadays. You can connect uh connect

57:11your Slack, you can connect your

57:13calendar, you can connect your Google

57:14drive, anything you can give the access

57:17even if you have used already uh clouded

57:20desktop you will see that clouded

57:22desktop you can also provide your

57:23computer access entire computer access

57:26okay and you can control your entire

57:28computer this is also possible right so

57:30what I will do I will [clears throat]

57:31give my calendar access so my agent will

57:34try to check my availability

57:36okay now it is telling let's say sure

57:38let me check your availability for this

57:39week you are free on Friday. Let's say

57:41I'm free on Friday. Uh do you want me to

57:44schedule the interview on Friday? So

57:46here I will tell yes go ahead. Okay. I

57:50don't have any kinds of issue. I'm

57:52completely free on Friday. Now what it

57:54will do? It will try to draft an uh

57:56invitation email for the candidate.

57:59Let's say this is the inter uh email it

58:01has prepared. Hi candidate we would like

58:03to schedule a 45 minutes of interview

58:06for the back end role. Please share your

58:08availability. Okay. So this email would

58:11be sended. Now sixth step it will try to

58:14do the interview process. Okay. So fifth

58:16step it was doing theuling. Then fourth

58:18step it was doing the short listing.

58:19Okay. And third step I think you know it

58:21is doing the re revision of the job

58:23description. Step by step it is running

58:25the plan. Okay. Not randomly. Now once

58:28let's say candidate

58:31accepted the invitation uh of this

58:34interviewing. So what will happen? It

58:36will try to remind me. Uh so it will

58:39tell quick reminder you have two

58:41interviews lined up for Friday. So I'll

58:44tell okay uh thanks for reminding. Now

58:46it will tell I have mailed you a doc

58:49documents containing a list of interview

58:51question asked in previous interview for

58:53the same role. Now it is not only

58:55schedule the interview for me. It is al

58:58also preparing the interview questions

59:00okay for that particular job role and it

59:03is giving to me. Okay. So I'll tell okay

59:06I'll check that now let's say these are

59:08my interview question it has prepared

59:10okay now what I'm going to do I'm going

59:12to take the interview of the candidate

59:15okay manually I'm going to take the

59:17interview for the candidate let's say 30

59:18to 35 minutes I'll take the interview I

59:21will ask all of the question my agent

59:22has suggested and if uh he or she is

59:25completely fine with that questions he

59:27is he is able to give me all of the

59:29answer so definitely I'm going to select

59:31okay one of the candidate now let's say

59:33I told I have uh finalized one

59:36candidate. Can you draft an offer

59:37letter? My agent will tell sure here is

59:39the offer letter. Please review. I will

59:41tell okay yes uh it works. Then offer

59:43letter would be sended and cracking the

59:46acceptance. Okay. That means this let's

59:47this is my offer letter. Okay. My agent

59:49has prepared. It will send to the

59:51candidate. Okay. Let's say we are

59:52pleased to offer you the position of

59:53backend engineer. Please let us know. Um

59:56let uh please let us know if you accept.

59:58Okay. So once the candidate has accepted

1:00:01now what it will do it will do the

1:00:03onboarding process. Okay, after sending

1:00:04the offer later it will do the

1:00:05onboarding process. So here candidate

1:00:07has accepted the offer. I have initiated

1:00:09the onboarding. Welcome email sent. It

1:00:12access requested submitted. Laptop has

1:00:14been pro uh pro uh pro provisioned.

1:00:16Okay. Shall I schedule a introduction

1:00:18meeting with him? I'll tell yes. So the

1:00:20introduction meeting would be scheduled.

1:00:22Okay. So that's how guys a agent system

1:00:24works with a very minimal human

1:00:27interaction here. So you just only give

1:00:30to uh you just only need to give a task.

1:00:33You just only need to give a prompt.

1:00:35Let's say I want that or you have to do

1:00:36that particular work. It will

1:00:38automatically

1:00:40make the plan, take the actions and it

1:00:43will ask for the help when it necessary.

1:00:45Okay. So this is not possible with a

1:00:48simple chatbot or the simple RGB based

1:00:51application whatever we used to create

1:00:53previously. This is only possible in the

1:00:56agentic AI system. Okay. And this is

1:00:57called actually AI agents and every AI

1:01:00agents works in that way. Okay. First of

1:01:02all, it will try to make a plan and step

1:01:04by step all of the plan would be

1:01:06executed. This is called take actions.

1:01:09Then adapt the changes. That means

1:01:11whenever it necessary, it will do the

1:01:12changes.

1:01:14And whenever let's say uh it feels like

1:01:17okay, it needs to ask to the human for

1:01:19the confirmation, it will do that

1:01:20because I can't give full access to my

1:01:22agents to do everything because

1:01:24definitely there should be some uh

1:01:26manual human observation. Okay,

1:01:28otherwise uh some other things might be

1:01:30happen, right? That's why some minimal

1:01:32human interaction is required. If you

1:01:34take any kinds of agenti application

1:01:37whether it's clouded desktop, whether

1:01:39it's uh your anti-gravity

1:01:42cursor AI, it works in that way. Okay, I

1:01:45think I showed you the example of

1:01:47anti-gravity. Uh there I was doing the

1:01:50automatic coding, right? I was

1:01:51implementing a game. So there I gave the

1:01:53prompt. It was taking that particular

1:01:55prompt as a goal. After that, it was

1:01:57creating the plan. Okay? uh in the plan

1:02:00itself step by step all of the things it

1:02:02has suggested me then I approved

1:02:05everything it was creating step by step

1:02:07it was also executing in between if any

1:02:10changes required it was doing that and

1:02:12it is asking for my confirmation and

1:02:14once I confirm it is doing each and

1:02:16everything for me okay so I think now

1:02:19the agentic system is clear what this

1:02:21aentic system is how it works okay now

1:02:25we'll try to understand the key

1:02:26characteristic of a aentki application.

1:02:29So for this let's go to the next uh

1:02:32actually diagram. As you can see these

1:02:35are some key characteristic of AI uh AI

1:02:38agents or agenti applications. So the

1:02:40first characteristic you can see it

1:02:42should be autonomous. So definitely the

1:02:45example I have showed you this is

1:02:46completely autonomous agent. So there I

1:02:48already told I u I need to hire a

1:02:51backend engineer with two to four years

1:02:52of experience. So what it started it was

1:02:55started creating the plan taking the

1:02:58actions okay everything was auto auto

1:03:01automatically doing there right it was

1:03:03posting the job description it was

1:03:05continuously monitoring that it was u

1:03:08asking the help u uh to me if I confirm

1:03:13that it will again reconte the work so

1:03:15it was completely autonomous okay then

1:03:18it should be goal oriented so definitely

1:03:21the task you are giving it should be

1:03:24taking that particular task as a goal.

1:03:26Okay. Without goal, how it will achieve

1:03:28that particular work, right? So in in

1:03:30our life also whenever we get any kinds

1:03:32of work, whenever we get any kinds of

1:03:34task, definitely we have to take it as a

1:03:37goal. Okay. If we take it as a goal,

1:03:39then we can complete that particular

1:03:41goal by planning something, right? We'll

1:03:44do the different different planning.

1:03:46We'll execute those those plan and we'll

1:03:48try to achieve that particular goal.

1:03:49Okay? That's why the next

1:03:50characteristics the planning. So to

1:03:52achieve this goal we have to make the

1:03:54plan. That means for this particular

1:03:56example you saw that it was creating the

1:03:58plan like first of all job description

1:04:00would be created posting in the

1:04:01different platform continuously

1:04:02monitoring after that uh it will change

1:04:05if it is required then uhuling the

1:04:08interview

1:04:10sending the offer letter it was complete

1:04:12plan right then reasoning. So this is

1:04:15the most important characteristic of a

1:04:17AI agent the reasoning and here your LLM

1:04:20comes right because LLM is the only

1:04:23brain your agentic AI system is having

1:04:26with the help of this particular LLM it

1:04:28performs the reasoning operation and it

1:04:30automatically decides uh whether it

1:04:33needs to call any kinds of tool or not

1:04:35because your agents will have connected

1:04:37with different different tools right

1:04:39different different application sources

1:04:41and it will automatically decide when it

1:04:44needs to call what kinds of tool let's

1:04:45say whenever it was posting the job

1:04:48description it needs to call the

1:04:49LinkedIn or no API right this is the

1:04:53tool definitely it will not call the

1:04:55calendar API right so it is

1:04:58automatically thinking in that way this

1:05:01is called reasoning right then

1:05:02adaptability okay adaptability

1:05:06it should have it it it will

1:05:07automatically decide uh when to change

1:05:10something okay what should be the

1:05:12suggestion for that Okay. Then the

1:05:15context awareness. Context awareness

1:05:16means it should remember the previous

1:05:19context. Let's say I given um let's say

1:05:23I want to hire a backend engineer. Let's

1:05:25say today I have given this particular

1:05:26prompt and for some reason uh I just I I

1:05:30went out. Okay. Let's say for 2 days I

1:05:33went out. Then again I came to my agents

1:05:36and I told just tell me the progress

1:05:37about the back end engineer. Now it is

1:05:39if it doesn't have the context awareness

1:05:42that means the memory integration that

1:05:44time your agent will tell what kinds of

1:05:46back end engineering you are uh telling

1:05:49me right uh what is the task you are

1:05:51telling me I don't know about that but

1:05:52if it is having the context awareness

1:05:54that means the memory it can tell okay

1:05:57so this is the progress I have already

1:05:58posted the job description continuously

1:06:01monitoring and let's say 8 to nine

1:06:03application I got so far so this is

1:06:05called context awareness and every aentk

1:06:07application should have this particular

1:06:09context awareness. Okay. So guys, now

1:06:12let's try to see the detailed discussion

1:06:14of each and uh every characteristic. Uh

1:06:16so here I have already listed down each

1:06:19and everything. So first of all, let's

1:06:21try to understand this autonomy. Okay,

1:06:24this autonomy means the autonomous the

1:06:26first characteristic. So as you can see

1:06:28autonomy refers uh to the AI systems

1:06:32ability to make decisions and take

1:06:35actions on its own to achieve a given

1:06:38goal without needing step-by-step human

1:06:41interaction. That means if you have

1:06:44already seen the example of our AI

1:06:45recruiter so there it was kinds of

1:06:49autonomous okay it was uh it was

1:06:52autonomous agent and it it doesn't need

1:06:55any kinds of stepby-step human

1:06:57interaction so there I was not giving

1:06:59step-by-step human interaction I was not

1:07:01giving step-by-step prompt what to do

1:07:03right so the things is that I have only

1:07:05given my uh requirement my goal so it

1:07:10took that particular prompt as a goal

1:07:12It was creating the plan. It was

1:07:14executing step by step. That's why you

1:07:17can see it is uh proactive. That means

1:07:20continuously it is working on that

1:07:22particular goal. Then autonomy in

1:07:24multiple facts like execution. It was

1:07:26executing the plan step by step. It was

1:07:29doing the decision making. Okay. Uh by

1:07:31the decision itself it was uh thinking

1:07:34like what to do when it needs to post it

1:07:36on different different platform when it

1:07:38needs to make the changes. Then tool

1:07:40uses. Okay. Let's say when to use what

1:07:42kinds of tool let's say whenever I want

1:07:44to post the job description what kinds

1:07:46of tool I need to call definitely to

1:07:48call the LinkedIn

1:07:51and no

1:07:53right so this kinds of ability my

1:07:56autonomous agents will be having that's

1:07:57why the first characteristic the

1:07:59autonomy we can also call it as a

1:08:01autonomous right now the uh thing is

1:08:05that autonomy can be controlled

1:08:07permission scopes that means you can

1:08:09limit

1:08:10what uh what tools or actions the agents

1:08:14can perform independent uh independently

1:08:16can screen candidate but needs approval

1:08:19before rejecting anyone okay that means

1:08:21it's not like that I am given the full

1:08:23autonomous permission to my agents so

1:08:26definitely you can set the limit you can

1:08:28set the permission so let's say once uh

1:08:30one interviewer

1:08:33uh having the screening round uh so

1:08:35before approval or rejecting so

1:08:37definitely I I have to see that manually

1:08:41then I will approve that then my agents

1:08:42will do that for me. Then human in loop

1:08:45we can also call it as a HITL. So insert

1:08:48checkpoints where human input is

1:08:51required before continuing. That means

1:08:54in this case let's say my agent was

1:08:55telling can I post this particular job

1:08:57description or not. Okay, this is called

1:08:59human in loop and every agents are

1:09:02having this kinds of functionality.

1:09:03Okay, going forward we'll be

1:09:05implementing the agents right with

1:09:07different different uh framework. So

1:09:10there also you are having this kinds of

1:09:12functionality with the help of that you

1:09:13can um you can actually create this

1:09:16kinds of system whenever uh your agent

1:09:18is uh needed your human approval it will

1:09:21ask for that then you can continue and

1:09:23it will start working on that. Then

1:09:25override controls allow users to stop,

1:09:28pause or change the agents behavior at

1:09:31any time. Pause screening command to

1:09:34halt

1:09:35resume process. Okay. So what happens?

1:09:38Let's say in my agents, okay, whatever

1:09:41I'm doing, it's completely fine. But it

1:09:43should have

1:09:46uh it should have my control. Okay, my

1:09:49control means let's say I can stop this

1:09:51particular agents anytime. I can pause

1:09:53anytime. Let's say my um screening route

1:09:57is going on in between if I feel like

1:09:58okay I have to stop the screening route

1:10:00I if I give the command it should stop

1:10:02that okay it should stop the process

1:10:05that time okay so this is called

1:10:07actually override controls then

1:10:09guardrails and policies so definitely

1:10:12your agent should have guardrails and

1:10:13policies nowadays you will see that

1:10:16agent integrates different different

1:10:18guardrails okay and for this one

1:10:20framework came in the market called

1:10:21guardrails AI with the help On top of

1:10:23that you can define hard rules or

1:10:25ethical boundaries to the agent must

1:10:27follow. That means let's say if I give

1:10:29you one example it will tell never

1:10:31schedule

1:10:33interview on weekends. Let's say

1:10:35weekends I'm completely occupied. I'm

1:10:37not available. So I can give the

1:10:39restriction. I can give the rules. Never

1:10:42schedule interviews on weekends. So my

1:10:44agent will never do that. And if you see

1:10:47nowadays all the agenti application is

1:10:49having this kinds of guidels and

1:10:50policies. Let's say if you're asking any

1:10:52kinds of violating content, if you're

1:10:55asking any kinds of sexual content, if

1:10:56you're asking any kinds of let's say

1:10:59adult content, definitely it will not

1:11:00give you the response with respect to

1:11:02that because it has a guardrails and

1:11:04policies restriction in the agent

1:11:06itself. Okay. And for this we are having

1:11:09some library, we having some framework

1:11:12definitely will also see in our playlist

1:11:14itself. Okay. Then uh autonomy can be

1:11:18dangerous. The application autonomously

1:11:22send uh sends out job offers with

1:11:24incorrect salaries or terms. So if you

1:11:27completely make it automated, so what

1:11:28we'll do uh there is a possibility your

1:11:31agents will send a job uh job letter

1:11:34with incorrect salaries. Let's say your

1:11:36budget is one lakh but your agent is

1:11:38sending the expected salary 10 lakhs,

1:11:41right? So there definitely this is this

1:11:43is going to be an issue. So that time

1:11:45the applications shortlisted candidate

1:11:47by age or nationality violating anti-

1:11:51discrimination laws. Okay, this is

1:11:52another uh terms then the application uh

1:11:55spending extra

1:11:57on LinkedIn ads. Let's say sometimes

1:11:59what will happen if it is running

1:12:00autonomously although you are getting a

1:12:03good uh let's say application uh from

1:12:07your job description but still your

1:12:08agent will feel like okay I need more

1:12:10and it is spending more money on

1:12:12LinkedIn ads. Okay. So these kinds of

1:12:14things definitely you have to uh

1:12:16overcome. Okay. By uh actually doing the

1:12:20human in loop hit okay functionality

1:12:24inside your agent. Now the next uh

1:12:27things we are having which is uh this

1:12:31goal oriented.

1:12:33Okay goal oriented. Now you can see what

1:12:35is goal oriented. Being a goal oriented

1:12:37means that the AI system operates with a

1:12:40persistent objective in mind and

1:12:43continuously directs its actions to

1:12:46achieve that object rather than just

1:12:48responding to the isolated prompts.

1:12:51Okay, that means if you read here you'll

1:12:54see that

1:12:56goal acts as a com compass for a

1:12:58autonomy. Okay. So to make your agent

1:13:03autonomous definitely there should be a

1:13:05goal. In this case our goal was hire a

1:13:07backend engineer. Okay. This was the

1:13:09goal and will act as a compass for the

1:13:12autonomy. That means your autonomous

1:13:14agent should follow this particular goal

1:13:16and to achieve this goal it needs to

1:13:18execute different different plan. Okay.

1:13:20Now goal can be goal can comes with

1:13:22constraint. Definitely you can set some

1:13:24constraint. In this case, let's say my

1:13:26constraint was four to two to four years

1:13:28of experience candidate I only want.

1:13:30Okay. Then goals are stored in the core

1:13:32memory. That means goal should be stored

1:13:34in the core memory. That means in the

1:13:36context awareness memory otherwise your

1:13:39agent will forget that. What to do?

1:13:40Right? Let's say if I give you a basic

1:13:44actually template the common template

1:13:46for all the agents it stores the data in

1:13:48the memory. So this is a JSON format.

1:13:50Let's say you can store any kinds of

1:13:53database here. Uh internally agent uses

1:13:56a specific database or storage services

1:13:59and it stores this kinds of meta data so

1:14:02that it can remember. So in this case

1:14:04let's say the goal was hire a backend

1:14:06engineer. The constraint was 2 to four

1:14:09years of experience. Remote is true.

1:14:11Stack Python Django cloud. Okay. These

1:14:14are the skills I'm looking for. Start is

1:14:16active. My agent is always active. when

1:14:19I posted the job description. This

1:14:22particular date would be also saved.

1:14:23Progress job uh description is created.

1:14:26True. If not created, it should be

1:14:28false. Okay. Posted on different

1:14:31platform like LinkedIn and angel list or

1:14:34no. Yeah, it has posted. And this is the

1:14:36list. How many application received so

1:14:39far? Only eight applications. Interview

1:14:42schedules with two applications. Okay.

1:14:44So this is the storing uh I mean

1:14:47strategy for every agents. So let's say

1:14:50each and every framework is having

1:14:51different way they stores the data but

1:14:54this is the common if I tell uh one

1:14:57common let's say structure. So this is

1:14:59the common structure that's how the goal

1:15:01should be stored in the core memory.

1:15:03Okay. All the uh running instance

1:15:06metadata would be saved in the core

1:15:07memory. That's how it usually saves and

1:15:10it will take that particular data from

1:15:12the memory itself to continue the plan

1:15:15to continue the goal. Okay, that's how

1:15:17one agent remembers each and everything.

1:15:19Now I think you are getting now goals

1:15:22can be altered as well. Let's say once

1:15:25you have set one goal, you can also

1:15:26change that particular goal to another

1:15:28one. This is also possible here. Okay.

1:15:31Now the next characteristic it is the

1:15:33planning.

1:15:35Okay, planning. So you can see planning

1:15:37is is the agent's ability to break down

1:15:39a highle goal into structured sequence

1:15:42of actions or sub goals and decide the

1:15:45best path to achieve the desired

1:15:47outcome. Okay, that means let's say I

1:15:50have given a prompt I have to hire a

1:15:52backend engineer. Now to achieve this

1:15:54particular goal, what uh this agent has

1:15:57to do? Agent has to create a

1:16:00different different Okay, agent has to

1:16:02create a different different uh plan. I

1:16:05think you saw that what was the plan. So

1:16:07for that particular example, it was uh

1:16:10preparing the job description, posting

1:16:13on different different platform. Okay,

1:16:15then it was uh continuously monitoring

1:16:17that this was the plan. Now whenever it

1:16:20is planning, you'll see that generating

1:16:23multiple candidate plans. It will only

1:16:25not let's say proposed one plan. It

1:16:27might give you multiple plan. Okay,

1:16:29let's say plan A post a job description

1:16:32on LinkedIn, GitHub, jobs or angel list.

1:16:37Okay, plan B is that use internal

1:16:39referrals. Okay, and hiring agencies.

1:16:43So, it has suggested you two plans. Now,

1:16:46it is asking for your feedback. Okay,

1:16:50now based on your choice, you can select

1:16:53which plan you want to go ahead with. So

1:16:56whenever your agent

1:16:59uh agents are working it has the

1:17:01reasoning capacity that means uh it

1:17:03should also minimize my cost right and

1:17:06if it is suggesting me to plan so

1:17:10definitely if I'm taking the plan A so

1:17:12there I will I will let's say spend less

1:17:16less amount because here I directly post

1:17:18on LinkedIn GitHub jobs and handle list

1:17:20okay but if I'm taking the plan B I if

1:17:22I'm taking some hiring agency so

1:17:24definitely I have to take their

1:17:25subscription plan right so there I have

1:17:27to pay more money so get it so that's

1:17:29why it is giving you different different

1:17:32plan okay then evaluate each plan as I

1:17:36told you agents will itself evaluate the

1:17:38plan let's say plan A is perfect or plan

1:17:41B is perfect for this particular work

1:17:43based on that it will give you the

1:17:45suggestion then the efficiency which is

1:17:47faster so if I'm going with plan A or

1:17:49plan B which is faster so definitely

1:17:51plan um uh A is little bit faster

1:17:54because I can directly

1:17:56post the jobs on the platform itself and

1:17:59get the applications. Okay. Then which

1:18:01one is having less cost? Definitely plan

1:18:03A is having less cost. Then risk will it

1:18:07fail if we get no applications? Okay.

1:18:09Then alignment with constraints remote

1:18:11jobs only budget. Okay. So these are my

1:18:15uh steps inside the plan. So based on

1:18:18this particular evaluation steps it will

1:18:21select the plan. Okay. Now third step

1:18:23select the best plan with the help of

1:18:26human in loop. That means it will

1:18:28definitely ask to the human for the best

1:18:29plan which one you would like to go

1:18:31ahead. So which of these option do you

1:18:33prefer a pre-programming policy uh favor

1:18:37low cost channel first? Okay. So

1:18:39definitely whenever I will take any

1:18:41kinds of plan I'll try to check this

1:18:43particular low cost

1:18:45okay uh option in my mind. So yes uh

1:18:48this was the u I mean characteristic

1:18:52which is planning. Now the next

1:18:54characteristic the reasoning. Now let's

1:18:56try to understand this reasoning guys.

1:18:59So what is reasoning? First of all let's

1:19:01try to understand. As you can see

1:19:02reasoning is the uh cognitive process

1:19:05through which an agentic system

1:19:07interprets informations draws conclusion

1:19:10and makes decisions both while planning

1:19:13ahead and while executing the actions in

1:19:15real time. Reasoning uh during planning

1:19:18goals decompositions break down abstract

1:19:21goals into cons uh concrete steps tool

1:19:25selection decide which tool will be

1:19:27needed uh for which step resource uh

1:19:30estimation estimated time dependencies

1:19:33and risk. Okay, as I already told you,

1:19:35whenever a aentic system is working,

1:19:38uh it will be working with respect to

1:19:41the reasoning because behind the

1:19:43reasoning one LLM works, right? And LLM

1:19:45has the u actually intelligence um

1:19:48capacity so that it can understand uh

1:19:51and it can automatically make the

1:19:53decision. It can automatically let's say

1:19:56break down the goals. Okay, it can

1:19:58automatically tell you what kinds of

1:19:59tools should be selected. You can also

1:20:02uh like work on the resources

1:20:04estimations like estimated time,

1:20:05dependencies and risk. Okay. So with the

1:20:08help of this reasoning guys, these

1:20:10agents would be more powerful, more

1:20:13efficient. Why? Because I told you if

1:20:17one agent is one agent doesn't have the

1:20:20reasoning capacity that means this

1:20:22should be the simple chatbot only. Okay,

1:20:24this should be the simple chatbot only.

1:20:26Why a chatbot is different from a AI

1:20:29agent? Okay. Why AI agent is powerful?

1:20:32Because of this reasoning. Okay. Let's

1:20:35say if I'm having a agent, if I'm giving

1:20:37any kinds of input and it is connected

1:20:40with different different tools, right?

1:20:42Some kinds of tools it is connected.

1:20:43Now, whenever I'm giving a input, now

1:20:46this will perform this reasoning

1:20:48operation. It will decide the question

1:20:50human is asking whether I have to

1:20:52directly give the answer. I have to

1:20:54refer the tool for that. Okay. So, this

1:20:56is called actually reasoning. So,

1:20:58reasoning is super important here. Okay.

1:21:01Now here you can see reasoning,

1:21:03duration, execution, decision making,

1:21:05choosing between option uh three

1:21:08candidate matches, schedule uh for two

1:21:10uh two uh best candidate and reject one.

1:21:14So this kinds of decision making is

1:21:15taking your uh agent okay with the help

1:21:18of this reasoning with the help of this

1:21:20LLM. Now, HITL handling

1:21:24knowing when to pause and ask for help.

1:21:27Uh unsure about the salary range. Okay,

1:21:29for an example, let's say with the help

1:21:31of this reasoning, it is automatically

1:21:33decide when it should ask for the help

1:21:36to the human when it needs to ask for

1:21:38the confirmation from the human. Okay,

1:21:40in this case, let's say uh my uh my

1:21:43recruiter agent is asking what should be

1:21:46the salary range just try to tell me.

1:21:48Then error handling, interpreting tools,

1:21:50API failure and re re uh re uh

1:21:54recovering. Okay, let's say sometimes

1:21:56some of the tool might be down right

1:21:58that time uh how this particular agent

1:22:01will handle that particular error. Let's

1:22:03say if my tool to tool A is not working

1:22:06so definitely it will try to move to

1:22:08tool B. Okay. So this kinds of ability

1:22:11this reasoning will be having. Now the

1:22:14next one adaptability. So what is

1:22:16adaptability? You can see adaptability

1:22:18is the agent's ability to modify its

1:22:21plan, strategies or action responses to

1:22:23unexpected conditions all while staying

1:22:27aligned with the goal. Okay. So that

1:22:29means I told you let's say in that

1:22:31particular case I think you remember

1:22:34uh we got very less application right

1:22:36and my agent was automatically give you

1:22:39the suggestion and it was it was telling

1:22:41like I need to change the job

1:22:43description to backend engineering to

1:22:45full stack engineer. So this is called

1:22:47adaptability. Your agent is

1:22:48automatically modifying the plans,

1:22:50modifying the strategy. Then again it is

1:22:52working with respect to that. Okay. You

1:22:54can see failures in uh then external

1:22:57feedbacks and changing the goals.

1:23:00Okay. Now what is the next next uh

1:23:05characteristic is the context awareness.

1:23:07I already told you what is context

1:23:09awareness. Context awareness is the

1:23:10agent's ability to understand, retain

1:23:13and utilize relevant information from uh

1:23:16from the ongoing task, past interaction,

1:23:19user preferences and environmental

1:23:22uh cues to make better decisions through

1:23:24the multiple steps. Okay. And if I'm

1:23:27talking about context awareness, this is

1:23:29nothing but it's a memory. Okay. You can

1:23:31see context awareness is implemented

1:23:34through memory. Here we create two kinds

1:23:36of memory. one is short memory, one is

1:23:38long me long-term memory, short-term

1:23:40memory and long-term memory. So as you

1:23:41can see

1:23:43uh if my uh agent doesn't have the

1:23:47context of my previous let's say uh

1:23:50goals or plan so then how it will

1:23:52progress the current one. So definitely

1:23:55to run the current progress it should

1:23:58have the previous context right. So

1:24:00let's say in this case I have given I

1:24:02want to hire a backend engineer with two

1:24:03to four years of experience. So it

1:24:05should have these kinds of informations

1:24:07in the context memory based on that it

1:24:09will make the decision. Okay, this is

1:24:10what actually it is explaining and what

1:24:13are the tool responses it is getting

1:24:15definitely it will also try to uh store

1:24:18that particular responses to the context

1:24:20memory so that it can give you the

1:24:22better response with respect to that.

1:24:24Now at the end this context awareness

1:24:26implemented through memory. So here we

1:24:28create short-term memory and long-term

1:24:29memory. Short-term memory we create for

1:24:31the current state. Let's say if one

1:24:33current state is running if it is

1:24:34creating some metadata we will be

1:24:36storing in the short-term memory and

1:24:37long-term memory means the whole

1:24:39conversation the whole uh user

1:24:41interaction it is doing it should have

1:24:43the u u present in the long-term memory.

1:24:46Okay. So this is the idea. So yes guys

1:24:48these are some characteristic uh we

1:24:51usually have inside any kinds of AI

1:24:53agents and how you will understand this

1:24:55particular application is a AI agents

1:24:57application or authentic application. If

1:24:59this application is having this kinds of

1:25:01characteristic definitely you can uh

1:25:04think about this is a aenti application.

1:25:06Okay. Definitely in the architecture

1:25:07itself these kinds of character uh

1:25:10characteristic should be mentioned. So

1:25:12guys uh now we'll try to see the

1:25:14components of agenti application what

1:25:17are the component one AI agent is having

1:25:20uh using uh you can see the first

1:25:21component is the brain. Okay whenever

1:25:23I'm talking about the brain so here LLM

1:25:27would be utilized. You can use any kinds

1:25:29of LLM here. So LLM has the reasoning

1:25:32capacity with the help of that it will

1:25:34make the decisions. It will try to do

1:25:37the HITL operation. It will do the uh

1:25:41tool selections. Okay. All the

1:25:42operations be happening with respect to

1:25:43this particular brain. And the second is

1:25:46the orchestrator. So what is

1:25:47orchestrator? To build a entire aenti

1:25:50system, okay, we need some orchestrator.

1:25:54Orchestrator means this is the

1:25:56framework. Okay, framework let's say it

1:25:58will do the connection with the LLM that

1:26:00means brain it will make the connection

1:26:02with tool then whenever it is uh

1:26:05required for the tool calling it will

1:26:07perform the tool calling operation

1:26:08whenever it is required let's say it

1:26:10will uh call the uh h ITL that means

1:26:14human in loop right it will ask for the

1:26:16uh approval from the human so these

1:26:18kinds of things if I want to create a

1:26:20complete aent application I need to use

1:26:22some framework I can't create with the

1:26:25help of simple python or I can't with

1:26:27the help of simple tensorflow right or

1:26:29langen this is not possible so I have to

1:26:31use some end to-end framework for that

1:26:33okay so in the market there are some

1:26:35famous framework like we are having crew

1:26:37AI

1:26:39okay we are having langraph

1:26:44we are having autogen

1:26:47some some no code platform is also

1:26:49available like n okay so a apart from

1:26:52that some other like framework are also

1:26:54available but these are framework

1:26:56actually very uh common and very popular

1:26:59and very powerful in the market nowadays

1:27:01and people use that developer use that

1:27:03to create agenti applications. Okay. So

1:27:05throughout the entire um this uh course

1:27:08guys we'll try to master these are the

1:27:10framework we'll see the entire crew AI

1:27:12framework we'll try to develop a AI

1:27:14agent with help of crew AI okay end to

1:27:16end multi- aent system we'll try to

1:27:17create then lang graph we'll try to

1:27:19explore we'll try to create end to end

1:27:20application with lang graph we'll try to

1:27:22see the autogen we'll try to understand

1:27:24the entire autogen autogen component

1:27:26we'll create the AI agents with autogen

1:27:28we'll try to see some no code platform

1:27:30as well like n we'll see how we can uh

1:27:34create the AI agents without writing any

1:27:36kinds of code by doing some drag and

1:27:38drop operation each and everything we'll

1:27:40be learning. Okay. So that's why

1:27:42orchestrator is also required and this

1:27:43is one other component of a AI agent and

1:27:46orchestrator means I AI agent building

1:27:49framework. Okay. Always remember langen

1:27:52can be also utilized with the help of

1:27:54lang also you can create some of the

1:27:56simple agents but uh later on

1:27:58[clears throat] langen published

1:27:59actually langraph so people are moving

1:28:01to the langraph for building these kinds

1:28:03of AI agents. Okay. Now [clears throat]

1:28:05the next one is the tool. So definitely

1:28:09tool should be available as a component.

1:28:11Here we can utilize any kinds of tool

1:28:13whether it's any kinds of search tool,

1:28:15whether it is any kinds of calendar tool

1:28:18or any kinds of application tool. Okay.

1:28:20If you just open the internet and if you

1:28:22search like agentic AI tools list, okay,

1:28:25you'll see that there are thousands of

1:28:26tool listers available. Okay, whether it

1:28:28is search, whether it is uh any kinds of

1:28:31application with your Google drive, with

1:28:33your calendar. So, let me show you some

1:28:35of the list.

1:28:38So guys, as you can see there is a

1:28:39GitHub called AINE tools catalog and

1:28:42there are some other website as well you

1:28:44will be getting over the internet. So if

1:28:45you open it uh open this up. So this uh

1:28:49this is having all kinds of uh tool uh

1:28:51tools and toolkit as you can see. Uh so

1:28:53we are having archives. So tools to read

1:28:56archive papers. So I think you know if

1:28:58we read any kinds of research paper we

1:29:00go to the archive website. Okay

1:29:02archive.org. So this is also a tool. Uh

1:29:05this tool is available in the framework

1:29:07itself. You can use this tool for

1:29:09reading any kinds of research paper. You

1:29:11can connect your AI aens with the

1:29:12research paper uh actually world. Okay.

1:29:15Then uh by search is there. Bing search

1:29:17is there. B search is there. These are

1:29:19my search tool. Okay. Then code doc

1:29:22search is there. CSV search is there.

1:29:23That's how you can see Google search is

1:29:25there. We are having different different

1:29:27tool. Okay. So this is for the code

1:29:29interpreter. Okay. These are the code

1:29:31interpreter. If you want to interpret

1:29:32any kinds of code, these tools you can

1:29:34use. If you want to do a productivity,

1:29:35these tools you can use. Okay. You can

1:29:37connect with your calendar, email, zoom.

1:29:39Okay. This is for regular automation.

1:29:42Now this is for web browsing. If you

1:29:43want to browse the web, these tool you

1:29:45can use. If you want to connect with the

1:29:46database, these are the database tools

1:29:48are available. If you want to do the

1:29:49file operation, these are the tools are

1:29:51available. Okay. So that's how whatever

1:29:53tool you want everything is available

1:29:56okay in the orchestrator framework in

1:29:57the AI agents you can connect with

1:29:59anyone okay

1:30:02now next we are having the memory

1:30:06memory is another component so I told

1:30:09you context uh awareness is required so

1:30:12here we use something called memory okay

1:30:15so memory should be also integrated and

1:30:17for memory development uh we use

1:30:20orchestrator framework in the

1:30:21orchestrator framework Mark itself we

1:30:22are having different different memory

1:30:23function either you can also use

1:30:25different different database for the

1:30:26memory you can do anything here then the

1:30:29supervisor so this is the

1:30:32hittl that means human in loop okay

1:30:36human in the loop so with the help of

1:30:38the supervisor what it does it try uh it

1:30:41try to interact with the human when any

1:30:44helps is uh required it will try to uh

1:30:46ask for the help it will ask for the

1:30:48human guidance or feedback and it will

1:30:51continue agents. Okay. So these six

1:30:53actually components uh sorry five

1:30:56components are available in any kinds of

1:30:58AI agents and this is the highle

1:31:00actually diagram I have shown you. Some

1:31:02other component might be available as a

1:31:05lowle but this is the main one. Okay. So

1:31:07if you find these are the components are

1:31:09available inside AI agents. uh yeah you

1:31:12can I mean select that particular

1:31:15application as aka application and

1:31:17whenever you are creating you have to um

1:31:20take care these are the component okay

1:31:22inside your application now uh let me

1:31:27show you the component explanation as I

1:31:30already told you the brain wise here

1:31:32what we do we use a large language model

1:31:34and what is the use of large language

1:31:36model the goal interpretation planning

1:31:38reasoning tool selections okay

1:31:40everything is uh everything we do with

1:31:43the help of this particular brain or

1:31:44large language model. The orchestrator

1:31:46orchestrator is a framework

1:31:49uh AI agents implementation framework

1:31:50with the help of uh we can do task

1:31:52sequencing conditional routing, ret

1:31:55logic, looping, iterations and

1:31:57delegations. Okay. Then tools we are

1:31:59having so tools with the help of tools

1:32:01we can uh connect our AI agents with

1:32:03external sources. Okay. uh and to

1:32:05knowledge base as well. That's if you're

1:32:06creating a ragbased agents that time our

1:32:09uh knowledge base should be external

1:32:10sources. Okay, this is this would be

1:32:12perform as a tool that time. Now the

1:32:14next component I told you the memory. So

1:32:16what memory does? So memory actually

1:32:19basically uh stores all of the context

1:32:22of the conversation and uh we create

1:32:25actually two kinds of memory short-term

1:32:27memory and long-term memory and it will

1:32:29uh do the state uh tracking. Okay.

1:32:33um research tracking is required. I

1:32:34already told you I already showed you

1:32:36previously, right? Uh it was uh storing

1:32:38the data in a JSON format. So this is

1:32:40also required. Then the supervisor so

1:32:43approval uh requested for HITL that

1:32:46means human in the loop. Then guardrails

1:32:48uh enforcement then age case uh

1:32:51escalation. Okay. So let's say if you

1:32:53want to block some unsafe or non uh

1:32:57complaint behavior, you can use the

1:32:58guardrails evaluation. I will also show

1:33:00you how to perform the guard's

1:33:02evaluation and uh age uh case uh

1:33:05escalation that means alert human when

1:33:07uncertainity conflict arises. Okay. And

1:33:10you already understood about this uh

1:33:12htil okay human in loop uh human in the

1:33:15loop format. So yes guys these are some

1:33:17components are available of AI agents

Asynchronous Programming for AI Agents

1:33:20and whenever we are developing our own

1:33:22AI agents we have to take care these are

1:33:24the part and every AI agents are having

1:33:26this kinds of component uh nowadays.

1:33:29Okay. So apart from that I think uh uh

1:33:32there is nothing uh inside a if you feel

1:33:34like okay if there is any new things you

1:33:36can just do let me know in the comment

1:33:38section definitely I'll try to cover

1:33:39that as well. Okay but so far my

1:33:42understanding I think these are some uh

1:33:44we have to follow whenever we are

1:33:46creating or whenever we are working on

1:33:48aentki system. So yes guys uh this is

1:33:50all about from this video. Uh I hope you

1:33:53have understood and this was helpful for

1:33:55you. I think I already told you uh in my

1:33:58previous uh video uh like there are uh

1:34:01some components are available especially

1:34:04whenever I'm talking about uh the

1:34:06agentic AI uh one of the component is

1:34:09the orchestrator right orchestrator

1:34:11means there we use some kinds of

1:34:14framework okay with the help of these

1:34:16are the framework we create we implement

1:34:18the AI agents whether it's a single

1:34:20agents whether it's a multi multiAI uh

1:34:23agent system uh we try to create these

1:34:26kinds of things right

1:34:28so there is a concept guys uh you have

1:34:32to understand before I start with this

1:34:34kinds of orchestrator framework the

1:34:36concept name is asynchronous programming

1:34:39okay so why this asynchronous

1:34:41programming is required uh because if

1:34:43you see u going forward we'll be

1:34:46creating the multi- aent system and to

1:34:49create the multi- aent system guys we'll

1:34:51be using this kinds of orchestrator

1:34:53framework and internally This

1:34:55orchestrator framework uses asynchronous

1:34:57programming. Okay, that means it will

1:34:59run your agents in parallel. Let's say

1:35:02you have created uh 20 agents. So what

1:35:06it will do instead of running u agents

1:35:09as a sequentially, it will run all of

1:35:12the agents in parallel so that your

1:35:14execution would be more fast. So this

1:35:16concept I'm going to discuss in detail

1:35:18guys. No need to worry. Uh first of all,

1:35:21let me show you one thing. actually uh I

1:35:23have just figured out

1:35:25let's say if I go to the Google so here

1:35:28if I search like is lang graph uses

1:35:31asynchronous in the back end for multi-

1:35:33aents so I think you know lang graph is

1:35:35one of the orchestrator framework with

1:35:37the help of lang graph we create agentic

1:35:40AI applications right and we'll be also

1:35:43mastering this langraph inside our codes

1:35:45so as you can see the response was yes

1:35:47lang graph is uh designed with first

1:35:50class asynchronous supports in the back

1:35:52end for multi- aent system that means uh

1:35:56it is utilizing the asynchronous

1:35:58programming asynchronous concept in the

1:35:59back end okay now if I just go below

1:36:03let's say I have asked for about the

1:36:05autogen because autogen also will be

1:36:07covering inside our course so as you can

1:36:09see autogen also utilizes asynchronous

1:36:12programming at it core but it is uh

1:36:16architecture fundamentally different

1:36:17from the langraph state uh langraph's

1:36:20state machine approach approach but

1:36:22internally it is uses asynchronous

1:36:24programming concept. Now again I asked

1:36:26like uh what about crew AI? Okay so you

1:36:30can see crewi also supports asynchronous

1:36:32execution but it approaches

1:36:34orchestration differently than langraph

1:36:36and autogen while uh langraph uses uh a

1:36:40state machine and autogen uses a actor

1:36:43model. Crew AI is built around

1:36:46role-based collaboration and

1:36:47processdriven execution model. Okay. But

1:36:51the main fun is that all of the

1:36:53orchestrator framework we are using for

1:36:55developing these kinds of multi- aents

1:36:57application internally it is uses

1:37:00asynchronous okay as synchronous

1:37:02programming. Now before I start with

1:37:05these are the orchestrator framework

1:37:06first of all I want to clarify what is

1:37:08asynchronous programming why it is

1:37:10required how asynchronous works okay

1:37:12what is parallelism what is uh let's say

1:37:16sequential execution each and everything

1:37:17I'm going to clarify then we'll start

1:37:20with the uh orchestrator framework

1:37:22understanding but after that there is

1:37:24one more topic uh we have to cover which

1:37:27is nothing but pentic pyntic validation

1:37:30this is also important because you will

1:37:31see that Whatever large language model

1:37:33we are having it will generate the

1:37:35unstructured output and to make it a

1:37:37structured even whenever we are giving

1:37:40any kinds of prompt to make our prompt

1:37:43uh more structured we use this pentic

1:37:45validation okay so this pentic

1:37:47validation will be understanding in the

1:37:49next video but in this video I will only

1:37:50focus on the asynchronous understanding

1:37:54okay so here I'm going to give you the

1:37:56detailed understanding of asynchronous

1:37:59with a theoretical understanding as well

1:38:01as the practical understanding as well.

1:38:03So let me show you guys what is this

1:38:05asynchronous. After that your

1:38:07understanding would be more clear and

1:38:10you can easily understand these are the

1:38:11framework whenever you will be doing the

1:38:13coding.

1:38:15So let me give you the definition of the

1:38:17asynchronous programming. So here is the

1:38:19definition.

1:38:20Um here is a simple definition you can

1:38:23see asynchronous programming in Python.

1:38:26Okay, you can see asynchronous

1:38:27programming in Python is a programming

1:38:30paradigm that allows code to handle okay

1:38:33multiple task uh concurrently without

1:38:36blocking the program's execution. It is

1:38:39primary used to IO bound task example

1:38:42network uh request file input and output

1:38:46operation database queries. Okay,

1:38:48allowing the program to perform other

1:38:51operations while waiting for slow

1:38:54external events to complete. That means

1:38:56this as asynchronous programming will

1:38:59help you. Okay, asynchronous programming

1:39:01will help you. Okay, asynchronous

1:39:03programming will help you to run your

1:39:05task in parallel. Okay, so you are not

1:39:08supposed to wait for the uh execution.

1:39:11Let's say we know that we use synchron

1:39:13synchronous programming so far. Yes or

1:39:15no guys, we use synchronous programming

1:39:18so far. In synchronous programming, what

1:39:20happens? Let's say if I execute a code

1:39:22block, first of all, it will complete

1:39:24that. Okay, after the execution is

1:39:28complete, okay, then it will execute the

1:39:30second part of that particular code.

1:39:32Okay, but in between, let's say if you

1:39:34are waiting for the execution, okay, if

1:39:36you're using asynchronous programming,

1:39:38it can run another task in parallel.

1:39:41Okay, so these are the like say

1:39:43functionality we'll be getting here. Now

1:39:45you can ask me why this is required.

1:39:47Okay, why this asynchronous programming

1:39:49is required inside AI agents

1:39:50implementation. Agentic AI, you can

1:39:53create two kinds of agent. One is the

1:39:54simple agent. Okay. One is the simple

1:39:58agent. So basically simple agents you

1:40:00create

1:40:02only one block. Okay. It can only handle

1:40:05one particular task. Okay. But whenever

1:40:10let's say you have complex problem you

1:40:12have to divide the task in smaller

1:40:13chunks. And what you will do? You will

1:40:15be creating multiple agents. Okay.

1:40:18Multiple agents you will be creating.

1:40:19Let's say this is agent one. This is

1:40:21agent two. This is agent three. Okay.

1:40:24And what will happen? You will assign

1:40:26the task for all the agents. And these

1:40:29agents will be executing either

1:40:32independently,

1:40:34independently

1:40:38or dependently.

1:40:43Okay. Dependently.

1:40:45So it's your design philosophy. If you

1:40:47are making it as a independently that

1:40:49time it will run as an independently. If

1:40:51you are making it to dependent okay it

1:40:53will run as a dependently. So basically

1:40:56what happens let's say if you run these

1:40:58are the agents okay these are the agents

1:41:01in a synchronous programming okay in a

1:41:03synchronous programming what will happen

1:41:05first of all these agents need to be

1:41:07completed these agents execution need to

1:41:09be completed once this agent uh when

1:41:12this agents will be executed then it

1:41:14will move to the next agents okay next

1:41:17code block then this agents will be

1:41:19executed okay once it is completed then

1:41:21it will go to this particular agents

1:41:23okay then it will try to run this

1:41:25particular agent. So let's say this

1:41:27agents is taking 3 minute to run. Sorry,

1:41:30let's say here I can just tell you

1:41:33let's say this agency is taking 1 minute

1:41:34to run. This agency is also taking let's

1:41:37say 1.5 minute to run. Okay. This agency

1:41:40is also taking let's say 1 minute to

1:41:41run. So what is happening? You have to

1:41:43wait for 1 minute. Again you have to

1:41:45wait for 1.5 minute. Again you have to

1:41:46wait for 1 minute. Okay. So if you like

1:41:50uh add all of the time you will see that

1:41:52at the end you are having okay 3.5

1:41:55minutes 3.5 minutes you have to wait for

1:41:58the execution but if you run this task

1:42:00in parallel okay if you run this task in

1:42:02parallel let's say this particular

1:42:04agents will do the online search

1:42:05operation so basically if you're doing

1:42:07the online search operation you'll be

1:42:09hitting some URL like right URL and to

1:42:11get the response this will take some

1:42:13time let's say sometimes this web server

1:42:16might be slow that time it will be

1:42:17giving you flow response. So instead of

1:42:19waiting for that you can execute your

1:42:22other agents. So let's say these agents

1:42:23will try to collect the uh images. These

1:42:26agents will try to collect the let's say

1:42:29any other file okay from the internet.

1:42:31So don't wait to execute any other

1:42:34agents. Just try to run them in a

1:42:36synchronous way. Okay, in a parallel

1:42:38way. So each of the agents will be

1:42:40running in a parallel way. So let's say

1:42:42this if this agent is also taking 1

1:42:44minutes. Okay. So simultaneously you are

1:42:47running something okay in the back end.

1:42:48So you are not supposed to wait for 3.5

1:42:50minutes. Get it? So that is the things I

1:42:53just wanted to tell you. So let's say

1:42:55whenever you are creating multi- aent

1:42:57system and whenever you are creating

1:42:58let's say independent connection okay

1:43:01independent let's say policy that time

1:43:03you should use this asynchronous

1:43:05programming inside um inside let's say

1:43:08Python or let's say whatever programming

1:43:09you're using you have to follow that.

1:43:11And if you see any kinds of agents code

1:43:13you will be uh seeing people are using

1:43:16this as okay uh essence

1:43:20this particular syntax people are using

1:43:22that okay so what is this essence as

1:43:24means asynchronous okay as synchronous

1:43:27functionality so in python there is a

1:43:28library called asense IO so we'll be

1:43:30following that particular library to

1:43:32implement this particular code okay so

1:43:33let me give you one example of

1:43:35asynchronous and synchronous programming

1:43:38so let's say here I can write

1:43:40synchronous Synchronous

1:43:45programming

1:43:52and this side we have asynchronous

1:43:54programming.

1:44:07So in synchronous programming what

1:44:08happens? Let's say

1:44:12what I can do I can give you one

1:44:14example. Uh let's say here

1:44:18um let's say you are you are having a

1:44:23you are having a

1:44:27gas stove. Okay. Gas stove.

1:44:31Uh in this gas stove you only have one

1:44:35uh

1:44:37one fire section. Okay. one fire

1:44:40section. So let's say you are having uh

1:44:42three dishes. Okay, you are having three

1:44:45dishes

1:44:47to cook.

1:44:50So what you will do? First of all, you

1:44:52will take the first dish and you will

1:44:54cook that. Once first dish is complete,

1:44:56then you will take the second dish. Then

1:44:58you have to complete then you will be

1:45:00taking the third dish. Then you will be

1:45:01completing. Okay, that's how you can see

1:45:03it is taking T1, it is taking T2, it is

1:45:06taking T3 time. Okay. So basically you

1:45:09have to wait for u you have to wait for

1:45:13the previous execution or let's say

1:45:14previous task to be completed then you

1:45:16can start the remaining task. But in

1:45:19asynchronous programming what happens

1:45:21let's say you are having same gas stove

1:45:24but here you are having let's say three

1:45:26fired section. You are having three fire

1:45:29section and you are having three dishes.

1:45:32Okay, let's say dish one,

1:45:34dish two and dish three. So what you

1:45:38have to do? You just need to

1:45:41run all of them simultaneously.

1:45:44Basically you are giving three dish to

1:45:46the three fire section. Okay. Now at the

1:45:49T1 time, okay, your all of the dishes

1:45:52should be completed. So you are not

1:45:54supposed to wait for the T1, T2 and T3

1:45:56to be completed. Okay. So this is the

1:45:58difference between synchronous

1:46:00programming and asynchronous

1:46:01programming. I hope you get it guys. So

1:46:03in Python we usually follow this

1:46:04synchronous programming. That means if

1:46:06you're running a function first of all

1:46:08that function would be completed then

1:46:10the remaining code would be executed.

1:46:12Now in programming we we call it as a

1:46:16sub routine. Let me just write here

1:46:19sub

1:46:21routine

1:46:24and we also call it as cool routine.

1:46:29I'll be discussing about what is this

1:46:32okay cool routine. So what is sub

1:46:34routine? So let me write a program to

1:46:36explain. Let's say here I can write a

1:46:38function.

1:46:40So I'll just write a function. Let's say

1:46:42def.

1:46:45Okay. Diff. So let's say I will

1:46:50um I'll give the function name

1:46:53fetch.

1:46:56Okay. Fetch let's say data. This is the

1:47:00function name. So it is having some code

1:47:05inside that. Okay. Now here I'm creating

1:47:08another function. Let's say def main.

1:47:13Okay. Now what I'm doing I'm calling

1:47:15this particular function. Okay, this

1:47:17function inside this particular main

1:47:19function fetch

1:47:21data.

1:47:23Okay, I'm calling inside that

1:47:29I'm calling inside that sorry yeah now

1:47:34after calling let's say in this main

1:47:36function also there are some code line.

1:47:39So what is happening here? Let's say if

1:47:41you're uh if you're using sub routine so

1:47:44that time uh whenever you are executing

1:47:47your code first of all your code will uh

1:47:51come here okay your code will come here

1:47:53and it will see you are calling a

1:47:55function inside that which function you

1:47:57are calling this particular function

1:47:59okay now what it will what will happen

1:48:02first of all it will go to this function

1:48:03and it will execute all of the code it

1:48:06will execute all of the code now let's

1:48:07say you are running fetch data that

1:48:10means let's say you are trying to fetch

1:48:12some kinds of data from the internet,

1:48:13you are using some kinds of API, some

1:48:16kinds of URL. Okay? And whenever it is

1:48:18hitting that particular API or URL, it

1:48:20is taking some kinds of time, right? So

1:48:23you have to wait for this particular

1:48:24time. So see once this time is over,

1:48:29that means this execution is over then

1:48:31you will be able to execute your

1:48:32remaining code. Okay? Till then you have

1:48:35to wait for this execution. Okay? So

1:48:39this is the idea of serve routine. That

1:48:41means you are waiting for a task to be

1:48:44completed. Then your remaining code

1:48:46would be executed. Then your remaining

1:48:48code would be executed. Although you are

1:48:50waiting here, although you are waiting

1:48:52here, you don't have any kinds of other

1:48:53task. You just need to wait for the

1:48:55execution. Okay? And once execution is

1:48:58completed, then you will be able to

1:49:00execute. You'll be able to see the other

1:49:03execution of the program. But in code

1:49:06routine, what happens? So let's say here

1:49:07I'm having a function

1:49:10here I'm having a function and uh we use

1:49:12something called asynchronous okay

1:49:14asynchronous syntax. So for this we use

1:49:16something called asins

1:49:18uh essence. Okay this is the keyword as

1:49:21so we'll write the function as def let's

1:49:23say fetch

1:49:26data this is the function let's say

1:49:29inside that you are having some kinds of

1:49:31code. Okay now again you are having a

1:49:34main function here. So I'll just write

1:49:36diff

1:49:38main. So what you are doing you are

1:49:41calling this particular

1:49:43um okay you are calling this particular

1:49:45function div sorry uh fetch

1:49:51okay fetch data

1:49:55you are calling that and inside main you

1:49:58are having some other code okay you are

1:50:00having some other code as well. Now what

1:50:02is happening? Just try to see whenever

1:50:04your Python will come here it will see

1:50:06that you are executing a function which

1:50:08function this function you are executing

1:50:10and it will see this particular keyword

1:50:13called essence. Okay, that that time

1:50:15Python will automatically understand

1:50:17that this code you have written it will

1:50:19run in a asynchronous way. That means

1:50:22let's say here you are doing a API call

1:50:24and it is taking some time t1 okay

1:50:26instead of waiting for this particular

1:50:28time again it will come here okay and

1:50:31execute the remaining code you have okay

1:50:33after this function that means at the t

1:50:36time itself this code would be executed

1:50:38and this code would be also executed so

1:50:40you are not supposed to wait for the

1:50:42previous execution so this is called co

1:50:44routine and if you're using this asins

1:50:47these are the things so it internally

1:50:48uses this concept and now we'll go for

1:50:51the practical. We'll uh try to see like

1:50:54practically everything how it works. Uh

1:50:56then I think your understanding would be

1:50:58more clear. Okay. First of all, I'm

1:51:00going to explain the synchronous

1:51:02programming.

1:51:04Okay. Now here I'm going to write two

1:51:08function. Let's say for the first

1:51:11function I'm going to write uh fetch

1:51:16DC fetch weather.

1:51:25Okay, fetch weather.

1:51:28Um and the second function I'm going to

1:51:30create def fetch news.

1:51:38P news. Okay.

1:51:41Now what I'm going to do, I'm going to

1:51:45import the time module as well just to

1:51:48see the execution time. So import time

1:51:55import time. Okay. Now inside that as of

1:51:58now I'm not going to write any logic.

1:51:59Simply I'm going to write just a print

1:52:01statement. I'm going to give let's say

1:52:03fetching weather data. Then here I'm

1:52:06going to just mention a time

1:52:09uh let's say to fetch the weather data

1:52:12you have to wait for some time. Okay. So

1:52:14this time I'm going to assign with the

1:52:15help of this time module. So here I'm

1:52:17going to give let's say I will be

1:52:20waiting for 4 seconds. Okay 4 seconds.

1:52:24So it it is for the simulate a network

1:52:27delay. Let's say if you are hitting any

1:52:29kinds of API so definitely to get the

1:52:31response you have to wait for some time.

1:52:33So let's say this time I have set 4

1:52:34seconds here. Okay. Now once uh we stop

1:52:39for four 4 seconds. Now simply I'm going

1:52:41to just print let's say weather data

1:52:43fetched. Okay. So this message I'm going

1:52:45to write. Now similar wise here also I'm

1:52:48going to write uh I'm going to write

1:52:52facing facing news data and uh again

1:52:56I'll give some time. Let's say here I

1:52:57have given 2 seconds and uh once my data

1:53:01uh news fetching is done so I'll tell

1:53:03news data fetched. Okay. So as of now

1:53:06just try to consider this is a function.

1:53:08This will fetch the weather information

1:53:11and this will fetch the news. Okay. Now

1:53:14if you see this function and this

1:53:16function doesn't have any uh dependency.

1:53:20These two functions are independent.

1:53:22Okay. These two functions are

1:53:23independent. That means if you want to

1:53:26fetch the weather, you don't need the

1:53:27news. If you want to fetch the news, you

1:53:30don't need the weather. So these are

1:53:32independent function. Okay. But once I

1:53:36will execute this code, okay, let's say

1:53:38if if I write another function here,

1:53:40I'll just write another function def

1:53:43main. Okay, in the main function, I'm

1:53:45going to call uh I'm going to call these

1:53:47two function. See first of all I'm

1:53:50starting the time just to see the time

1:53:51like how much time it takes to execute

1:53:54the two function. So that's why I

1:53:56starting the start I'm taking the start

1:53:58time then I'm calling these two function

1:54:00together fetch weather and fetch news.

1:54:02You can see fetch weather and fetch news

1:54:04I'm calling then I'm taking the end time

1:54:06then I'm doing the substract operation

1:54:08from end time to start time and this

1:54:10will be uh this will be my execution

1:54:14time of my program. But if you see here

1:54:16these two functions are independent.

1:54:19This these two functions is not

1:54:20dependent. Although it's independent

1:54:23okay it's not dependent.

1:54:25So what whenever you will call the

1:54:28function you have to wait for the you

1:54:31have to wait for the previous function

1:54:34to be completed to run the next

1:54:36function. This is the issue. Okay. So I

1:54:40can see these two functions are

1:54:41completely independent. But whenever I'm

1:54:43calling this function, first of all,

1:54:45this function will execute. So let's say

1:54:47whenever you will execute the program.

1:54:49So your interpreter will come here.

1:54:51Okay, your interpreter will come here.

1:54:53Then it will go inside this particular

1:54:55function. Then it will execute all of

1:54:57the code. And here it will wait for the

1:54:594 seconds. Okay, 4 seconds it will try

1:55:02to wait. But see in the four 4 seconds

1:55:06it doesn't have any work to do. So it

1:55:08will be waiting. Then once 4 secondond

1:55:11is over this code would be executed then

1:55:13your program will come here. Okay then

1:55:15it will be executed. That means first of

1:55:17all the previous function would be

1:55:19executed then the next function would be

1:55:20executed. So you can also check. So

1:55:22let's say if I want to show you. So I'll

1:55:25call this particular main function here.

1:55:28Okay. I'll call this main function. Now

1:55:30if I execute see facing weather it is

1:55:33waiting for 4 seconds. Now weather

1:55:35fetch. Now see facing news. Now it wait

1:55:38for 2 seconds. then news face and total

1:55:40time taken you can see 6 uh point

1:55:43something seconds. Okay. Now you can

1:55:46also take this code uh in one of the

1:55:49amazing website called python tutor.

1:55:51Python tutor.com. Here also you can

1:55:53visualize this code.

1:55:58Let me open the python tutor.

1:56:01Now I'll select the python programming.

1:56:07I'll paste my code here.

1:56:09Visualize the execution.

1:56:19Okay. Now it has started. Okay. It has

1:56:22started. Now simply time is not defined.

1:56:25Okay. So the basically I need to import

1:56:28the time here. Right. So let's edit the

1:56:30code.

1:56:34So here I'll import the time module

1:56:39for time.

1:56:41Now I'll visualize the execution

1:56:46import time. It's giving you an error.

1:56:48Time f not found or supported. Only

1:56:51these modules can be imported. Okay.

1:56:54Because this is a like a website. Okay.

1:56:56Python tutor website. So here you can

1:56:58you can't import any uh let's say these

1:57:01are the library you can't you can import

1:57:03but some other library you can't import.

1:57:05So for this what I can do I can remove

1:57:07the time as of now I just wanted to only

1:57:10just let you know that how it is

1:57:12executing. Let's say I will also remove

1:57:14the time part. Uh here also I'll remove

1:57:17the time part here also and here also.

1:57:21Uh let's say this is my message. Okay

1:57:25this is my simple message. Let's say

1:57:31executed.

1:57:34Now simply do the visualization.

1:57:39Okay. Now see um here I have the

1:57:42control. The first of all Python

1:57:44interpreter will come here. Uh it has

1:57:47seen like here I am having a function

1:57:50called fetch weather. Then it will go to

1:57:51the next line that is next function.

1:57:54then it will go to the next function

1:57:56which is main and in the main function

1:57:59you can see uh I'm calling here this

1:58:01particular main function so it will go

1:58:03into into the main function and it will

1:58:06see like I'm calling fetch weather

1:58:08function okay so it will go inside fetch

1:58:10weather and it will do all of the

1:58:12operation okay see it is doing all of

1:58:14the operation now let's say this

1:58:16function is taking some time so it will

1:58:18wait okay it will wait for 2 minutes 1

1:58:20minutes okay how much time it is taking

1:58:22it will try to wait for Right. So once

1:58:24execution is completed then again it

1:58:26will come here. Okay. Then you can see

1:58:28it will execute another function which

1:58:30is fetch news. Now again it will go

1:58:32inside fetch news and it will do all of

1:58:34the execution and try to come here. That

1:58:37means you have to wait. Okay. You have

1:58:38to wait for the previous execution to be

1:58:42complete. Then you will be able to run

1:58:43the new code. Okay. That's how you have

1:58:45to wait. Okay. You have to wait uh for

1:58:48the previous execution. And definitely

1:58:50it is taking lots of time. And now just

1:58:52try to consider if you're running a

1:58:53multiple agents together and if it is

1:58:56running synchronously. So first of all

1:58:59first agent would be completed second

1:59:00agent would be completed. So execution

1:59:02time it will take more that time we run

1:59:05it is an asynchronous way. So that we

1:59:07are not need to open we don't need to

1:59:09open for uh we don't need to wait for

1:59:11the previous execution. Okay the time it

1:59:14is taking it's completely fine. I will

1:59:16simultaneously run for all of the

1:59:19function and you'll be executing

1:59:20together. Okay. So now we'll try to see

1:59:22that particular example as well how it

1:59:24will work. Now we'll see this

1:59:26synchronous programming

1:59:29sorry asynchronous programming

1:59:34asynchronous programming. Now here to uh

1:59:39implement asynchronous function you need

1:59:42to import one library called

1:59:45import sorry import.

1:59:49Okay. Assence io okay as io this

1:59:52particular library and I'm going to also

1:59:55import time library

1:59:58let's me import all of them then here

2:00:00I'm going to again write the same

2:00:02function

2:00:04same function I will copy the code

2:00:09and simply I'm going to mention here now

2:00:11instead of giving simply this definition

2:00:14I'm going to write asins keyword okay

2:00:17before that now once I have written as

2:00:19keyword

2:00:20Okay, as since keyword at the first of

2:00:22this particular function now Python will

2:00:25automatically understand I need to run

2:00:26this function in asynchronous mode and

2:00:29here it is taking the time. So maybe I

2:00:31can use another keyword here called ait.

2:00:33Okay, a so simply I'm going to give it

2:00:37here.

2:00:39Okay, even you can also return something

2:00:41if you want. Okay, you can also return

2:00:43like uh what is the return this function

2:00:46will be returning for you. H now sim uh

2:00:50same uh similar wise I'll also do it for

2:00:53this particular function so essence

2:00:59okay now simply here I'm going to write

2:01:01a okay have it so why you are writing a

2:01:06here because here it is taking the time

2:01:09okay here it is taking the time and uh

2:01:13whenever here it is taking the time your

2:01:15python uh interpreter will come here and

2:01:17whenever it will see the ait so it will

2:01:20tell like you don't need to wait for

2:01:21this particular execution so you can

2:01:23execute your other uh code okay whatever

2:01:27you have so this code would be executing

2:01:29and at the same time you can also

2:01:31execute your other code okay I'll tell

2:01:33you okay how it will execute

2:01:36uh then uh simply in the main function

2:01:38also I'm going to make it as ess as

2:01:43okay essence and uh here

2:01:47uh instead of calling like that I'm

2:01:49going to simply call it as a

2:01:52uh as since io dot gatherthered okay

2:01:55there is a function and inside that you

2:01:57have to give the fetch weather

2:02:00fetch weather uh function and fetch news

2:02:03function both you have to provide okay

2:02:06then you can uh calculate the end time

2:02:10and simply you can print the time taken

2:02:12of this particular function now if you

2:02:15want to execute uh what you can do you

2:02:17You can simply

2:02:19uh you can simply call this main

2:02:21function. How you can use the aid

2:02:24keyword main. Now see if I execute

2:02:28see what will happen.

2:02:34Okay. Um there is a error. Oh sorry uh

2:02:38whenever you are using this average

2:02:39right you don't need to use the time

2:02:40that time uh you can use essence

2:02:46uh essence io. sleep. Okay. So you are

2:02:48not supposed to use time that time.

2:02:50Okay. You have to use essence io. Okay.

2:02:53Now same things I'll be giving it here.

2:03:00Same things I'll give it it here. Uh now

2:03:04I think it is fine. Now let's execute.

2:03:09Now see guys it has taken only 3 seconds

2:03:13and if I show my previous code it has

2:03:15taken 6 seconds. Okay. So the time

2:03:18reduced by half. Okay. The time reduced

2:03:21by half. Just try to consider. Now just

2:03:24think like this is a big program. Okay.

2:03:26This is a big program. This is a big

2:03:28agents and it is running so many stuff.

2:03:30Now if you run it run it in a

2:03:33synchronous programming. Now just try to

2:03:35consider how much time it it should

2:03:37take. Okay. But if you are using

2:03:39asynchronous programming see it will be

2:03:42reducing the time half. Okay. because it

2:03:45is running everything in parallel. It is

2:03:48running everything in parallel. Okay. So

2:03:50you are not supposed to wait for the

2:03:53previous execution to be complete. Okay.

2:03:55So all of the executions are doing

2:03:57simultaneously.

2:04:00Okay. So that's why this asynchronous

2:04:02programming okay this asense IO is

2:04:05required whenever you are implementing

2:04:07uh any kinds of AI agents uh with any

2:04:10kinds of framework whether you are using

2:04:11autogen you are using langraph you're

2:04:14using crew AI try to use this particular

2:04:17things in your development okay this is

2:04:20good practice there are two concept

2:04:23you'll be getting which is

2:04:25uh the first is para

2:04:29leism

2:04:30Okay.

2:04:32And the second thing you will be getting

2:04:36qy.

2:04:39So what is parallelism? Running

2:04:45multiple

2:04:48uh tasks

2:04:52simultaneously

2:04:58using

2:05:01multiple

2:05:06trades.

2:05:09Okay. Or process.

2:05:16And what is uh concurrency? So let me

2:05:19write it here. Um simply

2:05:23here I can write concurrency.

2:05:31Concurrency means uh managing

2:05:39multiple

2:05:41tasks

2:05:44that can

2:05:47start

2:05:50run

2:05:52and okay finish

2:05:57with

2:05:59over overlapping

2:06:03times.

2:06:05Okay. So, let me uh show you

2:06:09a graph. I think by seeing the graph you

2:06:11will be able to understand

2:06:14what is the exact meaning.

2:06:22So this is the graph.

Pydantic for AI Agents - Pydantic Data Validation

2:06:24So this is the concurrency. You can see

2:06:27uh task is running. Okay. Context

2:06:30switching to the task two. Then again

2:06:33task one is running. Again it is doing

2:06:35the context switching. Okay. But in

2:06:38parallelism you can see it is utilizing

2:06:41okay it is utilizing multi uh multiore.

2:06:44Okay. Let's say uh in the first CPU core

2:06:48it is running task one and in the second

2:06:51CPU core it is running task two but here

2:06:53it is only utilizing the same code only

2:06:55but doing um doing this uh concurrency

2:06:59operation. Okay. So guys I think you

2:07:02have seen this asynchronous concept. Uh

2:07:05the main thing is that right now all of

2:07:08the orchestrator framework uses this

2:07:10kinds of asynchronous uh functionality

2:07:13in their back end. So we don't need to

2:07:15manually uh use the asynchronous inside

2:07:18our development inside our code but if

2:07:20you want you can also use uh if you want

2:07:23you can also uh design your own pipeline

2:07:25design your own agents that time you can

2:07:28write the code from scratch but whatever

2:07:31u let's say u orchestrator framework

2:07:34we'll be using like langraph then

2:07:36autogen crew ai right so everything uh

2:07:40already having this kinds of things are

2:07:42integrated okay in the back end. So I

2:07:45don't need to take care this part. But

2:07:47in future whenever I will do some coding

2:07:49maybe these are the terminology will

2:07:50come that time um I want you to don't uh

2:07:54actually uh confuse with the syntax.

2:07:57Okay that's why I have clarified each

2:07:59and everything before I go ahead with

2:08:01the AI agents implementation. So in this

2:08:04video I'm going to discuss another very

2:08:06important topic especially whenever you

2:08:09are creating any kinds of AI agents

2:08:11application. uh the terms is pientic.

2:08:15Okay. So first of all I will give you

2:08:18the idea why this pientic is required

2:08:21and uh without pentic what would be the

2:08:23problem then we'll try to understand the

2:08:26entire pyic concept. So this is my

2:08:29promise of uh if you complete the entire

2:08:32video guys I think you should not be

2:08:35having any kinds of uh doubt related uh

2:08:39pientic whether you are working in uh AI

2:08:42agents whether you are working with any

2:08:44other let's say uh AI application

2:08:46development because everywhere nowadays

2:08:48we use this particular pentic concept

2:08:50okay for the data validation

2:08:53so I think you already know that uh in

2:08:56python all of the variable is uh dynamic

2:09:00variable. Uh basically we uh use the

2:09:03dynamic concept here that means uh here

2:09:05we don't mention any uh data type okay

2:09:09of a variable. Let's say if I'm creating

2:09:11a variable named um a and inside that if

2:09:15I'm storing uh let's say one integer

2:09:17value which is four you can u actually

2:09:21um remove that four and you can also

2:09:24store any other data type let's say

2:09:26string flo or boolean any kinds of data

2:09:29type in the same variable itself okay

2:09:31without uh actually mentioning the data

2:09:33type okay so that's how python works uh

2:09:36it works actually dynamically everything

2:09:39in short any other programming language

2:09:41uh we use the static approach. So there

2:09:44we uh first of all mention the data type

2:09:47then we uh create the variable and

2:09:49stores the data but in Python actually

2:09:52everything works uh as a dynamically. So

2:09:54here you don't need to mention the data

2:09:56types or any kinds of let's say uh hints

2:09:59related that right. So guys to make you

2:10:02understand what I'm going to do I'm

2:10:04going to open my computer screen and

2:10:06there I'm going to discuss each and

2:10:07everything related uh to this pientic.

2:10:13So guys uh here you can see um I'm

2:10:15inside my computer screen. So first of

2:10:18all I have mentioned the pyentic uh

2:10:22definition like what exactly the pyic

2:10:24is. So as you can see Pentic is the most

2:10:27widely used data validation and uh

2:10:30settings management library for Python

2:10:33utilizing type hints to ensure data

2:10:35structure integrity. As you can see it

2:10:39validates parts data at runtime to match

2:10:42specified types making it essential for

2:10:45building robust APIs and handling

2:10:48external data with it uh with its core

2:10:51logic written in Rust for high

2:10:53performance.

2:10:54So this is the definition of pientic. Um

2:10:57basically we use this pientic for the uh

2:11:00data validation. Uh I'm going to u tell

2:11:03you about more uh more about this data

2:11:05validation. What is data validation? why

2:11:07it is required and u I mean how it

2:11:11actually uh solves one amazing problem

2:11:14actually uh whenever we try to create

2:11:16any kinds of end to end application uh

2:11:18especially whenever you are working

2:11:20inside AI domain if you're working in

2:11:22machine learning deep learning uh

2:11:24generative AI agentic AI anywhere uh

2:11:27whenever you are developing the

2:11:28application uh you have to use this

2:11:30pientic okay now here I have listed down

2:11:33some key features and benefit of the

2:11:35pientic as you can see Here are some key

2:11:38features and benefit. So for data

2:11:39validation and parsing we use this

2:11:41pentic. Uh so here you can see defines

2:11:44how data should be structured using

2:11:47standard Python types automatically

2:11:48enforcing the uh these rules. uh

2:11:51basically see uh inside aentic why it is

2:11:54required because here we'll be working

2:11:56with the large language model and you

2:11:58know that large language model u always

2:12:01will give you the output in unstructured

2:12:02manner and if I want to get a structured

2:12:05output if I want to get the relevant

2:12:07response only that time this pentic data

2:12:10validation is required and whenever we

2:12:11are also passing any kinds of input

2:12:13prompt okay we have to also make it

2:12:16structured so that uh I can get uh the

2:12:19efficient response from my large lang

2:12:21based model. Okay, instead of giving

2:12:22some unstructured data as an input then

2:12:26uh for the type uh hint and integration.

2:12:28So uses Python uh type annotations to

2:12:31define schemas reducing uh the needs for

2:12:34verbose validation code. Then definitely

2:12:36for the fast performance uh we will be

2:12:38using that uh basically it is written in

2:12:41rust uh actually language that's why it

2:12:43is extremely fast. Then strict and lax

2:12:46mode is available inside this pyic.

2:12:48Okay. Basically uh here you can um uh do

2:12:52the uh enforcing strict type and you can

2:12:54also perform the um you can also

2:12:58performing this uh lax mode. Okay, for

2:13:00converting let's say uh any other data

2:13:03type to another data type. Okay, this is

2:13:05also possible here. Then uh clear error

2:13:08handling. Okay, provides detail errors

2:13:10when the data validation fails. and JSON

2:13:13schema generation. Pyntic models can

2:13:15easily generate JSON schema for

2:13:16documentations or validation uh in other

2:13:19languages. Okay. Now it is telling

2:13:21pyentic models. What is this pyentic

2:13:23model? I'm going to tell you. So this is

2:13:24nothing but a class. Okay. We create a

2:13:26class uh and we inherit with this with

2:13:30this pyic actually base model. Okay. So

2:13:32that's why we call it as a pyic models.

2:13:35So whenever I'm going to show you the

2:13:37practical that time it would be more

2:13:38clear. Okay. So first of all uh let's

2:13:41try to understand the problem okay

2:13:43problem without this pentic if I'm not

2:13:46using pyntentic so what will happen and

2:13:48what would be the issue actually we'll

2:13:50be having okay then I'll try to use the

2:13:51pidentic and uh I'm going to show you

2:13:54the benefit itself so for this I'm going

2:13:56to turn off my camera window guys so

2:13:58that you can see the entire screen uh

2:14:00you don't miss any kinds of code snippet

2:14:03okay whatever I'm going to write I think

2:14:05that would be good for you so guys

2:14:08whenever we are working with any kinds

2:14:09of application whether it's related

2:14:11MLDDL or aentki it doesn't matter uh we

2:14:15will be working with the data for sure

2:14:17right so let's say here I'm going to uh

2:14:20take one example I'm going to let's say

2:14:22create a function I'm going to name it

2:14:24as u let's say

2:14:27um let's say add

2:14:31or let's say uh add

2:14:36patient

2:14:42data.

2:14:44Okay. So this is my function. So

2:14:47basically this will take the name of the

2:14:49patient and age of the patient. Okay. Um

2:14:53now what I'm going to do let's say this

2:14:55function uh add this informations to the

2:14:58database that means the hospital

2:15:01database. But as of now uh I'm giving

2:15:03you the demo. So here I don't have any

2:15:05kinds of database. So simply what I'm

2:15:07going to do I'm going to print uh those

2:15:10uh variable here. Okay. So let's say I'm

2:15:12going to print the name and I'm also

2:15:15going to print the age. Okay. So once it

2:15:17is done maybe I can give you a message

2:15:21called um

2:15:24data

2:15:26addit successfully. Okay. So let's say

2:15:28this is my message. Okay. Once let's I

2:15:30will call this function. It will add

2:15:31this informations to the database. And

2:15:34here I will get a message. Let's say

2:15:35database um data added successfully to

2:15:40the

2:15:42database. Okay. Let's say this is my

2:15:44masses. Now let's say if I execute this

2:15:48code uh let me take some cell. So if I

2:15:52want to let's say um insert the data

2:15:55first of all I have to call this

2:15:56function add patient data. So inside

2:15:58that let's say I'm going to give the

2:16:00patient name. Let's say I'm going to

2:16:03give BP and age is 25. Okay. Now let's

2:16:06say if I just execute the code, you will

2:16:10see that BP and the age has successfully

2:16:13added to the database. That means it's

2:16:15working fine. Okay. Now let's say this

2:16:18code is written by the senior programmer

2:16:21and uh he has given this code to the

2:16:23junior programmer. He told like okay

2:16:25this is the function and this function

2:16:27you can use for adding any kinds of uh

2:16:31let's say patient informations to the

2:16:33hospital database. Okay. Now what junior

2:16:36programmer will do definitely you will

2:16:39see the like um uh function definition.

2:16:43So you can see this function definition

2:16:45is that uh this function takes uh two

2:16:47argument. One is the name and another is

2:16:50the age. And the data type is any. That

2:16:52means you can pass any kinds of data

2:16:54type here because here I haven't

2:16:55strictly mentioned you have to pass uh

2:16:58string or you have to pass integer

2:17:00float. Okay, this kinds of uh let's say

2:17:02type hinting I haven't done. So what he

2:17:04will do he will try to add any kinds of

2:17:06data here. Okay, maybe let's say um he

2:17:09has given BP here patient um let's say

2:17:12name. Now he can also give the age like

2:17:15that. Let's say instead of 25 like that

2:17:17he will write like that 25. Okay, 25 in

2:17:21string. Now if I execute this code,

2:17:25still see my data is added to the

2:17:27database. But whenever let's say senior

2:17:29programmer is trying to fetch this data.

2:17:31Okay, let's say there is another

2:17:33function. That function fetch the data.

2:17:36So whenever let's say he's fetching the

2:17:37data, let's say he wants to uh he wants

2:17:40to filter out those patient u the

2:17:43patient age is above 25. Okay. So what

2:17:46he will do? You'll let's say write a

2:17:48condition if uh patient

2:17:52okay if patient age is uh let's say

2:17:57greater than

2:18:00greater than 25

2:18:04okay 25 then he will try to

2:18:08let's say call those patient okay he has

2:18:11tried to call those patient now just try

2:18:14to see here my junior programmer has

2:18:16added the patient information like that

2:18:19in a string format 25 but again senior

2:18:23program is trying to filter out the

2:18:24patient informations by the integer data

2:18:26type okay definitely this kinds of uh I

2:18:29mean filter I can't ever perform on my

2:18:32database if you're using SQL I think you

2:18:34know that you can't do that because here

2:18:35it is a string type here you are um

2:18:38giving the integer type so definitely

2:18:40this patient will be missed that time

2:18:42okay not only this patient uh I mean

2:18:45similar kinds of if you're doing the

2:18:46same thing instead of giving the integer

2:18:48if you're giving the uh string type that

2:18:50time patient will definitely missed out

2:18:52okay for the filter operation so this is

2:18:56the like problem now you can tell okay

2:18:58then I can easily solve this problem so

2:19:00what I can do maybe uh instead of uh

2:19:04giving it like that so what I will do

2:19:07let's say I'll try to maybe add a

2:19:10condition here so simply here I'll add a

2:19:13condition so If

2:19:17type first of all I'll check the type if

2:19:20type of name

2:19:22is equal equal

2:19:27okay equal equal string str and type of

2:19:31age is integer okay then I'm going to um

2:19:34sorry then I'm going to insert the

2:19:37informations to the database okay

2:19:39otherwise in the else condition I'm

2:19:41going to

2:19:42give a error ES

2:19:45okay so I'm going to raise exception

2:19:48raise let's say

2:19:51type error

2:19:57type error so here I'm going to tell uh

2:19:59invalid data type for the name and age

2:20:01name should be string and s should be in

2:20:03the integer format okay now let's say if

2:20:05I execute this code and now let's say if

2:20:09I am trying to add right now uh these

2:20:12kinds of things. Okay. So what will

2:20:14happen? Okay. One more thing I have to

2:20:16add which is uh the hinting type

2:20:18hinting. So name variable should be

2:20:21string and age as variable should be

2:20:23integer. Now if I execute now see if

2:20:25junior programmer comes here and he uh

2:20:27if he sees see the uh let's say function

2:20:30definition he will be able to see that

2:20:32okay this function takes two argument.

2:20:34One is name should be string and s

2:20:36should be integer. Okay. So let's say if

2:20:38I give integer data right now let's say

2:20:4025

2:20:43it will work perfectly okay there should

2:20:45not be any kinds of error but if is

2:20:47trying to give like that let's say again

2:20:5025 so definitely that time one error

2:20:53would be coming here okay now it is

2:20:56working completely fine it's not like

2:20:57that uh you won't be able to do that you

2:21:00will be able to do that now your uh

2:21:02senior programmer will be able to fetch

2:21:04the information very easily because you

2:21:06are following the same data type. Okay,

2:21:08whatever data type your senior

2:21:10programmer expected okay so this is the

2:21:13thing but the problem is that let's say

2:21:17whenever you [clears throat] will be

2:21:18creating a big application it's not like

2:21:20that you will be creating a single

2:21:21function there would be lots of function

2:21:23okay so let's say you want to create

2:21:25another function uh let's say the

2:21:27function name is update information okay

2:21:30update patient information instead of

2:21:32add patients maybe I can add update

2:21:37patient data. Okay, that time again it

2:21:39will take the name and age of the

2:21:41patient. Again you have to check this

2:21:43condition. Okay, you have to check this

2:21:45condition whether name is a string and

2:21:47age type is integer. Then you will allow

2:21:49to update. Okay, let's see here I can

2:21:51tell um update uh update uh let me

2:21:57accept this uh data updated successfully

2:21:59in the database otherwise what I will do

2:22:01I'll just try to raise the invalid uh

2:22:03let's say array but uh whenever we be

2:22:06creating the real application it's not

2:22:08like that we'll be working with uh two

2:22:11to three input data there would be lots

2:22:13of data and for all the data I have to

2:22:15write this particular condition okay so

2:22:17again this is a manual task we have to

2:22:19do and how many function you'll be

2:22:20creating in every function you have to

2:22:22definitely check that okay you have to

2:22:24definitely check that let's say another

2:22:26condition comes up the condition is

2:22:30uh condition is let's say um yeah

2:22:33definitely let's say you have given your

2:22:35data type it should be name should be

2:22:37string and it should be integer it's

2:22:39completely fine but let's say your

2:22:41junior programmer insert the data like

2:22:43that let's say instead of giving uh

2:22:45positive 25 he will be giving negative -

2:22:48255 type now age can't cannot be never

2:22:52never negative right age cannot uh uh I

2:22:56mean it should not be negative but if I

2:22:58let's say add this negative number again

2:23:00it will be adding this particular number

2:23:02successfully okay but this is another

2:23:04issue definitely right now you can tell

2:23:07me okay then what I can do maybe I can

2:23:09uh add another condition here so what I

2:23:13will do let's say uh here maybe I will

2:23:16add another condition inside this in uh

2:23:19add patient data. So here I'm going to

2:23:21check another condition. If the age is

2:23:25uh

2:23:27uh if age is greater than

2:23:30okay

2:23:33um age is greater than

2:23:37equal um zero that time I will allow

2:23:41this condition.

2:23:43Okay, I'll allow this condition

2:23:45otherwise I will raise another exception

2:23:47h cannot be negative. Okay, and this uh

2:23:50um uh this uh already I'm checking this

2:23:53information whether it is a string or

2:23:55integer. Okay, so this is the else block

2:23:57for this particular if and this is the

2:23:59else block for this particular if. Okay,

2:24:02now here I have written the multi- uh

2:24:04conditional statement. So here also you

2:24:07have to do the same thing. Okay, here

2:24:08also you have to do the same thing.

2:24:11Okay. So, so I'll remove this part.

2:24:14Okay. Here also you have to add the same

2:24:16thing. Now if I execute this code now

2:24:19see now it will um check that and it

2:24:22will raise the value um value error that

2:24:24means h cannot be negative. But if I'm

2:24:26passing the positive that time it will

2:24:28be working. There should not be any

2:24:30kinds of problem. Okay. But every time

2:24:33whenever the condition is changing okay

2:24:36uh because it's it is true right

2:24:38whenever you are creating a application

2:24:40your application should handle this

2:24:42kinds of scenario because as a user I

2:24:45can pass anything right um I can pass

2:24:48anything I can pass negative number I

2:24:50can pass string number anything I can

2:24:52pass in your application but your

2:24:55application should uh handle this this

2:24:57kinds of scenario your application

2:24:59should validate the data I'm passing

2:25:00whether it is validated or not. Okay. So

2:25:03either you can do this validation by

2:25:05writing this kinds of manual conditional

2:25:07statement. Either you can use the

2:25:09pientic one. Okay. Pentic data

2:25:11validator. So how to use pyic? I'm going

2:25:13to tell you but I was just showing you

2:25:16the problem. What would be the problem

2:25:17if you're using this uh like traditional

2:25:20approach traditional conditional

2:25:22approach. So here you have to write this

2:25:24kinds of condition manually every time.

2:25:26Okay. And again if you're creating any

2:25:28other function again you have to rewrite

2:25:30the code and your code size would be

2:25:31very big that time. Okay. So this is the

2:25:33problem. Now let's try to see how to use

2:25:37this pentic to solve this problem. Now

2:25:39here I have already written how to use

2:25:41the pyic. So in pentic first of all

2:25:43we'll define a pyntic model that

2:25:45represents the ideal schema of a data.

2:25:48Now what is model? Okay model means

2:25:51model means this is a class. Okay. Here

2:25:52we'll try to define a class of pentic.

2:25:55Basically we'll try to uh inherit with

2:25:58the pidentic based model. Okay. After

2:26:01that we'll try to uh define the schema

2:26:03here. Okay. We'll try to define the

2:26:04schema. Now what is schema? I'll tell

2:26:07you. Uh then uh the second thing uh in

2:26:10uh instantiate u model with raw input uh

2:26:15usually a dictionary or JSON like

2:26:17structure. So once my uh let's say

2:26:19pentic models is pentic class is ready.

2:26:22I will prepare my data. Okay. I'll

2:26:24prepare my input data in uh in a

2:26:25dictionary. It should be uh definitely

2:26:27in a dictionary or JSON like format. Uh

2:26:30then uh we'll try to pass the validated

2:26:33u model object to the functions uh

2:26:37functions.

2:26:39Um okay here I missed one thing. Uh see

2:26:42here basically what we will do pentic

2:26:44will automatically validate the data uh

2:26:46whether it is correct format or not the

2:26:48data we are passing if does not meets

2:26:50the model requirement pentic raises the

2:26:52validation error okay then once let's

2:26:54say my uh data validation meets it is uh

2:26:57let's say validated successfully that

2:27:00time uh it will try to I will try to

2:27:02pass the validated uh model objects to

2:27:04the function the function we have

2:27:05created okay for any kinds of logic

2:27:07let's say for database insertion or

2:27:09update database insertion we can pass to

2:27:12that particular function and our code

2:27:15will be working. Okay. Now this thing

2:27:17we'll try to see in a practical manner.

2:27:19So for this uh first of all you have to

2:27:21install the pyentic inside your

2:27:23environment. So how to install pyic

2:27:25maybe in the requirement.txt txt you can

2:27:27mention the pyntic package and

2:27:29definitely you just try to take pyic uh

2:27:32like more than one that means uh it

2:27:34should be pentic two version because in

2:27:36two function there are lots of update

2:27:38came but don't use one version because

2:27:40what one version that was older and

2:27:43there you will be getting lots of issue

2:27:45okay I'll try to suggest you use uh this

2:27:47pyic two or more than two okay you can

2:27:49use this one now once you have added in

2:27:52the requirements so simply you can open

2:27:53up your terminal and just write this

2:27:55command pip install hypena

2:27:57requirement.txt. So it will be

2:27:59installing this pyantic inside your

2:28:01environment. Okay. So for me it is

2:28:03already satisfied because initially I

2:28:05already installed this pyic in my

2:28:06environment. So once it is done um this

2:28:09is the notebook guys. I'm also going to

2:28:10share you all of the source code in the

2:28:12description section. From there you can

2:28:14download and you can try in your system.

2:28:16Now here you definitely select the

2:28:18kernel the environment you are creating.

2:28:19Just try to select that. So for me I

2:28:21have created this LLM demo. I'll try to

2:28:23select this. Now here I'll be doing the

2:28:25coding example. Now first of all here

2:28:28you have to import this uh pientic based

2:28:30model from pientic. So you have to

2:28:33import like that from pientic. So I'm

2:28:35getting the code suggestion

2:28:37because here I'm using uh this Microsoft

2:28:40copilot. Um yeah so maybe I'll take the

2:28:44suggestion. So from pentic

2:28:48pentic import I'm going to import the

2:28:50base model first of all. Okay. So first

2:28:53of all I'm going to show you the simple

2:28:55example then I'm going to um show you

2:28:57the advanced example of pyic as well.

2:28:59Okay first of all let's start with the

2:29:01simple example. Now once it is imported

2:29:04now what I'm going to do guys I'm going

2:29:05to simply write a pentic class. Okay so

2:29:09let's say the class name is patient

2:29:13okay patient data. So let's say this is

2:29:15my class and definitely you have to

2:29:18inherit this particular class with base

2:29:20model. Okay. So this is called actually

2:29:22pentic model. So this becomes actually

2:29:23padentic model. Right? Now inside that

2:29:26you have to define the schema. So schema

2:29:28means like how many data you will be

2:29:31using. Okay. So here I'll be using two

2:29:33data. One is the name other is the age

2:29:35because I'm replicating the same example

2:29:37previously I have given. So here I was

2:29:38considering name and age. Okay. These

2:29:41two information only. And here I have

2:29:43mentioned the name should be in a string

2:29:45and age should be in integer. Okay. Now

2:29:49what I'm going to do, I'm going to again

2:29:51maybe copy the same uh function I

2:29:54created or or let's write that. So div

2:29:59add patient data.

2:30:01Okay, add patient data. So this was the

2:30:04function previously I written.

2:30:08Okay, but there I passed this name and

2:30:13uh name and uh directly. But here you

2:30:16don't need to give like that. So here

2:30:18what you have to do you have to

2:30:21uh you have to give the uh you have to

2:30:24give the pentic object. Okay. But before

2:30:27that uh let me show you what to do.

2:30:33So as of now let's uh just pass it. And

2:30:38now the second step we have to uh in uh

2:30:43instantiate the model with the raw

2:30:44input. Uh so we have to prepare our raw

2:30:46input. So input should be in a

2:30:48dictionary or JSON like a structure. So

2:30:50let's try to prepare the input. So input

2:30:52is basically my patient information. So

2:30:55patient

2:30:59patient data

2:31:03is equal to

2:31:06um it should be a dictionary.

2:31:10First of all I will add the name.

2:31:16Okay.

2:31:18Name NH. Okay. So, this is a dictionary

2:31:21format. Now, what I will do, I'll just

2:31:23try to

2:31:25just try to pass uh this particular data

2:31:28to my uh to my where to my pentic

2:31:32object. So, here what is the pyic

2:31:34object? Pentic object is nothing but my

2:31:37patient data. Okay. So, what I'm going

2:31:39to do, I'm going to pass it to the

2:31:40patient data. So here let's try to

2:31:43create um object of patient

2:31:52okay patient

2:31:55let's say this is the

2:31:57um this is patient is equal to

2:32:01um patient data and we'll be passing the

2:32:05data and here I have given two star

2:32:06because this is a dictionary and we have

2:32:08to unpack the value right key and value

2:32:10so that's why We are given this uh two

2:32:12uh star here. Two star means you are

2:32:14unpacking the data. Okay. Now this will

2:32:16become a pyic object. Okay. Now we have

2:32:19created a pentic object. Okay. Now this

2:32:21particular object will be passing to the

2:32:23function. All of the function will be

2:32:25creating here. Whether it's a add

2:32:27patient data, update patient data will

2:32:29be um like passing those informations

2:32:31inside the function. Now right now this

2:32:34function uh can't take the name and a

2:32:37separately. Instead of that it will take

2:32:39what? It will take the

2:32:41patient. Okay, patient object

2:32:45that means the pidentic object. So that

2:32:46means here I can uh make this particular

2:32:50input name is at patient and the type of

2:32:53the patient should be patient data. That

2:32:54means this particular class and this is

2:32:57your pentic model right? This is your

2:32:58pentic class. Now why I have given

2:33:00patient data? Because inside that I have

2:33:02prepared the schema. That means this add

2:33:05patient data function takes the data.

2:33:09Okay, take the data and the what is the

2:33:11data format? Data format should be uh

2:33:14definitely there would be a variable

2:33:15called name and name name should be

2:33:17string and there should be another

2:33:19variable called age. Edge should be

2:33:21integer type. Okay. So that's how we are

2:33:23giving the type. But initially we are

2:33:25giving the data like that. We are giving

2:33:27the name and we are mentioning okay this

2:33:29should be the string. Then we are giving

2:33:31the s this should be the integer. Okay.

2:33:33But here we're doing the manual stuff.

2:33:34But here right now we just created a

2:33:37identic class and we're passing this

2:33:38particular class object and it will

2:33:40automatically understand okay what to do

2:33:42what should be the format inside that

2:33:43what should be the structure inside

2:33:44that. This is called actually schema.

2:33:46Okay schema means the data and the date

2:33:48type of the data. Okay this is called

2:33:50actually schema. Now once it is done now

2:33:53simply here I can add the present

2:33:55information. So simply I can print

2:33:59the information. So right now see I

2:34:00don't I can't actually directly print

2:34:02the name right I can't directly print

2:34:04the name here because we are not taking

2:34:08the name as a name variable we are

2:34:10taking as a patient right so we can call

2:34:12like that patient dot name because

2:34:14inside this particular patient data

2:34:17object we'll be having the variable name

2:34:19okay now we'll do for the same we'll do

2:34:22for the age also so print patient edge

2:34:25okay now once it is done I'll tell data

2:34:27inserted successfully to the database So

2:34:30similar wise I'll create for the update.

2:34:34I'll create for the update. So let's

2:34:36make it as update.

2:34:39Okay. Now it will again take the same

2:34:42patient uh uh patient data object that

2:34:45means the pentic object

2:34:47and once it is done we'll try to tell

2:34:51data updated successfully in the

2:34:53database. Okay. And everything will

2:34:54remain same. Now let's try to see

2:34:57whether it is working or not. Now simply

2:34:59what I will do first of all let's say I

2:35:00will add the patient data

2:35:04okay add the patient data so inside this

2:35:07add patient you have to pass this

2:35:08patient information okay patient because

2:35:11this is my pentic object we already

2:35:14created with the help of this pentic

2:35:16class now we'll try to pass it there now

2:35:19see bp uh 25 data added successfully to

2:35:22the database now let's say I want to

2:35:24update the data simply I'll call the

2:35:25update patient data inside that I will

2:35:27again pass the patient object. Now see

2:35:30the patient information is already

2:35:33updated. Now let's say in updated

2:35:39okay so what I can do instead of patient

2:35:42uh I can give patient one let's say you

2:35:44can create multiple patient that time

2:35:47uh you can do that okay patient one

2:35:49patient two like that you can do so

2:35:51let's say this is the patient one

2:35:52information okay this is patient one

2:35:54information this is updated okay so

2:35:56whenever you are doing the update

2:35:58operation so make sure you are giving

2:36:01any other name so simply what I can do

2:36:06see before giving to the update function

2:36:10first of all you have to validate with

2:36:12the help of pidentic so let's say now

2:36:13name is equal to Alex

2:36:16uh let's say this is patient two we are

2:36:19um we are giving this particular raw

2:36:21data to the pentic okay pentic object

2:36:24because here I already told you inst uh

2:36:26instantiate the model with the raw input

2:36:29data so we are initiating the model okay

2:36:32the pentic model with the raw data. The

2:36:34raw data we are passing here. Okay, raw

2:36:36data we are passing here and this is uh

2:36:38doing the validation. If everything is

2:36:40fine uh it will tell okay you can

2:36:42continue then we are giving to the

2:36:45function. Now see this function is

2:36:46working fine. Okay it should be patient

2:36:49two not patient one it should be patient

2:36:51two. Now see now it's become Alex. Okay.

2:36:55Now the things I want to show you the

2:36:57benefit actually uh using this pentic

2:36:59which is that let's say uh by mistake

2:37:02you have given um let's say string 25.

2:37:06Okay you have given string 25 instead of

2:37:08giving uh 25. So now what we will do

2:37:11let's say if I execute the code see pyic

2:37:14will not give you any kinds of

2:37:16exception. Instead of that what it will

2:37:17do it will try to convert this string 25

2:37:20to integer. Okay so you don't need to do

2:37:22it manually. So by default uh actually

2:37:25internally this pyantic will handle this

2:37:27kinds of scenario. So this will try to

2:37:29convert to the um integer type. Okay,

2:37:32you don't need to manually do that. So

2:37:33here also you can do the same thing.

2:37:35Let's say if I give string 25 your data

2:37:37should be updated successfully. Okay.

2:37:39Now let's say in future you want to add

2:37:41any other information. So you don't need

2:37:43to update these at the code that time.

2:37:45Okay. Manually. So here let's say you

2:37:47want to add the weight

2:37:50uh weight for the patient. Okay. So

2:37:52let's say weight usually I can mention

2:37:54with the help of float data type because

2:37:56weight should be float. Now simply what

2:37:58I can do I can also print the weight

2:38:00here.

2:38:01Okay. Now here also I can do the same

2:38:04thing. I can update the weight. And here

2:38:07you can give the weight information

2:38:09right. Let's say weight is uh 70.5 kg.

2:38:13Now if I add the information see still

2:38:17it will be working. Okay, I'm getting

2:38:19one error because whenever I'm updating

2:38:21the information here, I haven't passed

2:38:23the weight. I have to pass the weight

2:38:24here. Now see, it will work

2:38:26successfully. Okay, so there should not

2:38:28be any kinds of problem. Okay, but in

2:38:30our previous example, you'll see that

2:38:32every time I have to handle this kinds

2:38:33of scenario manually. But in pyentic, we

2:38:36don't need to handle that. Okay, we'll

2:38:37try to just prepare a pyic class and in

2:38:41this particular class, we'll try to

2:38:42handle each and everything for me. Okay,

2:38:44but you have to make sure whenever you

2:38:45are giving your raw data, try to first

2:38:47of all validate. Okay, try to first of

2:38:50all validate with uh your pyic then try

2:38:52to pass to the main function. Now I

2:38:55think this particular concept will be

2:38:57clear enough the strict and lax mode. So

2:38:59basically what it do it attempts uh to

2:39:02uh co uh qu cos the data example

2:39:07converting uh this string one to integer

2:39:10one that means automatically try to

2:39:12convert for you. Okay. But if you want

2:39:14to raise the exception, you can also do

2:39:15that. Okay. Everything is possible here.

2:39:19And one more thing I want to show you.

2:39:21Now, let's say if you want to add um any

2:39:25other type data, let's say instead of

2:39:27giving this uh uh let's say this is this

2:39:30is a number. Okay. Now let's say you are

2:39:32not giving the number, you are giving

2:39:34like that 70.

2:39:37Okay. Say 70.

2:39:41Okay. 70. Now see if I execute it will

2:39:44throw you the error. Okay, it will tell

2:39:46input should be a valid number. Unable

2:39:49to parse the string to a number because

2:39:52we can't convert this uh this text to

2:39:55the number, right? This is not a number.

2:39:57This is a other text. This is a like

2:40:00kinds of word we are passing. Okay. But

2:40:03it should be a number. Whether you are

2:40:05giving as a string or integer doesn't

2:40:08matter. It should be as a number. So if

2:40:10you're giving as a number that time it

2:40:12will be able to convert it to the

2:40:14integer. Okay. But if you're giving

2:40:16completely text type it will not allow

2:40:17that time. Okay. So yeah that's how the

2:40:20things work. But this is a very uh basic

2:40:22type example I have given. Now we'll try

2:40:25to move to the advance of this pentic. I

2:40:27will try to see like more depth

2:40:29validation how it can be done. We can

2:40:31add so many parameters so many stuff

2:40:33here. we can add so many let's say um

2:40:36verification and we can uh make it like

2:40:38more powerful. So guys so far we have

2:40:41seen a very easy example uh of the

2:40:45pentic. Now we'll try to make it uh

2:40:48slight complex. Okay. Uh so what I'm

2:40:51going to do maybe I can copy the same

2:40:55uh same class.

2:40:58So this is the class. So I'll copy this

2:41:02or I can copy the entire

2:41:05code

2:41:08and I will paste it here. Okay. Now see

2:41:10here what I'm going to do instead of

2:41:12taking name age and weight maybe I'll

2:41:15take some more uh extra variable. Let's

2:41:18say here I'll take um

2:41:21another uh another data called married.

2:41:24Okay. Whether this patient is married or

2:41:26not.

2:41:29married. So this should be a boolean um

2:41:33data type because either patient should

2:41:36be married if married it should be yes

2:41:38either no. So if yes or no comes into

2:41:41picture so we can consider in boolean

2:41:42type data type then I can take another

2:41:46um data which is allergies. Okay whether

2:41:51patient is having allergies or not. Okay

2:41:53if he or she is having allergies. So

2:41:56what kinds of allergies uh he or she is

2:41:59having? See allergies is is it's not a

2:42:01single let's say type. Okay, there

2:42:03should be multiple types. Someone got

2:42:04allergies from let's say dust. Someone

2:42:07will be getting allergies from any kinds

2:42:09of food, right? It should be different

2:42:11different let's say type. So

2:42:12[clears throat] that's why we'll be

2:42:13taking as a list. Now you can ask me why

2:42:16I'm taking this particular things as a

2:42:19list. Okay? Because it should be list of

2:42:22allergies. Okay? uh let's say uh one

2:42:24patient will have uh might have multiple

2:42:26allergies okay type or let's say one

2:42:29patient would have only single type okay

2:42:30so instead of taking a single type maybe

2:42:32we can take a list of the type uh I mean

2:42:35list type so that if one patient is

2:42:38having multiple allergies so I can

2:42:39easily store them right but if you're

2:42:41taking list so you don't need to

2:42:44directly um I mean write this list okay

2:42:47if you are I mean writing in that way it

2:42:49should it it won't be working so for is

2:42:52what you have to do you have to import

2:42:54this list from the typing module. So you

2:42:56just need to import list from typing

2:42:58module. So there is a module called

2:42:59typing and in this typing we'll we'll be

2:43:02having all kinds of typing okay inside

2:43:04python. So we are importing the list.

2:43:06Okay, we're telling we need a list. Now

2:43:08it should be a list. Okay, so here we'll

2:43:10be telling this should be a list type.

2:43:14Okay, now I can't actually write list

2:43:17like that because see what will happen

2:43:19if I open up my blackboard.

2:43:23See patient is having allergies. Okay,

2:43:26all allergies is nothing but it's a

2:43:28list. Okay, it's a list. Now the thing

2:43:31is that inside that we have to write the

2:43:34allergist type. Let's say this is dust

2:43:36type and what is dust? Dust is a string

2:43:40right now let's say food. Okay food is

2:43:43also a string. Okay so type cannot be

2:43:47any kinds of number. Okay it should be a

2:43:49definitely a string type. That's why I'm

2:43:51telling

2:43:53u the list we are creating of the

2:43:54allergies inside the list will be

2:43:57storing a string type data. Okay.

2:44:00because allergist type should be always

2:44:01a string. So that's how whenever we are

2:44:03creating any application we have to

2:44:05think about the data type what should be

2:44:06the data type okay uh the data we are

2:44:09getting what should be the type okay you

2:44:11have to think about in that way so

2:44:13allergies should be list and inside list

2:44:16the data we'll be storing it should be

2:44:17string okay that's why we can uh write

2:44:21this particular syntax and this is

2:44:22called schema okay we are creating the

2:44:24schema right now and we are extending

2:44:26this particular pentic model I think you

2:44:29get it right now I'll add another let's

2:44:33say data which is contact

2:44:39okay contact information. So contact

2:44:41information let's say I want to keep it

2:44:43as a dictionary. Uh let's say someone

2:44:45will pass let's say um contact

2:44:47information like that. Uh let's say

2:44:52um he or she will be writing in that

2:44:53way. Let me tell you.

2:44:57So contact we want to take it in that

2:45:00way. Let's say contact info is equal to

2:45:02it should be a dictionary. So inside

2:45:04that first of all user will pass the

2:45:06email address. Okay. So let's say this

2:45:09is the email address.

2:45:16Okay. And this is my phone number.

2:45:23Okay. Phone number. Let's say this is my

2:45:25phone number like that. Okay. I think

2:45:29you are getting and this should be also

2:45:30string type data. Okay. So that's why uh

2:45:33I'll be taking this contact info as a

2:45:35dictionary. Now inside this dictionary

2:45:40uh I'm going to mention okay I'm going

2:45:42to mention what kinds of data I want to

2:45:45take

2:45:47dictionary should be

2:45:52string type okay key should be also

2:45:54string value should be also string okay

2:45:56that's why we're mentioning the data

2:45:58type and this is a dict and again I

2:46:01can't use the python uh default

2:46:03dictionary function I have to import

2:46:05from this typing Okay. So simply I'm

2:46:08going to import this dict. And now I'll

2:46:10mention it here. Okay. That's it. Now

2:46:15let's try to um execute. But before

2:46:18executing I think you have to know we

2:46:20have to prepare the raw data. Now let's

2:46:22try to prepare the raw data. So we are

2:46:24already getting the suggestion. We'll

2:46:25accept that. So here you can see we have

2:46:28added

2:46:30uh we have added uh this uh one

2:46:34married. Yeah. married. So this is we

2:46:38have added

2:46:40this is true.

2:46:42Uh you can also give it as a string. You

2:46:44can also give it as a boolean. It

2:46:46doesn't matter. It will work. Then uh

2:46:49you can uh see we are giving the

2:46:51allergies. So allergies we are giving as

2:46:54a list. As you can see we are having an

2:46:57um allergies from peanuts and selffish.

2:47:00Okay. Then uh we are giving the contact

2:47:03info. Let's say this is my email address

2:47:06and this is the phone number. Okay. Now

2:47:08let's try to execute uh whether uh it is

2:47:11able to work or not. See I'm not going

2:47:14to update uh these are the function. You

2:47:15can if you want you can also update with

2:47:17all of these variable. You can print all

2:47:18of them but uh let's do it quickly. So

2:47:21here I'm going to do I'm going to simply

2:47:23execute. Okay. Now see uh information is

2:47:26added successfully. That means it's

2:47:28working fine right now. But in some case

2:47:31let's say if I am giving instead of

2:47:34let's say uh this u allergies instead of

2:47:37giving this string if I'm giving any

2:47:38kinds of integer number let's say 23

2:47:41okay it will give you the error okay it

2:47:44will tell one validation error from this

2:47:48patient data that means the pentic model

2:47:50so allergies it is coming from the

2:47:52allergies okay allergies field input

2:47:55should be a valid string not the integer

2:47:57okay so that's how You can specify this

2:48:00one. So I'll come here again. I'll

2:48:03change it now. Execute. See it will work

2:48:06perfectly. Okay. So that's how any okay

2:48:10any kinds of type you can mention inside

2:48:12your pentic model. Okay. Any kinds of

2:48:15speak uh schema you can mention inside

2:48:17your pyic model. Everything is possible

2:48:20here. Okay. So guys uh we have seen um

2:48:23another example. uh now I'm going to

2:48:26talk about uh this required and optional

2:48:28fields. Okay, what is this required and

2:48:31op optional fields? Let's try to

2:48:32understand. See whenever we are creating

2:48:34this schema right we are creating this

2:48:36pentic model uh that time uh whatever

2:48:40data we are taking right whatever data

2:48:42we are uh let's whatever schema we are

2:48:45um writing we have to give all of this

2:48:47field right we have to give all of this

2:48:49field whenever we are preparing the raw

2:48:51data so if you skip any of them okay so

2:48:53if you skip any of them what will happen

2:48:55so let me show you the example I'll copy

2:48:57this code I'll add it here let's say

2:49:00these are my schema right let's say I I

2:49:02I will let's say um I will let's say um

2:49:07not provide this allergies. So what will

2:49:09happen? So if I remove the allergies

2:49:10from here,

2:49:13let's say I will completely delete this

2:49:15allergy field.

2:49:18Okay, I'll delete this. Now if I execute

2:49:20it will throw you an error. Okay, it

2:49:21will tell one validation error from uh

2:49:23patient data allergies field required.

2:49:26Okay, but you haven't given this

2:49:27particular data. So this is the issue.

2:49:29Okay. Now let's say uh I want to make it

2:49:32as optional. Let's say if user is not

2:49:34also giving this allergy, it's

2:49:36completely fine. It should be completely

2:49:38optional. That means my code will still

2:49:40execute. So for this what I can do? I

2:49:43can make it optional. So to make it

2:49:45optional, simply you have to import

2:49:49optional from typing. Okay, optional

2:49:51from typing. And you have to pass this

2:49:54data type inside the optional.

2:49:57Okay, inside the optional.

2:50:00And one more thing you have to define

2:50:02which is one default value which is

2:50:05none. Okay. So I'm getting one error.

2:50:08Let me check.

2:50:12Okay. The error I'm getting it should

2:50:13not be parenthesis. It should be this

2:50:15square bracket. That's why that error

2:50:18was coming. Now it's fine. Okay. Now

2:50:20this allergies uh field should be

2:50:21optional. If you are also not giving

2:50:23it's completely fine. uh um I mean it

2:50:26will still work and by default this

2:50:29allergies uh field uh will get one value

2:50:32which is none. I can show you by

2:50:33printing that. So what I can do I can

2:50:37print it.

2:50:39So just for simplicity let let's remove

2:50:41this function. Okay I'll only keep one

2:50:45function. So here I'll just try to print

2:50:48patient

2:50:50dot allergies.

2:50:53Okay. Now if I see show you my data

2:50:56there

2:50:57uh there I already removed this

2:50:59allergist field. Now if I still execute

2:51:02it will work and you can see this

2:51:04allergies parameter is getting none.

2:51:05Okay, this is getting none because the

2:51:07default uh default value I have set as

2:51:10none. Okay and it is completely

2:51:12optional. If you give also it will work.

2:51:14Okay, if you skip it, it will also work.

2:51:17Now let's say if I give this value

2:51:20so after married I think

2:51:24I'll copy from my previous example this

2:51:27special data

2:51:31and I will pass it here.

2:51:34Okay. Now here I have given this

2:51:35allergies field. Now if I execute still

2:51:38it will work but now it will take the

2:51:40value because we have given the value

2:51:42itself. Okay. But if you don't give it

2:51:46still it will work but it will take as a

2:51:48none. Okay. Now one more thing I told

2:51:50you about the default value. See you can

2:51:52also set the default value to any kinds

2:51:54of field. Let's say in the married one I

2:51:56can set any kind of default value. Okay.

2:51:58Let's say if user is not giving any

2:51:59kinds of value still it will take the

2:52:01default value. Let's say married is

2:52:03equal to by default I will be make it as

2:52:04false. Now if I let's say remove this

2:52:09married field as well still it will

2:52:12work. So that particular okay I can

2:52:15print and show you

2:52:19here I'll print it

2:52:24patient domarit

2:52:26now see by default it is coming as a

2:52:28false okay that means you can also pass

2:52:30any default value if you want. Okay. And

2:52:33you can also make any kinds of field as

2:52:34optional. Okay. This is also possible

2:52:37here. So guys, we have seen the optional

2:52:40and required field. Now I'm going to

2:52:42show you another uh example which is

2:52:45related data validation. So in Pentic, I

2:52:48told you uh we can also perform the data

2:52:51validation if you want. Uh see uh data

2:52:54validation means let's say the data you

2:52:56are giving uh you can also validate

2:52:58whether it is in same uh format or same

2:53:01let's say it follows the same uh same

2:53:04structure or not. Okay. So for an

2:53:06example, I'm going to uh let's say

2:53:12take one example.

2:53:14I'll copy the same code. So this is like

2:53:18becoming big line. So what I can do

2:53:19maybe I can just press an enter

2:53:23just to make it as a little bit shorter.

2:53:25Okay. So what I'm going to do I'm going

2:53:27to

2:53:29take another variable

2:53:32called email. Okay. As of now let's try

2:53:35to consider um I'm also

2:53:39taking one informations from the

2:53:40patient. Uh that means his email and

2:53:43here I'm going to remove the email.

2:53:45Okay. So in contact information let's

2:53:47only I'm going to take his phone number.

2:53:49Okay. This is fine for us. So email I'm

2:53:52going to take it as se separately. So

2:53:54what I can do you can tell me okay I can

2:53:57make it maybe string because email

2:53:59usually would be any kinds of string

2:54:00type data yes or no right but if I'm

2:54:03taking as a string type data so what

2:54:04will happen let me show you so let's say

2:54:06I'm taking as a string type data email

2:54:10and now uh after name I have to pass the

2:54:13email so let's say email

2:54:19okay email should be email so this

2:54:22should

2:54:27H.

2:54:29Okay. So let's say BP at the rate

2:54:31example.com or let's say B at the rate

2:54:34uh gmail.com. Okay. Let's say this is my

2:54:38email. It's completely fine. Okay. Now

2:54:40let's see if I execute it will work. See

2:54:42it is working fine. There is no error.

2:54:44Okay. But let's say if I not giving this

2:54:48at the rate sign. Now if I still let's

2:54:50execute my code, it will be working.

2:54:53Okay, although this email format is not

2:54:55good. Okay, although this email format

2:54:58is not correct but still my uh code is

2:55:02working. Okay, then what is the use of

2:55:04that? So here actually data validation

2:55:06comes into picture. So basically see if

2:55:08I am doing manually with the help of

2:55:10Python. So you can tell me okay I can

2:55:13use regular expression library and I can

2:55:14validate whether this email it is

2:55:17correct or not. Okay, I think you know

2:55:19with help of regular expression also we

2:55:20can handle this scenario but we are

2:55:22using the pyic. Okay, and definitely we

2:55:25are using it for my benefit. Right. So

2:55:27in pentic instead of giving this email

2:55:30as a string you can also give this

2:55:34particular format um to the email

2:55:37format. Okay. So inside this pyic we're

2:55:40having another function called email

2:55:43string email str. Okay. So what this

2:55:46email list here does it does the data

2:55:47validation that means it will

2:55:49automatically check whether you are what

2:55:52kinds of email you are giving it is in

2:55:53correct format or not. If it is not

2:55:55correct format that that time it will

2:55:56throw you the error. Okay. Now instead

2:55:58of giving this uh string maybe I can

2:56:00give this email list here. Now what will

2:56:02happen now? See if I execute this code

2:56:06if I execute this code it will throw you

2:56:08error. The error should be uh this

2:56:10email. Okay value is not valid email

2:56:12address. Now unless and until I'm not

2:56:14giving the valid email address. Let's

2:56:16say if I give this at the red sign right

2:56:18now now it will work perfectly. Okay,

2:56:20there should not be any kinds of issue.

2:56:22So that's how you can perform the data

2:56:23validation. Before giving the data, we

2:56:25can validate whether data we are passing

2:56:27it is it is um incorrect format or not.

2:56:30It is validated or not. Okay, I think

2:56:32you get now similar uh um similar things

2:56:36you can do with another let's say data

2:56:38validator.

2:56:40uh the name of the data validator is

2:56:41like any URL. Okay, any URL actually

2:56:44validates any kinds of u um let's say

2:56:47web URL. The web URL you are passing

2:56:49whether it is uh in correct format or

2:56:51not. So let's say uh I'm also giving the

2:56:54patient uh LinkedIn information. Okay.

2:56:57So let's say this is uh this is a IT uh

2:57:00IT patient hospital. We are only taking

2:57:03the IT IT patients. Okay. it I it

2:57:06background related patients and we are

2:57:07also taking their LinkedIn profile okay

2:57:09to our database so what I'm going to do

2:57:11maybe I can create another field here

2:57:13I'm going to name it as LinkedIn

2:57:16uh link then

2:57:19okay

2:57:21LinkedIn URL

2:57:27um yeah and the type should be any URL

2:57:30because this should be a URL format

2:57:32right any URL now here what I'm going to

2:57:34do I'm going to pass a URL, LinkedIn

2:57:37URL. So I'm already getting a

2:57:39suggestion.

2:57:42So maybe I can hit another enter.

2:57:50Okay. So here we are taking the URL as

2:57:53you can see w https uh/ww

2:57:57um dot uh or let's say I will copy my

2:58:00LinkedIn profile. So this is my LinkedIn

2:58:03profile.

2:58:05uh I will add it here.

2:58:09Okay. Now see if I execute this will

2:58:12this thing will work fine. Okay. There

2:58:13should not be any error. But let's say

2:58:15if I'm not giving this https. Okay. If

2:58:19I'm only giving this ww or let's I'm

2:58:22also removing this ww. Okay. Now if I

2:58:23execute see it will give you the error.

2:58:26It is telling input should be a valid

2:58:27URL. Okay. Otherwise it should not be

2:58:30working. So this is the work of data

2:58:31validator. Okay. That's how in ping

2:58:34pyntic there are some default validator

2:58:36um validator uh are present. Uh you can

2:58:40simply see the documentation and you can

2:58:42do the validation. Okay, if you want

2:58:44this is possible here. Now one more

2:58:46thing I will show you which is uh let's

2:58:48say uh here we used uh some of the um I

2:58:52mean already available uh data validator

2:58:56um validator like email uh email string

2:58:59then any URL okay but let's in some

2:59:02cases uh there should be some of the

2:59:04data uh and for those data this kinds of

2:59:07validator won't be available okay that

2:59:10time how you can actually validate those

2:59:12data let's say uh here what I can I can

2:59:16show you one example. Let's say here the

2:59:18name we are passing um I want to make a

2:59:21restriction and the maximum

2:59:25length of a name should not be more than

2:59:28uh 50 character. Okay. That time how I'm

2:59:30going to do this kinds of validation.

2:59:32Okay. So for this we can use the custom

2:59:35um custom validator and we can write

2:59:38this custom validator with the help of

2:59:40one uh one amazing actually function

2:59:42called field. So what you can do

2:59:46uh you can simply import this field from

2:59:49pentic.

2:59:51So you have to import this field from

2:59:52pentic.

2:59:55Just a minute. Yeah, you have to import

2:59:58this field from pentic. Now here simply

3:00:01you just need to define this. Okay,

3:00:03let's say name that should be string.

3:00:06And here I'm going to write the field.

3:00:11Okay, field. inside the field I'm going

3:00:13to tell the maximum length of a name

3:00:17should uh should be only 50 character

3:00:19okay it should not be above 50 character

3:00:22okay now let's say if I execute my code

3:00:26it will work fine completely because

3:00:28right now the name I'm using it is less

3:00:30than 50 character but if you increase it

3:00:33let's say I will add something big

3:00:40okay now if I execute ute you'll see

3:00:42that it will throw an error. The string

3:00:44should be have most um 50 character.

3:00:47Okay. So that's how you can do the data

3:00:50validation uh in your custom data if you

3:00:53want. So like that I can also let's say

3:00:55set to any another field. Let's say I

3:00:58want to restrict the age uh age field

3:01:01here. I want uh whatever age uh user is

3:01:04passing it should be it should be

3:01:07greater than zero and uh lesser than

3:01:10actually let's say 100. Okay. So for

3:01:12this what I can do? I can add another

3:01:14field here. Uh I'm going to write is

3:01:16equal to field. So there is a parameter

3:01:19called GT. Okay. GT means greater than

3:01:23greater than zero. And there is another

3:01:24parameter called uh LT. Okay. LT means

3:01:28lesser than. So here I'm going to tell

3:01:30let's say 100. Okay. Now if let's say

3:01:33user is giving the age let's say minus

3:01:3725. So this is definitely lesser than

3:01:40zero. So that time it will give you the

3:01:42error because input should be greater

3:01:44than zero. But we are giving uh lesser

3:01:47than zero. Okay. Now if you're giving

3:01:49the correct information, it is working

3:01:51fine. Okay. Like that we can also let's

3:01:53say

3:01:55add this kinds of validator inside our

3:01:57allergies. Okay. Let's say this is the

3:01:59list of the allergies we are taking and

3:02:00all all of the values should be string.

3:02:02Now we can also define the field here.

3:02:05So I'm going to write the field.

3:02:08Okay, field. Uh so here let's say the

3:02:12allergies uh we are taking uh from the

3:02:15user. So only

3:02:18uh user can pass actually let's say

3:02:20maximum five five allergies. Okay, five

3:02:23allergy list. So that time I can define

3:02:25the max length

3:02:27should be

3:02:29five. Okay. Now let's say if user is

3:02:33giving more than that

3:02:35okay allergies I make it as a optional

3:02:38so what I can do I can maybe add the

3:02:40data here previously I had the allergist

3:02:43maybe I can copy H so from here I can

3:02:46copy

3:03:01Okay. So here I can add it after

3:03:05married I can add the allergies.

3:03:09Married also removed right previously.

3:03:12Okay. Because this was optional. So here

3:03:13I can add the allergies.

3:03:17It should be a comma. Now if you're

3:03:19giving more value here,

3:03:28okay, that time it will throw you error.

3:03:31Okay, because it should be five item but

3:03:33we are giving more than five. Okay, so

3:03:36this is another issue. So let me

3:03:39Yeah, now it's working fine. Okay. So

3:03:43that's how guys we can uh set our custom

3:03:45data uh validator. Okay. We can set with

3:03:48that of this field. Now this field you

3:03:51can also use for another purpose uh to

3:03:53add some other metadata. Okay. To add

3:03:55some other informations about the schema

3:03:58about the pentic model. Okay. I'm going

3:04:00to show you.

3:04:04So guys now let's try to understand um

3:04:07apart from this um um data validation uh

3:04:11like custom data validation okay where

3:04:14we can use this field okay so see field

3:04:17we can also use for the metadata

3:04:20information let's say whenever we are

3:04:23creating the schema you can also pass

3:04:24any kinds of metadata here okay other

3:04:27informations like description okay some

3:04:30other example you can provide here so

3:04:32that whenever this code is using any

3:04:34other programmer or let's say other

3:04:36let's say uh other person they can

3:04:40easily understand what this field does

3:04:42okay they can easily understand now see

3:04:44the way we have written right now this

3:04:46is completely fine but it does it

3:04:48doesn't have any kinds of information

3:04:49about the name let's say what name does

3:04:51but if I add some other metadata like

3:04:54description and all by reading the

3:04:56description I think other person will

3:04:57easily understand what to do right so

3:04:59for this here I have uh given another

3:05:01demo I have already written this

3:05:02particular demo

3:05:03So see here if you want to write any

3:05:06kinds of metadata

3:05:08metadata um inside your um schema that

3:05:11time you can use this particular field

3:05:14uh function but with that you have to

3:05:16use another function called annotated.

3:05:18Okay so you have to import this

3:05:19annotated from typing. So now you have

3:05:22to write the syntax like that. Okay

3:05:23previously I was writing like that.

3:05:26Okay, I was directly giving the string

3:05:27field and all but right now if you want

3:05:29to write the metadata first of all you

3:05:31have to give the annotated object then

3:05:33inside that you have to define the data

3:05:35type okay the type int let's say this is

3:05:37a string then you will be giving the

3:05:39field so here my field was like maximum

3:05:42length 50 now here I can pass some other

3:05:44metadata like name or like the title

3:05:46okay so name of the patient so the uh so

3:05:49that means this particular name field is

3:05:50nothing but it's a name of the patient

3:05:52and you can also give the description

3:05:54okay what this does this give the name

3:05:56of the patient in less than 50 character

3:05:58then you can also provide some example

3:06:00okay so that by seeing this particular

3:06:02example your programmer can understand

3:06:04okay this actually works like that so

3:06:06here I have given example like bap and

3:06:08Alex so this is less than 50 characters

3:06:10okay so similar wise you can uh use this

3:06:13for all the field you are having let's

3:06:15say I have given some other example I

3:06:17have added this inside the weight okay

3:06:19the same uh see here we mentioned like

3:06:23this is flot here We have given the

3:06:26field. Okay. Right now I'm going to

3:06:28remove this trick parameter. I'm going

3:06:29to tell you why this is required. Now

3:06:32here you can also provide the

3:06:33description. Okay.

3:06:36Uh description and all everything can be

3:06:39done. Okay. So this should be mentioned

3:06:41inside field variable. So here you can

3:06:43mention like description. Okay. Weight

3:06:47of the patient in kg. Then married also

3:06:50I have given the same thing annotated.

3:06:52Then this is boolean type field. uh I

3:06:54have given the default value. So see if

3:06:56you want to give the default value. So

3:06:57previously how I was giving I was giving

3:07:00like that let's say I was just giving a

3:07:02equal sign and giving the value but

3:07:05right now you're using this field. So

3:07:07inside field itself you can give the

3:07:08default value. Let's say in default is

3:07:10equal to none. So by default it will

3:07:11take as a none. Let's say if you're

3:07:12giving any other let's say true false it

3:07:14will take as true false. Okay. Now here

3:07:17I have given the description. Okay. Now

3:07:18for allergies also you can do the same

3:07:21thing. You can mention like okay this is

3:07:24uh optional because previously this

3:07:26allergies was optional and the data type

3:07:29is list uh and inside that we are taking

3:07:31the in uh string type data field is uh

3:07:35default value we are setting as a none

3:07:37you can also give the default value if

3:07:38you want and maximum length should be

3:07:40five okay so for contact details also

3:07:42you can do the same thing but I left

3:07:43this part okay now see if I execute

3:07:47this is giving you an error the error is

3:07:52uh field required contact details.

3:07:56Okay. So the error is that here I have

3:07:58written contact details but here I have

3:08:00given contact information. So here you

3:08:03have to give the same name same name.

3:08:05Now if I execute it will be working

3:08:06fine. Okay. Now one more thing I wanted

3:08:08to show you which is this trick

3:08:10parameter. Let's say I told you um in my

3:08:13previous demo I think you remember uh

3:08:16whenever let's say we are giving let's

3:08:17say weight is equal to a string number.

3:08:20Okay. But here what is the type I have

3:08:22mentioned? Weight is equal to it should

3:08:24be a float number. So by default my

3:08:26pentic is converting this particular

3:08:28string to a float because this is the

3:08:30number. Okay. But always it is not

3:08:33necessary to convert it. Okay

3:08:35automatically convert it. Let's say you

3:08:36are creating an application there you

3:08:38only want to take this kinds of let's

3:08:41say number as a string. That time you

3:08:43should not be convert to the float data

3:08:45type. That time you can uh write one

3:08:48parameter.

3:08:49Uh so here you can write a parameter the

3:08:52parameter name is strict. Okay strict.

3:08:55So you have to make it as true. Okay. So

3:08:58if you make it as true. So what will

3:08:59happen? You have given uh float type.

3:09:02But if you are trying to give this uh

3:09:05string type it will throw you error. See

3:09:07it is throwing you error. It is telling

3:09:09weight uh should be uh input um it it

3:09:13should be a valid number float type

3:09:14number. But we are giving string type.

3:09:16Okay, that's why it's not working. So

3:09:18now if I make it as float. Okay, so it

3:09:21will be working right now. So if you're

3:09:23giving integer also again it will throw

3:09:25an error because here I make it as a

3:09:27strict. Okay, strict parameter. So

3:09:29that's how you have all kinds of

3:09:31customiz customizable option inside

3:09:33Pythic. Whatever you want, you can do

3:09:36everything here. Okay, this is possible.

3:09:39So guys uh we have seen some uh data

3:09:42validator uh validation actually

3:09:44strategy how we can do that. Now I'm

3:09:48going to uh discuss about this uh um

3:09:51validator um in advanced level. Uh we

3:09:55call it as a field validator. Okay. So

3:09:57see so far the validation we have done

3:10:00uh this was like the simple validation.

3:10:02Uh so we used some of the predefined

3:10:04validator and uh we also like uh given

3:10:08some some of the like um custom

3:10:11constraint there. Okay. But let's say uh

3:10:14you have some complex scenario where you

3:10:17have to do uh a complete field

3:10:19verification. Okay. So for an example

3:10:22let me uh let me tell you like um the

3:10:25problem statement. The problem statement

3:10:26is that let's say um the application we

3:10:30have created um let's say this is a

3:10:32hospital application. So basically this

3:10:35stores the patient information. Okay.

3:10:39Then it performs the diagnosis to the

3:10:40patients. Okay. Now just try to consider

3:10:44this hospital has also connect

3:10:45connection with some of the bank. Let's

3:10:47say uh u some of the bank it has the

3:10:50connection. Let's say HDFC bank it has

3:10:53the connection. ICICI bank it has the

3:10:56connection okay now what happens if it

3:10:59is having the connection with the banks

3:11:01let's say whatever patients are coming

3:11:03from these are the banks so they will be

3:11:05getting 50% discount okay they will be

3:11:08getting 50% discount from this

3:11:09particular hospital and if the patient

3:11:12is not from these are the banks so they

3:11:14have to pay 100% about the money so this

3:11:17kinds of let's say validation I want to

3:11:19add inside this application now how to

3:11:21do that so definitely this is little bit

3:11:23complicated created. So for this I have

3:11:25already created the code as you can see

3:11:28I just copy pasted the same code but

3:11:30what I have done I just redu uh reduced

3:11:33the u I mean some extra coded uh so that

3:11:36you can uh understand easily see what I

3:11:38have done uh the previous uh uh

3:11:40validation I showed you with the help of

3:11:42annotated I removed each and everything

3:11:44I just taken my previous example okay

3:11:46previous this clean example so here you

3:11:49can see this is the cleaned example okay

3:11:51I have taken the name email age married,

3:11:54allergies, contract. Okay, these are the

3:11:55things I have taken. Now let's say I

3:11:58want to check the email here. Okay, I

3:12:00want to check the email here because

3:12:02only I will understand whether this

3:12:05patient uh he's from any bank or not.

3:12:08How I'm going to understand? Because

3:12:10patient will give their email address,

3:12:12right? So if I'm a like a very uh I mean

3:12:16common person, so I'll give my common

3:12:18email address like at thegmail.com and

3:12:20all right. But if anyone is working in

3:12:23the bank so definitely they will be

3:12:25having uh their bank domain email

3:12:27address okay let's say hdfc.com or

3:12:30icici.com okay like that so email is the

3:12:33best u field I can uh do this kinds of

3:12:36validator so for this what you have to

3:12:38do you have to write a custom function

3:12:40okay so the function name is I have

3:12:43given email validator okay you can give

3:12:44any name but I have given email

3:12:46validator and whenever you are creating

3:12:48this function make sure you have to give

3:12:50two decorator One is the field

3:12:52validator. So field validator you have

3:12:54to import from pientic. So you can see I

3:12:56have imported from pientic. Uh field

3:12:58validator and inside that you have to

3:13:00mention which field you want to

3:13:02validate. So here I'll tell I want to

3:13:03validate this email. Make sure the

3:13:05spelling should be same. Okay. Email

3:13:07field should be validated and another

3:13:09decorator you have to get called class

3:13:10method because this is the method of

3:13:12this particular class. That's why this

3:13:14class method. Now this is my function.

3:13:16So this function takes two argument. One

3:13:18is the class class object itself. Okay.

3:13:20And this is the value. Value means uh

3:13:23let's say user is giving the email right

3:13:25email address let's say abcdgmail.com

3:13:28or sdfc.com. Okay. So this is called

3:13:31actually value. So this particular value

3:13:32will come and I have to validate this

3:13:34particular value. Okay. So for this what

3:13:36I have done I created a list uh I named

3:13:39it as valid domains. So here I just

3:13:41listed all of the bank uh let's say

3:13:43domain. Let's say sdfc.com ici.com. You

3:13:47can also give any other uh bank domain

3:13:49if you want. Then what I'm doing first

3:13:51of all the value I'm getting from the

3:13:53user let's say whatever email user is

3:13:56passing okay I'm just trying to extract

3:13:58this last part okay as you can see let's

3:14:00say if this is the email address I'm

3:14:01extracting this particular part so this

3:14:03code is doing that so I'm splitting with

3:14:05the help of this address then I'm taking

3:14:07the last value that means this

3:14:09particular part then what I'm checking

3:14:11if domain name not in our valid domain

3:14:14that means if particular this domain

3:14:15name is it is not available inside our

3:14:17valid domains that means this is not

3:14:19U uh this is not a a patient from the

3:14:21bank. Okay. This is a common people.

3:14:23Okay. So that time I'm raising exception

3:14:25not a valid domain. Okay. Otherwise we

3:14:28are returning the value. Simple. Now

3:14:30let's try uh whether it's working or

3:14:32not. See here I have given simple email

3:14:34address buppygmail.com. So definitely it

3:14:37will throw error because uh I'm not from

3:14:39the bank. Uh okay. Still it is working.

3:14:43Okay. The issue is that uh this should

3:14:45be patient data object. Okay. Not

3:14:47patient. uh this should be patient data

3:14:49object uh patient data class. Now if I

3:14:52execute now see it is giving you error.

3:14:54It's telling value error not a valid

3:14:56domain. Okay that means uh this

3:14:58particular person it is not from the

3:15:00bank. Now say if I give the bank domain

3:15:03let's say I'll give sdfc.com.

3:15:09Okay.

3:15:11Now it should be working.

3:15:15Still some error.

3:15:18build required

3:15:22merit.

3:15:27Okay. So here I haven't passed the

3:15:28merit, right? Uh so let's give the merit

3:15:32as well.

3:15:37Married

3:15:38is equal to true. Now if I execute, see

3:15:41it's working fine. Okay. Because this

3:15:43particular person uh he's from the bank

3:15:46itself. Okay. So that's how you can do

3:15:48advanced level uh uh validation. Okay.

3:15:51This is called field validator. Now you

3:15:53can also do some transformation with the

3:15:56validation as well. Now let's say I will

3:15:57be working on another example.

3:16:01So one more thing you can do uh with the

3:16:03help of this field validator you can um

3:16:06you can definitely validate but uh if

3:16:08you want you can also do do the

3:16:10transformation. Let's say the name you

3:16:12are getting from the user. Uh you want

3:16:14to store this particular name in a

3:16:17uppercase format always. Okay. If user

3:16:19is also not giving it's completely fine

3:16:20but you want to make it uppercase and

3:16:23you want to u save inside the database.

3:16:25So for this again you can write another

3:16:27validator

3:16:29uh field validator. So see this is the

3:16:32function I have created called transform

3:16:35name and I told you you have to use two

3:16:37decorator. One is field validator. Now

3:16:39you have to specify which field I'll

3:16:41tell name field and the class method

3:16:43decorator. Now it will take class object

3:16:46and the value. Now whatever value user

3:16:48is giving that means the name. I'm just

3:16:50doing the upper operation. Okay. And I'm

3:16:51returning it. Now see uh here I'm giving

3:16:54let's say lower case BP. But if I

3:16:56execute this code still you will see

3:16:58that in the database all of the uh

3:17:00character would be in upper case. Okay.

3:17:01So this is called transformation with

3:17:03the help of this field validator. That

3:17:04is also uh we can do here.

3:17:08So guys, now we'll understand one

3:17:10another important concept which is model

3:17:12validator. So previously I told you

3:17:15about this field validator. So in field

3:17:17validator uh what uh I was performing.

3:17:20So let's say if I want to do a single

3:17:22field validation that time I was using

3:17:25this field validator. Okay. But let's

3:17:27say there is a condition you have to

3:17:29verify multiple field. Okay. Multiple

3:17:31field means let's say u the system you

3:17:34have created you want to add another

3:17:35functionality which is let's say if

3:17:38patient age is greater than 60 okay that

3:17:41time in the contact details there should

3:17:43be a emergency number so this kinds of

3:17:45uh validation I want to do okay so that

3:17:48time with the help of only field

3:17:49validator I can't do that because I

3:17:51can't um I can't actually mention two

3:17:54field together in the field validator

3:17:55okay only one field can be mentioned so

3:17:57we solve this particular problem with

3:17:59the help of this model validator

3:18:01So for this this is a very simple

3:18:03concept. So let me show you how to add

3:18:05this. So here you have to add this uh

3:18:08add this code.

3:18:10So here I'll just try to define the

3:18:13indentation

3:18:14and you have to import this model

3:18:16validator from pi identical. Okay. There

3:18:19is another validator called model

3:18:21validator. You have to import and inside

3:18:23that you have to uh give this parameter

3:18:25as after mode is equal to after. And

3:18:27here you will be creating the function.

3:18:30The function name is uh validate

3:18:31emergency contract. This will take the

3:18:33class. Okay. And this will take the

3:18:35model. Model means the entire schema.

3:18:37Okay. So if you give the model that

3:18:39means you can access all of the schema.

3:18:41Okay. Uh from inside this particular

3:18:43function. So here you can see here I'm

3:18:45checking if model.hage that means I'm

3:18:47extracting the age if it is um greater

3:18:50than 60

3:18:52and uh emergency not in model. Okay,

3:18:56that means if emergency phone number is

3:18:58not available that time you're raising

3:19:00one exception value error patient older

3:19:03than six uh 60 must have a emergency

3:19:05contact. Okay, then we're retaining the

3:19:07model. Now let's try to check this

3:19:09whether it's working or not. So let's

3:19:10say right now my age is 25 that means

3:19:13this kinds of uh this condition uh will

3:19:15not match. So it will work fine. So if I

3:19:17execute see it is working fine. There is

3:19:19no error. uh but if I let's say make my

3:19:22age uh to more than 60 let's say 70 now

3:19:27this will throw you error it is telling

3:19:29uh value error patient older than 60

3:19:32must have emergency contact number now

3:19:34here I have to add the emergency contact

3:19:36number so maybe after the phone number I

3:19:39can add a emergency number now if I

3:19:41execute see it's working fine okay so

3:19:43this is called actually model uh

3:19:45validator so that means if you have

3:19:47multiple uh field verification that time

3:19:49you can use this model validator Okay,

3:19:51inside your application.

3:19:54Now let's try to understand another

3:19:56concept which is computed uh fields. Now

3:19:59with the help of computed fields, what

3:20:00we can do? Let's try to understand.

3:20:02Let's say in the same example um I want

3:20:05to do another thing. Let's say

3:20:08um here I have added another

3:20:10informations another data called height.

3:20:11Okay. Now um see what computed field

3:20:15does. It does a computation itself.

3:20:17Okay. Let's say if user is giving any

3:20:20kinds of information and it has to

3:20:23recreate or let's say generate a

3:20:25completely new information by utilizing

3:20:27the same information that time we'll be

3:20:29using computed fields. Let's say in this

3:20:31case my patient has given me weight and

3:20:33height but I want to calculate inside my

3:20:36pent uh the BMI okay BMI of the patient

3:20:40I'm not taking the BMI from the patient

3:20:42itself instead of that what I want with

3:20:45the help of weight and height I want to

3:20:46calculate the BMI. So that time I'll be

3:20:48using this computed field. So you have

3:20:51to first of all import this computed

3:20:52field from pi identic. We have already

3:20:53imported. Now you have to again uh use

3:20:57this as a decorator and you have to

3:20:59write a function here. So my function

3:21:01name is BMI and again you have to use

3:21:03another um another actually um uh

3:21:07another uh decorator which is property.

3:21:09Okay, you have to use this property. Uh

3:21:12so the property I think this is already

3:21:13available.

3:21:15uh this property is already available

3:21:17inside Python. This is default one. So

3:21:18you don't need to import from anywhere.

3:21:20Then this is the function we are writing

3:21:22BMI and we are giving the self parameter

3:21:25and this returns uh the float value.

3:21:27Okay. Because BMI should be float and

3:21:29here we are calculating the BMI. We you

3:21:31can see here we are taking the weight.

3:21:34Okay. Uh then we are dividing with the

3:21:37help of this height and we are squaring

3:21:38it. Okay. Then we are taking the uh BMI.

3:21:41Okay. We are calculating this BMI. We

3:21:43are taking the result and this result we

3:21:44are trying to returning it. Now if I

3:21:47want to print this so I I have to just

3:21:49simply write patient.bmi right now see

3:21:51BMI I haven't written here okay inside

3:21:53my schema instead of that I'm

3:21:55calculating it and I'm returning it. So

3:21:57that's why I have to call with the help

3:21:59of this particular function. Let's say

3:22:00if this function name is BMI test you

3:22:02have to also give BMI test here. Okay

3:22:04this is required. Now simply let me show

3:22:05you whether it works or not. So here I

3:22:07have already given the height. uh height

3:22:09let's say I'm considering in meter and

3:22:11weight I'm considering in kg. Okay. Now

3:22:13if I execute now see it is also giving

3:22:15you the BMI. Okay. So this is called

3:22:17actually computed field. So if you want

3:22:19to compute anything with uh with the

3:22:21existing uh schema you are having

3:22:23existing data you are having you can use

3:22:25this computed field at time.

3:22:29So guys now we'll discuss about another

3:22:31important concept inside pentic which is

3:22:33nested model. Uh so sometimes what

3:22:36happens whenever we create the fields um

3:22:39so field might be uh complex field as

3:22:42well. So let me give you one example.

3:22:44Let's say here I have this particular um

3:22:48pentic model that means the class

3:22:50patient data. So here I'm having the

3:22:52patient information like name, gender,

3:22:54age and another information I have which

3:22:57is address. Okay. Now address field

3:23:00might be complex field because address I

3:23:02can't write in a single uh let's say

3:23:05word. So inside a address there should

3:23:07be three kinds of entity. One is city,

3:23:09pin and state. Okay. Now here I'm not

3:23:14going to write uh this kinds of syntax.

3:23:16Okay. Because this is not possible here.

3:23:18So instead of that what we can do we can

3:23:21create another actually pentic um class.

3:23:24Okay pyic model and we can make it as a

3:23:27nested. Okay. Uh so how it can be done?

3:23:30So let's say here I have created my

3:23:32patient data. This is my model. And here

3:23:35I have created another model which is uh

3:23:37address. Okay. And again I inherited

3:23:38with the help of this base model. Okay.

3:23:40Now here I've given three entities,

3:23:43state and pin. Now first of all I've

3:23:46created the address uh as you can see

3:23:47address dict. So city is equal to I have

3:23:49given Google state is equal to harana.

3:23:52Pin is equal to this is the pin. Okay.

3:23:54Now this particular address you have to

3:23:56pass where to this address model. Okay.

3:23:58So we are passing it to the address

3:24:00model. We are unpacking that. Okay. Now

3:24:02this will uh this will return me one

3:24:04pentic object. Okay. Now I'm going to

3:24:06create my patient information right now.

3:24:08So you can see name uh gender age and

3:24:12now right now address is equal to see

3:24:14what I have done. I have given this

3:24:15particular object this class. Okay.

3:24:17Address should be this class. So I'm

3:24:19passing this particular object right

3:24:20now. Okay. Address is equal to this

3:24:22address. Then this patient information

3:24:24I'm passing inside my patient uh model.

3:24:26Okay. Now this is giving you the patient

3:24:28information. Now inside this patient

3:24:30information you are having all of the

3:24:32information whether it is related

3:24:34patient data, whether it is related

3:24:35address. Now let me show you. So here

3:24:37I'm importing first of all all of the

3:24:39patient uh you can see data. So inside

3:24:42patient I am having name age okay and

3:24:44the address. Okay address object is also

3:24:45available. Now if I want to uh let's say

3:24:48access the name I can do that. If I want

3:24:50to access the address I can also do

3:24:52that. Now let's if I want to only access

3:24:55the patient city. So you just need to

3:24:58write patient uh address dot city. So

3:25:01this will give you the city. Okay. So

3:25:03that's how you can write this nested

3:25:05models. This is also possible inside

3:25:07pyic. Okay. I hope you get it.

3:25:12So guys uh one more last thing I'm going

3:25:14to discuss about this pentic which is uh

3:25:17serialization. That means you can also

3:25:20um export your uh pentic object u as a

3:25:24dictionary or as JSON. For this we use

3:25:27serialization. So I have taken the same

3:25:29example. So only the last part what I

3:25:31have done. So here you can see let's say

3:25:33this is my final object uh of my u

3:25:37nested uh nested model. So what I'm

3:25:39doing I'm just doing model.dum. If you

3:25:41do model dump so what will happen? It

3:25:43will return you as a dictionary. See you

3:25:45are exporting your object as a

3:25:47dictionary. Okay, you can see this is a

3:25:49Python dictionary. Okay, but if you're

3:25:51using this uh JSON dump, okay, this

3:25:54should be uh string that means it's a

3:25:56JSON format. Now, you can use uh JSON

3:25:59library to export um I mean you can also

3:26:02export it. You can also dump it and you

3:26:04can also load it um let's say later on.

3:26:06Okay, this is required. Let's say

3:26:07whenever let's say you have created a

3:26:09pyic object okay you have done some data

3:26:12validation and all and you want to uh

3:26:14take it as a take it as a let's say file

3:26:17and uh let's say you want to load it

3:26:19later on you can do do this kinds of

3:26:21serialization okay this is also possible

3:26:23it's like a like in machine learning we

3:26:25train model right after training the

3:26:27model we save the model right we

3:26:28serialize the model so it's kind of that

3:26:30okay now guys uh with that our uh

3:26:33discussion has been end and we have

3:26:35understood all of the concept concept

3:26:37related pyntic. Okay. And I think now

3:26:40you are pretty much comfortable with

3:26:42pyic. You should not be having any kinds

3:26:44of issue with the pyic whether you are

3:26:46working in uh aentic whether you are

3:26:49working in machine learning deep

3:26:50learning anywhere you will see this

3:26:52kinds of concept will be available.

3:26:53Okay. Now one thing I want to show you.

3:26:55So if I go to Google and if I search

3:26:57like why pyentic is important for AI

3:26:59agent. As you can see uh pyntic is

3:27:01crucial for agent because it brings the

3:27:04structure relability and type safety for

3:27:06software engineering to be uh

Building End-to-End Single AI Agent System using LangChain

3:27:09traditionally unstructured and

3:27:10unpredictable word of large language

3:27:12models. Okay. By leveraging the Python

3:27:14typhoons and uh runtime data validation.

3:27:16Pyic ensures that AI agents interact uh

3:27:19realy with external docs APIs and

3:27:22databases. Okay. So here are some of the

3:27:24uh you can see uh concept they have

3:27:27given. you can go through that you'll

3:27:29see that uh at the end this particular

3:27:31concept is very much required whenever

3:27:33we're working with aentki application.

3:27:35Okay. So yes guys I think you have

3:27:37understood all of the concept. If you

3:27:39have liked it please try to subscribe to

3:27:41my channel and share this video with

3:27:43your friends and family. So in this

3:27:45video I'm going to show you how you can

3:27:47implement uh AI agents with the help of

3:27:50this langen. Okay. But if you're

3:27:53completely new to the langen, if you

3:27:55don't know about anything about the

3:27:56langen, so definitely there would be a

3:27:58prerequisite for this session uh which

3:28:01is the langen and this langen video is

3:28:03already available on my YouTube channel.

3:28:05As you can see, I am having a complete

3:28:08langen crash course on my YouTube

3:28:10channel. The uh video name is ultimate

3:28:12langen crash crash course for

3:28:14developers. Okay, so I'm going to add

3:28:16this uh uh add this video link in the

3:28:19description. If you're completely new to

3:28:21the langen guys, first of all, go ahead

3:28:23with this particular uh video then you

3:28:26will be able to understand each and

3:28:28everything about the langen then it

3:28:30would be easy for you to understand this

3:28:32langen agent's creation. Okay. But if

3:28:36you already familiar with this langen um

3:28:38you don't need to go through this

3:28:39recording. It's completely fine. You can

3:28:42continue with this particular lecture.

3:28:44But those who are completely new, I'm

3:28:46telling you guys please try to complete

3:28:47the langen then you can start with the

3:28:49phase three. So in this video I'm going

3:28:52to implement a single agent system uh

3:28:56application with the help of langen. Uh

3:28:58there I'm going to teach you um like

3:29:01what are the things you need to

3:29:02implement this kinds of single uh agents

3:29:06uh let's say workflow uh and how you can

3:29:10utilize langen okay for uh for this

3:29:12particular task. So guys uh in this

3:29:14video we are not only going to implement

3:29:18uh our AI agents after implementing it I

3:29:21will also show you how we can deploy

3:29:22these kinds of agents over the cloud

3:29:24platform. So this is going to be very

3:29:26interesting video uh and this is going

3:29:28to be our first agent. Okay the first

3:29:30agent uh uh application we'll be

3:29:33creating with the help of Langen. Uh so

3:29:35this is going to be a single agent uh

3:29:38system guys. Don't worry, I'm also going

3:29:39to show you the multi- aent system as

3:29:41well in the next video. Uh so each and

3:29:43everything I'm going to clarify. So make

3:29:45sure you watch this video till the end.

3:29:47So guys, uh before implementing this AI

3:29:50agents, first of all, let me give you

3:29:52the idea about AI agents. Although I

3:29:54have given you the detailed introduction

3:29:55of AI agents, but let's uh do some quick

3:29:59revision. As you can see, an AI agents

3:30:02is an intelligent system that receives a

3:30:04highle goal from a user and autonomously

3:30:08plans, decides and execute a sequence of

3:30:11action by using external tools, APIs or

3:30:15knowledge sources all while maintaining

3:30:17the context reasoning over multiple

3:30:20steps, adapting to new informations and

3:30:22optimizing for the intented outcome.

3:30:26Okay, that means agentic AI application

3:30:30or AI agents is having a kinds of power.

3:30:34Uh basically it uh it has lots of

3:30:38connection with uh external like tools,

3:30:41APIs or knowledges. So whenever we are

3:30:45giving any kinds of prompt okay it is

3:30:47taking it as a uh goal okay and with

3:30:50respect to the goal it is planning all

3:30:53of the uh let's say task one by one okay

3:30:58and once all of the let's say task is

3:31:01ready it will try to execute those task

3:31:03okay as sequence and whenever it

3:31:06required any kinds of external tools or

3:31:08APIs it will try to use that okay that

3:31:11means if I give you uh brief idea about

3:31:14the traditional LLM and

3:31:18uh uh and the current AI agents what

3:31:20would be the different between them so

3:31:22let's say I think you know previously we

3:31:24use only large language model right

3:31:28large language model and here we pass a

3:31:30prompt okay prompt so what will happen

3:31:33this large language model will take that

3:31:36prompt and it will give you a kinds of

3:31:38answer or response okay but this large

3:31:41language model doesn't have any external

3:31:44connection with any kinds of tool APIs

3:31:47or knowledge sources. Okay. So whenever

3:31:49you are asking something it should be

3:31:51available in the knowledge base itself

3:31:53of the LLM. That means u this

3:31:56information should be available when

3:31:58they train this particular LLM. Okay.

3:32:00But the difference of this AI agent is

3:32:02that whenever you are giving a prompt to

3:32:04the AI agents. So definitely internally

3:32:07AI agents is utilizing the large

3:32:08language model as a brain. Right? It is

3:32:11utilizing large language model as a

3:32:13brain so that it can perform the

3:32:15reasoning operation. Okay, reasoning

3:32:17operation and I I think you know why

3:32:20reasoning is required because with the

3:32:21help of this reasoning it will decide

3:32:23when to utilize what kinds of tool or

3:32:26what kinds of external sources APIs or

3:32:28knowledge sources whatever right so

3:32:30whenever we are giving a prompt to the

3:32:32AI agents so basically what it is doing

3:32:34it is trying to utilize the large

3:32:36language model it is performing the

3:32:38reasoning operation okay and when it is

3:32:40required any kinds of external tools for

3:32:43getting the informations it will try to

3:32:45use that particular tools or any kinds

3:32:47of API any kinds of let's say uh

3:32:50external knowledge sources it will try

3:32:52to utilize then this will give you the

3:32:54response okay

3:32:56uh with respect to the prompt you are

3:32:58asking okay but whenever it is doing

3:33:01this kinds of operation so basically it

3:33:04is running some of the plan right

3:33:06internally it is running some of the

3:33:07plan uh it is making the decision okay

3:33:10then it is executing these are the

3:33:12workflow one by one okay so this is

3:33:14called actually AI agents I think you

3:33:17already know that and to make this

3:33:20particular agent okay to utilize these

3:33:23LLM tools and everything we need the

3:33:25orchestration framework okay we need the

3:33:27orchestration framework so with the help

3:33:29of that particular framework we can uh

3:33:31integrate like large language model we

3:33:33can integrate like external tools APIs

3:33:35knowledge base okay then uh we'll try to

3:33:38integrate the reasoning ability so it

3:33:41happens with the help of one

3:33:42orchestration framework so in this video

3:33:44we'll be using langen orchestration

3:33:48framework. Okay, apart from langchen

3:33:51actually other orchestration frameworks

3:33:54are also available uh which is only

3:33:56designed for AI agents like langraph,

3:33:58crew AI, autogen okay we'll try to

3:34:01discuss definitely but uh I want you to

3:34:04first of all show you the first

3:34:06orchestration uh orchestration framework

3:34:09uh actually lang uh developed okay for

3:34:12the AI agents. So we not only use langen

3:34:16for agent uh generative application

3:34:18development still you can use langen to

3:34:20implement uh these kinds of AI agents

3:34:23but langen is having some like

3:34:26limitation I'll tell you about the

3:34:27limitation in the next video what is the

3:34:29limitation we are having why we have to

3:34:31use lang graph uh crew AI okay these are

3:34:33the things definitely I'm going to tell

3:34:35you each and everything so now let's try

3:34:39to see how we can implement uh these

3:34:41kinds of AI agents uh with the help of

3:34:44this langen. So for this I'm going to

3:34:46open up my uh local uh local actually

3:34:49directory and there I'm going to launch

3:34:50my VS code and all of the setup we'll be

3:34:53doing and we'll start the development.

3:34:56So guys I'm inside my local directory.

3:34:58So here what I'm going to do uh I'm

3:35:00going to open up my visual code studio

3:35:02here. So let's open up my visual studio

3:35:05code.

3:35:10So this is my Visual Studio Code. Let me

3:35:14zoom

3:35:18and I also need to open up my terminal

3:35:21here. So I'll open up my terminal.

3:35:26Okay. So the first step here will be uh

3:35:29creating a virtual environment and we'll

3:35:31do the requirement installation for this

3:35:33agent. So let's try to create a file

3:35:36here. I'm going to name it as readme.md

3:35:41and inside that I'm going to mention all

3:35:43of the command you need to execute. So

3:35:44to create a environment you have to uh

3:35:47execute this command. So contact create

3:35:49rate create n um I'll name it as lang uh

3:35:53lang agent uh that means lang chain

3:35:55agent you can give any name it's up to

3:35:57you. Then you can specify the python

3:35:59version. So, python is equal to I'll be

3:36:02taking

3:36:03uh 3.11

3:36:05and hyphen y that means I want to give

3:36:08the yes permission. Once it is done, you

3:36:10have to activate the environment and you

3:36:12have to install the requirements. Okay.

3:36:14Now, you can copy this command one by

3:36:16one and you can execute inside your

3:36:18terminal. So, for me uh this uh

3:36:20environment is already available. So,

3:36:22what I'm going to do, I'm going to

3:36:23activate directly. But if you don't have

3:36:25guys first of all try to execute the

3:36:27first command then execute the second

3:36:29command. So see guys this lang agent is

3:36:31already available. This environment is

3:36:33already available. Now I'm going to add

3:36:35the requirements. So let's create

3:36:38another file here.

3:36:40I'm going to name it as requirement.txt.

3:36:42Inside that you have to mention all of

3:36:44the requirements for this particular

3:36:47agent. So I have already listed down all

3:36:50of the requirements you need guys. So

3:36:52these are the requirements you need. So

3:36:54I need langen I need langen community I

3:36:57need langen code I need langen openi

3:37:00I need um uh this things I don't need I

3:37:04need request then tabi python and

3:37:06pythonb okay I'm going to tell you why

3:37:09this uh uh this thing are required

3:37:11actually let me tell you see langchen I

3:37:13think you know this is the main

3:37:15framework this is the main orchestration

3:37:16framework and to uh run this langchen

3:37:19you need some other dependency package

3:37:21like langchen community and langen core

3:37:23And uh here we'll be using a large

3:37:26language model because I think you so

3:37:28internally agent uses a large language

3:37:30model for the reasoning and this is the

3:37:31main brain. So for this large language

3:37:34model I'm going to use this open AI.

3:37:35Okay, open AI provider. So uh from open

3:37:38AI I'm going to use a particular model

3:37:41and uh here you can uh change with any

3:37:43kinds of model if you want. Let's say

3:37:44you can also uh use any free provider

3:37:47like open router. You can also use grock

3:37:50API. Okay, you can also use Gemini API.

3:37:52You can use anything but I have the open

3:37:54AI that's why I'm going to use the open

3:37:56AI. But whenever you are using this

3:37:57kinds of free model so there are some

3:38:00limitation definitely so you won't be

3:38:02getting any kinds of good response from

3:38:03this kinds of free model. That's why I'm

3:38:06using my open AI model so that I can uh

3:38:08show you the best response I'll be

3:38:10getting from my agent itself. Okay. But

3:38:13this course uh this model is changeable

3:38:15guys. This provider provider is

3:38:16changeable anytime you can change with

3:38:18any model any provider. So simply you

3:38:20just need to copy that uh model

3:38:23initialization code and if you give to

3:38:25the chat GP and if you ask like let's

3:38:26say I want to use open router this free

3:38:28model so definitely you'll be getting

3:38:30that. So let me first of all uh write

3:38:32the code then I think you will be able

3:38:33to understand. Then request I need let's

3:38:35say if I want to hit some of the URL

3:38:37external URL or external website

3:38:40external API that time I need this

3:38:41request module. Uh I'll tell you why

3:38:43this request module I I'll be using

3:38:44here. Then tab python. So tab is a tool

3:38:47okay search tool. So with the help of

3:38:49tably what you can do you can perform

3:38:51the internet search operation. Okay. So

3:38:54uh the agents we'll be implementing will

3:38:55try to uh add this tool so that my

3:38:57agents will be able to search any kinds

3:39:00of content over the internet and

3:39:02python.b I need for the environment

3:39:04management I'll be using open api key. I

3:39:06need dav API key. All of the API key I'm

3:39:08going to mention inside my env. Okay. So

3:39:11let me create a file called env. So

3:39:14inside that I'm going to mention all of

3:39:15the API key. But first of all you have

3:39:18to install this requirement txt. So

3:39:20let's copy this command. open up the

3:39:22terminal and simply execute that.

3:39:26So for me it is already installed. Uh it

3:39:28will tell like requirement is already

3:39:30satisfied but for you it will take some

3:39:32time. Okay. So see it has executed. Um

3:39:37okay I think everything is fine.

3:39:40H

3:39:46okay. So here another package you need

3:39:48which is langen

3:39:57langen hub

3:40:01okay langen hub is also required I'll

3:40:02tell you why langen hub is required so

3:40:05let me install again done

3:40:10okay langen

3:40:12okay spelling is not correct so let's

3:40:14copy the spelling

3:40:21Now I think

3:40:23yeah everything is fine. So for me it is

3:40:26already satisfied for for you it might

3:40:27take some time. So once installation is

3:40:29completed guys. So what I can do I can

3:40:31simply create a folder. uh I can let's

3:40:35say

3:40:38give the folder name as research

3:40:42and inside that I'm going to create a uh

3:40:45Jupyter notebook file. I'm going to name

3:40:46it as agent

3:40:49uh

3:40:50demo

3:40:52ipy nbv. Okay.

3:40:56Yeah.

3:40:59Perfect. So one more thing I I have to

3:41:02do which is this file. I will copy this

3:41:04one and I will paste it inside resource

3:41:06as well. Okay. Because uh if I want to

3:41:10execute this notebook file definitely I

3:41:12need this. So that's why I have done

3:41:14that. Uh yeah. Now guys what I'm going

3:41:18to do I'm going to first of all import

3:41:20some necessary library. But before that

3:41:22let's select our environment. So Python

3:41:24environment which is lang agent. Okay.

3:41:27I'm going to select that. So simply I'm

3:41:29going to import some required library.

3:41:33So I need operating system. Then I need

3:41:37certify.

3:41:39Okay. Why I need certify? I will tell

3:41:41you. Then I need request

3:41:44import

3:41:49request. Then I need env.

3:41:56So let me copy all of the input I need

3:41:58here. Yeah. So I need uh ENB. Uh so I

3:42:04will import load env because with the

3:42:06help of this load envoirment

3:42:08variable and whatever key we are having

3:42:10inside that we can load. Then from

3:42:12langchen openi we are importing chat

3:42:14openi. So this is the class uh we can

3:42:17use to load any kinds of large language

3:42:19model from openi provider. Then we are

3:42:22also importing this tools.

3:42:25Okay. Why this tool is required? I'll

3:42:26tell you. But as of now, let me delete

3:42:29this option and also delete this uh

3:42:32delete this library because these two

3:42:34things I want to show you later on.

3:42:35First of all, let's create a simple

3:42:36agents. Then I'm going to show you how

3:42:38we can improve this particular agent.

3:42:39Okay. Then from langen community I'm

3:42:42importing this tably search result.

3:42:45Okay, that means this tab search tool.

3:42:47As I already told you, we are also

3:42:48installing this uh tab python. So tab is

3:42:51one of the search tool. With the help of

3:42:53that you can perform the internet search

3:42:54operation. So we can import this uh tab

3:42:57from the tool and it is available in

3:42:59langen community. Okay that's why you

3:43:01also install langen community. We are

3:43:02importing tools tab search and tab

3:43:05search result. Okay so once it is done

3:43:07so simply I'm going to uh okay another

3:43:10package I need which is

3:43:13uh langen hub. Okay. So from langen

3:43:17import

3:43:19hub. So now let me import all of them.

3:43:23So it is asking uh it will install some

3:43:25required IPI kernel package. So let's

3:43:27install.

3:43:29So if you're doing it for the first time

3:43:32um let's say in VS code first time means

3:43:35in a like uh if you are creating a first

3:43:38Jupyter notebook file and if you're

3:43:40executing so initially it will install

3:43:42some dependency uh IPI related uh

3:43:45package. Okay. So it is installing.

3:43:47Let's wait once this installation is

3:43:48complete then we can execute again.

3:43:54Okay, it has executed successfully.

3:43:55There is no issue. Okay, now here guys

3:43:58what I'm going to do simply I'm going to

3:44:01um import uh some agent related

3:44:04functionality from langen. So first of

3:44:06all I need

3:44:08um two things. So from langen

3:44:14dot agent okay it is available inside

3:44:17agent module

3:44:19uh I'm going to import

3:44:22create

3:44:24uh create react agent okay so there is a

3:44:27a function we are having called create

3:44:31react agent okay so this thing I'm going

3:44:35to tell you what is this create react

3:44:37agent the full form of this uh react

3:44:39agent is reasoning

3:44:42uh reasoning and action. Okay, so the

3:44:45full form of this react is reasoning and

3:44:47action.

3:44:49Okay, we can we can call it as a react

3:44:51agent. I'll tell you how this react

3:44:53agent works. Uh what is the mechanism

3:44:55behind it? But as of now just try to

3:44:57think this is the agent uh we mostly use

3:45:01from the langen. Apart from that some

3:45:03other uh let's say agent function we are

3:45:05having in the langen but this is the

3:45:08most popular one people uses. Okay. um

3:45:11react uh sorry reasoning and action

3:45:14agent.

3:45:16Now once it is done I'm going to import

3:45:19another

3:45:20functionality which is agent exeutor.

3:45:23Okay I'm also going to tell you why this

3:45:24agent exeutor is required and how this

3:45:27works with the react agent. Okay. So

3:45:29these two library I need. Now let's try

3:45:32to import them. Yeah. So once we have

3:45:35imported now simply

3:45:38uh what we have to do guys we have to uh

3:45:41we have to load the environment

3:45:43variable. Okay we have to load the

3:45:45environment variable because in the

3:45:47environment variable itself we'll be

3:45:49mentioning all of our API key. So first

3:45:51first of all I need my open API key

3:45:53because I already told you for the large

3:45:55language model uh we'll be using openi

3:45:58right. So let's try to mention the open

3:46:00API key. So how we can get the open API

3:46:02key guys I think you know simply you

3:46:04just need to go to open AI uh API

3:46:06provider. So here you can go to the API

3:46:08platform and uh left hand side you will

3:46:11see the option called uh API key. Okay

3:46:14simply create a API key here and you

3:46:16just need to copy the API key. Okay so

3:46:19for me I already have the API key. Let

3:46:20me show you. I'll just copy

3:46:24copy this API key.

3:46:29So this is my API key guys. Don't use my

3:46:31API key. I'm going to review after this

3:46:33recording. Just try to create your own

3:46:34API key. And uh you don't need to

3:46:36necessarily create use this open API

3:46:38key. If you want, you can also use any

3:46:40other like LLM provider. Okay, it's

3:46:43completely fine. Now with that, I also

3:46:45need another API key which is the tabi.

3:46:49Okay, taby API key because uh what

3:46:52happens? Let's say whenever I will be

3:46:54initializing the search tool, okay,

3:46:56search tool of the tab. Uh so to use

3:46:58this tab, I need a API key. So how to

3:47:00get the table API key? So for this you

3:47:02have to visit tavly.com. Okay. Or you

3:47:06can search like tavly API key. So

3:47:08instead of taby there are some other

3:47:10like search tool are available like sar

3:47:12api duck duck go search uh and other

3:47:14tools are also available but I'm going

3:47:16to use this tably one. So simply click

3:47:18on tably api key.

3:47:21So you have to create a account if you

3:47:23don't have account. So I already have

3:47:24the account guys. I created with the

3:47:25help of my Gmail. So once you are inside

3:47:28the dashboard you will be seeing this

3:47:29kinds of interface. So from here you can

3:47:31create a API key. Okay. So for me I

3:47:33already have created some API key but

3:47:34let me show you how to create the API

3:47:36key. So let's say here I'm going to

3:47:37create a API key called my key. Okay.

3:47:41Once it is done just create the API key.

3:47:44Okay. Your key is created and initially

3:47:47whenever you are creating an account you

3:47:48will be getting 1,000 free credit. I

3:47:51think this is enough for learning but if

3:47:52you want to use it for the production

3:47:54that time you have to take their premium

3:47:55plan. Okay. Now let's copy this key and

3:47:58what I'm going to do I'm going to open

3:47:59up my env

3:48:03inside that I'm going to mention my tabi

3:48:09table APAK. So let's make let me copy.

3:48:12So this is my tab APK.

3:48:16Okay APK done. Now let's uh initialize

3:48:21this thing. But I have to load the

3:48:24environment first of all. load

3:48:25environment variable.

3:48:28Let's load.

3:48:35Yeah. So here we are loading the

3:48:37environment variable. But before loading

3:48:38it, so here you can see I'm setting this

3:48:41SSL uh certify file. Okay. Uh so from

3:48:46this certify uh library you can see we

3:48:48have already imported and here we are

3:48:50calling v because what happens if you're

3:48:52using windows operating system so

3:48:54sometimes it will it it might give you

3:48:56some path related issue okay because

3:48:58what happens window windows by default

3:49:00uh open some older uh path okay and uh

3:49:05that's why this issue usually raises so

3:49:08what this code does actually it will uh

3:49:10tell your windows that uh it will always

3:49:13try to use the trusted

3:49:15C uh certificate authority uh uh so that

3:49:19uh whenever it is initializing the

3:49:22uh path uh it will load the updated one.

3:49:25Okay, instead of loading the old one,

3:49:28okay, you can also search over the

3:49:29internet, you can read about this SSL

3:49:32certified file. Okay, I think you will

3:49:33be able to understand. But if you're

3:49:34using any other operating system like

3:49:36Mac OS or Linux, I think that time it is

3:49:38not required. But if you're getting the

3:49:40path related issue, that time you can

3:49:41add this code guys. Okay. Uh this is

3:49:43optional. Uh for me actually I was

3:49:45having this issue that's why I have

3:49:47added but for you if you don't have

3:49:48issue uh if you don't have issue you

3:49:50don't need to add it. Okay. It's

3:49:51completely fine. So once it is done now

3:49:53we are getting our open API key and uh

3:49:56we are loading it here in this

3:49:58particular variable and we are also

3:50:00loading our tably API key. Okay once it

3:50:02is done let's try to load them.

3:50:10Now

3:50:12uh we'll be initializing the tab search

3:50:15result uh object. So I can name it as a

3:50:20search tool.

3:50:25Search tool is equal to tably search

3:50:29result.

3:50:32And inside that there is a parameter you

3:50:35can mention like max result. Okay max

3:50:37result means how many result you want

3:50:40after doing the internet search

3:50:42operation. Let's see what searching for

3:50:45a topic. Let's see what searching give

3:50:46me some latest news. So how many search

3:50:50result you want? How many reference

3:50:51website you want? So if if it is let's

3:50:53say two, this will give me two relevant

3:50:56uh let's say um result. Okay. If you if

3:50:59it is five, it will give me five

3:51:00reference. That's how it works. Okay.

3:51:02Now let me uh show you how this thing

3:51:05will work.

3:51:07So simply what I will do, I'll just try

3:51:09to initialize it. Now let's try to test

3:51:11it.

3:51:13Search

3:51:15tool

3:51:17dot invoke

3:51:21inside that I'm going to let's say give

3:51:23what is the capital of French

3:51:30okay or let's say I'll tell

3:51:38okay now s spelling is not correct

3:51:45Now fine. Now here I can tell

3:51:50give me

3:51:54the latest news on AI. Now

3:51:58I will store it in a variable called

3:52:01result.

3:52:04Now simply I'm going to show this

3:52:07result.

3:52:10search tool is not defined. I have to

3:52:12execute this. Now re-execute this.

3:52:19Okay. Now see uh it is real time

3:52:22searching over the internet and it is

3:52:24referring some of the website. You can

3:52:26see this is the URL. So this is the

3:52:27first website it is referring for the

3:52:29latest news on AI. Uh let me show you

3:52:32this website. This is referring this uh

3:52:35blog google.com. So here is the latest

3:52:39AI news announced in March 2026 and

3:52:43there is another reference you will get

3:52:45see uh this one this is another website

3:52:48uh from here also it is getting the

3:52:50informations that means now my maximum

3:52:54result is two I'm getting two actually

3:52:57um

3:52:59internet search reference if you if you

3:53:00make it as three four you'll be getting

3:53:02four reference okay like that okay

3:53:04that's how you can use this tab Search

3:53:07for real time internet search operation

3:53:10and this is called actually search tool

3:53:12and you can use this tool with your

3:53:14agent because agent should be always

3:53:17connected with uh this kinds of external

3:53:19tool like this kinds of realtime tool

3:53:22whenever it needs any kinds of latest

3:53:24information it will be using this tool

3:53:25to get this informations okay uh with

3:53:28you and again I'm telling you I'm

3:53:30creating a single agent system here uh

3:53:33I'm not creating multi- aent system I'm

3:53:34also going to show you how we can create

3:53:36the multi agent system as well. Okay,

3:53:38each and everything I'm going to cover

3:53:39but in this video we'll be only focusing

3:53:41on the uh single agent system. Okay,

3:53:45fine. Now our search tool is ready. Now

3:53:49simply what I'm going to do, I'm going

3:53:50to initialize me my large language

3:53:53model. So let's initialize our large

3:53:55language model.

3:53:57So this is the large language model

3:53:58guys. So from chat openaii, we are

3:54:00taking this GPT 3.5 turbo model. You can

3:54:02also use GPT45. It's up to you.

3:54:04Temperature this is the creativity

3:54:05parameter. I I I just kept it with zero.

3:54:08And here you need to pass the open API

3:54:10key. Now let's initialize the LLM. So on

3:54:13it is initialized. Let me also test

3:54:14whether my LM is working or not. I'll

3:54:16just do the invoke operation. LM.infoke.

3:54:20Now here I'm telling let's say

3:54:24uh what is the year is it

3:54:28and the result we'll be getting again we

3:54:30will store

3:54:34spawns

3:54:43see uh this is is it currently uh 2022

3:54:472.

3:54:51Okay. Why it is giving you it is uh

3:54:54currently 2022 because this GBT3.5 turbo

3:54:59uh has been trained till 2022. Okay, it

3:55:01doesn't have any latest information

3:55:03after that. Okay, that's why this agent

3:55:05is required. I told you right in my

3:55:07introduction session why uh we don't use

3:55:10the large language model only. Why agent

3:55:12is required? Okay, why realtime tool is

3:55:14required? Each and everything I've

3:55:15already clarified. Now let me ask

3:55:17another question. Let's say

3:55:19tell me

3:55:22a joke about AI.

3:55:25Now see it is giving you a joke. Okay,

3:55:27that means it's working fine perfectly.

3:55:30Now I need a prompt guys. Okay. Um to

3:55:34implement the agent I need a prompt.

3:55:37And here we are using this uh

3:55:41um create react agent function. And for

3:55:43this create react agent function I need

3:55:45a relevant prompt. So this prompt either

3:55:48you can write manually either you can

3:55:50download from langen hub. So that's why

3:55:53we have already installed this langen

3:55:54hub. I think you remember. So what is

3:55:56langen hub? In the langen hub itself

3:55:58there are uh like so many prompt uh like

3:56:02pre predefined prompt are already

3:56:03available. So there are lots of uh let's

3:56:06say developer they have already

3:56:07published their prompt. So you can use

3:56:09the pre-existing prompt and you can use

3:56:11it inside your application development.

3:56:13But if you want you can also manually

3:56:14write this prompt. Okay. But why we are

3:56:16taking the predefined prompt uh because

3:56:18uh we are using this create create react

3:56:20agent functionality. Okay. And for

3:56:22create uh for this create react agent

3:56:24functionality. This prompt is like uh

3:56:27very good and this is recommended prompt

3:56:29to use that. Okay. Now let me show you

3:56:31this prompt. You can copy the name and

3:56:33if you go to Google

3:56:36uh you can search it. You can search it

3:56:39here. Let's say now you can open the

3:56:42first website.

3:56:45Okay. So you'll see this particular

3:56:48prompt guys here. See this is already

3:56:49available in the hub and you can see the

3:56:52prompt guys. Answer the following

3:56:53questions as best as you can. You have

3:56:55access to the following tools blah blah

3:56:57blah. Okay. I'm going to explain this

3:56:58prompt later on. But first of all, let

3:57:00me create the agents and then let me

3:57:03explain okay what it does. Now my prompt

3:57:05is ready. Now what I have to do guys, I

3:57:08have to prepare my tools. So I only

3:57:10created one tools which is my table

3:57:12search tool. So what I will do, I'll

3:57:14just try to add this tool. So let me

3:57:16create a list.

3:57:18Okay, inside that list I'm going to

3:57:20mention my search tool. Let's if you're

3:57:21using multiple tool, you can add inside

3:57:24this particular list. Okay, I'm going to

3:57:25tell you how we can add also. Now my

3:57:28tool is also ready. Okay, I have to also

3:57:30execute the prompt. Now see it has uh it

3:57:33has get this particular prompt from that

3:57:36length in hub itself. Now let me show

3:57:38you the prompt. Now see guys, this is

3:57:40the prompt. Okay, this is the prompt. It

3:57:42has already got this particular prompt.

3:57:44Great. Now you have to create the agent.

3:57:48Okay, you have to create the agent.

3:57:51Uh we have already got the prompt. We

3:57:53have already got the tool.

3:57:57Let me comment here.

3:57:59Okay, tool is there. Now we'll be

3:58:01creating the agent.

3:58:07Yeah. So to create the agent guys, we'll

3:58:09be using this function create react

3:58:10agent. And this create react agent takes

3:58:13actually uh three things. The first

3:58:15thing is the large language model. um

3:58:18like this is the brain of that

3:58:20particular agent and we are passing our

3:58:22large language model. The second is is

3:58:24that tool. Okay, the tool it will be

3:58:26using for uh actually external um search

3:58:31operation or external reference. And the

3:58:34third thing it needs the prompt. Okay,

3:58:36that means you are telling uh your agent

3:58:39how it should interact. Okay, how it

3:58:41should perform the jobs each and

3:58:42everything each and every instruction is

3:58:44giving inside the prompt. Okay. So

3:58:46whenever you are creating this uh uh

3:58:48react agent that time you have to pass

3:58:50this three thing. Okay. And this will

3:58:52return you one agent object object.

3:58:54Okay. Now let me execute. So I got the

3:58:57agent object right now. Now what I have

3:59:00to do I have to run this agent. Okay.

3:59:01With the help of the agent executor we

3:59:03have already imported. So as you can see

3:59:05we have already uh imported this agent

3:59:07executor. So let's use this agent

3:59:10exeutor to run this agent. And don't

3:59:12worry, I'm going to explain you why this

3:59:14uh uh I mean how this create react agent

3:59:17works, how this uh agent executor works.

3:59:20Okay, why it is required and everything

3:59:21I'm going to clarify. So now let me

3:59:24define the executor. So this is our

3:59:26executor. So as you can see we are

3:59:29calling this agent exeutor and agent

3:59:31exeutor takes another uh three argument.

3:59:33The first one is the agent. The agent we

3:59:35have created let's say here we have

3:59:37created only one agent. Okay, which is

3:59:39this one. we are passing it. Uh then we

3:59:42are giving the tool. Okay. Uh the tool

3:59:44we have initialized. Then there's

3:59:47another parameter called verbose. So

3:59:49verbose if you make it as true that

3:59:51means whatever agent will execute let's

3:59:54say whatever plan state it will execute

3:59:56you'll be able to see the in the

3:59:58terminal and if you make it as false you

4:00:00you won't be able to see the logs. Okay.

4:00:02So basically if you want to see the logs

4:00:03of your agent you can make it as true

4:00:05otherwise you can make it as false.

4:00:06Okay. So this will give you the agent

4:00:08executor object. So once you got the

4:00:10agent executor object now you are ready

4:00:12to run this agent. So to run this agent

4:00:14guys we'll be using this agent executor

4:00:18and we'll simply do the invoke operation

4:00:21and here we are giving a input. So the

4:00:23input wise we're giving find the capital

4:00:25of India and then the find its current

4:00:28weather. Okay. Uh so this thing I'm not

4:00:31going to pass it right now because uh I

4:00:34want to show you another things. Okay.

4:00:36Now simply I'm going to tell uh find the

4:00:39capital of India. Now uh it will give

4:00:42you the response

4:00:44and this response I'm going to print it.

4:00:49Okay this response. So from the response

4:00:52I I will uh print the output. Now let me

4:00:54execute.

4:00:57Now see agent is executing. So it is

4:01:00telling entering new agent exeutor

4:01:03chain. So I should use the search engine

4:01:05to find the answer. So it is using the

4:01:08search tool that means the tably search

4:01:10tool and it is finding see it is action

4:01:12is tably search tool it is util

4:01:14utilizing then it refers a website. Okay

4:01:17from the website itself it found that

4:01:19the capital of India is New Delhi and

4:01:22once it got the result okay now you can

4:01:24see the final result which is New Delhi.

4:01:26Okay. So let me uh give another input

4:01:29here. So, I'm going to just write

4:01:32um tell me the

4:01:37latest

4:01:40news about

4:01:47Iran

4:01:49and USA world. Okay. Now, let's execute.

4:01:56So it is you can see it is using this

4:01:58tably search tool. Okay. So as you can

4:02:01see my execution is done. So it is using

4:02:03this tably search tool and it is using

4:02:05different different online sources and

4:02:08it is extracting

4:02:10uh the latest information. And now let

4:02:13me show you the final output. So this is

4:02:15the final output. The latest news on

4:02:17Iran and USA war uh includes Iran

4:02:20warning of consequences if the US

4:02:23launches new attacks. Okay. blah blah

4:02:26blah that mean it is able to give you

4:02:27the real time okay the latest

4:02:30informations although we are using the

4:02:32GPT3.5 turbo

4:02:35okay which is uh trend till 2022 but it

4:02:38is able to give you the latest uh latest

4:02:41actually informations about 2026 okay

4:02:45now let me show you let's say if I'm not

4:02:47passing any kinds of tool to the agent

4:02:49so what will happen so here let's say

4:02:52what I'm going to do

4:02:54um h so let's say here I'm going to

4:02:57create a empty

4:03:00empty tool

4:03:02okay so I'm not going to pass anything

4:03:05in this tool

4:03:07now let's execute now again I will

4:03:10create the react agent again I will um

4:03:15execute the agent executor then I will

4:03:19ask this

4:03:35Now see it is continuously looking for

4:03:38the tool but it is not getting right.

4:03:40See it is not getting. So execution is

4:03:42done. If I uh print it the final

4:03:45response, you'll see that agent is

4:03:46stopped due to the iteration limit or

4:03:49time limit. Okay. What happens? Because

4:03:51whenever you are not providing any kinds

4:03:54of external tools, okay, what it is

4:03:56happening?

4:03:57Uh it is not able to get any kinds of

4:04:00tool which it can use for searching

4:04:03these kinds of latest informations and

4:04:05it is continuously running this tool a

4:04:07loop. Okay. So there are uh there are

4:04:10actually u limitation of this particular

4:04:13loop. So once let's say it is not able

4:04:15to get it. So this loop would be

4:04:17finished and you are getting uh this

4:04:19agent is stopped due to the iteration

4:04:21limit or time limit. Okay. But if we

4:04:23provide this tool, okay, if we provide

4:04:26this tool

4:04:28that time see my agent is working uh

4:04:32working perfectly fine.

4:04:37Okay, see it's working perfectly fine.

4:04:39Now it is able to get the tool and it is

4:04:42able to search the content on the

4:04:44internet and it is giving you the um

4:04:47answer. Okay, I hope you get it.

4:04:51That means what is happening? Let's say

4:04:53this [clears throat] is our agent.

4:04:56This is our agent.

4:04:59Okay. And here we are giving a prompt or

4:05:04input

4:05:06and uh what it is doing first of all

4:05:08this input is coming to the agent and it

4:05:11is utilizing LLM okay as a brain for the

4:05:15reasoning operation and LLM is uh

4:05:19deciding let's say the input we are

4:05:21giving whether it needs any kinds of

4:05:23tool or not. So the question we have

4:05:25given so definitely it needs a tool

4:05:27because here we are using very old LLM

4:05:30right which is GPT3.5 Turbo okay it

4:05:32doesn't have the informations about Iran

4:05:34and USA world right because this this

4:05:36happens actually this year that means

4:05:38the current year now LM will tell okay I

4:05:41don't have the information so what we

4:05:43have to do we have to use a external

4:05:45tool okay what we have to do we have to

4:05:47use external tool so right now let's say

4:05:49I have connected with tabuli search API

4:05:52so what it is doing it is going to tabul

4:05:56it is executing this tool. This tool is

4:05:58giving you the response like it is

4:06:00referring uh to website because there is

4:06:02a parameter called uh um search result

4:06:06uh that parameter I have like set it

4:06:08two. So it will get two relevant uh

4:06:10let's say informations about the uh USF

4:06:15word. So this is returning to the agent

4:06:17and now agent is getting that

4:06:19information and it is giving you the

4:06:21final output. Okay, it is giving you the

4:06:23final output. That's how things are

4:06:25working. And whenever you are not giving

4:06:27this tool, right, that time what is

4:06:29happening? Agent agent is continuously

4:06:31looking for the tool but it is not able

4:06:33to get it any kinds of response from the

4:06:35tool. That that's how uh it is breaking

4:06:38the loop. It is breaking the iteration

4:06:40and it is giving you I uh I didn't got

4:06:43the answer. Okay, the loop is uh

4:06:46executed uh sorry the loop loop is

4:06:50uh stopped. Okay, I think you saw this

4:06:52final message here. Uh here is the final

4:06:55message. Uh okay, I already like uh

4:06:59replace it. I think you saw the message,

4:07:01right? This loop is already closed. Uh

4:07:02we are not able to uh execute that.

4:07:05Okay, so that's how things are working.

4:07:07Now let me explain about these uh two

4:07:10things which is create react agent and

4:07:13another is agent exeutor. Okay, how this

4:07:15create create react agent works. Why why

4:07:18we call it as a uh reasoning action

4:07:21agent and why agent execute exeutor is

4:07:25required to run this particular create

4:07:27react agents. Okay, I'll try to discuss

4:07:29this part right now.

4:07:33So guys as you can see uh first of all

4:07:35let's try to understand this uh react

4:07:38agent how react agent works. So as you

4:07:40can see React is a design pattern used

4:07:43in AI agents that stands for reasoning

4:07:46and acting. Okay. Um it allows a

4:07:50language model LLM to uh inter

4:07:54interleive internal reasoning thought

4:07:56with external act actions like tool use

4:08:00in a structured multiple process. Okay,

4:08:03that means I told you if I want to

4:08:06execute a agent, so I need some external

4:08:09tools, right? And to select that

4:08:13particular external tool definitely you

4:08:14need a reasoning and that reasoning you

4:08:16are doing with the help of LLM, some

4:08:18kinds of large language model. large

4:08:20language model is deciding okay now I

4:08:22have to use this particular tool and you

4:08:24are using that tool to get the response

4:08:26and you are you uh and you are actually

4:08:29sending that particular tool response to

4:08:32the agent and agent is giving you the

4:08:33structured output okay so the whole

4:08:35system is working like that okay now we

4:08:38are using this react react agent okay

4:08:40from the langen so the react agent is

4:08:43implemented in that way okay because

4:08:44internally they have written all kinds

4:08:46of code related this kinds of

4:08:48orchestration that means It has the

4:08:50connection with LLM. It has the

4:08:52connection with lots of tool. Okay. So

4:08:54once we are giving any kinds of prompt,

4:08:56it is automatically deciding with the

4:08:58help of LLM like what tool to use. Okay.

4:09:01For the actions. So let's say once I

4:09:03executed the tool uh then what will

4:09:07happen uh this tool will give you some

4:09:09kinds of response and you will be

4:09:11structuring this particular output and

4:09:13you will show uh show to the human.

4:09:15Okay. So this is a multi-step process.

4:09:17Okay. This is a multi-step process. That

4:09:19means this is a kinds of loop. Okay. So

4:09:21you can see instead of generating an

4:09:23answer in one go the model thinks step

4:09:25by step decides uh deciding uh what it

4:09:28needs to do next and optionally calling

4:09:31tools APIs calculator web search etc to

4:09:35help it. Okay, that means not only um

4:09:37not only like tabularly search tool,

4:09:39okay, you can use any kinds of tool

4:09:40here. Either you can use any kinds of

4:09:41API, either you can use any kind

4:09:43calculator, web search and anything.

4:09:46Okay, now see this react works in three

4:09:49step. So I have already given an example

4:09:51as you can see the first step is nothing

4:09:53but the thought.

4:09:59Okay, thought. Then the second step you

4:10:02can see action.

4:10:05Okay. And the third step is nothing but

4:10:08observation.

4:10:14Observe.

4:10:16Observation. Okay. Now see here is the

4:10:19example. So what is thought? First of

4:10:21all let's try to understand whenever we

4:10:24are giving any kinds of prompt. Let's

4:10:25say we are giving a prompt. Uh let's say

4:10:28um we are giving a prompt. uh what is

4:10:31the capital of France and tell me the uh

4:10:36population

4:10:38uh tell me the population for capital of

4:10:41France. Okay, let's say this is my

4:10:42prompt. So first of all what will

4:10:44happen? We are using let's say this

4:10:46react agent. So this prompt will go to

4:10:48the react agent and react agent will try

4:10:50to make a thought first of all. So the

4:10:52what would be the first thought? First

4:10:54thought is nothing but let's say I need

4:10:55to find the capital of France. Okay. So

4:10:58first of all this would be the thought.

4:11:01Now for this particular thought it will

4:11:02perform a kinds of action. Okay. So in

4:11:05this action it will utilize external

4:11:07tool. So in this case it will utilize

4:11:09the search tool. Okay. And with the help

4:11:12of search tool what it will do? It will

4:11:14try to perform some action. Okay.

4:11:16[clears throat] So let's say it has done

4:11:18the searching operation the capital of

4:11:20France on the internet and it got some

4:11:22observation like okay the capital of

4:11:25France is nothing but Paris. Okay. So

4:11:28once it got the observation you can see

4:11:30the first loop is complete. Okay the

4:11:33first loop is complete and in the first

4:11:35loop it has performed three things

4:11:36action and observation. Now it will come

4:11:39to the second loop. Now you can see in

4:11:41the second loop again the thought will

4:11:42apply. Now let's say it has already got

4:11:45the Paris okay the capital of France.

4:11:47Now it will tell now I need to find the

4:11:49population of Paris. Okay what it will

4:11:52do again it will perform my action.

4:11:54Again it will maybe utilize a search

4:11:56tool or any other tool it is having with

4:11:58the help of this particular tool. It

4:11:59will perform the action. Okay. So now it

4:12:01will try to figure out the population of

4:12:03Paris. Now let's say observation is 2.1

4:12:06million. Uh it is the population of

4:12:08Paris. Okay. Now you can see this is the

4:12:12second loop. Okay. Second loop is

4:12:15complete. Now it will perform the third

4:12:18loop. Okay. Now you can see once it got

4:12:21the final result. Okay. Once it got the

4:12:23final result that time this loop would

4:12:26be um this loop would be stopped. Okay.

4:12:30Now how it will understand this loop

4:12:33should be stopped because there we uh in

4:12:36the prompt itself we try to set whenever

4:12:38we we get the final answer. Now let's

4:12:40say uh the uh third iteration you will

4:12:42you'll see that now I know the final

4:12:45answer. Okay. So once it knows the final

4:12:47answer okay that time this particular

4:12:51iteration should be stopped. Now you can

4:12:53see it will return with the final answer

4:12:54that time the Paris is Paris is capital

4:12:57of France and has a population around

4:13:002.1 million. Okay, that means the prompt

4:13:04I think you remember I showed you one

4:13:05prompt. Okay, we are using from langen

4:13:07hub in the prompt also these kinds of

4:13:11steps are available. Okay, and there we

4:13:13strictly mentioned that once you got the

4:13:15final answer. Okay, once you know the

4:13:17final answer just try to stop this

4:13:19particular iteration. Now let me show

4:13:20you this uh prompt again. I think now it

4:13:22would be clear to you. So guys, as you

4:13:25can see this was the prompt. Now you can

4:13:27see the prompt. Answer the following

4:13:28questions as best you can. You have

4:13:32access to the following tools. So I

4:13:34think you remember in our agents we have

4:13:35already provided the tool access. Okay.

4:13:38All the tool access we are having. Now

4:13:40we are telling use the following format.

4:13:42Question. Okay. Question should be the

4:13:44input uh questions you must answer.

4:13:47Okay. The user input questions. Now you

4:13:49can

4:13:51uh you can have three things three step.

4:13:53First of all thought. You should always

4:13:55think about what to do. Okay. And this

4:13:57thought how it will think with the help

4:13:59of LM. Okay. Now with respect to the

4:14:02thought it should perform some action.

4:14:04Okay. The action to take uh should be

4:14:06one of the tools. Okay. That means this

4:14:08action should be tell with the help of

4:14:10one of the tool. So once let's say we

4:14:13have selected the tool. Now uh what

4:14:16should be the action input? We have to

4:14:18provide the action input. Now this will

4:14:21perform the action and when whenever it

4:14:24will get the response from the tool. So

4:14:26this this is called actually observation

4:14:28the result of the action. Okay. Once you

4:14:30got the observation now this particular

4:14:32step should be running continuously. You

4:14:33can see this thought action action input

4:14:36observation can repeat end times unless

4:14:38and until thought is I know uh the final

4:14:42answer. Okay. I know the final answer.

4:14:44This particular this particular uh let's

4:14:46say

4:14:48um iteration should be continuously

4:14:50running. Okay. Once you know the final

4:14:52answer that just try to provide the

4:14:54final answer. Let's say this is the

4:14:55final answer of the original questions

4:14:58and uh what will happen? It will try to

4:15:02uh end that particular uh agent. Okay.

4:15:04So every agents works like that guys.

4:15:06Okay. I think you got it because the

4:15:09main fun is behind a agent is to run

4:15:11some of these steps. Okay. And

4:15:14continuously this will run this steps

4:15:16unless and until it found the final

4:15:18answer. Okay. Once it found the final

4:15:20answer then this particular loop would

4:15:21be break and you will be getting the

4:15:23final output. Okay. Now you can see the

4:15:26question um as a as a like say um human

4:15:30we have to give the question our

4:15:32question and agent internally will try

4:15:34to take the agent uh scrap uh scratch

4:15:37pad. Okay. What is agent scratch pad?

4:15:40Agent scratch pad is nothing but the

4:15:42that three things. Okay. this thought

4:15:45action and observation because

4:15:47continuously it has to take that okay

4:15:49continuously it has to take that to

4:15:51understand the previous question action

4:15:53and observation okay so these kinds of

4:15:55things will be continuously happening

4:15:57unless and until we're not going to

4:15:59final answer okay now I think you got it

4:16:03so that's why I told you uh we'll be

4:16:06using this predefined react prompt for

4:16:09this react agent uh you can also write

4:16:11your own prompt but if you're writing so

4:16:13you may miss down these are the option

4:16:15and whenever you miss down these are the

4:16:17let's say context or definitely your

4:16:19agent uh might not give you the correct

4:16:21response so that's why prompting is

4:16:23always important whenever you're

4:16:24creating your own agent system guys okay

4:16:28so guys now I think you have understood

4:16:31uh what is this uh create react agent

4:16:33okay how it works uh now we'll try to

4:16:36understand what is this executor is

4:16:38agent exeutor okay why we need this

4:16:40agent exeutor to run this uh react agent

4:16:43let's try to understand about this.

4:16:45uh one more thing I want to uh tell you

4:16:47which is that let's say after using this

4:16:49create react agent it takes three

4:16:51parameter lm to send prompt we get the

4:16:53agent object okay this is our final

4:16:55agent object and to run this agent we

4:16:57need this agent executor okay now let me

4:17:00show you another diagram

4:17:02so guys as you can see uh this is the

4:17:06diagram of agent and agent executor now

4:17:08we'll try to understand how this works

4:17:11okay why this agent executor is required

4:17:14so let's say we I have created a react

4:17:16agent object which is nothing but our

4:17:18agent. Okay, in the code itself I

4:17:20already told you. Now to run this agent,

4:17:22I need a agent executor. Okay, so why I

4:17:25need this agent exeutor. See to run this

4:17:28agent. Okay, I think you know internally

4:17:30agent uh runs actually three step. One

4:17:33is the first thing first thing is like

4:17:35the uh this one which is um

4:17:40um let me show you. Yeah. The first

4:17:44thing is the thought. Okay. Thought

4:17:54thought. Then second thing

4:17:58is action

4:18:00and the third thing is observation.

4:18:06Okay. So to run this three step guys we

4:18:09need this agent executor. Okay. Okay, to

4:18:11run this three step we need this agent

4:18:13executor. So without agent executor we

4:18:16can't actually run this three steps.

4:18:18Okay. So that's why whenever we have

4:18:20created our agent to execute this agent

4:18:24we need a agent executor and internally

4:18:26agent executor handle these three

4:18:28scenario. So what will happen in the

4:18:29first iteration let's say uh you can see

4:18:32this is the steps of agent executor

4:18:34orchestrate the entire uh loop. So first

4:18:36of all sends the input uh and previous

4:18:39message to the agent. Okay. So what will

4:18:42happen? This agent executor will try to

4:18:44send the input. What is the input? Input

4:18:47of nothing but the user input. Okay.

4:18:50User input. Let's say user has asked

4:18:53let's say um I think I can give you the

4:18:56same example the previous example. Uh

4:18:59what is the capital of friends? And uh I

4:19:01need the population of capital of

4:19:03friends. Let's say this is the input. So

4:19:05first of all this agent executor will

4:19:07try to send this input to the agent and

4:19:09it will also send the previous message

4:19:11to the agent. Previous message means

4:19:13these three things start action and

4:19:15observation. So initially for the first

4:19:18time whenever you are executing the

4:19:19agent definitely this three uh three

4:19:22actually block would be completely

4:19:24empty. Okay this three block complet uh

4:19:26it should be completely empty. That

4:19:27means whatever thought action and

4:19:30observation you are sending it it should

4:19:32be completely empty. So your agent will

4:19:34only receive the user input that time.

4:19:36Okay. Now once it got the user input now

4:19:40your agent will decide okay whether it

4:19:43has to use any kinds of tools or not.

4:19:45Okay. Now you can see gets the next

4:19:47action from the agent. Okay. Uh so you

4:19:50can see

4:19:52um uh yeah so sends the input and

4:19:55previous message to the agent. Once it

4:19:56is done, now uh agent will try to uh

4:20:00let's say perform the reasoning

4:20:01operation with the help of reasoning. Uh

4:20:03it will decide the question we are

4:20:05getting whether I need to use any kinds

4:20:08of tools or not because agent is already

4:20:10connected with the tools. I think I

4:20:11showed you right. It has already

4:20:12connected with tools. Okay, it has

4:20:15connected with tools. Now agent will

4:20:17decide whether it has to use any tools

4:20:19or not. Let's say it has to use a tool.

4:20:21What tool? The tabular search tool. Then

4:20:23again agent will try to tell agent

4:20:26executor they uh uh um that like I have

4:20:30to use the tably search tool to give the

4:20:33answer. Okay. Now what agent executor

4:20:35will do? It will go to the tool. What

4:20:38tool? The tably tool. Okay. Tablely tool

4:20:41and it will hit the tably tool with the

4:20:45question user is asking. Let's say the

4:20:47first question was what is the capital

4:20:49of French? Now tab will refer some

4:20:51internet website and it will give you

4:20:53the answer. Again agent will give this

4:20:56answer to the agent. Okay. Now agent got

4:20:58the answer. Let's say the capital of

4:20:59France is Paris. Okay. Now what will

4:21:02happen? This is the observation. You can

4:21:04see execute the tool with provide an

4:21:05input adds the tool observation back

4:21:08into the history. Now what will happen

4:21:10again? It will try to add uh add uh

4:21:14inside this thought action observation

4:21:16because it is already getting this

4:21:17thought.

4:21:19uh then action and observation. Now this

4:21:22these are the parameter would be filled

4:21:23up. Now what is the thought? Thought

4:21:25should be uh let's say it already got

4:21:28the um capital of friends which is Paris

4:21:31action it has already taken it has used

4:21:32the tabularly tool. Okay. And uh the

4:21:35input was what is the capital of friends

4:21:37and uh uh sorry thought should be uh it

4:21:41already got the capital of friends.

4:21:44Okay. Um and action should be it has

4:21:47let's say already executed the tab tool

4:21:49and observation should be the Paris.

4:21:51Okay, it already got the Paris. Now it

4:21:53will run the second loop. Okay, it will

4:21:55run the second loop because it does it

4:21:56didn't get the final answer yet. Okay,

4:21:58it didn't get the final answer yet. Now

4:22:01again what it will do again exe agent

4:22:02executor will run. Okay, now agent uh

4:22:06agent executor will run the thought.

4:22:08What is the thought now? Next thought

4:22:10should be this one. Next thought should

4:22:13be this one. Now I need to uh I need to

4:22:16find the population of Paris. Okay, this

4:22:18should be the next part. Again go to the

4:22:20agents. Again agents will decide whether

4:22:23it has to use a tool or not. So again it

4:22:26will tell okay I need to use the tab

4:22:27search tool. Agent executor will go to

4:22:29tab search tool. It will hit the tab

4:22:32search again get the realtime

4:22:33information pass it to the agent. Now

4:22:35agent will again fill up this

4:22:36information with thought action and

4:22:37observation. You can see thought action

4:22:40and observation. Okay let's see it got

4:22:422.1 million. Okay, now it got the final

4:22:45answer. Okay, now this agent will tell

4:22:48now I have the [clears throat] final

4:22:49answer. Now once agent executor got this

4:22:51one. Let's say now I have the final

4:22:53answer that time this agent executor

4:22:55will stop. That means this is running

4:22:56the entire loop. Okay, that means this

4:22:59is running the entire loop. So once you

4:23:00are getting the final answer, this

4:23:02particular loop would be executed uh

4:23:04exited and your application will stop

4:23:06and you will be able to see the final

4:23:08answer. Okay, so that's how things are

4:23:10working guys. That's how the langen

4:23:12agent and agent exeutor we are creating

4:23:15it is working internally like that.

4:23:17Okay. So whenever you are using this

4:23:19react agent so definitely you have to

4:23:21use this agent executor. This is very

4:23:23much required. Now I think guys you are

4:23:25pretty much clear about the langen

4:23:27create agent. Okay how it works. Sorry

4:23:31langen react agent how it works. Why we

4:23:33need this agent exeutor along with that.

4:23:36Okay. Now let me show you as a code.

4:23:39So you can see the code guys. Uh in the

4:23:41code itself we have already written this

4:23:43create react agent. It takes lm tool and

4:23:45prompt. Okay with the help of prompt it

4:23:48performs all the instruction how this

4:23:50react agent works. I think I already

4:23:51showed you the prompt and to run this

4:23:53agent I need the agent exeutor. That's

4:23:55why we are giving this agent tool we are

4:23:57also giving because I think you know

4:23:59that uh agent executor will uh invoke

4:24:02this tool. Okay that's why tool access

4:24:04also I need to give to the agent

4:24:05executor and there's another one

4:24:07verbose. Okay. Barbos is the all the

4:24:09execution is happening right internally.

4:24:11See you can see the logs but if you make

4:24:13it as false let's say I will make it as

4:24:15false. So what will happens? You won't

4:24:17be able to see any kinds of

4:24:21execution. Let me again create the react

4:24:24agent executor. Now if I run the agent

4:24:28see you won't be able to see any kinds

4:24:29of logs. See it executed but you can't

4:24:33see any kinds of log but still you will

4:24:34be able to see the output. Okay output

4:24:36is there. But whenever you make it as

4:24:38true right so you will be able to see

4:24:42the

4:24:44um log. So for this again I have to

4:24:48execute the agent.

4:24:58Now see this particular log you will be

4:25:00able to see whatever decision uh

4:25:02whatever thought actions and observation

4:25:04your agent is performing you are able to

4:25:06see that okay in live so that's why we

4:25:09make it as uh this parameter as true

4:25:11okay now I think you are clear enough

4:25:13guys okay so yes guys so that's how we

4:25:16can uh use this lang chain to develop

4:25:19this kinds of single uh single actually

4:25:23agent system and this is our first agent

4:25:26guys uh This is like a very simple

4:25:29agents we have created. Uh so don't

4:25:31worry in the next video I'm going to

4:25:33also show you how we can create the

4:25:34multi- aent system. So here only one

4:25:36agent is working right. But if you want

4:25:38we can also create multiple agent and

4:25:40that will be working together. Okay this

4:25:42is also possible. Now uh what I'm going

4:25:44to show you guys uh I'm going to show

4:25:46you how we can convert it uh this

4:25:48particular notebook in in a application

4:25:51file that means app.py and we can run

4:25:54that particular app.py Pi okay because I

4:25:56have showed you the research right now

4:25:58that means the experiment right now but

4:26:00in production definitely will you will

4:26:02not create the Jupyter notebook file

4:26:04instead of that you have to create a

4:26:05python file so let's say I'm

4:26:07[clears throat] going to name it as

4:26:08app.py Pi.

4:26:10Okay. So, simply what you can do, you

4:26:12can copy whatever code you have written

4:26:15in the notebook in this app.py. See, I

4:26:19just copy pasted the same code. Copy the

4:26:23same code. But before that, let me show

4:26:25you how we can improve this agent. Um,

4:26:29if you want to improve it, if you want

4:26:31to add some more tool, so how it can be

4:26:33done. Let's say here I want to add

4:26:35another tool and that particular tool

4:26:37will real time search the weather

4:26:39informations. Okay. Uh weather

4:26:41informations given any kinds of location

4:26:44because right now I'm using the

4:26:46tabularly search tool. It is completely

4:26:47fine. But I want my custom custom tool.

4:26:51Let's say I have created a custom

4:26:53function and that custom function I want

4:26:54to use use as a tool. Okay. How it can

4:26:57be done? Let's try to see that. So for

4:26:59this uh what I'm going to do I'm going

4:27:01to let's say import

4:27:04this langen

4:27:07dot

4:27:09tool

4:27:11okay import

4:27:14there is a function called tool you have

4:27:16to import that and I will import another

4:27:18library called request okay this two

4:27:21library I'll import once it is done now

4:27:24simply here I'm going to create a

4:27:26function so after this search tool maybe

4:27:29I can create my custom function. So this

4:27:31custom function will get the uh weather

4:27:34information. Okay.

4:27:37So I've already written a function. So

4:27:39let me show you this function how it

4:27:41works. So maybe I can show you test ip

4:27:46or let's say here itself. I'm going to

4:27:48show you how this function works.

4:27:51Yeah. So this is my function guys. So

4:27:53what this function does this function

4:27:55takes a city name. Okay. or given any

4:27:57kinds of location and it it it fetch the

4:28:00current weather informations of that

4:28:02particular city. So for this we are

4:28:03using this weather stack API. Okay,

4:28:06weatherstack API I think you know this

4:28:08is a website weatherstack.com.

4:28:10So let me show you

4:28:14uh

4:28:16this is the website

4:28:23weatherst.com. Okay. So this is the

4:28:27website guys. So here first of all you

4:28:28have to create a account. Uh just sign

4:28:30up with free. Okay. So once you sign up

4:28:33you'll be able to see your dashboard.

4:28:34Okay. So if you go to the dashboard

4:28:37uh

4:28:40so here you will be see this kinds of

4:28:41interface okay and uh we are using the

4:28:44free plan so in free plan only we can

4:28:46search the real-time weather information

4:28:48but if you're using the paid

4:28:50subscription of this weather uh stack

4:28:52that time you can perform location

4:28:53search uh astronomy data hour by hour

4:28:57okay full historical data so there been

4:28:59so many things you can perform here but

4:29:02I only need for the weather information

4:29:04That means my free plan is completely

4:29:05fine. So here you have the API key. You

4:29:07just need to copy this API key. Okay. So

4:29:10don't use my API key. I'm going to

4:29:11remove it after the recording. So here

4:29:13you have to pass this weather API key.

4:29:15Now what I can do maybe in the itself I

4:29:18can mention my

4:29:20API key. Uh so here is

4:29:24so I already collected this API key

4:29:26guys. Let me show you.

4:29:31So this is the API key. weather stack

4:29:33API key and this is the API key I have

4:29:35copy pasted from the dashboard. Okay.

4:29:38Now simply here itself you have to load

4:29:41this API key as well. So let's load it.

4:29:44Weather stack API key west.get weather

4:29:46stack API key. So you're also loading

4:29:47this. Okay. Once it is done now see this

4:29:50API key would be given here. Now how

4:29:52these things will work let me show you.

4:29:54I will copy this and uh I will paste it

4:29:57here. Now f string I'm going to just

4:30:01remove it.

4:30:03because this is I have given only for

4:30:05static variable f string I don't need

4:30:14now if you give any city here let's say

4:30:15I'll give

4:30:18I'll give home

4:30:24hit enter

4:30:26uh okay you have to pass the API key

4:30:28right so let's copy the API Okay.

4:30:43Now if I hit enter, see you will be

4:30:46getting uh response like that. Okay. So

4:30:49this is having the informations about

4:30:51the Mumbai uh the current uh weather

4:30:54information as you can see. Okay. the

4:30:56kind of weather information it is

4:30:58having. Okay. Now I have to extract the

4:31:00data from this particular JSON itself.

4:31:03So what I have done I have written a

4:31:05function here as you can see. So this

4:31:07function hit this URL with this API key

4:31:10and you can give any kinds of city name.

4:31:12I'm hitting with the help of this

4:31:13request library I have already imported

4:31:15here as you can see request. So once we

4:31:17get the response so what we are doing we

4:31:20are just converting to the JSON. Now we

4:31:22are telling if current not in data. So

4:31:25I'll tell could not find the face

4:31:26weather data because current parameter

4:31:28should be there because in the current

4:31:30one we are having the current weather

4:31:31information. Okay, this temperature

4:31:33weather it is having. Okay, so we are

4:31:35getting this current key. Now once we

4:31:37get the current key I'm taking the city

4:31:39name, temperature, weather and humidity.

4:31:41Okay, these are the information I'm

4:31:42taking. If you want you can also take

4:31:44any other information. It's completely

4:31:45up to you. So this is a function custom

4:31:47function. Now if I want to use this

4:31:49custom function as a tool. So what I

4:31:51have to do I have to write a decorator

4:31:53at the tool I have imported. Okay. So

4:31:56this tool I have imported. I have to

4:31:58just give this particular tool. Now what

4:32:00happens? This particular function

4:32:01becomes a custom tool. That means this

4:32:04tab search result this is a predefined

4:32:06tool. This is already developed by some

4:32:08other organization or other company or

4:32:10other developer. But right now this get

4:32:13weather data function we have created

4:32:14this is our tool or custom tool. Okay.

4:32:17That's how we can create our custom tool

4:32:18and we can use it inside our agent.

4:32:20Okay, this is also possible. Now let me

4:32:22execute. Now simply what you have to do

4:32:25uh here itself in the tool itself

4:32:29uh where I have mentioned the tool. Huh?

4:32:31In the tool you just need to give the

4:32:33tool name which is get weather data.

4:32:36Okay, that's it. Uh get weather data

4:32:42name.

4:32:43Yeah, now let's execute. I mean I will

4:32:45execute from the beginning.

4:33:04Okay. Now initialize the LM. Now we also

4:33:07involving the LLM for some response. Now

4:33:11facing the prompt. This is the prompt.

4:33:14Now we're initializing our tools. Okay.

4:33:16Now see you can pass list of the tools.

4:33:18You can pass hundred of tools. Okay.

4:33:20It's up to you. Now we are creating the

4:33:22agent and we are passing the list of the

4:33:24tools right now. Now my agent is having

4:33:27multiple tools. Okay. One is the search

4:33:28tool and this is the get weather tool.

4:33:31Now I'll again execute.

4:33:34Uh now uh my executor is ready. Now I

4:33:37can give a prompt. So now I'll give this

4:33:40particular prompt. Let's say

4:33:45this is the problem. Find the capital of

4:33:47India and then find the uh find its

4:33:50current weather. Now see if I execute

4:33:52you can real time see see I should first

4:33:55search the capital of India uh uses the

4:33:57weather data tool find the current

4:33:59weather. See first of all it has used

4:34:01the tably search tool to get the capital

4:34:03of India. So it is referring some

4:34:04website uh Indian website and it is

4:34:07getting uh the capital of India which is

4:34:08New Delhi. Okay. So we got the New

4:34:11Delhi. Now once it got the New Delhi now

4:34:13what it is doing guys it is utilizing it

4:34:16is utilizing my get data tools. Okay my

4:34:19get data tool and it is fetching the

4:34:21weather informations. Okay so that's how

4:34:24things are working guys. I think you got

4:34:26it. Okay that means now it is having

4:34:28multiple tools. So tably s it is

4:34:32utilizing for the search operation.

4:34:33Okay, for uh finding the capital of

4:34:35India and my get weather data tool it is

4:34:37utilizing to get the weather

4:34:38informations and how it is deciding with

4:34:41the help of this react agent. Okay,

4:34:44because it is internally using LLM and

4:34:46LLM is doing the reasoning. Okay, and it

4:34:48is deciding what tool to call and this

4:34:51kinds of tool calling and everything is

4:34:52happening with the help of this agent

4:34:53executor because it is running that

4:34:55three-step that means uh I think I

4:34:58showed you uh three-step means first of

4:35:00all thought, actions and observation.

4:35:02Okay, that's how things are working.

4:35:05Okay, I hope you get it. Now, if I want

4:35:07to uh convert everything in the app.py

4:35:09guys, so this is the final code. So, let

4:35:11me select my environment which is lang

4:35:13agent. So, this is the final code. I

4:35:15just copy pasted the same code, okay,

4:35:17from my notebook. As you can see the

4:35:19same code, nothing change. Okay, now I

4:35:23can run the app.py. Let me show you. So,

4:35:26I will open up my terminal and if I

4:35:28execute my app.py.

4:35:30So, python app.py Pi

4:35:36uh okay so it is telling table okay uh

4:35:39because I'm running the app.py and now

4:35:41app.py will refer this env because

4:35:43previously I created inside resource

4:35:44folder so what I can do I can copy all

4:35:46of the key and mention inside this

4:35:48particular variable okay now let's

4:35:51execute the terminal clear now again

4:35:53execute app.py

4:35:57Now see agent is executing.

4:36:02Now see first of all it is uh getting

4:36:04the capital of India.

4:36:07Now once is uh got that it is utilizing

4:36:10my custom tool get weather data and it

4:36:13is giving you the temperature. Okay. Now

4:36:16this is the final temperature. As you

4:36:17can see the capital of India is New

4:36:19Delhi and the current weather is 37 uh

4:36:2337°C with H. Okay, perfect. That means

4:36:26we have implemented our first agent

4:36:29guys. Congratulation with the help of

4:36:30Langen.

4:36:32Okay, and don't worry, I'm also going to

4:36:34show you how we can create the multi-

4:36:35aent system in the next video. Now let's

4:36:38say if you want to convert uh this uh

4:36:40app to a user interface, this is also

4:36:43possible. Maybe we can add uh streamlit

4:36:46user interface. So what I have done

4:36:48guys, I have uh just designed a

4:36:50streamlit user interface with the help

4:36:52of chat GPT. Uh you can also do that.

4:36:55Okay, it's like very easy. Uh you just

4:36:57go to the chat GP and tell I need a user

4:36:59interface for this code. So it will

4:37:02generate for you. Okay, so what I have

4:37:04done guys? Uh I have already generated a

4:37:09So what I can do? Let's say I'll rename

4:37:11this file. Maybe I can name it as

4:37:13main.py. pi. Now I'll create another

4:37:15file here. I'm going to name it as

4:37:16app.py.

4:37:18Okay. Inside that I'm going to paste my

4:37:20updated code.

4:37:24So this code is having the streamlit

4:37:26user interface.

4:37:28Okay guys, so this is the code. So

4:37:30nothing else. I just added the

4:37:31streamlit. Uh I think you know streaml

4:37:33is a python package with the help of we

4:37:35can uh create the user interface without

4:37:37writing any kinds of HTML and CSS code.

4:37:39So first of all we have to install this

4:37:41streamlit. Uh so I will add this in my

4:37:43requirement streamlit. So let's install

4:37:49pip install hyphen requirement.txt

4:37:51Tasty.

4:38:33Okay, installation is complete. Now if I

4:38:35go to my app.py, now this error will

4:38:38disappear. Yeah, now see only change uh

4:38:42it has done it has set a streaml page

4:38:45configuration. So there you can see it

4:38:48has done a page configuration. Uh page

4:38:50title is agentic assistant page icon. Uh

4:38:54this is centered layout. This is the

4:38:56title

4:38:58and uh we have given a markdown search

4:39:00and weather AI agents using langen. And

4:39:04everything is same. The only thing is

4:39:05that at the last uh it has added the

4:39:08user query section. So there would be a

4:39:10input box. So there I can give the query

4:39:13and there would be a button. If I run

4:39:15this button, so my agent will be

4:39:17executing. Okay, so this is a simple

4:39:19user interface code my uh chatgpt added.

4:39:22Okay, inside my this main.py. Now let's

4:39:25execute and see how this looks like. I

4:39:28will clear and run streaml

4:39:33run app.py.

4:39:37I'll give the permission

4:39:39now.

4:39:45I'll show you this agent.

4:39:52Okay. So here I'm getting an error. So

4:39:54let me see the error.

4:39:59Okay. So this error I'm getting because

4:40:00I told you uh you have to add this line

4:40:04otherwise this error might come because

4:40:06I'm using Windows.

4:40:10I will add in the app.py. I

4:40:13here itself I will add that I have to

4:40:15import certify

4:40:18okay done now if I reexecute

4:40:22it should work

4:40:27see it's working now aentk assistant you

4:40:30can see this is the user interface now

4:40:32here I can give my query so maybe I can

4:40:35pass

4:40:38find the

4:40:42capital

4:40:44of let's say French

4:40:48and uh

4:40:50the current

4:40:55weather.

4:40:56Okay.

4:40:58Now if I run my agent,

4:41:02you can see agent is thinking.

4:41:06So every agent actually thinks. Okay. If

4:41:08you use any kinds of agent guys, you

4:41:10will see that this uh thinking uh option

4:41:13is there because internally it is

4:41:15executing

4:41:17uh that uh tools and everything all of

4:41:21these obs uh I mean three steps are

4:41:22executing like thought uh then action

4:41:25and observation that's why it's taking

4:41:27some time okay if you open any kinds of

4:41:29agent uh let's say if you open VS code

4:41:31agent if you open cloud desktop if you

4:41:34open Gemini you will see that this um

4:41:36process would be there Okay. Now see uh

4:41:38response generated. The final response

4:41:40is the capital of France is Paris and

4:41:42the current weather there is 11°C with

4:41:45rain and thunderstorm. Okay. That means

4:41:48our agent is perfectly working fine.

4:41:50Okay. Amazing. Now uh what we can do if

4:41:54we want we can also deploy this over the

4:41:56cloud because right now it is running on

4:41:58local host and people can't access my

4:42:01agent. So I can if I if I want I can

4:42:03also um I mean host this. So if you want

4:42:06to host this. So what I can do uh you

4:42:09can use uh different different cloud

4:42:10provider. You can use AWS, GCP, Azure.

4:42:13But uh let me show you one amazing cloud

4:42:16provider. There you can deploy this uh

4:42:18agent as free. So the cloud name is

4:42:21rendercloud. Okay, render.com. So if I

4:42:23open render.com. So you have to first of

4:42:25all create a account if you don't have

4:42:26account. So I already have the account.

4:42:28I'll just try to click on the dashboard.

4:42:31I'll login with my Gmail.

4:42:39Okay. Now simply what you have to do

4:42:42here first of all you have to um I mean

4:42:48upload this code to the GitHub. Okay. So

4:42:51what I will do guys I'll simply upload

4:42:54but before uploading I don't need to

4:42:57upload this because if I upload my my

4:43:01API key will be exposed. So here I will

4:43:03add another file called dot get ignore.

4:43:08Okay. Inside that I will mention env

4:43:12should be ignored and in researchb

4:43:18should be ignored. Okay. Now let's uh

4:43:22create a GitHub repo. I'll open my

4:43:24GitHub.

4:43:27I'll go to the repository.

4:43:31I'll click on new.

4:43:34I can give a name. So let's say I'll

4:43:36give

4:43:38this name

4:43:43search and

4:43:47weather AI agents using langen.

4:43:50Uh I'll add a readmi file.

4:43:54Then simply create the repository.

4:43:59and make sure you keep it as public.

4:44:01Okay, you can also make it as private.

4:44:03It's up to you. Now I'll click on code,

4:44:05copy this link address. I'll open up my

4:44:09local folder and clone this repo here.

4:44:12So get clone

4:44:18done. Now what I will do, I'll just copy

4:44:21this. Git and paste it here. Okay. And

4:44:25this folder I'm going to remove it. I

4:44:27only need this. Git. Okay. Now from my

4:44:29VS code itself, I can commit the changes

4:44:32issue. Now if I show you see uh this env

4:44:36is ignored. Now simply I'll commit the

4:44:38changes.

4:44:41Now I'll just write get add space dot.

4:44:49Now get commit

4:44:53m

4:44:54uh I'll give updated.

4:45:00Now get push

4:45:03origin

4:45:06main.

4:45:10Okay. Now if I go to my GitHub

4:45:13refresh

4:45:16see all of the code are available. Okay.

4:45:18Now let's try to reply. So I'll go to my

4:45:20render

4:45:22and here what I'm going to do guys I'm

4:45:24going to just create a new web service.

4:45:30Okay. Now here I will click on public

4:45:33git repository. Now I'll copy the link

4:45:38and paste it here. Now let's connect.

4:45:43Done. Now you can give a other name also

4:45:45if you want. Uh it has automatically

4:45:48taken my um repository name. Now

4:45:51everything just keep it as same. Uh only

4:45:55here you just need to give a command.

4:45:57Okay. See it will also install the

4:45:58requirement. This requirement we are

4:46:00having. Okay. Now let's give the command

4:46:03of running streaml app. So this is the

4:46:06command. So basically this command will

4:46:08run the streaml server. Now here I will

4:46:11take the free okay free instance and

4:46:13here you'll be by default you'll be

4:46:14getting 512 MB RAM and 0.1 CPU uh which

4:46:19is a little bit slow uh but it is fine

4:46:21for the learning if you want to let's

4:46:23say professionally deploy it then you

4:46:25can take their plan okay but I think

4:46:27this is fine now here I'll try to add my

4:46:29environment variable so here I'm having

4:46:33open API key let's add it

4:46:37and I have to give the blue.

4:46:43I copy this.

4:46:50Then I will add the environment

4:46:52variable. Another one

4:46:56tab API key.

4:47:06I will add it here.

4:47:09Then add another one

4:47:12which is

4:47:14this weather stack API key

4:47:19and add the value

4:47:27done. Now simply

4:47:30um okay now simply I'll just do the

4:47:33deployment deploy web service.

4:47:41So this is the free instance. Uh it may

4:47:43take some time guys. We'll wait once uh

4:47:46this particular option is live. Okay.

4:47:49Now it is building the entire uh

4:47:51instance. Okay. Internally it will set

4:47:52up everything. Once this is live we'll

4:47:54be able to test that. Now see it's

4:47:56running.

4:48:15Now see it is installing the

4:48:17requirements one by one. Uh let's wait.

4:48:26So I will pause the video once this

4:48:27installation everything is complete.

4:48:29I'll come back.

4:48:31So guys as you can see our application

4:48:33is live right now. Uh everything is

4:48:36fine. There is no added. Now there is a

4:48:38link you can copy and you can open in

4:48:40your browser.

4:48:42So there you will be able to see your

4:48:44agent.

4:48:53So guys uh you can see this is our

4:48:55application. This is completely live. Uh

4:48:57if you're using free instance it may

4:48:59take some time. Uh now we can test it.

4:49:01So here I'll just tell find the capital

4:49:06uh of Nepal

4:49:10and

4:49:11tell me the

4:49:15weather

4:49:17of that. Now I'll run the agent.

4:49:24Now see agent is working internally.

4:49:36So guys, here is the final response. The

Building End-to-End Multi-Agent AI System with LangChain

4:49:38capital of Nepal is Kathmandu and

4:49:40current weather 20° C with drizzle and

4:49:4494% humidity. Okay, amazing. Now you can

4:49:48share this uh URL with anyone they will

4:49:50be able to use your agent. So yes guys,

4:49:53I hope you understood. I hope you have

4:49:55seen how we can utilize uh this lang

4:49:58chain to develop these kinds of AI

4:50:02agents. But uh here we have created the

4:50:04single agents. Okay, single agents

4:50:06pipeline. Uh in the next video I'm going

4:50:09to show you how we can create the multi-

4:50:10aent system. Okay. So everything would

4:50:12be covered. So guys uh we'll be

4:50:15continuing with our complete agentic AI

4:50:18course. And I think you remember in our

4:50:20previous video I have already shown you

4:50:23how we can implement uh a single AI

4:50:26agents with the help of langen. So this

4:50:28was our first AI agents implementation

4:50:30with langen. Then I told you I'm also

4:50:33going to show you how we can create

4:50:35multi- aent system with the help of

4:50:37langen. So in this video I'm going to uh

4:50:40show you the entire implementation how

4:50:42we can utilize lang chain orchestration

4:50:45framework for implementing this kinds of

4:50:47multi- aent AI system. Okay. So make

4:50:50sure you watch this video till the end.

4:50:53Uh you don't miss anything. If you

4:50:55complete this video you'll be able to

4:50:56implement u multi- aents AI system with

4:50:59the help of langen. And in this video

4:51:01I'm not only going to implement uh these

4:51:04AI agents uh even after implementation

4:51:07I'm also going to show you how we can

4:51:09add the user interface and how we can

4:51:11deploy this kinds of multi- aent system

4:51:13on the cloud platform. I implemented a

4:51:17weather AI agents with the help of

4:51:19langin. So there I created a single

4:51:22agent uh that has some tool connection

4:51:25like I given tabuli search tool and I

4:51:28created one of the custom tool. Okay. Uh

4:51:31that particular tool uh can access any

4:51:35kinds of uh realtime weather

4:51:37informations given any kinds of city or

4:51:40uh location whatever okay that means if

4:51:42I show you the architecture diagram. So

4:51:46yeah if I show you the architecture

4:51:48diagram. So there let's say I created a

4:51:50single agent. Let's say this is our

4:51:53agent.

4:51:56Okay. So this agent having some

4:52:00connection with tool.

4:52:02Let's say it is having connection with

4:52:05tabuli.

4:52:13Okay. Okay. And it is having connection

4:52:15with

4:52:16weather

4:52:18API.

4:52:25Okay. So whenever I was giving any kinds

4:52:28of prompt or let's say input. So first

4:52:31of all uh this will uh and definitely it

4:52:34was connected with the LLM. Okay.

4:52:37because LLM was the brain and with the

4:52:40LLM actually it will perform the

4:52:41reasoning operation and um whenever I

4:52:45was giving any kinds of input then LLM

4:52:47was deciding whether I need to use a

4:52:50tool or not uh with respect to the

4:52:51question let's say if I'm giving a

4:52:53prompt uh just tell me the capital of

4:52:56India and uh give me the weather

4:52:58informations of that right so what it

4:53:00will do it will first of all go to the

4:53:02agents and it will search with the help

4:53:04of tab like what is the capital of India

4:53:07India then it will get let's say the

4:53:09capital of India is Delhi. Now what it

4:53:11will do again it will tell okay now uh

4:53:14you just need to fetch the weather

4:53:16information

4:53:18of the uh Delhi. So with the help of uh

4:53:20this weather API it will real time get

4:53:23this informations and uh your agent will

4:53:26try to refine the output and it will

4:53:29show you the final output.

4:53:32Okay. So that's how the things were

4:53:33working and the whole system actually we

4:53:36have orchestrated with the help of

4:53:37langen. So there we used actually create

4:53:40uh react agent right this functionality

4:53:42we used from the langen and to execute

4:53:45this create uh react agent we used agent

4:53:47exeutor and the full form of uh react is

4:53:51reasoning and uh action or acting

4:53:54whatever you can say. So with the help

4:53:56of that we created the agent. Okay. So

4:53:58this was the previous architecture. Now

4:54:01first of all let me give you u the

4:54:03multi- aent uh we'll be implementing uh

4:54:07for uh for this video. Uh first of all

4:54:09I'm going to give you the idea what is

4:54:12the system we're going to develop. Then

4:54:14I'm also going to show you the

4:54:16architecture diagram. Okay like what

4:54:18would be the flow and how we can uh

4:54:22create the AI agents how we can make the

4:54:24connection with different different

4:54:25tool. That means the entire uh overview

4:54:27I'm going to give then we'll start with

4:54:28the development. So for this uh this is

4:54:31the uh this is the actually content I

4:54:34have prepared. So as you can see uh

4:54:36multi- aent system with the help of

4:54:38langen we'll be developing in this

4:54:40video. So a multi- aent uh research

4:54:42assistant is a fully autonomous AI

4:54:45system that thinks uh search reads and

4:54:48writes on its own. Okay that means here

4:54:50we'll be creating a multi- aent research

4:54:52assistant. Okay basically this will

4:54:54perform the research. So I think you

4:54:56have seen in chart GPT or Gemini there

4:54:58is a research option is available uh if

4:55:01you open that uh uh let's say

4:55:03application. So if you perform the

4:55:05research so what it will do it will take

4:55:06some time and it will perform the

4:55:08research operation on the internet u uh

4:55:11in a given topic right so that's how

4:55:14we'll be also implementing a research

4:55:15assistant so that research assistant

4:55:18will be having some kinds of uh let's

4:55:21say tool access and with the help of

4:55:24tool it will perform the realtime

4:55:26resource operation okay and here we are

4:55:28not going to create a single agent

4:55:30instead of that we'll be creating the

4:55:32multi- aent system here so as you can

4:55:33see mult multi- agent research assistant

4:55:34a fully autonomous AI system that

4:55:36thinks, searches, reads and writes its

4:55:38own. Okay. Instead of a single AI

4:55:41answering your question from tools, uh

4:55:44here we'll be developing a team of

4:55:46specialized intelligence agents. Okay. A

4:55:48team of intelligence agents will be

4:55:50developing here uh that collaborates

4:55:52together to produce a professional

4:55:54research report on a uh topic you give

4:55:57them. That means if you are giving a

4:55:59topic okay so what it will do it will

4:56:01per uh it will use all of the like

4:56:04specialized intelligent agents okay it

4:56:07will work together and it will try to

4:56:09give you a professional okay research

4:56:11report on that particular topic. So it

4:56:13it will not only research okay it will

4:56:15also write the report for you okay and

4:56:18you can see the search agent goes so the

4:56:21first agent should be the search agents

4:56:23with the help of search agents will be

4:56:25uh doing the real time let's say

4:56:26research operation over the internet the

4:56:29search agent goes out on the live

4:56:31internet and finds the most relevant

4:56:33recent sources okay so it will perform

4:56:36the research operation of all of the

4:56:39internet sources it is having uh then

4:56:42the reader agent then dives deep into

4:56:44the those sources and scrap the scrap

4:56:46and extracting meaningful content. That

4:56:49means here I'm going to create another

4:56:50agent. The agent name would be reader

4:56:53agent. So that region agent uh what it

4:56:55will do it will try to scrap and extract

4:56:58okay all of the content from that

4:57:00sources. Let's say the first agent will

4:57:03return you the recent

4:57:05uh recent relevant sources that mean

4:57:08some URL. Okay. Now what we will do?

4:57:10we'll just try to pass this URL to the

4:57:12reader agent. So reader agent will take

4:57:14those URL and it will open that URL and

4:57:17whatever content it is having it will

4:57:19extract a scrap then uh it will gather

4:57:22those content. Okay. Then here we'll be

4:57:25creating another actually

4:57:27agent the writer agent uh writer agents

4:57:30uh takes all that generated intelligence

4:57:33and craft a well ststructured detailed

4:57:36report. That means write uh there would

4:57:38be another agent called writer. So this

4:57:39will take all of the content and it will

4:57:42uh prepare a draft. Okay, prepare a

4:57:43draft report. And after preparing this

4:57:46draft report, we'll be sending this

4:57:47draft report to another agent called

4:57:49critic agent. You can see and finally

4:57:51the critic agent reviews the entire

4:57:53reports, scores it and gives feedback

4:57:56just like a senior researcher reviewing

4:57:57a junior's work. Okay, that means at the

4:58:00last we'll be creating another agent.

4:58:01This agent will try to review. Okay,

4:58:04whatever let's say your writer agent has

4:58:06written, it will review. it will uh give

4:58:08you the feedback. Okay, it will uh do

4:58:10some marking. Okay, just like let's say

4:58:12you are a senior researcher. Whenever

4:58:14your junior is giving any kinds of task,

4:58:16you are reviewing that and you're giving

4:58:17the feedback. So, every single agent is

4:58:19powered uh powered by a large language

4:58:22model. Okay, connected through Langen's

4:58:24modern LCAL pipeline and orchestrated

4:58:27through a shared memory system that

4:58:29makes them works uh as one unified

4:58:32brain. Okay, so here we'll be utilizing

4:58:34the modern langen guys. So previous

4:58:37agent I created with the help of the old

4:58:39lang um but in this development I'm

4:58:42going to utilize the modern langen as

4:58:44well which is lce langen uh langen

4:58:48expression language so for this

4:58:50definitely you need the understanding

4:58:52about the fundamentals of langen so

4:58:54that's why I told you langchen

4:58:56prerequisite uh I mean definitely should

4:58:58be there if you are working with this

4:59:00kinds of agent so for this langen on my

4:59:03YouTube channel I already have one

4:59:05dedicated uh video guys ultimate langen

4:59:08crash course for developers uh so it's

4:59:10uh around seven more than 7 hours of

4:59:13course 7 hours of recording so there I

4:59:15already covered this LCL and everything

4:59:18if you go to the time stamp section uh

4:59:20you can see uh here I have already

4:59:22covered this uh LCAL okay LCL okay the

4:59:27modern uh langen which is langen

4:59:30expression language okay so definitely

4:59:32you should have understanding on this

4:59:34other topic if you don't know please try

4:59:36to go ahead with my langen lecture I

4:59:38will add the link in the description

4:59:40from there you can check it out okay so

4:59:42the main fun is in this development

4:59:44we'll be using the modern langen instead

4:59:45of using the old langin uh uh I wanted

4:59:48to show you both of the langen version

4:59:50because still people uses old langen

4:59:52okay uh and people also use like model

4:59:55langen both I'm going to show you uh you

4:59:58can use any of them okay it's completely

5:00:00fine but I will recommend you to use the

5:00:02model lang chain because in model lang

5:00:05chain the updated langen so many

5:00:07functionality came and people are moving

5:00:09to that okay so instead of relying on

5:00:11old langchen maybe you can use that one

5:00:13okay so each and everything I'm going to

5:00:14clarify now I think guys uh the project

5:00:17introduction part is clear what to do

5:00:19now let me show you the architecture

5:00:22how we'll be building this kinds of

5:00:23system so guys uh this is the

5:00:25architecture I think uh you can see um

5:00:28let me show you the architecture yeah so

5:00:30this is the architecture so in this

5:00:31architecture guys as you can see uh here

5:00:34we'll be implementing multiple agents.

5:00:36So that means let's say this is the

5:00:37first agent uh we'll be developing and

5:00:40here we'll be passing given research

5:00:43topic. Let's say if I want to do a

5:00:44research I will give the research topic.

5:00:46So it will go to the first agent. Okay.

5:00:49Uh so this agent will have uh some kinds

5:00:52of tool access. So here I'm going to

5:00:54give tably API that means tably search

5:00:57tool access to this agent. So whatever

5:01:00research you are giving to this agent.

5:01:01So what it will do? It will use this

5:01:03tably API and it will uh uh do the

5:01:06realtime search operation over the

5:01:08internet and it will get the relevant

5:01:10sources. Okay. It will get the relevant

5:01:12website for that particular topic uh to

5:01:14this agent. Okay. Now what I will do

5:01:17here this particular response I'm going

5:01:19to save in a state memory. Okay. So here

5:01:21I will try to create a state memory. So

5:01:23state memory will try to save this

5:01:24particular response so that and your

5:01:27next agent can refer this particular

5:01:29response. Okay, your second agent can

5:01:32refer this kinds of response. Okay, so

5:01:34that's why we are using the shared

5:01:36memory concept. You can also improve

5:01:37this particular memory uh by utilizing

5:01:40some other technique. So this part I'm

5:01:41going to also discuss in my future

5:01:44lecture. So I think you you saw my

5:01:46entire plan there. I told you we'll be

5:01:49um I mean discussing this particular

5:01:50memory part in detail but as of now just

5:01:52try to consider we are using a state

5:01:54memory uh you can also replace the state

5:01:56memory with any other let's say uh other

5:02:00um um like memory database you can use

5:02:02that okay it's completely up to you but

5:02:04here I'm going to use a state memory um

5:02:07in Python okay I'll show you how we can

5:02:09implement that so now we'll be creating

5:02:11a second agent guys so this uh second

5:02:14agent name is reader agent so this

5:02:16reader reader agent will also have some

5:02:18kinds of tool access. So here I'm going

5:02:20to use a beautiful soup uh scrapper

5:02:22tool. So what this beautiful soup

5:02:24scrapper tool will do basically whatever

5:02:27URL you are getting from the first agent

5:02:29okay given topic. So this will take all

5:02:32of the URL and with the help of

5:02:34beautiful soup it will extract the

5:02:36content from the URL. I think you know

5:02:38with a beautiful soup we can perform the

5:02:40web scrapping. We can scrap the content

5:02:42from any kinds of given website right.

5:02:44So that's why the first agent is

5:02:46returning the web URL web uh sources and

5:02:49with the help of second agent we are

5:02:52extracting the content from the URL with

5:02:55help of beautiful soup. Then what we

5:02:58will do guys we'll try to pass this

5:02:59content to another state uh let's say

5:03:02memory uh called let's say scrapped

5:03:04content. Okay maybe I can create another

5:03:07uh another actually let's say object

5:03:09here called scrap content inside that I

5:03:10can save those informations. Okay. Now

5:03:13here we'll be creating um another two

5:03:16actually agent. You can also call it as

5:03:18chain inside modern langen. Instead of

5:03:20creating this kinds of like u agent in

5:03:23lang what you can do you can create a

5:03:25chain because at the end you got your

5:03:28final uh you got your final important

5:03:31content. Okay. If you got the final

5:03:32important content now it would be easy

5:03:34for you to generate that particular

5:03:37report and it would be easy for you to

5:03:40review that particular report. Okay. But

5:03:42the main thing is in that section. So

5:03:45basically here we are performing the

5:03:46real-time source operation on a

5:03:48different topic. After getting that

5:03:49we're extracting the content. Then if we

5:03:52have the final content guys we'll be uh

5:03:54creating a writer chain. Okay. In lang

5:03:56chain we we call it as a chain. Okay you

5:03:58can also consider it's a agent. Okay

5:04:01it's agent. It's a writer agent. So what

5:04:02this writer chain will do it will take

5:04:04that particular content. Okay your

5:04:06beautiful extracted and it will write a

5:04:09draft. Okay, it will write a draft

5:04:11report on top that on top of that

5:04:12particular

5:04:14um content. Okay, because at the end it

5:04:17has also connection with the LLM. Okay,

5:04:19it has also connection with LLM. It is

5:04:21also having connection with LLM. Okay,

5:04:23so with the help of LLM with the help of

5:04:24this uh content you got it will prepare

5:04:28a draft. So once it has prepared a draft

5:04:30what it will do guys, it will send this

5:04:33draft to the critic chain. Now what this

5:04:35critic chain will do it will try to

5:04:37review this particular draft whether is

5:04:39there any mistake or not is there any uh

5:04:41let's say improvement section or not it

5:04:43will try to review that once the review

5:04:45is complete okay once the feedback is

5:04:47complete then it will show you the final

5:04:49output okay it will show you the final

5:04:51output so you'll be able to see the

5:04:52final output even you will also see the

5:04:54feedback the ratings okay and everything

5:04:57you will be able to see from this critic

5:04:58chain that means the critic agent okay

5:05:00because it is also having a connection

5:05:02with the large language model all Right.

5:05:04So yeah, this is the entire uh actually

5:05:06architecture of this particular

5:05:07multi-agent system. So this is going to

5:05:10very interesting project guys. So make

5:05:12sure you watch till the end. So I think

5:05:13each and everything would be clear in

5:05:15your mind. Okay. Now uh here is the step

5:05:18guys we'll be following to develop the

5:05:20entire agent. So first of all at the

5:05:22first step guys we'll be setting up the

5:05:23environment. Then second step we'll be

5:05:26creating the tools. Okay. All of the

5:05:27tools we'll be creating one by one. Then

5:05:29third step we'll be creating all of the

5:05:31agents one by one. Then fourth step will

5:05:33be creating a pipeline. That means uh uh

5:05:36uh why pipeline is required? Let's say

5:05:38after creating end tools you have to

5:05:40combine them. Okay, you have to uh you

5:05:42have to add them together to work right.

5:05:45So we we can do it in the pipeline

5:05:47section. So once our pip entire agent

5:05:49pipeline is ready then we can run and

5:05:51test our agent. Okay. So this is the

5:05:52entire step we'll be following for

5:05:54developing this kinds of system. So

5:05:56guys, now I'm going to give you the idea

5:05:58why uh we have to create uh mostly

5:06:02multi- aents AI uh AI application. Uh

5:06:06what is the problem with the single

5:06:08agent? So I think you know that uh this

5:06:10is like very um I mean easy things you

5:06:13can understand. Let's say um let's say

5:06:16if there is a company okay if there is a

5:06:19company

5:06:21um let's say company uh what they does

5:06:25let's say they takes a project okay they

5:06:28takes a project

5:06:32okay after taking this project so what

5:06:34they do they just try to assign this

5:06:37project to a team right team of employee

5:06:43team of employee. So in this team uh

5:06:46what we have we have multiple employee

5:06:48let's employee one employee two

5:06:52employee three and so on. Okay. So what

5:06:56they do actually just just try to assign

5:06:59this kinds of project as a task to the

5:07:02team and definitely in the team itself

5:07:05they will try to divide the task to

5:07:07different different employee. Let's say

5:07:09here are some of uh let's say employee

5:07:11one is very good at with the front- end

5:07:14development.

5:07:16Okay, front end development. Employee 2

5:07:19is like really good with let's say AI

5:07:21development. Okay, and employee three is

5:07:26good at with backend development.

5:07:29Okay, backend development. So what they

5:07:31will do? So the project they are having

5:07:34uh so for the for the front- end

5:07:37development for this project they will

5:07:39assign the task to the employee one for

5:07:41API development uh uh sorry AI

5:07:44development for this project they will

5:07:46assign the task to employee employee two

5:07:48okay and for backend development for

5:07:51this project they will assign the task

5:07:53to the employee three okay that means

5:07:56all of the project will have these are

5:07:58the things are common right and it's not

5:08:01like that there would be a single guy

5:08:04okay single guy he can let's say handle

5:08:08each and everything I can't say he

5:08:10cannot handle he can handle definitely

5:08:13let's say if I'm hiring a full stack

5:08:15developer so definitely he will be able

5:08:17to handle this kinds of scenario he will

5:08:20be able to let's say implement the

5:08:22entire project but what would be the

5:08:24problem okay because if you see most of

5:08:26the fully stack engineer so they will

5:08:29have actually limited knowledge uh on

5:08:32this uh on this actually let's say

5:08:34individual topic. So for the end to end

5:08:38development whatever things they need to

5:08:40know they definitely will do that for

5:08:42you. But when it comes to the deep

5:08:45research, let's say I want to create

5:08:47some AI features uh for this project and

5:08:50uh I I need a deep research. Okay, I

5:08:53need a very um very good uh let's say

5:08:57good uh sources. Then after getting the

5:08:59good sources, I have to refer that

5:09:02sources and I have to build the AI

5:09:03features. Okay. So if we are only

5:09:06depending on this single let's say

5:09:08employee so he wouldn't be able to do

5:09:11that because he doesn't have actually

5:09:14that much of depth knowledge on this AI

5:09:16development okay he can only let's say

5:09:19uh use some of the framework library and

5:09:21he can implement that project for you

5:09:23but when it comes to deep deep let's say

5:09:25research let's say deep experiment he

5:09:27won't be able to do that that means with

5:09:29the help of single guy I can't perform

5:09:32actually multiple task task can be

5:09:34performed But the output the quality of

5:09:36output we'll be expecting this should

5:09:39not be good. Okay. This should not be

5:09:40good. This should be uh this should be

5:09:42kind of average output. But whenever we

5:09:46are having this kinds of project

5:09:47definitely will expect like very good

5:09:50quality output from my team. Right? And

5:09:52if we are uh if we are let's say

5:09:54assigning this kinds of task to the

5:09:56single employee so definitely single

5:09:58employee won't be able to give the

5:09:59quality output to me. So that's why

5:10:02every company having a team and in that

5:10:04particular team they they are hiring

5:10:07okay different individual those who are

5:10:10let's say expert expert in different

5:10:12different field let's say someone is

5:10:13expert in front end someone expert in AI

5:10:15development someone is expert in uh back

5:10:17end development okay and whatever

5:10:20project they are getting they're uh

5:10:21dividing their task to them so let's say

5:10:23employee one has completed front end

5:10:25employee two has completed AI

5:10:26development employee three has completed

5:10:28the backend development now they will

5:10:30combine they combine everything and they

5:10:32will prepare the project for you. Now

5:10:34when it comes for research let's say

5:10:35having a deep research on individual

5:10:38let's say topic so easily these kinds of

5:10:41employee can perform because he's only

5:10:43expert in front end he knows about the

5:10:45front end and if you give time okay if

5:10:48you give time if you tell this uh let's

5:10:50say employee just try to research and

5:10:52add some more front end feature with

5:10:54latest like framework he will be able to

5:10:56do that okay because he don't need to

5:10:58worry about the I development and back

5:11:00end development he will only focus on

5:11:01the front end development so that's

5:11:03[snorts] for AI developer guy also I can

5:11:05tell just try to explore more and add

5:11:07some other AI features as well. So

5:11:09definitely he will be able to do that

5:11:10because he doesn't uh need to worry

5:11:12about the front end and back end. Okay

5:11:14then employee 3 I'll tell just try to

5:11:17research more about the back end let's

5:11:18say I don't want to use uh flask you

5:11:20just need to use fast API just try to

5:11:22explore fast API you'll be able to do

5:11:24that okay so that's how individual

5:11:26person is working on individual task and

5:11:28the output we are getting from here this

5:11:31is like very good quality output okay

5:11:33good quality output we'll be getting

5:11:37okay that's how whenever we are creating

5:11:40kinds of agent application instead of

5:11:42creating a single agent Okay, instead of

5:11:44creating this kinds of single agent

5:11:46because in single agent if I want to

5:11:48perform all of this task okay if I want

5:11:50to perform all of these tasks so

5:11:51definitely the output should be very

5:11:53poor and if I'm using multiple agent

5:11:55okay the architecture I showed you I

5:11:57think so this is the architecture

5:12:00if I'm using multiple agent so here I'm

5:12:03assigning a uh different different task

5:12:06let's say first agent I have assigned

5:12:07your task is to only fetch the real-time

5:12:10data from the internet and give the uh

5:12:12collect the URL. Okay. Then you will try

5:12:14to save the state memory. Then second

5:12:16agent I have given another task. Your

5:12:18task is to take those URL and extract

5:12:20the content from that. Okay. So after

5:12:23extracting content agent save to the

5:12:24state memory. Then third agent I told uh

5:12:28um I mean let's say this agent just try

5:12:31to take those content and write a report

5:12:33on this particular resource. Okay. Your

5:12:36task is uh your only task is to generate

5:12:38the report. So it will try to generate

5:12:40the report. Then the uh fourth agent I

5:12:44told this agent you just need to take

5:12:46this uh draft and try to review that

5:12:49whether it is good or bad or it still it

5:12:52needs some feedback just try to read

5:12:53rate read this okay so this particular

5:12:56agent only uh is responsible for rating

5:12:59this okay or critique this particular

5:13:01task so once everything is done then we

5:13:03are getting the final output and this

5:13:05final output would be very good quality

5:13:07but if I am performing the same task

5:13:09with a single agent so definitely

5:13:10Definely the output would be very bad

5:13:12quality. Okay. So that's why this multi-

5:13:14aent things are required. Okay. That's

5:13:16why you are uh will be developing multi-

5:13:18aent system most of the time and all of

5:13:20the application you can see. Okay.

5:13:22Whatever application like cloud desktop

5:13:24or you are using VS code anti-gravity

5:13:27any anything you'll see that they're

5:13:29using multiple agents in the back end.

5:13:31They're running multiple agents. Okay.

5:13:33They're adding let's say 100 and 100

5:13:36like agents in their back end and

5:13:38they're performing one kinds of task.

5:13:40Okay. So yes, that's how guys uh we will

5:13:43be following this multiple agent

5:13:45development. And one more thing whenever

5:13:46you are creating multiple agents, so

5:13:48make sure all of the agents will have

5:13:50kinds of tool access. Okay, if it is

5:13:52required, definitely we'll give the tool

5:13:54access and all of the agents will have a

5:13:56large language model for the reasoning

5:13:57operation. Okay, I think everything is

5:14:00clear. Now we'll move on the uh

5:14:02development part, guys.

5:14:06So first of all I'm going to create a

5:14:08GitHub repo for this multi- aent. So

5:14:10let's try to create a GitHub repo. So

5:14:13here I'm going to give a name.

5:14:16Let's say

5:14:22I'll give a name here

5:14:26langen

5:14:31multi-

5:14:36multi- aent

5:14:43research

5:14:48research.

5:14:50Okay, research system.

5:14:55Uh I will make it as public repo and I

5:14:57will add the readmi file. I'll also add

5:15:00the g ignore. So here we'll be coding

5:15:02with python. So I'll select the python.

5:15:04After that you can select a license. So

5:15:06let's take this u maybe apache license.

5:15:10Okay. You can take any of the license.

5:15:11It's up to you. On it once it is done

5:15:13now let's try to create the repo.

5:15:18Okay. So repo is created. Now we have to

5:15:21clone this repo inside our local folder.

5:15:24I'll click on this code. Copy this link

5:15:26address. I'll open up my local folder.

5:15:28And here I will just try to open my

5:15:31terminal.

5:15:37Now let's clone it. So get clone

5:15:41paste this link.

5:15:45Okay. So this directory is already exist

5:15:47because previously I already created

5:15:51uh so what I can do maybe I can rename

5:15:53it.

5:15:58Okay I can rename it.

5:16:06Okay. Now just try to open your terminal

5:16:08in this directory and just write get

5:16:10clone

5:16:14and paste that URL. Okay, you have

5:16:17copied. Now if I hit enter, so you'll

5:16:19see my repo has been cloned. I will go

5:16:22inside that and I will also redirect my

5:16:24terminal inside this uh directory. So

5:16:27for this let's write cd command cd

5:16:30langin

5:16:32multi- aent

5:16:34research.

5:16:37Okay research system now I'm inside this

5:16:39particular folder. Now here I'm going to

5:16:42open up my quisel code studio

5:16:48visual code studio.

5:16:52Uh fine. Okay. Now the first thing guys

5:16:56uh I told you so let me show you the

5:16:58steps we'll be following.

5:17:01Yeah. So this is my actually um

5:17:06this is my actually note note file. So

5:17:08in this particular file you will be

5:17:10getting all the nodes and architecture

5:17:12steps everything. So this is excali uh

5:17:15like extension file. If you want to open

5:17:17it up so you have to install one

5:17:18extension from extension market called

5:17:21excali. So if you can search here Xcali

5:17:27Xcali drop okay so this particular

5:17:30extension you have to install if you

5:17:31install that you will be able to open

5:17:33this okay in your VS code itself

5:17:35uh fine so now if I show you my step

5:17:39um if I show you my step so the first

5:17:42step what I have to do uh I have to do

5:17:46the environment setup okay let's try to

5:17:48do the environment setup so for

5:17:50environment setup here I'm going to

5:17:51write all of these this step

5:17:56here let's say

5:17:58the first step you have to create the

5:18:00environment so to create the environment

5:18:02you can

5:18:03use the same command I think you used

5:18:05for the previous project

5:18:08on create-en n you can give the name

5:18:11let's say lang agent

5:18:15then you can specify the python python

5:18:18is equal to you can take 3.11

5:18:22and y okay you are giving this

5:18:24permission after that you have to

5:18:26activate that then you have to install

5:18:27the requirements okay so just try to

5:18:30create the environment so for me I think

5:18:32I already have the environment uh so I'm

5:18:35going to just activate the copy

5:18:39and activate the environment

5:18:42so see this lang engine is already um

5:18:45installed for me okay but if you don't

5:18:47have just try to create the environment

5:18:49then try to activate then after that

5:18:51Let's install the requirement.

5:18:53So here I'm going to add the

5:18:54requirement.txt and inside that I'm

5:18:57going to mention all of the requirement

5:18:58package I need.

5:19:01Um

5:19:03yeah so these are my requirement guys.

5:19:08Okay so these are my requirement uh I

5:19:10need for this particular project. So you

5:19:12can see we're installing langen. Um so I

5:19:15think you remember in previous project

5:19:17we use uh we installed actually langen

5:19:19old version. So let me show you it was

5:19:210.1 something I think. So this is the

5:19:24like uh first agent repository that

5:19:27means our single AI agent repository. So

5:19:28if I go to the requirement.txt as you

5:19:30can see we have installed langen 0.1

5:19:33here. Okay but here we're installing

5:19:35langen 0.2 that means this is the modern

5:19:38langen the latest one. So here actually

5:19:41lcl that means langen expression

5:19:43language is supported but here this is

5:19:44this was not supported. Okay. So, both I

5:19:47have showed you uh but try to use the

5:19:49latest one if you want. Okay. Uh latest

5:19:51one is always good. Uh because older one

5:19:54uh people are uh not using anymore. So

5:19:57they are trying to u moving to the new

5:19:59one. It doesn't mean older one cannot be

5:20:02used. Still you can use old one. Okay.

5:20:03There are some good functionality you

5:20:05can use. But yeah uh whenever we have

5:20:07the latest one so why not we can utilize

5:20:09this this one. Okay. Then we are

5:20:12installing this langen core community

5:20:13openi lang openai. So you can use any

5:20:16other LM provider as well. It's

5:20:18completely fine. Simply you just need to

5:20:19go to the RGP and tell let's say you

5:20:21want to use open router or Gemini. So

5:20:24you'll be able to see that they will

5:20:25suggest you the code. Okay. You can

5:20:26replace that code here. Okay. Then

5:20:28streaml I need for creating the user

5:20:30interface. Then tavly for this search

5:20:33tool. And I told you we'll be creating

5:20:35another tool which is a beautiful soup

5:20:38extracting. So here we'll install this

5:20:40beautiful to soup. And for beautiful

5:20:42soup we need these are the dependency

5:20:44package as well. Okay. Then python do uh

5:20:46env for the environment management. So

5:20:48these are the package we have to

5:20:49install. So how to install? Let's copy

5:20:51the command. So here's the command. I

5:20:53will copy this and run in my terminal.

5:20:58So for me it is already satisfied but

5:21:00for you it may take some time. Okay.

5:21:02Once it is done now we can create the

5:21:04folder structure right now. So here what

5:21:07I'm going to do I'm going to first of

5:21:08all create a folder here. I'm going to

5:21:11name it as src

5:21:13and inside that I'm going to create a

5:21:15constructor file

5:21:18init_py

5:21:24and uh inside that I'm going to create

5:21:26another folder

5:21:28uh I'm going to name it as

5:21:32tools.

5:21:35I'm going to create another folder

5:21:37called agents.

5:21:42Okay, then I need another folder

5:21:49called pipeline.

5:21:55Okay. Yeah. So once it is done then here

5:21:59I'm going to create an endpoint which

5:22:00should be my app.py.

5:22:08Okay. And I need av file

5:22:13for environment management.

5:22:16So yeah, so this is my folder structure.

5:22:18Uh

5:22:20but uh right now I'm going to create

5:22:21some of the file inside these are the

5:22:23folder. Like first of all I have to

5:22:26create a constructor file.

5:22:33So this is called modular coding. We're

5:22:35uh creating as a module each and every

5:22:37separate module. Inside that we'll be

5:22:40creating a file called agent.py.

5:22:46Then pipeline also I'm going to create a

5:22:48constructor

5:22:50init_.py

5:22:57and I'll be creating a file called

5:22:59pipeline.py.

5:23:07So for tools also we'll be doing the

5:23:09same thing.

5:23:28Okay, everything is done. Now let me

5:23:31check. Let me verify everything is fine

5:23:33or not. Uh yeah, I think everything is

5:23:35fine. So now if I show you my step

5:23:37again, uh we have prepared all of the

5:23:40folders. Okay. Like for tools, we have

5:23:43created a separate tools folder inside

5:23:45src. So inside that we'll be writing all

5:23:48of the tools in the tools.py. For agent

5:23:51also we have done the same thing agent

5:23:52and inside agents we'll be writing all

5:23:54of the agents. For pipeline we have done

5:23:56the same thing. For pipelines we'll be

5:23:57writing the pipelines. Okay. and run and

5:23:59test. We'll be using this endpoint which

5:24:01is app.py. Okay, so everything is fine.

5:24:04Um uh okay, one more thing I can do for

5:24:07running uh and testing the agent. First

5:24:09of all, let's say we'll try to test in

5:24:11the main.py. Then once uh everything is

5:24:13working fine, we can convert we can add

5:24:15the user interface to the app.py. Okay.

5:24:17Yeah. So now it's ready. Now let me

5:24:19commit the changes to my GitHub. So

5:24:21simply what I will do

5:24:24uh I'll try to

5:24:27uh commit the changes.

5:24:30So get add space dot

5:24:33get commit

5:24:36m

5:24:38um

5:24:41agent setup

5:24:43and folder structure

5:24:50created

5:24:54and get push

5:24:57origin

5:25:04done. Now if I go to my GitHub

5:25:07refresh,

5:25:09see my border structure is ready. Okay.

5:25:13Now first thing let's try to work on

5:25:15this.

5:25:17Um

5:25:19I'll open up my state. Yeah. So

5:25:21environment setup and folder creation is

5:25:23done. Now uh here what I can do maybe I

5:25:25can write another things

5:25:29folder structure.

5:25:33Okay folder struct structure.

5:25:37Yeah.

5:25:41Now first of all we'll be uh creating

5:25:43the tools. Okay let's try to create the

5:25:45tools. Uh so here I'll close all of this

5:25:53file.

5:26:00But before creating the tools uh first

5:26:01of all I have to collect uh this uh uh

5:26:06secret credential. I need my openi API

5:26:08key and I need table API key. Okay I

5:26:11already showed you in my previous

5:26:12implementation how to collect them. So I

5:26:15already collected let me show you. So

5:26:17this is my open API key and this is my

5:26:19table API key. So for openi what you

5:26:22have to do you have to visit openi API

5:26:24platform. So there simply just try to

5:26:27login with the API platform.

5:26:30Once you have logged in just try to see

5:26:33the API keys option

5:26:39and create the new access uh secret key.

5:26:42Okay. So for me I have already created.

5:26:44Now for tabuli

5:26:46you can visit tab API key tab.com

5:26:49and see here if you don't want to use

5:26:51open AI you can use Google Gemini API or

5:26:54open router or gro API key anything you

5:26:57can use. Okay only you just need to

5:26:59change that model uh initialization

5:27:01simply you can go to the chat GPT and

5:27:03you can replace that okay very easy but

5:27:05I have my openi account with me that's

5:27:07why I'm going to use openi because I am

5:27:08expecting good output from my agent.

5:27:10Okay, that's why uh because in free API

5:27:12there is some limitation. Um so after c

5:27:15certain time actually uh this limit

5:27:17would be offered. So that's why we are

5:27:18using open air here. Now table also you

5:27:21have to do the same thing. Uh here is a

5:27:24API creation option. You can uh click

5:27:26here you can create a new key. Okay for

5:27:28me I already create the key. So this is

5:27:30available. Okay. Now environment is

5:27:32ready. Now simply let's try to create

5:27:35the agent.

5:27:37Uh what I'm going to do I'm going to

5:27:39open this sorry not agent I'm going to

5:27:42create a tool. So I'm going to open this

5:27:44tools. Okay tools folder uh tools.py.

5:27:47Okay I'm going to open it. So the very

5:27:50first tools guys I have to create I

5:27:51think you remember which is uh this web

5:27:53search tool which is this web search

5:27:56tool. If I show you my diagram web

5:27:58search tool which is tab API. Okay. And

5:28:01we'll try to connect with our first

5:28:02agent. So let's try to create this table

5:28:04search uh table search tool. So for this

5:28:07let's import some library. First of all

5:28:09I'm going to select my environment.

5:28:12[clears throat] So I'm going to import

5:28:14let's say

5:28:16langen

5:28:17dot tools

5:28:21import

5:28:23tool.

5:28:25Okay.

5:28:27Then I'm going to import request.

5:28:32I'm going to import

5:28:35um I'm going to import this uh env. So

5:28:39from env

5:28:41import load env.

5:28:45Then

5:28:47I need the operating system.

5:28:51Okay, it should be import.

5:28:57And one more thing I need to import the

5:28:59table. So from

5:29:01tably

5:29:03import

5:29:06tably client.

5:29:10Yeah, you can also import tably from

5:29:12langen uh because langen inside tools it

5:29:15is tably tools is available. You can

5:29:17import either you can import from tably

5:29:21framework itself and you can create as

5:29:24your custom tool. So in my previous

5:29:26example taby I initialized from langium

5:29:29u I didn't create it as a custom tool

5:29:32but in this implementation I'm going to

5:29:33show you how we can uh create tab as

5:29:36your custom tool okay this is also

5:29:37possible uh both you see and whatever

5:29:40you like you can prefer that because in

5:29:42my requirement I already installed this

5:29:43tably python okay that's why we'll be

5:29:45able to do that so simply first of all

5:29:48load your environment variable and after

5:29:51that let's create a tably object so

5:29:54tably key

5:29:55is equal to so tably client

5:30:02here you have to pass the API key of the

5:30:04tably so I'm going to get from my

5:30:07involvement variable so west get env

5:30:09table tably API key and inside this enb

5:30:11I've already mentioned my table apak

5:30:13okay it will try to load from here so

5:30:15once I got it now I'll create a function

5:30:17here so this function will try to

5:30:19perform the web service operation with

5:30:21help of tably so maybe I can name this

5:30:23function function as web search. Okay,

5:30:26web search

5:30:33web search. So this will take a query

5:30:39or I have already created let me show

5:30:41you.

5:30:44Yeah. So this is the function guys as

5:30:47you can see. So websites this is the

5:30:49function. This takes the query and what

5:30:52[clears throat] it does it uh use tab

5:30:55and it searchs that particular query

5:30:56over the internet and max result is

5:30:58equal to five that means it will give

5:30:59you five sources okay five relevant uh

5:31:02sources uh URL from the internet and

5:31:06what we are doing

5:31:08uh let me show you what we are doing

5:31:09here let's say once we are getting all

5:31:12of the five

5:31:15uh five responses so let me just print

5:31:17them one by

5:31:21print result all of the results.

5:31:25Now let's call this function

5:31:31or we can also test inside our endpoint

5:31:33which is main.py. Let's import from src

5:31:38dot tools

5:31:42dot tool import web then

5:31:48websource

5:31:51let's say what is the capital of French

5:31:53okay I have given this one or let's say

5:31:58latest

5:32:02news on a research now if I execute

5:32:07python

5:32:09main.py.

5:32:14Now see it is giving you five response.

5:32:20Okay, five response. But this print

5:32:23statement is not clear enough. So if you

5:32:25want to make it clear enough, so what

5:32:27you can do guys, you can install one

5:32:28tool which is

5:32:32rich. Let me add inside my environment

5:32:35reach. Okay, so reach helps us to uh

5:32:39actually um see the good print statement

5:32:41and you can also use it for the login

5:32:43debugging. So let me install the rich as

5:32:46well

5:32:54clear. I'll install my

5:33:00requirements once it is done. Now let's

5:33:02try to import the rich

5:33:07in the tools. I'm going to import from

5:33:10rich.

5:33:13Okay. Import print. Now instead of this

5:33:15print I'm going to use my rich print.

5:33:18Okay. Now if I execute this will give

5:33:21you beautiful output.

5:33:26Now see this is uh clean right? This is

5:33:29understandable.

5:33:32Yeah. So you can see we are getting this

5:33:33response from tably API. So Tableau API

5:33:36what is it doing? It is going to

5:33:37internet and it is searching

5:33:41it is searching over uh different

5:33:43different website. Okay. So this is the

5:33:46first website reddit.com. So if I open

5:33:48it up so here it has already discussed

5:33:51about this uh uh latest AI research

5:33:55news. Then again you can see there is

5:33:58another website called artificial

5:34:00intelligencenews.com.

5:34:02Okay. So this is another news. So that's

5:34:04how you have see uh that's how you can

5:34:06see 1 2

5:34:08uh 3 4 5. Okay. Total five uh response

5:34:12we are getting here. Okay. Five uh URL

5:34:14we are getting here from different

5:34:16different website. Okay. Now what I can

5:34:19do see I don't need all of the

5:34:21informations because here I only need

5:34:23this result. Okay. In the result I have

5:34:25the URL. I have the title of that

5:34:28particular let's say information and I

5:34:31have a content. So in that content

5:34:33actually some uh like uh one to two

5:34:36lines headlines are there about the

5:34:38content. Okay. So if I'm able to get

5:34:40these are the three things I think this

5:34:42is more than enough uh for my agents

5:34:44because if I show you my agent

5:34:47if I show you my agent here. So let's

5:34:49say first agent what it will do it will

5:34:51uh use tab API uh for real time data

5:34:56data feting operation from different

5:34:58different website and we have to take

5:35:00there

5:35:02these are the information URL title and

5:35:04content. So this URL title and content

5:35:06will try to save in the state result and

5:35:08my second result will try to uh take

5:35:11that and from the URL itself okay from

5:35:13this URL itself it will try to extract

5:35:16it will try to extract the content

5:35:18because this is a web okay this is HTML

5:35:21web so now what it can do uh it can

5:35:23actually so extract the content and how

5:35:26it extract I think you know if I perform

5:35:27the inspect operation so there is a

5:35:31option let's say if I want to

5:35:34extract ract any text easily I can do

5:35:37that let's say I can show you let's say

5:35:40I want to extract this this particular

5:35:41part if I click here so this is the

5:35:43content of that okay I can easily

5:35:45extract the content and this operation

5:35:47we perform with alpha beautiful soap

5:35:49okay so I'll try to do that as well so

5:35:52here let me show you

5:35:54I'll open it up

5:35:57h now instead of taking all of the

5:35:59content so what I'll do I'll just try to

5:36:03Okay,

5:36:06these are the information.

5:36:09Okay, these are the information like I

5:36:11need title, I need URL and I need

5:36:14content. Okay, content I need and

5:36:16content I'm only taking 300 word just to

5:36:19make my uh let's say agent understand.

5:36:21Okay, so this is the content related

5:36:23that and it is available inside this

5:36:25URL. You have to extract that. Okay, now

5:36:27if I uh see after doing it I'm just

5:36:30running a for loop because this result

5:36:32will have a result keyword. Okay, we are

5:36:35going inside that because this is a JSON

5:36:37response. We are taking this key and

5:36:38inside that we have title um URL title

5:36:41and content. So inside that we are

5:36:44extracting title, URL and content and we

5:36:47are appending to this particular empty

5:36:49list one by one. That means the five uh

5:36:51five output should be there. Five uh

5:36:53five links response should be there

5:36:55inside that. Okay, because I'm getting

5:36:56five response. Now let me show you. So

5:36:59if I print this

5:37:03uh if I first of all I'll return it.

5:37:08I'll return it. So basically I'm

5:37:10performing the joining operation. uh so

5:37:12what the join will do it will try to

5:37:14join as a string okay so every time it

5:37:16will give a new line and it will join

5:37:18all of the content now let me show you

5:37:21how this thing will look like so maybe

5:37:23now I'll try to receive it here let's

5:37:25say

5:37:27output

5:37:32and print the output

5:37:35now if I execute my

5:37:38file

5:37:45See I'm getting five output the title

5:37:48and this is the URL of that content and

5:37:51this is a like uh short paragraph of

5:37:54that particular news. So if I go to the

5:37:56reddit.com you'll see that an AWS user

5:37:59started. Okay. So this thing is

5:38:01available.

5:38:07Yeah. Sorry from here. An entropic drops

5:38:10a uh drops a new research paper today.

5:38:13Okay. So, entropic uh drops a new

5:38:15research paper today. So, that's how it

5:38:17is taking 300 word from the entire

5:38:19content. Okay. Entire content. Now, this

5:38:22is the second one. This is the third

5:38:23one. This is the fourth one. This is the

5:38:25fifth one. That means we are getting

5:38:26fifth uh response from our tab tool.

5:38:29Okay. Which is amazing. Now, what I will

5:38:32do guys? Um my first tool is ready.

5:38:37My first tool is ready. That means this

5:38:39particular tools is ready. Okay. Now I

5:38:42have to work on this tool which is

5:38:43beautiful soup scrapper tool. Now let's

5:38:46try to also work on that. So for this I

5:38:49again need to import some other library

5:38:51like I need to import

5:38:53uh

5:38:55beautiful soup. So from

5:38:59BS4

5:39:02I import beautiful soup. Then I have to

5:39:04import from

5:39:08readability

5:39:10import documents. Then I have to import

5:39:22chart. Okay. Uh trafil uh tora. Okay.

5:39:26This is uh this thing I need uh with

5:39:28beautiful soup. Um uh that's why this is

5:39:31a dependency package. And I also need

5:39:33regular expression

5:39:36import.

5:39:38So if you have ever performed web

5:39:40scrapping I think you know these are the

5:39:41libraries useful

5:39:43H.

5:39:45So what I've done guys I have already

5:39:46generated a function with chart GPT.

5:39:56Let me show you the function.

5:40:00Yeah. So this is the function I have

5:40:02generated from chat GPT. Uh so basically

5:40:05if it takes a URL okay it takes a URL

5:40:08and what it does uh it uh ex scrap

5:40:12actually all of the content from the

5:40:13URL. Okay it perform the scrapping. So

5:40:16here you can see uh we are using request

5:40:19package. We are hitting the URL. After

5:40:21that we are getting the JSON uh HTML

5:40:23response and we are extracting the

5:40:25content. Okay. So everything is

5:40:27performing with help of beautiful soup.

5:40:29And once we got the content, we are

5:40:30returning the cleanup. And if exception

5:40:32is occurring, we're raising the

5:40:33exception. Okay, that's why exception

5:40:35handle is also important. If you're

5:40:36using any third party services,

5:40:38definitely you can use try accept block.

5:40:40Okay, this is required. So yes guys, uh

5:40:42this is the scrapper function we have

5:40:45created. You can also test it whether

5:40:46it's working or not. So maybe let's say

5:40:48here what I will do, I'll try to import

5:40:50it as well to scrap URL.

5:40:54Uh so this returns, right? This is

5:40:56returns

5:40:59H. This returns okay

5:41:04return. So what I can do I can

5:41:11I can show you let's say

5:41:14results.

5:41:17So this takes a URL. Okay. So maybe I

5:41:20can provide a URL.

5:41:23Let's say

5:41:26I'll copy this URL.

5:41:33Copy this URL and

5:41:36I'll give inside there.

5:41:41Okay. Then I will print the result.

5:41:45Now see what happens

5:41:48here.

5:41:50Python main.py

5:42:00Still we are getting this title URL.

5:42:03Why?

5:42:06Oh, okay. We using websites. I have to

5:42:08use scrapper URL. Okay, scrap URL. This

5:42:11function. Sorry, my mistake. Now, let's

5:42:13again execute.

5:42:19Okay. Now see from that HTML I'm getting

5:42:22the content. Okay. I'm getting the

5:42:24important content. Okay. So this

5:42:27function is doing that. So this function

5:42:29is going to that particular URL. Okay.

5:42:31This function is going to that

5:42:32particular URL and extracting all of the

5:42:35content. Okay. You can see extracting

5:42:37all of the content relevant content.

5:42:40Okay. And it is giving me here. Now this

5:42:42content I'll try to pass to my next

5:42:45agent here.

5:42:49next agent. So let's say my second aent

5:42:52uh second agent will try to extract uh

5:42:55this informations and it will save in

5:42:57the state memory. Now I can use my

5:42:59writer agents to use this particular

5:43:00content and prepare a draft for me.

5:43:02Okay. And my critic agent will try to

5:43:04review that. This is the work I think

5:43:06you are getting. So this is called

5:43:07actually uh team. Okay. This is called

5:43:10actually team and uh we are using

5:43:14uh we are using list of agents to

5:43:15performing for performing actually uh

5:43:18task okay multiple task we are

5:43:20performing with the of multiple agents

5:43:22one by one okay so this is the beauty of

5:43:26multi- aents instead of using the single

5:43:28agent now one more thing I want to show

5:43:30you see as of now I have created these

5:43:33are the tool as a function okay and now

5:43:37if I want to use it as a tool so what I

5:43:39have to I think you remember we have to

5:43:40give a decorator. Yesterday also we did

5:43:43the same thing. So we have already

5:43:44imported this tool from Langchen. So now

5:43:46I can give a decorator. So here just

5:43:48simply give the tool decorator.

5:43:51Whenever you are giving the tool

5:43:52decorator now you can invoke. Okay you

5:43:54can invoke this tool. Let me show you

5:43:59tool decorator. Now let's say right now

5:44:01what I'm doing uh here right now I just

5:44:04need to call this function and give the

5:44:07input like that. Right. Now we have

5:44:09converted as a tool. Now I can perform

5:44:10the invoke operation. So how to perform

5:44:12the invoke operation? Let me show you.

5:44:14So let's say this is my tool web search

5:44:16tool. Simply I'll do the invoke

5:44:18operation.

5:44:20Invoke operation.

5:44:23Now here is the question. Let's say I'll

5:44:25give what is the latest research on

5:44:28using AI for climate change migration.

5:44:31Now whatever response I'll get I'll try

5:44:33to save inside a variable. That's the

5:44:35result

5:44:37and I'm going to print it.

5:44:40Now let me show you. This will work as a

5:44:43tool.

5:44:48See now this is working as a tool. Okay.

5:44:50You can perform the invoke operation.

5:44:53All right. So similar guys you can also

5:44:54perform the invoke on the scrap URL.

5:44:57Okay. Both it will work with the help of

5:44:58invoke. So now guys our tool is ready.

5:45:02uh we have created

5:45:05uh all the tool like tabularly tool as

5:45:07well as the beautiful soap scrapper tool

5:45:10uh and it is already working. Now the

5:45:13next part we can work on the uh agents

5:45:17implementation. Okay. Now I'm going to

5:45:19show you how we can implement the

5:45:21agents. But before that let me commit

5:45:22the changes. I can also commit from my

5:45:24VS code. So here I can tell uh tools

5:45:30uh created for

5:45:34agent

5:45:35oh that's a tools created okay I'll

5:45:38commit and send the changes

5:45:43done now if I go back

5:45:46I'll close this other tab

5:45:57refresh.

5:45:59Now see tools added already. Okay. Fine.

5:46:03Now let's try to work on the next part

5:46:05which is agent implementation. Okay.

5:46:08We'll try to implement the agent.

5:46:13So guys uh to implement the agent I'm

5:46:15going to open this uh agent folder.

5:46:18Inside that I have agent.py. Let me open

5:46:20it up. Uh I can close these are the file

5:46:22as of now.

5:46:26So first of all here what I have to do

5:46:28guys I have to create my first agent

5:46:31which is uh search agent. Okay search

5:46:34agent. So basically this will have the

5:46:36connection with tab API. So let's try to

5:46:40create that. I'm going to import some

5:46:42necessary library.

5:46:45Um so these are the library I need.

5:46:49These are the library I need. So one

5:46:52more thing I think you can observe. Um

5:46:55right now I'm importing langen.agent

5:46:58import create agent. Okay. But

5:47:01previously I imported create react

5:47:04agent. Okay. There are some difference

5:47:07between them. Now see because previously

5:47:10I showed you I installed actually old

5:47:13version of the langen. So in old version

5:47:15langen they implemented create react

5:47:18agent that means uh reasoning and action

5:47:20agent. Okay but in the latest version in

5:47:24the updated version modern langen they

5:47:26have replaced with create agent. Okay

5:47:29this particular function. So for this I

5:47:33did a Google search. Let me show you the

5:47:34result. See I told is create agent and

5:47:37create react agent same in langen it's

5:47:40telling no uh they are not same um uh

5:47:44though they both serve similar purpose

5:47:47in recent langen updates create agent

5:47:49has become the standard streamline

5:47:52function while create react agent is

5:47:54older implementation. Okay. So what they

5:47:56have done they have updated the langen

5:47:58package and what they did they actually

5:48:02also worked on this create react agent

5:48:05they and they updated with this react

5:48:07agent sorry create agent right now

5:48:10because create agent is nothing but it's

5:48:12the updated version of create react

5:48:13agent and this is more stable more

5:48:15standard. Okay, that's why they're

5:48:17recommending don't use create react

5:48:18agent instead of use create agent only

5:48:20because this is more standard and stream

5:48:22light function. It's not

5:48:29it's not like that you can't use uh

5:48:31react agent you can use uh create react

5:48:34agent but um I think it's good to go

5:48:37with the updated one always. Okay. Now

5:48:40here are some um like difference between

5:48:42them. So you can see create react agent.

5:48:44This is the modern recommended method in

5:48:47core lang package. It creates an agent

5:48:49that execute a built-in loops of tools

5:48:52calling using highly flexible modern

5:48:54middleware system. And uh apart from

5:48:57that this create uh react agent is a

5:49:00older implementation b strictly on

5:49:02foundation react reasoning acting okay

5:49:04prompting uh paper. It was previously

5:49:08able uh available one older version of

5:49:10langen

5:49:12but has been deprecated in u um create

5:49:16agent. Okay, that means the latest one.

5:49:17Okay, so basically I think remember

5:49:20whenever we use this create react agent

5:49:22function we have to use another

5:49:24additional function which is agent

5:49:25executor and that has to perform three

5:49:27things. One is the thoughts then action

5:49:30then observation. I think I showed you

5:49:32the detailed discussion in my uh

5:49:34previous agent implementation. If you

5:49:36have missed out just try to check it

5:49:37out. So there we used to run three

5:49:39things thought action and observation.

5:49:42And uh for running this three step we

5:49:44used to use agent executor with this

5:49:46create react agent. But right now in

5:49:48create agent you don't need to use that

5:49:50separately. So they have integrated

5:49:52everything that means that thought

5:49:53action and observation all of the

5:49:55execution process in the loop they have

5:49:57inbuilt with this create react agent. So

5:49:59they will take care each and everything.

5:50:01You don't need to do these are the part.

5:50:03Okay. So that's why this is like more

5:50:04standard and optimized version of create

5:50:07uh create react agent. Okay. So that's

5:50:09why we'll be using this create agent

5:50:11right now. Okay. I hope it's clear guys.

5:50:13So that's why in my code you can see

5:50:14instead of importing this create react

5:50:16agent. Where's the code? Yeah react

5:50:19agent I'm importing create agent only.

5:50:21Okay. And all the code are same like

5:50:23openi chat openi. Then we are also

5:50:26importing the prompt template. If I want

5:50:27to give my custom prompt I can set my

5:50:29prompt with help of chat prompt

5:50:31template. Then output parser I need

5:50:33because I'm going to use the LCL lang

5:50:35lang expression language the

5:50:37[clears throat] modern langen uh let's

5:50:39say uh syntax. So that's why output

5:50:41parser is required and to understand

5:50:42this one definitely you have to go

5:50:44through my langen lecture guys there I

5:50:46have discussed each and everything what

5:50:47is lclput parser is required each and

5:50:50everything I have already explained then

5:50:51from tools we are importing

5:50:54uh this is not tools anymore so this

5:50:56thing I can import like that so in my

5:50:59main.py Pi I have already imported I

5:51:00will copy

5:51:02and I'll replace it here. Okay. So from

5:51:05src uh from src tools

5:51:09uh we have created web search tool and

5:51:11scrapper tool. Okay. Both we have

5:51:13created and we're importing and

5:51:15initializing the now the first thing we

5:51:17have to set up the model.

5:51:20Uh so lm is equal to

5:51:24chat openai.

5:51:26So I'm going to use this model.

5:51:29This model. So here I can comment model

5:51:36initialization.

5:51:39Okay. Model initialization. So we are

5:51:41using this GPT4 mini model. You can use

5:51:44any model GPT5 whatever you can use. And

5:51:46this is the creativity parameter I have

5:51:48given zero. So this will give you the

5:51:50LLM object. So right now I'm going to

5:51:52create my first agent which is this

5:51:54agent called search agent. Let's try to

5:51:57create it. Now see if you're using

5:51:59modern lang chain that means create

5:52:02create agent function. It's like super

5:52:04easy only you just need to create a

5:52:05function. I'm going to name it as let's

5:52:07say build

5:52:10search

5:52:12agent

5:52:18and simply you just need to return that

5:52:20okay return what return your create

5:52:23agent

5:52:25okay create agent and this will take

5:52:27actually some parameter the first

5:52:29parameter takes the model so model is

5:52:32equal to I'll pass my llm

5:52:34second parameter it takes tools. Okay,

5:52:37the tools you want to connect with this

5:52:38agent. So I want to connect this tool

5:52:41actually web search tool because my

5:52:43first agent will try to connect with my

5:52:45web search tool which is tab API. Okay,

5:52:47so what I'm going to do I'm going to

5:52:48call this web source and pass it here.

5:52:51Okay, and there is another thing you can

5:52:53perform I think which is system prompt.

5:52:54Okay, system prompt you can pass you can

5:52:57tell your agent what to do. But system

5:52:59prompt I think it is already given in

5:53:01default. Uh the same system prompt I

5:53:03think I showed you right uh yesterday.

5:53:05uh I u downloaded from langen hub. So

5:53:08basically it explains about the agent

5:53:10behavior. Okay, how to work. So I don't

5:53:12need to give it here because this is my

5:53:14um search agent. So basically it will

5:53:16take take a prompt uh so take a topic

5:53:19and it will perform the uh live search

5:53:21operation over the internet and this

5:53:23will return you the URL content. Okay,

5:53:25with respect to that. So for this uh the

5:53:27manual prompting is not required. I

5:53:29think the default prompt is fine

5:53:30completely. But if you want you can also

5:53:31change the system prompt. Okay, it's

5:53:33completely up to you. So you can

5:53:35generate a system from from chat JP and

5:53:37you can pass it here. So this is my

5:53:38first agent. So this is my

5:53:43first

5:53:45agent.

5:53:48Okay, which is s agent. Now I'm going to

5:53:51work on my second agent

5:53:56which is scrapping agent. Okay, that

5:53:58means this one uh reader agent. Okay, we

5:54:01can name it as reader reader agent.

5:54:06reader agent. So let's create it. So

5:54:09similar wise, I will create this agent

5:54:11as well. I'll copy this code. And uh

5:54:14here this is my read reader agent.

5:54:21Okay. And this will take this scrap URL

5:54:24tool because this will connected with my

5:54:27beautiful soup. That's why we're passing

5:54:29this

5:54:30scrap URL tool in this particular agent.

5:54:32And if you want you can also change the

5:54:34system prompt here. But I think default

5:54:36for prompt is fine with me. I'm not

5:54:38going to change the prompt. Okay. So my

5:54:41uh first agent and second agent is done.

5:54:44Now I'll be working with my uh I'll be

5:54:47working with my

5:54:51um third agent and fourth agent and see

5:54:53this third agent and fourth agent I'm

5:54:55not going to create in that way. Instead

5:54:56of that I can utilize the modern langen

5:54:59chain functionality. Okay this is called

5:55:00LCL chain. So I think this is enough u

5:55:03because in lang chen we can use this lcl

5:55:06chen uh uh for for this kinds of

5:55:09operation. Okay this is also possible.

5:55:11Now let me show you how it can be

5:55:13initialized. See if you haven't watched

5:55:15that my ll in my langen so try to watch

5:55:18that otherwise it would be little bit

5:55:20confusion uh for you but if you watch

5:55:22that uh session I think it would be

5:55:24clear. So I have already created let me

5:55:26show you

5:55:29this is my writer chain that means my

5:55:33writer agent

5:55:35see so first of all here you have to

5:55:38prepare a prompt okay custom prompt so

5:55:40I'm using the chat prompt template and

5:55:43what I'm doing I'm giving a system

5:55:45prompt you are expert research writer

5:55:47write a clean structure and insightful

5:55:49reports a human write a detailed uh

5:55:52research on report on the topic below

5:55:54Okay. So first of all I will give the

5:55:56topic and this topic will come from the

5:55:58human human input and this will take the

5:56:01research. Okay. And where it will get

5:56:03the research. It will get the research

5:56:05from this reader agent. Okay. Because

5:56:08reader agent will try to

5:56:10first of all uh first agent what it will

5:56:12do it will give the URL okay URL of the

5:56:15relevant uh relevant actually sources

5:56:18and the second agent will try to extract

5:56:20the content and it will save in the

5:56:22state memory and writer agent will try

5:56:24to take those content and write this uh

5:56:27draft for you. So that's why this

5:56:29research we are taking it from my reader

5:56:31agent. Okay. So this will automatically

5:56:32go to the uh go to the writer agent.

5:56:36Okay. Now here you can see structure

5:56:38report as I need these are the

5:56:39informations in that report.

5:56:40Introduction, key findings, minimum

5:56:42three world explained points,

5:56:44conclusion, okay, and sources. That

5:56:46means whatever URL you refer, just try

5:56:48to also refer the URL in the research

5:56:49topic. You can change this kinds of

5:56:52prompt uh with respect to your

5:56:53requirement. You you can generate a

5:56:55detailed report, you can generate a

5:56:56short report, you can generate more sub

5:56:59point here. You can customize it. Okay.

5:57:01Now be detailed and uh factual and

5:57:04professional. Okay. This is the entire

5:57:06palm. Now we are creating the chain. So

5:57:08writer chain is equal to writer prompt.

5:57:10First of all you have to give the

5:57:11prompt. Then you have to give the llm.

5:57:13Then you have to give the str output. So

5:57:14what will happen? This prompt will go to

5:57:16this llm. Lm will try to work on that

5:57:18because lm is expecting the topic and

5:57:20research. We are already getting from

5:57:21the topic from the user and research

5:57:23from my second agent which is uh reader

5:57:25agent. Agent reader agents will return

5:57:27the content research content and with

5:57:29the help of this research content it

5:57:31will refer and write that particular um

5:57:34report. Okay, just try to think about if

5:57:36I give you the recent let's say recent

5:57:40let's say I'm searching for tell me the

5:57:43latest AI tools. So if I give you the

5:57:47if I give you the let's say uh source

5:57:49content source content means let's say

5:57:51in from the internet I have collected

5:57:53some URL and from URL I have extracted

5:57:55some uh let's say

5:57:58um I have extracted the content of that

5:58:00particular latest information and I have

5:58:02given to you. So this is the content and

5:58:04now just try to prepare a report on

5:58:05that. So what you will do you'll just

5:58:07try to refer that and prepare the report

5:58:08for me. Okay, the same thing we are

5:58:10doing here. So that's why we don't need

5:58:12to create an individual uh agent like

5:58:14that. Okay, it can be done with the help

5:58:16of this LCL chain. Okay, very easy. Now

5:58:19same we'll try to do it for my critic

5:58:21chain as well.

5:58:23That means this one. So this one is

5:58:25done. Now we'll performing for this one.

5:58:27Let's do it.

5:58:29So this is my critic chain. So here also

5:58:32we are doing the same thing. We are

5:58:33creating the prompt template first of

5:58:34all. So you are a sharp and constructive

5:58:37s research critic. Be honest and

5:58:40specific human. Review the research on

5:58:42below and evaluate it strictly. So we

5:58:44are giving the report. Report means this

5:58:46writer agent whatever it will return

5:58:48you. We'll try to pass here. Now it will

5:58:50respond like that. First of all it will

5:58:51give you this four strength areas to

5:58:54improve one line uh verdict. Okay. Then

5:58:58uh we are preparing [clears throat] the

5:58:59chain. So critic chain is equal to

5:59:01critic prompt that means my critic

5:59:02prompt lm and st output. So this will

5:59:04become your critic chain that means this

5:59:06part is also ready. Okay. Now we have to

5:59:08combine them all together to make all of

5:59:11the agent uh work together. Okay. So

5:59:14these kinds of things we'll be

5:59:16performing in the pipeline. Now we'll

5:59:17try to create the pipeline. We'll try to

5:59:18combine this agents all together. That

5:59:21means first of all first agent will come

5:59:23whatever output we'll be getting we'll

5:59:25try to save in the state memory. Then

5:59:26second agent will try to receive that.

5:59:28Then uh we'll try to connect this

5:59:30stability tool with first agent. Then uh

5:59:33this tool with the second agent already

5:59:34this is done. Okay, I have already

5:59:36connected this tool. As you can see this

5:59:38tool is already connected. Then once it

5:59:40is done we'll try to connect the writer

5:59:41agent as well as the critic chain. Okay,

5:59:43critic agent or chain whatever you can

5:59:45say. Now let's try to see how we can uh

5:59:48create this pipeline. So my agent is

5:59:50ready

5:59:52and my tools is ready. Now I'll be

5:59:54working on the pipeline.

5:59:58So guys, our agent and tools everything

6:00:01are ready. Now we can work on the

6:00:03pipeline. So in the pipeline I told you

6:00:05we'll try to connect all of the agents

6:00:07uh together and we'll also try to uh

6:00:10connect the state memory there. So for

6:00:12this uh let's open up this pipeline.py

6:00:15file. Uh it's available inside

6:00:16pipelines. I'll open it up. Uh now let

6:00:20me show you how it can be done.

6:00:23Okay. So for this first of all we have

6:00:25to import um we have to import this

6:00:28agent. Okay the agent we have created

6:00:30that means my search agent then reader

6:00:33agent then my writer chain as well as

6:00:37the critic chain. Okay. So all these

6:00:40thing we have to import one by one. Uh

6:00:43this is the critic chain. So let's

6:00:44import in the pipeline. So I'm going to

6:00:46write from

6:00:48uh from src

6:00:50dot aagents dot agent. So I'm going to

6:00:54import first of all

6:00:58build reader

6:01:01uh build a search agent

6:01:05then build reader agent then writer

6:01:10chain then my

6:01:14critic chain

6:01:16okay critic chain now what I'm going to

6:01:19do guys I'm going to write a function

6:01:23Um already I prepared this function. Let

6:01:25me show you what it will do.

6:01:33Yeah.

6:01:35So first of all I'll try to

6:01:42add this.

6:01:49So this is the function guys. Let me

6:01:51explain. H

6:01:55yeah so you can see the function name I

6:01:57have kept run resource pipeline so this

6:02:00will take the topic whatever topic user

6:02:02will pass uh so first of all what I'm

6:02:05doing guys I'm uh taking a state

6:02:07dictionary here okay so why I'm taking a

6:02:10dictionary because I told you we'll be

6:02:11creating a state memory okay state

6:02:13memory this is a temporary memory uh

6:02:15once agent has executed uh successfully

6:02:18then this uh particular memory would be

6:02:20cleared so that's I told you later on if

6:02:22you want you can also add the permanent

6:02:24memory by adding some u memory database

6:02:27that thing I'm going to definitely

6:02:28discuss in future but as of now just try

6:02:30to consider this is our this is our

6:02:33state uh memory we are taking as a

6:02:35dictionary. So every state it will try

6:02:37to save some data inside that particular

6:02:39dictionary. So first of all I'm just

6:02:41doing a print statement uh just to see a

6:02:44beautiful logs in my terminal. Okay. So

6:02:47we are first of all telling searching

6:02:49agent is working. Then we're giving like

6:02:5150 uh this uh equal sign. Okay. Now what

6:02:54we are calling guys? We're calling now

6:02:56build s agent. Uh so we are creating an

6:02:58object of that particular agent. Then we

6:03:00are invoking it. Okay. What we are

6:03:02invoking? We are invoking without

6:03:04prompt. So user is giving a prompt. Find

6:03:06the recent realable and detailed

6:03:08information about this topic. And from

6:03:10where we are getting the topic. Topic

6:03:12will be given by the user. Okay. From

6:03:14the user interface we'll try to pass the

6:03:16topic. So this topic will come here. So

6:03:18this uh search agent what it will do it

6:03:20will use tably search API it will search

6:03:22over the internet of that particular

6:03:24topic and this will return you the

6:03:26result. Okay, this will return the

6:03:28search result. What would be the search

6:03:29result? I think you remember this will

6:03:31return you these are the search result

6:03:34that means the title, URL and snippet

6:03:37that means the content. Okay. So this is

6:03:39the work of the first agent. You can see

6:03:42and this particular state the first

6:03:44agent whatever it is returning I'm going

6:03:46to save inside state memory. So this is

6:03:48what we are doing. You can see we are

6:03:49calling this state and I'm adding a new

6:03:52key which is search result and we're

6:03:54storing this particular result in that

6:03:56particular memory. Okay, you can see

6:03:58search result. Uh we are getting the

6:04:00message and we're getting the content of

6:04:02that. Okay, content of that and we're

6:04:04stringing uh storing in the state memory

6:04:06and once it is done we're also printing

6:04:08that particular memory what is we have

6:04:11inside that particular state. Okay, so

6:04:13this is for my first agent. So we have

6:04:15completed till here. Now we will be

6:04:18creating this particular option my

6:04:20second agent. So this will connect it

6:04:22with my previous state. It will take the

6:04:24data and it will run my second state and

6:04:25whatever output we'll be getting we'll

6:04:27try to save in the state memory again.

6:04:28So let's try to work on that. So my

6:04:31second step my reader agent.

6:04:34So this is my reader agent.

6:04:38Yeah reader agent. Again I'm doing some

6:04:40print statement. Now you can see I'm

6:04:42initializing my reader agent. Again we

6:04:44are doing the invoking operation of the

6:04:45reader agent. Then we are giving the

6:04:47prompt user based on the following

6:04:49search topic. Uh so topic we are getting

6:04:51from here. Okay. Uh pick the most

6:04:54relevant URL and scrap it for deeper

6:04:57content. That means it will scrap that

6:04:59particular URL. And whatever let's say

6:05:03uh URL we are having we are also passing

6:05:05from my state. You can see we're calling

6:05:07the state and I think you remember we

6:05:09created a key called search result.

6:05:10search result we are giving that

6:05:12particular um I mean content that means

6:05:17whatever URL my first agent has

6:05:20extracted uh my first agent got from my

6:05:23tab we have stored here and my second

6:05:26agent is reading from that particular

6:05:27state you can see it is reading from

6:05:29that particular state that means all of

6:05:30the URL title it will get then it will

6:05:32perform the scrapping operation and

6:05:34whatever scrap result we'll be getting

6:05:35again we are saving in the state memory

6:05:37again I'm creating another key called

6:05:39scrap content inside this state and we

6:05:41are saving the content inside that very

6:05:44simple okay then we are printing that

6:05:46particular content so this part is also

6:05:48done second agent and second agent

6:05:50response we are saving in the state

6:05:52memory now we have to work on the writer

6:05:54and uh critic now let's do it so first

6:05:57of all I'm going to write my

6:06:00writer

6:06:03so this is the writer you can see again

6:06:05I'm doing the print statement for

6:06:06beautiful logs now we can

6:06:10We created a uh variable here. So this

6:06:12variable having two information. One is

6:06:14the source result. Okay, source result

6:06:17and one is the detail scrap content.

6:06:19Okay, the search result we are getting

6:06:20from where we're getting from uh this uh

6:06:24source result. Okay, then what we are

6:06:26doing? We are also getting the scrap

6:06:28content. Scrap content means nothing but

6:06:30uh my previous okay previous whatever

6:06:32scrap content we got, we have in the

6:06:35state memory, we are also getting that.

6:06:36Okay, we are getting the scrap content.

6:06:38Now we are writing our chain. You can

6:06:40see uh chain.invoke. We are giving the

6:06:43topic as well as the research combined.

6:06:45That means both of the example we are

6:06:46giving. Why we are giving the search

6:06:48result? Because I told you I think you

6:06:50remember here

6:06:51if I show you my writer agent.

6:06:56Writer agent. Okay. So here I uh told

6:07:01uh you have to also mention the sources.

6:07:03Okay. Sources uh list of the URL found

6:07:05in the research. Okay. And if I want to

6:07:08list down all the URL, so definitely I

6:07:09have to pass the URL as a reference. So

6:07:11this is what we are passing here. All

6:07:13the URL we are passing. And whatever

6:07:15content we got from the URL, we also

6:07:17passing that. So it will prepare a draft

6:07:19for me. And this particular draft report

6:07:20we are again saving in the state memory.

6:07:23Okay, we are saving in the state memory.

6:07:25So that my critic chain can refer and it

6:07:28can uh uh review that you can give the

6:07:30feedback then we can get the final

6:07:32output. Okay, so you can see we are

6:07:33storing in the state memory and we are

6:07:35printing that. Now the last things we

6:07:37have to write the critic report.

6:07:41Uh so this is the critic report. Again

6:07:43we're doing the print statement. After

6:07:45that uh we are calling the critics and

6:07:47invoke and we're giving this report. The

6:07:50last uh state was the report. We are

6:07:53passing the report. Okay. So this will

6:07:56basically take the feedback and again

6:07:57I'm storing in the state memory as a

6:08:00feedback and we are printing it here.

6:08:02Okay. And we're returning the state. So

6:08:04yeah this is the pipeline guys that

6:08:06means this connection we have done

6:08:07perfectly. Now let's test it whether

6:08:09it's working or not. So what I will do?

6:08:11So in the main.py I'm going to test it.

6:08:15So simply here let's try to import first

6:08:17of all this uh this function.

6:08:22This is the main function run resource

6:08:24pipeline. So here I'm going to import

6:08:26it. So from src

6:08:32dot pipelines

6:08:34dot pipeline

6:08:36import

6:08:39run resource pipeline. Okay. Now simply

6:08:42here I'm going to take a topic is equal

6:08:44to let's say the impact of AI job market

6:08:50in 2026.

6:08:52Let's say this is my topic. Now I'll

6:08:54going to pass inside my

6:08:59run resource pipeline. Okay, run

6:09:02resource pipeline. So basically what it

6:09:04will do, it will

6:09:06give you the final result. Okay, final

6:09:09result. And although we are printing so

6:09:11that's why we don't need to store it

6:09:12here. So it will print in the terminal.

6:09:15Now let me show you. I'll clear I'll run

6:09:19my main.py.

6:09:22Now see first of all research uh search

6:09:24agent is working.

6:09:37Now we got the uh source result okay

6:09:40with URL. Now my second reader agent is

6:09:43working. It is scrapping all of the

6:09:45informations from the URL

6:09:48on that topic.

6:09:51Now see we got the

6:09:54um content. Now my writer agent is

6:09:57drafting the report.

6:10:01Now it will prepare the report by

6:10:03utilizing this content as well as the

6:10:05URL. Now see my

6:10:09final report is ready and it has also

6:10:11given you the sources whatever sources

6:10:13it has referred. Now critic agent is

6:10:15also working and it has given you the

6:10:16report. It told okay you got six out of

6:10:1910 and there is some strength point here

6:10:21is the areas of improvement and here is

6:10:23the oneline verdict okay amazing that

6:10:26means all of my agents are working

6:10:28perfectly guys okay all of my agents are

6:10:30working perfectly there is no error and

6:10:32it is working together okay it is

6:10:34working together and we're getting a

6:10:36very detailed report on my given topic

6:10:38okay but this thing I have to execute

6:10:40from my terminal and it's not like uh

6:10:42readable properly and if I give it to

6:10:45like non-coder guy so definitely he

6:10:46won't be able to execute that agent. So

6:10:49what I can do maybe I can add a user

6:10:50interface here. Uh to add the user

6:10:53interface you can use uh any kinds of

6:10:55framework. If you know front end

6:10:56development you can use React NexJS.

6:10:59Okay you can do it for you. But if you

6:11:01don't know about HTML CSS React uh React

6:11:04NexJS okay completely fine. There is a

6:11:07library inside Python called streaml

6:11:08with help of streaml you can create a

6:11:10user interface. And again you don't need

6:11:11to write the code from scratch. You can

6:11:13use chat gpt. simply uh give this uh

6:11:16pipeline code to the chart GPT and tell

6:11:18just try to add a streaml UI interface

6:11:20with that. So I have done the same

6:11:21thing. So what I did guys with my chart

6:11:23GPT I have generated a user interface

6:11:26with the help of my streaml. Okay. So

6:11:28charge GPT has given me a code. Let me

6:11:30show you how this code looks like. So

6:11:32this is the code.

6:11:35This is the code. Okay. So you can see

6:11:37this is a streamlit uh development.

6:11:40Okay. I have to import this one only.

6:11:43uh instead of importing like that in the

6:11:45app.py I have to import like that. Yeah.

6:11:47SRC agent, uh, build agent, uh, reader

6:11:50agent, writer agent and prediction.

6:11:52Fine. So, first of all, you can see it

6:11:54is utilizing streaml and we have already

6:11:56installed streaml inside our requirement

6:11:58as you can see. Then we it is setting

6:12:01the page configuration. It is adding

6:12:03some custom CSS for the designing of my

6:12:07um UI. Okay. Some color, background and

6:12:10images. It has added uh some other like

6:12:13markdown it has added. Okay. some HTML

6:12:15content has added. See in streaml also

6:12:17you can add HTML and CSS but again I

6:12:20told you if you don't it's completely

6:12:21fine just open up your any kinds of uh

6:12:24assistant gemini or chat GPT or cloud

6:12:27and try to give this pipeline.py Pi and

6:12:29tell like okay I just need to add HTML

6:12:33UI it will add it whatever user

6:12:35interface you are getting just try to

6:12:36run okay nobody's actually remember HTML

6:12:39CSS nowadays okay because we have this

6:12:41kinds of uh flexibility now this is a

6:12:44simple actually uh interface we have

6:12:47created with the help of streamlit again

6:12:49you don't need to understand this code

6:12:50uh this is like uh AI generated uh user

6:12:54interface it's completely fine but there

6:12:56would be definitely uh other guy in the

6:12:58company they will be working on the

6:13:00front- end development as per the

6:13:01company requirement. Okay. But as a uh

6:13:04agent engineer we don't need to worry

6:13:05about the user interface but to run our

6:13:07agent I need a user interface so that I

6:13:10can show to my manager I can show to my

6:13:12let's say customer uh so that uh they

6:13:14can test my agent okay in the user

6:13:16interface uh background okay instead of

6:13:18giving the terminal access. So now if I

6:13:21want to execute my app.py what I have to

6:13:23do guys I have to run this app.py. So

6:13:25simply I'm going to write a streaml

6:13:28run

6:13:30app.py. Now if I execute this will run

6:13:34my app here and all of the code I'm

6:13:37going to share guys in my description

6:13:38from there you can execute. See guys

6:13:40this is the user interface. I think this

6:13:42is amazing right? My chat GPT has

6:13:44created this user interface for me and

6:13:46it has named it as research agent

6:13:48because in the prompt I told this should

6:13:50be the research uh research agent. So

6:13:52that's why it has named like researcher

6:13:54agent. Okay. Multi- aent AI system. Uh

6:13:57four specialized AI agents collaborate

6:13:59searching, scrapping, writing and

6:14:01creating to deliver a polished research

6:14:03uh report on a given topic. Amazing.

6:14:05Right? Now here you can see uh here I

6:14:08have the input option that means I can

6:14:09pass any kinds of research topic. Even

6:14:11it has also given some suggestion like

6:14:13you can try with these are the example.

6:14:15Okay, this is amazing. Now there is a

6:14:16button. If I click on the button my

6:14:19agent will be executing and these are

6:14:20the pipeline I'm having inside my agent.

6:14:22That means the first pipeline the search

6:14:24agent. Second pipeline reser agent. Uh

6:14:26third is the writer ch. Fourth is the

6:14:28critic chain. And right now the starter

6:14:30is waiting. Okay. Now let me try whether

6:14:33it's working or not. So maybe what I can

6:14:35do maybe I can uh copy the same example

6:14:38or you can also write some other thing

6:14:39if you want. Now simply run the research

6:14:42pipeline.

6:14:44Now see first of all my first agent is

6:14:47working. Search agent is working. It is

6:14:49searching with the help of tab API.

6:14:51Let's see.

6:14:58Done. Now my research agent is

6:14:59scrapping. Sorry, reader agent is

6:15:01scrapping the top resources from the

6:15:03URL.

6:15:12Now my writer agent is drafting the

6:15:14entire report.

6:15:16Okay. So step by step it is working.

6:15:18Amazing. Right. The same things you can

6:15:19also perform in your anti-gabit VS code

6:15:21or Google cloud or charge GPT. You'll

6:15:25see that it will also work step by step

6:15:27using the agent mode. Right? So the same

6:15:29thing we have developed here. Now see my

6:15:31critic agent is reviewing the report

6:15:36and that's how multi- aent system works.

6:15:37Now see it's done. Now here you can see

6:15:40the status is already done. All the

6:15:42pipeline is completed successfully.

6:15:43There is no error. That means amazing

6:15:45beautiful user interface it has created.

6:15:47Now just below you can see this is the

6:15:49result even you can see the individual

6:15:52uh actually execution let's say my

6:15:55search result my search agent has

6:15:58searched right what it has search you

6:16:00will see see that it has got the URL and

6:16:03this is the URL it has got the content

6:16:05from medium the snippet that means the

6:16:07introduction part then this is the title

6:16:11okay title URL introduction part then

6:16:13this is the title URL introduction part

6:16:15okay that's how it is having five

6:16:16information. Okay, five information.

6:16:19Now, second agent that scrap the content

6:16:21from the URL. Now, you can see this is

6:16:23the extracted content from all the five

6:16:25uh URL. Uh this is how it has extracted

6:16:29okay and refined and this is the final

6:16:32uh research report we got. Okay. On this

6:16:35AGI development in next five year

6:16:37introduction, key findings. So, it has

6:16:39written all of this thing. Then

6:16:40conclusion. Now, if you want to make it

6:16:42more detailed, you can change in the

6:16:43prompt itself. I think remember So here

6:16:45is the prompt uh here is the prompt

6:16:49in agent.py. So here you can uh increase

6:16:52that particular section. Okay. If you

6:16:54increase it will try to add that. Then

6:16:56sources whatever sources it has referred

6:16:58it also giving you the URL. You can see

6:17:00one by one all of the URL it has given

6:17:02you. Okay. Amazing. Now you can also

6:17:06download it as a MD file. Okay. U my

6:17:08chart GPT also added another button

6:17:10here. I can also download as a MD file

6:17:12if I want and I can open it up. Then

6:17:15this is the critic feedback. So you can

6:17:17see score got six out of 10. This is the

6:17:20strength that means still uh uh sorry

6:17:23this is the strength that means of this

6:17:24particular report like the report

6:17:26provides a clear timeline for a

6:17:27development blah blah blah. It address

6:17:29both technological and ethical

6:17:31consideration. Still areas to

6:17:34improvement are there you can improve.

6:17:36These are the section maybe in the next

6:17:38um prompt itself you can add these are

6:17:40the point here. Okay, these are the

6:17:42point here to improve that particular

6:17:45response and uh this is the one verdict

6:17:48uh line it has written. Okay, amazing.

6:17:51Now let me try with another prompt. So

6:17:53what I will do? So maybe I can ask like

6:17:56um all latest AI agent in 2026.

6:18:00This example run the resource pipeline.

6:18:03again. My agent is working

6:18:17now. Reader agent is tapping.

6:18:28Now my writer agent is drafting the

6:18:29report.

6:18:48Critic is reviewing the report

6:18:53and my agent has executed. Now this is

6:18:55my search result. This is the scrap

6:18:57content result. Okay, you can see here

6:19:00and uh this is the final okay final

6:19:02research report on latest AI agency

6:19:042026. This is the report. This is the

6:19:07sources you can download. Even this is

6:19:09the critic feedback. Okay. Amazing. It's

6:19:11working perfectly. Now if you want you

6:19:13can also change the title. Uh then you

6:19:15can also change this uh you can also

6:19:17change this okay this content from this

6:19:19team itself. you can go to the code and

6:19:22maybe you can find out that section

6:19:23where it has added um

6:19:29so I think there is a

6:19:32so the best part is that like you can

6:19:34search okay so let's I'll copy this

6:19:37and uh here I can search Ctrl Ftrl V

6:19:46ah so here here itself you can change it

6:19:48here okay Now

6:19:53you can also change this title. Change

6:19:56this title if you want. Let's say uh

6:19:58here I think researcher agent. So I can

6:20:01make it as

6:20:03let's say research agent. I'll save it.

6:20:08If I come here refresh now it will

6:20:10become research agent. Okay that's how

6:20:12you can change the title whatever you

6:20:14want. Okay. Everything is possible but

6:20:15I'll keep my researcher agent only.

6:20:19So you just need to figure out where to

6:20:20change this UI interface and you can

6:20:23also change the color. Even if you want

6:20:24you can also design this UI interface

6:20:26with respect to your requirement. It's

6:20:28completely fine. That means my agent is

6:20:30working fine. We have already tested.

6:20:31Now we'll commit the changes. Uh

6:20:35agents

6:20:37working and tested.

6:20:43Now we'll try to deploy this agent.

6:20:51So simply uh what I can do I can go to

6:20:54my GitHub refresh.

6:20:56Okay my agent is ready. Now if you want

6:20:59you can also update the readmi file. So

6:21:01nowadays updating readmi file is super

6:21:03easy. Just open the agent inside your VS

6:21:06code and try to mention

6:21:09update the readme file for this

6:21:16project

6:21:18like a open source

6:21:23repo.

6:21:28Mention

6:21:30how to

6:21:32install

6:21:36and

6:21:38technologies

6:21:40used here

6:21:46if

6:21:52architectures.

6:21:54So now I'll send this prompt. So

6:21:56automatically it will try to understand

6:21:57my entire code code base all the code

6:22:01all of the agents tool everything and it

6:22:02will prepare the readme file for me okay

6:22:05so you don't need to write manually

6:22:06after generating you can customize okay

6:22:08so let me quick do it quickly so that I

6:22:10can update in my repo then I will show

6:22:12you the deployment now see it is

6:22:14evaluating see it is also working step

6:22:17by step right first of all it is editing

6:22:18the file evaluating the file that's how

6:22:20it is running multiple agents in the

6:22:22back end okay things are working like

6:22:24that now see once it it needs any kinds

6:22:26of human permission it will tell me I'll

6:22:29give the permission again it will work

6:22:31you can also give this kinds of human in

6:22:33loop permission I will also show you in

6:22:34future this kinds of thing now in the

6:22:36readmi file see it has updated my readmi

6:22:39now you can uh see here you can simply

6:22:42open the preview and this is the update

6:22:44okay this is the update you can see

6:22:47amazing right now what I can do maybe I

6:22:50can commit the changes

6:22:54readme updated it

6:22:57always try to update the readmi uh

6:22:59because with the help of readmi file

6:23:01user will be able uh I mean some other

6:23:03people will be able to use your repo and

6:23:06definitely whenever you are adding

6:23:08project in your resume you have to

6:23:09update the readmi in a proper github um

6:23:12repository now see this is uh updated

6:23:15now see this is this looks cool right

6:23:17this looks like a like professional

6:23:19project okay professional opensource

6:23:21project you can see it has added all of

6:23:23the features architectures

6:23:25Okay. And then agent responsible

6:23:27technology used prerequisite

6:23:30installation process. Okay. Then uh get

6:23:33your own API keys. How to get the API

6:23:34keys? Uses streamly UI. Then project

6:23:37folder structure workflow example output

6:23:40contributing license acknowledgement and

6:23:42supports. Amazing. Right? Now let's try

6:23:44to deploy this project. So to deploy

6:23:46this project either you can use u paid

6:23:49google uh paid actually cloud services

6:23:51like AWS, GCP, Azure or you can use any

6:23:55uh other platform where you can uh

6:23:57freely deploy this project. See there is

6:24:00a platform called rendercloud. I think

6:24:01previous project also I showed you this

6:24:03render.com. So render.com also you can

6:24:06uh deploy any kinds of AI application.

6:24:08You can see first path to production for

6:24:11the workflow you can deploy it here. But

6:24:13the best part is that here you will be

6:24:15getting a free instance. Okay, there you

6:24:16can deploy the project. But although

6:24:18this instance is like very low but still

6:24:20I think for landing it is fine. But if

6:24:22you want to uh professionally deploy

6:24:24that time you have to take the

6:24:25subscription. But in AWS GCP I don't

6:24:27free I don't uh freely actually deploy.

6:24:30We can't freely deploy there right? So

6:24:31that's why we're using render. So first

6:24:33of all you have to create an account in

6:24:34render. I already have the account. So

6:24:35I'll click on my dashboard.

6:24:40Okay. So previously I already hosted

6:24:43another application as you can see. Now

6:24:45let me create a new web service.

6:24:53Okay. Now I'll click on public git

6:24:55repository and I'll just try to give my

6:24:58repository link here. Then you have to

6:25:01connect it.

6:25:08Okay. Once it is done you can change the

6:25:09name. By default it it has taken my

6:25:11repository name. Everything would be

6:25:14same. No need to change anything. Only

6:25:16you have to give a start command here.

6:25:18So to run a streaml app you have to give

6:25:21this command.

6:25:23Okay. Streamlitly run app.py server port

6:25:25server address 00 and it will

6:25:27automatically install my requirement.xt

6:25:29whatever I'm having here. Okay. Once it

6:25:31is done now I'll take the free plan. So

6:25:33initially it will get 512 MB RAM and 0.1

6:25:36CPU. This is enough for I think learning

6:25:39but whenever you want to professionally

6:25:41deploy it you can take the subscription

6:25:43plan. Now you have to set the

6:25:44environment variable because environment

6:25:46variable it's not available in my

6:25:48GitHub. So I have my open AI and uh this

6:25:51table API both I'll add it here. So pi

6:25:56give the value.

6:26:09Okay. Now I'll add my another

6:26:12environment variable which is

6:26:15tabi.

6:26:30Okay. Once it is done, now simply click

6:26:32on deploy web service.

6:26:37Now it will set up everything in that

6:26:39particular instance. Maybe it will take

6:26:41some time because we are using free

6:26:42instance. Uh we'll wait once this

6:26:45installation everything is complete. I

6:26:46will come back.

6:26:50Now see it is installing requirement

6:26:52txt.

6:26:54Let's wait get once this status is live.

6:26:56I'll come back.

6:27:41So guys, as you can see, my uh build is

6:27:44successful and application is live. Now

6:27:46I can copy this URL, open up my browser,

6:27:48paste it and hit enter. Now this will

6:27:51load your application.

6:27:59So initially it may take some time. uh

6:28:01you have to wait once this has loaded

6:28:04then you will be able to use that.

6:28:09So guys, as you can see, this is our

6:28:11application is live. Now you can share

6:28:12this URL with anyone. They can use it.

6:28:15Now let's try. Maybe I can copy this

6:28:17prompt

6:28:19and I will test it.

6:28:24See, it's working.

6:28:38My

6:28:40search agent is working right now.

6:28:45Now reader agent is working.

6:28:58Now writer agent is drafting the report.

6:29:10and critic agent is reviewing the

6:29:12report.

6:29:22Okay, all of the execution is complete.

6:29:24Now, here is the final result. You can

6:29:26expand and see this is the search

6:29:28result. This is the scrap content and

6:29:30this is our final result we got. Okay.

6:29:33Yeah. So this is the sources you can

6:29:34download also critic feedback.

6:29:36Everything is visible. So yes guys, I

6:29:38think uh it's working fine perfectly.

6:29:41There is no error. Uh we have

6:29:42successfully deployed as well.

6:29:44Congratulation. Now let me show you. If

6:29:46I want to let's say delete the instance.

6:29:48So how it can be done? So for this you

6:29:50have to go to the settings

6:29:53and just below there is option called

6:29:56delete web service. Now you have to give

6:29:58this command.

6:30:03Now delete the web service.

6:30:07Okay. Once you do that, you will see

6:30:09that your web service will be deleted.

6:30:10Okay.

6:30:16So guys, I think you have seen the

6:30:17entire uh deployment entire

6:30:20implementation of this uh AI agent. We

6:30:23have created the complete multi- aent

6:30:25pipeline uh with the help of langin. Uh

What is LangGraph & Why It’s Required? | LangChain vs LangGraph

6:30:30definitely uh I think this is going to

6:30:33be uh this is going to be actually uh

6:30:36interesting project uh to you if you're

6:30:38creating the agent for the first time.

6:30:40Uh so this was uh the first

6:30:42orchestration framework we have explored

6:30:44so far. Don't worry uh we'll be

6:30:46exploring all of the orchestration

6:30:48framework one by one. Now in the next

6:30:50video I'm going to tell you let's say

6:30:53why we have to use the actual aentk

6:30:55orchestration framework like lang graph

6:30:56crewi okay or autogen why we can't use

6:31:00uh lang chen okay what are the

6:31:02limitation lang chains are having each

6:31:04and everything I'm going to clarify so

6:31:05guys I think you know uh we have already

6:31:09uh implemented some AI agents with the

6:31:11help of lang chain uh this was our first

6:31:15orchestrator framework uh for building

6:31:18uh GNI powered application but I told

6:31:21you we can also use lang chain for

6:31:24building these kinds of AI agents. So

6:31:26there I have shown you uh single agents

6:31:30implementation as well as the multi-

6:31:32aents implementation. So if you haven't

6:31:34uh checked that uh the link is given in

6:31:36the description from there you can check

6:31:38it out. So from this video itself guys

6:31:42I'm going to start uh our actual uh

6:31:47agentic AI orchestrator framework. The

6:31:49first framework we'll be starting with

6:31:51uh which is langraph.

6:31:54So I think you have heard of about

6:31:55langraph. It's a very famous and mostly

6:31:58used framework in industry and uh

6:32:01developer are using this framework okay

6:32:04day by day in their life. So before

6:32:07starting actually langraph first of all

6:32:09I want to give you the idea behind uh

6:32:12this langraph why langraph came in the

6:32:15market and if you don't know langraph is

6:32:17a product of langchen okay so langen

6:32:20developer team has implemented this

6:32:22langraph framework for building akai

6:32:25application so first of all let's try to

6:32:27understand why they have created this

6:32:30framework for building these kinds of

6:32:32aenti application uh although they are

6:32:35having language Okay. Um I I think we

6:32:38saw we can use langen for building some

6:32:40of the agents. Okay. Some of the basic

6:32:42level agents. But why we have to use the

6:32:45langen? Okay. What was the purpose

6:32:47behind to use this particular uh let's

6:32:49say lang graph. Okay. First of all we'll

6:32:51try to understand each and everything.

6:32:54Uh then I'm going to start with our

6:32:56langraph concept. Okay. So this video

6:32:59will cover the uh detailed discussion be

6:33:02behind actually langen versus langraph.

6:33:05uh I will uh tell you I will show you

6:33:07why we can't use actually langen when it

6:33:10comes to complex actually workflow

6:33:13complex uh uh agenti let's say

6:33:16application we can't use langen uh

6:33:18instead of that actually we have to use

6:33:20langraph for that okay so I'm going to

6:33:22show you each and every example so that

6:33:24your understanding would be more clear

6:33:26so make sure you watch this video till

6:33:28the end guys now let's see what are the

6:33:31things we're going to cover from this

6:33:33video I'm going to give you the agenda

6:33:35first of all then I will start with the

6:33:37discussion. So guys as you can see uh

6:33:41these are the things uh we'll be

6:33:43discussing in this particular video. Uh

6:33:46first of all uh I'm going to discuss

6:33:48about the uh brief overview uh of

6:33:51langen. So again uh the prerequisite for

6:33:54this video is you have to know langen.

6:33:56Okay, langchen uh understanding is

6:33:59required and I already told you in my

6:34:01YouTube channel I have created langchen

6:34:04video. Uh again I'm going to add the

6:34:06link in the description from there you

6:34:08can check it out. So first of all uh

6:34:10we'll understand um what is lang chain

6:34:13how lang chain works uh what are the

6:34:16application actually we can implement

6:34:18with the help of langchen then we'll be

6:34:21discussing about the lang graph uh we'll

6:34:23understand why lang graph is required

6:34:25and what is lang graph exactly then uh

6:34:27we'll try to understand like uh the

6:34:30difference between lang chain versus

6:34:32lang graph uh what are the benefit we'll

6:34:35be getting from the langraph okay and

6:34:36what are the dis disadvantage we'll be

6:34:38getting from langen and when to use what

6:34:41kinds of framework definitely we'll try

6:34:43to understand each and everything.

6:34:45So uh guys uh here you can see guys uh

6:34:48here is the langen um langen definition.

6:34:53So if you see the langen definition uh

6:34:56here langchen is an open-source library

6:34:59uh designed to simplify the process of

6:35:01building llm based applications. uh it

6:35:04provides modular uh building blocks that

6:35:07let you create uh sophisticated LLM

6:35:10based workflows okay with this. So I

6:35:13think uh you have already used langen uh

6:35:15I mean um inside generative AI and there

6:35:19we uh work with large language model and

6:35:22mostly we implement some ALM based

6:35:24application like uh chat bots then we

6:35:28create RG system text generation system

6:35:31okay uh uh retriever system we try to

6:35:34create these are the things right so

6:35:36guys as you can see lang chain uh

6:35:38consist of multiple component the first

6:35:41component is the model component. So

6:35:43basically uh this model component gives

6:35:46us a unified u actually interface to

6:35:49interact with any kinds of large

6:35:51language model provider. Let's say if

6:35:53you want to connect with open AI LLM so

6:35:57it is having the model component for

6:35:59that. If you want to connect with

6:36:01anropic

6:36:03uh model so it has the model component

6:36:05for that. Okay. If you want to connect

6:36:07with any open source LLM like Llama,

6:36:10okay, Mistral,

6:36:13okay, everything is possible. So all

6:36:15kinds of provider basically it supports

6:36:18and it it will give you some kinds of

6:36:21functionality so that you can connect

6:36:22with. Okay. Then uh it is having

6:36:25something called prom component. So what

6:36:27is prom component exactly? So this prom

6:36:29component helps you to engineer the

6:36:31prompt. So let's say whenever we want to

6:36:34give our custom prompt. Okay, custom

6:36:36prompt, custom prompt. Then um if I want

6:36:40to write actually different different um

6:36:43prompt template. So everything is

6:36:45possible here and all kinds of uh like u

6:36:49prompting strategy prompting engineer we

6:36:51can perform inside this pro prompt

6:36:54component. Okay. So langent is having a

6:36:55prompt uh functionality. With the help

6:36:58of that we can play with the prompting

6:37:00and I think you know especially in GNI

6:37:02application prompting is super

6:37:04important. Without prompt actually we

6:37:06can't create a robust system uh because

6:37:09if you're using very uh poor prompt

6:37:12definitely whatever output you are

6:37:14getting from the application it would be

6:37:16definitely poor. But if you're using a

6:37:19good prompt with a detailed uh

6:37:21instruction that time you can get best

6:37:23output from the application itself.

6:37:25Okay. So langen provides all of them.

6:37:28Then there is another important things

6:37:29we are having inside langen which is

6:37:31this retriever component. So this

6:37:33basically helps you to fetch relevant

6:37:35documents from a vector store. So I

6:37:38think you know we use this for the RG

6:37:40application rag application. So whenever

6:37:43we create the rag application that time

6:37:45this uh retriever component is super

6:37:47important. So there we um there we use

6:37:50something called vector databases and

6:37:52inside vector databases we store all of

6:37:55the documents as a chunk chunk of

6:37:58vectors and whenever we require them so

6:38:01we use retriever component for that to

6:38:03fetch the information relevant

6:38:05informations. Okay. So, yeah, I think uh

6:38:08these are the some major components,

6:38:09multiple components we're having inside

6:38:11Langchen. Uh but the biggest offering of

6:38:14Langchen is the chain. Okay. Uh this

6:38:17this particular things chain. So without

6:38:19chain actually uh it was uh very

6:38:22difficult uh creating this kinds of um

6:38:25this kinds of actually uh production

6:38:28grade uh geni application because chain

6:38:30is kinds of uh actually workflow uh it

6:38:33it's actually sequential workflow. So

6:38:36what is this chain exactly? Chain is

6:38:38nothing but it's a um I mean workflow.

6:38:41Uh basically here we uh create uh this

6:38:45chain in a sequential order. Uh so if

6:38:48you have already used languin I think

6:38:49you know that let's say you have to

6:38:51create first of all multiple uh block

6:38:54okay let's say I have created a prompt

6:38:57block then what I will do um I will take

6:39:01another block called model okay then I

6:39:04will take another block called let's say

6:39:06output parser

6:39:10parser then we'll try to connect this

6:39:13chain together okay this chain together

6:39:16so basically ally what uh will happen uh

6:39:18first of all this prompt will go to the

6:39:20model and model will generate some kinds

6:39:22of output and this output we'll try to

6:39:24see with the help of output pareter so

6:39:26basically it's a uh it's actually

6:39:28sequential workflow and we call it as a

6:39:31chain so uh every block will give some

6:39:34kinds of output and this output will

6:39:36become the input from for the next next

6:39:39block okay then again uh this block will

6:39:42generate some kinds of output again this

6:39:43will be uh going as an input to another

6:39:46block. Okay, that's how you can create

6:39:49actually um uh as many chain as you can.

6:39:52Let's say you can create create

6:39:53thousands uh blockchain. You can create

6:39:56uh hundred of blockchain here. Okay. So

6:39:58everything is possible u inside lang

6:40:00chain. So this is the biggest benefit

6:40:02we'll be getting from the lang chain. So

6:40:04here you don't have any kinds of

6:40:06restriction that means you have to only

6:40:08create uh uh three blockchain or four

6:40:10blockchain. Uh you can create as much

6:40:12and as any as uh so here you can create

6:40:16as much as block you can okay as much as

6:40:19uh uh like um this chain you can okay

6:40:23you have the flexibility here so that's

6:40:25why this uh lang chain got like very

6:40:28popularity and uh it was uh like uh very

6:40:32easy for the developer for creating this

6:40:34kinds of geni powered application. So as

6:40:37you can see what you can build with the

6:40:38langen. Uh so I already told you we can

6:40:41implement like conversational workflow

6:40:43like chat bots, text summarization app.

6:40:46Okay. Then apart from that we can also

6:40:48create uh translation system. Okay. All

6:40:52kinds of NLP related um um I mean um uh

6:40:56problem statement we can solve with the

6:40:58help of this langen. Okay. We can

6:40:59implement with the help of langen. Then

6:41:01multi-step workflow it supports. So

6:41:03let's say whenever I want to create any

6:41:05kinds of mult um multi multi-step

6:41:09workflows that time it is also possible

6:41:11multi-step workflow means let's say um I

6:41:15can give you one example let's say here

6:41:16you given a topic okay you given a topic

6:41:20then uh what you have done let's say you

6:41:22generated a detail

6:41:25okay detail report on that topic okay

6:41:28once this detail report a topic

6:41:30generated then again you took that and

6:41:32you perform something called

6:41:33summarization

6:41:35summary okay so basically you are

6:41:37running multi-step workflow here okay so

6:41:39if I break down uh as a um let's say

6:41:43chain here so what you are doing let's

6:41:45say first of all you are taking a prompt

6:41:49prompt uh related the topic so you are

6:41:52passing it to the llm okay let's say you

6:41:54are telling uh I have uh um or let's say

6:41:58tell me about um tell me about actually

6:42:02um large language model. Okay. Um you

6:42:06just uh generate a detailed report on

6:42:08that on the large language model in

6:42:092026. So your uh this uh particular

6:42:13component will try to give you uh the

6:42:15output uh that means the detail report.

6:42:18Then what you are taking uh again uh you

6:42:21are uh creating another prompt. Okay.

6:42:23You are creating another prompt. Then

6:42:25you are telling uh now I need the

6:42:27summary of this particular detail

6:42:28report. Then again you are passing to

6:42:30another LLM. Okay, another LLM and this

6:42:33LLM is giving you some kinds of uh

6:42:36output summary. Okay, output summary. So

6:42:39basically you are running here

6:42:41multi-step workflow. So here we are not

6:42:43only using one large language model or

6:42:45one prompting you can use multiple large

6:42:47language model, multiple prompting,

6:42:49multiple output parert. Okay, so that's

6:42:51why I told you this chain can be created

6:42:54uh as many as you can. Okay, and this is

6:42:56the best uh uh things we got inside line

6:42:59chain. Then uh the next thing we have

6:43:02which is uh this RG application that

6:43:05means rag application. So inside rag

6:43:07application what we can do we can create

6:43:09a external knowledge base okay knowledge

6:43:13base for the LLM

6:43:15and we we can connect our LLM there. So

6:43:18basically if you are asking any kinds of

6:43:20question if the question uh answer is

6:43:23not available in the LLM itself. So what

6:43:26it will do it will refer kinds of

6:43:28database. Okay, we call it as a vector

6:43:30database and this is the knowledge base

6:43:32actually we try to connect the LLM

6:43:34there. So LM will fetch the informations

6:43:36from here. Uh and uh this uh process

6:43:39actually we perform with the help of

6:43:40this retr component. Okay. Then we uh

6:43:44give the answer to the user. Okay. So

6:43:46this is another things we can develop.

6:43:48Then the last thing we can do on this uh

6:43:51basic level agents creation. So we have

6:43:53already seen um how we can implement AI

6:43:56agents application with the help of

6:43:58plankin. So there I showed you we can um

6:44:01uh create a single agents as well as the

6:44:03multi- aents. But uh here the problem is

6:44:06that you can only create uh like very

6:44:10simple um I mean workflow kinds of

6:44:13agents but whenever it is having complex

6:44:16uh architecture complex workflow that

6:44:18time it would be difficult for you. I

6:44:20will show you okay how what is the

6:44:21difficult and if I want to implement

6:44:23with the help of lang chain so what

6:44:25would be what would be the biggest

6:44:26challenge for you each and everything

6:44:28I'm going to clarify so basically in the

6:44:30basic label agents what we can do maybe

6:44:33uh we can take a large language model

6:44:36and here we can uh take some kinds of

6:44:38tool okay tool access so whenever user

6:44:42is giving any kinds of things any kinds

6:44:45of input so this particular LLM will

6:44:47have the connection uh with the tool And

6:44:50it it can use the tool to get the um get

6:44:53the answer whether you can use any kinds

6:44:55of search tool or any kinds of tool you

6:44:58can use here with respect to your task.

6:45:00It will fetch the informations from the

6:45:02tool and it will show the user. So

6:45:04basically here what we have we have some

6:45:07kinds of uh system that that system

6:45:09connected with some tools. Okay. And

6:45:11that tool will provide some realtime

6:45:13informations to the agents so that it

6:45:15can perform

6:45:18it can perform some automated workflow.

6:45:20Okay. So this is the thing and in multi-

6:45:21aents we created multiple agents and uh

6:45:24we combined them together so that

6:45:26whenever I was assigning any task it was

6:45:28working together. Okay. In a sequential

6:45:30manner. So yeah guys uh these are the

6:45:32things we can um actually implement uh

6:45:34from this langen uh langen actually

6:45:37framework. So guys now uh we'll take an

6:45:40example um and we'll try to understand

6:45:44uh why uh langen cannot be used whenever

6:45:48we are building any kinds of agenti

6:45:51application. So what would be the

6:45:53biggest uh difficulties and challenges

6:45:55uh if we are using lang chain for

6:45:58building these kinds of agent

6:45:59application uh we'll try to understand

6:46:01in detail okay and why uh we have to use

6:46:04lang graph uh we'll also try to

6:46:07understand in detail okay so for this uh

6:46:10I'm going to take the same example uh

6:46:12the example I given you in my

6:46:14introduction session uh where I

6:46:17discussed about the agentic AI I think

6:46:19probably this was the second session uh

6:46:21you have to uh watch uh on my playlist.

6:46:25So uh there I told you about a um

6:46:28recruitment process uh agent. So

6:46:32basically let's say if I am having uh um

6:46:35if I'm having a job position and if I

6:46:37want to uh if I want to let's say hire

6:46:39someone so how I can utilize a agent.

6:46:42Okay, how I can utilize an agent and how

6:46:45this agent was working. Okay, I think I

6:46:47given you a detailed introduction on

6:46:50that. So what I have done uh that

6:46:52particular example I have converted in a

6:46:54flowchart. You can see this is a

6:46:56detailed flowchart. So this flowchart uh

6:46:58actually explains um uh each and

6:47:01everything about that particular

6:47:03application. Um so basically we call it

6:47:05as a workflow. So this thing we call it

6:47:08as a

6:47:11workflow.

6:47:13Okay workflow.

6:47:15So don't try to relate this workflow

6:47:17with the AI agents because there are

6:47:19some difference between this workflow

6:47:22and AI agents. So if you want to

6:47:24understand this thing so what you can do

6:47:27uh you can

6:47:29um you can visit a website uh

6:47:32entropic.com. So they have written a

6:47:35blog about the building effectic AI

6:47:37agents. So if you just go below so there

6:47:40uh they have discussed uh about the

6:47:42workflow and agents. Okay. So as you can

6:47:44see um workflow are system where LLM and

6:47:47tools are orchestrated through a

6:47:49predefined code path. Okay. So as you

6:47:52can see this workflow I showed you. So

6:47:54this is kinds of predefined path and

6:47:56every time whenever I will run my uh

6:47:59let's let's say this particular block it

6:48:01will it has to follow the same things.

6:48:03Okay. But if I'm talking about the

6:48:06agents, okay, agents as you can see,

6:48:08agents on the other hand are the system

6:48:10where LLM dynamically directs their own

6:48:13process uh and tool uses, okay,

6:48:16maintaining control over how they

6:48:18accomplish a task. So I think you have

6:48:20seen my first example I have given you

6:48:22of the same requirement process uh uh

6:48:25applic uh let's say system there my

6:48:28agent was like kind of automated. So I

6:48:31just need to give a prompt. Let's say I

6:48:33want to hire a backend engineer. So all

6:48:35the step actually it was performing

6:48:37automatically. Okay. Sometimes it was

6:48:39giving you some kinds of u uh uh let's

6:48:42say uh human in loop that means u human

6:48:46confirmation but every everything it was

6:48:48automatically working. So it was

6:48:51deciding what to do. It was

6:48:52automatically selecting the tools. Okay.

6:48:54And each and everything. But uh to make

6:48:57you understand about uh this uh lang

6:49:00chain uh langchen actually um uh agents

6:49:03implementation

6:49:05or let's say if I want to implement the

6:49:08same uh that recruitment application

6:49:10with the help of langin so what would be

6:49:12the difficulties okay for that I created

6:49:14this particular workflow so that I can

6:49:15make you understand okay how it can be

6:49:18done um so here you can see this is a

6:49:20workflow uh so workflow means this is a

6:49:23predefined path so you You can see some

6:49:26kinds of condition looping. Okay, it is

6:49:28available. Okay, as you can see but on

6:49:30the other hand agent are actually

6:49:32dynamically um changes everything

6:49:34dynamically take the decisions um and it

6:49:38actually basically dynamically controls

6:49:40each and everything. Okay. So I think

6:49:41you have understood what is workflow and

6:49:43agents. Okay. So for example guys we'll

6:49:46try to consider this particular

6:49:47workflow. Now see let's try to

6:49:50understand this workflow again. So first

6:49:52of all what uh we were doing here. So

6:49:55first of all we are starting this

6:49:57workflow and starting actually we are

6:49:59giving our first uh prompt which was

6:50:01let's say I want to hire a backend

6:50:02engineer. So what will happen that time

6:50:06this particular request will go to this

6:50:08hiring request.

6:50:10Uh so this is kind of a python function

6:50:13you can consider this is a python

6:50:14function. So this uh request will go to

6:50:17the hiring request. Uh so once it will

6:50:19go to the hiring request. So what will

6:50:21happen

6:50:23uh it will uh create a job description

6:50:25uh of that uh of that actually um um job

6:50:29you are asking for. Let's say you have

6:50:31given backend engineer. So what will

6:50:33happen uh for uh backend engineer one

6:50:36job description would be created. Okay,

6:50:38one job description will be created. Uh

6:50:41so let's say you are using some kinds of

6:50:43tool here that tool will help you to

6:50:45write that particular job description.

6:50:47Then what it will do? it will try to

6:50:49send to the next uh actually block you

6:50:52can see called JD approved. So this is

6:50:55another function. So this function let's

6:50:57say has connection with another another

6:50:58LLM. Okay. So this LLM what it will do

6:51:02it will try to let's say verify this job

6:51:04description. It will check whether this

6:51:06is fine or not for this job job role. If

6:51:08not fine so it will send no. Okay. If it

6:51:11is sending no that means again you have

6:51:13to create the job description. Okay. And

6:51:16if actually this particular job JD uh

6:51:20let's say block approved. So what will

6:51:22happen? It will go to the next block.

6:51:24Okay, it will go to the next block and

6:51:27it will post the job description. So in

6:51:29this case, let's say you are using some

6:51:31other tools like uh LinkedIn API, no

6:51:33API. Uh and with the help of this API,

6:51:36you are posting the job on that

6:51:38particular platform. Okay. Now it will

6:51:41go to the next block. Let's say here it

6:51:43will wait for 7 days. Okay. So this uh

6:51:45this particular block will wait for 7

6:51:47days. So after waiting for 7 days uh it

6:51:50will u continuously monitor like how

6:51:53many application you are receiving.

6:51:56Okay. So now again it is it is going

6:51:58through another condition. So let's say

6:52:00if you got enough application then it

6:52:02will perform the other step like short

6:52:04list uh short listinguling conduct

6:52:07interview and all. But let's say if

6:52:09you're not getting enough application

6:52:10let's say you are getting only two to

6:52:11three application what will happen? It

6:52:13will send you no and again it has to

6:52:16modify the job description. Then again

6:52:18let's say it will wait for uh 48 hours.

6:52:21Okay. Then again this loop will be uh

6:52:24jumped to back. Okay. U that means the

6:52:26previous block again uh monitoring will

6:52:29start and again it will check whether

6:52:31you got enough application or not. If

6:52:33you got enough application now let's say

6:52:34you got uh 20 application this is

6:52:36enough. That time short listing will be

6:52:38happening. Short listing means let's see

6:52:40it has some kinds of réumé parser tool.

6:52:43So it will use that uh and it will uh uh

6:52:46it will actually match the resume with

6:52:49our actual job description and uh it

6:52:52will short short list actually some of

6:52:53the candidate let's say from 20

6:52:55candidate it will it's like four to five

6:52:57candidate then we'll try to schedule the

6:52:59interview okay uh then we'll take this

6:53:02interview okay manually take this

6:53:03interview then again there there is

6:53:05another condition block will come so if

6:53:08let's say uh we selected the candidate

6:53:11uh so what we'll do we'll try to send

6:53:12offer letter and all but if we uh let's

6:53:15say don't select the candidate so what

6:53:17will happen when uh regret email will be

6:53:19sent to the candidate let's say I'm

6:53:21extremely sorry for that u actually we

6:53:24are not uh uh we are we are not actually

6:53:27hiding you because let's say you haven't

6:53:29uh performed good in in the interview

6:53:31okay this kinds of regret email we can

6:53:33send otherwise we can send the offer

6:53:35letter okay uh so in offer letter also

6:53:38there are some condition let's say if

6:53:39this offer letter is accepted that means

6:53:42definitely will performing the

6:53:43onboarding and other task but if this

6:53:46operator is not accepted then again what

6:53:48you will do you'll try to perform some

6:53:50renegotiate okay let's say maybe I can

6:53:53uh increase the uh I can increase the

6:53:56package mode let's say initially I I u

6:53:59let's say initially I offered uh uh 25

6:54:02LPA but let's say this person has

6:54:05rejected that so again I will

6:54:06renegotiate that let's say I will give

6:54:09you 30 30 LPA so that time actually this

6:54:11person may prefer this particular

6:54:14package. So it will accept he will

6:54:16accept that then I'll perform the

6:54:18onboarding process and all then we'll u

6:54:20um I mean end this particular um

6:54:23workflow. Okay. So that's how guys the

6:54:25entire workflow is working and uh this

6:54:27was the first example we have taken to

6:54:29understand the AI agents and uh right

6:54:31now we have seen as a workflow how I

6:54:34mean things are working. Okay. Now let's

6:54:36say you want to implement this uh system

6:54:40with the help of langen. So how you can

6:54:43implement this with the help of langen.

6:54:45Okay. Because lang chain doesn't have

6:54:48any kinds of conditional uh conditional

6:54:51let's say u I mean uh workflow or

6:54:53conditional related functionality or

6:54:55looping functionality. Okay. So langen

6:54:58doesn't have that. So first of all let

6:55:00me tell you the challenges you will be

6:55:02facing here if you're um if you're using

6:55:04lang chain for this this one. Uh let me

6:55:08show you. Yeah. So the see first

6:55:10challenge you will be getting here which

6:55:11is um uh conditional

6:55:19branch.

6:55:22Okay. So as you can see this particular

6:55:24workflow is having u so many conditional

6:55:27branch. Okay. So this is the first uh

6:55:30challenges we'll be facing if you're

6:55:31using langen because langen doesn't have

6:55:33any kinds of conditional branch because

6:55:35it works with respect to the chaining

6:55:37concept. Okay, it it it kinds of

6:55:40sequential chaining concept it will be

6:55:42working it doesn't have any kinds of

6:55:43conditional branch. Then the second

6:55:47second challenge you'll be getting the

6:55:49loops okay loops.

6:55:52So as you can see

6:55:54um sometimes it is performing the

6:55:56looping. So that means this particular

6:55:59things will continuously um happening.

6:56:02Okay. If let's say you you you haven't

6:56:04received enough job uh application. So

6:56:06this process will again repeat. Okay. So

6:56:08that means you are looping the

6:56:10operation. Okay. Unless and until this

6:56:12is not satisfied. So again this looping

6:56:15concept is not available inside langen.

6:56:17Okay. You can't uh create this looping

6:56:20concept inside lang. This is not

6:56:22possible. Now the third challenges

6:56:24you'll be guessing um getting called

6:56:27jump. Okay, jump. Now what is jump

6:56:30exactly? Now you can see uh whenever

6:56:32let's say I didn't get any enough

6:56:33application. So this is telling no that

6:56:36time we are modifying the job

6:56:37description waiting for 48 hours then

6:56:40again we are jumping back to my previous

6:56:42block. Okay you can see monitor

6:56:44application. Okay. So from here we are

6:56:46jumping again here. So this is called

6:56:48jump and this kinds of jump we can't do

6:56:50inside lang chain. this is not possible.

6:56:52Okay. So these are some uh biggest

6:56:54challenges guys uh we will be facing

6:56:57whenever we will be using langen for

6:56:59developing this kinds of agent system.

6:57:02Okay. Now let me show you um as a code

6:57:06actually how it can be developed. Uh

6:57:09let's say somehow you want to develop

6:57:11this uh agents with the help of this

6:57:13lang. Uh so now what would be the code

6:57:16coding strategy? Okay. What would be the

6:57:18problem in the coding? Let's try to

6:57:20understand. So here I have actually uh

6:57:24taken some code example uh and this is

6:57:26the langen implementation as you can

6:57:28see. So uh maybe I can open up my

6:57:31diagram. Let me open the diagram guys.

6:57:35H so this is the diagram. This is that

6:57:37workflow. Okay. Now we'll try to

6:57:39understand now with this code. Now as

6:57:42you can see first of all here we are

6:57:43preparing our prompt. Uh we need to hire

6:57:45a software engineer for the back end uh

6:57:47backend team. That means we are starting

6:57:50this recruitment process, we are sending

6:57:52the heading request. So as you can see

6:57:56um before u uh before starting with

6:58:00first of all I need some I need some

6:58:02let's say um I need some um um I mean

6:58:07important object like first of all I

6:58:08need the LM object. So we are taking an

6:58:11LLM as you can see um chat openai we are

6:58:14taking let's say GPT4 then we are

6:58:17creating the prompt template okay so

6:58:20create a job description based on the

6:58:22hiring request okay so whatever request

6:58:25we are getting uh so let's say this

6:58:27particular request we are getting uh we

6:58:29are preparing a job description for that

6:58:31okay this is this is a job description

6:58:33prompt okay so to create this job

6:58:35description we need a prompt so we are

6:58:36preparing here then we are creating the

6:58:39chain here as you can see JD chain is

6:58:41equal to job prompt that means first of

6:58:43all job prompt will come go to it will

6:58:45go to the LLM lm will prepare a job

6:58:47description okay job description then it

6:58:51will uh uh it will be uh go to the

6:58:54output parser and output parser will

6:58:55give you the job description okay now

6:58:58what we have to do guys we have to write

6:58:59this particular uh things as a function

6:59:02uh JD approved okay this is going to be

6:59:04a simple Python function as you can see

6:59:06so we have written a uh def uh approved

6:59:10JD. So here we'll try to pass the JD

6:59:13whatever JD we have uh prepared. Okay

6:59:16I'll try to pass in this function and

6:59:19this function will return see inside

6:59:21that I haven't written the whole code I

6:59:23just given you the highle idea let's say

6:59:25if this job description is approved

6:59:27based on some parameter then we'll try

6:59:29to return approved otherwise we'll

6:59:31reject it. Okay, as you can see we'll

6:59:32try to approved otherwise we'll try to

6:59:34send no. Okay, so here you can see um

6:59:38once this particular job description is

6:59:41approved then we have to pass to the uh

6:59:43post job description. See as of now we

6:59:46are considering

6:59:49uh till here. Okay so this is the entire

6:59:52workflow but I am not creating for the

6:59:54entire workflow. So let's try to

6:59:56consider u this part. Okay, this part we

6:59:59we are implementing as of now with the

7:00:00help of blank. Okay, I'm only

7:00:02considering this part. So you can see

7:00:06uh let me show you. Yeah. So you can see

7:00:09the next function I have written for

7:00:11post job description that means this

7:00:13particular function. So it will take the

7:00:16job description and let's say it has

7:00:18some connection with uh some job portal

7:00:21you have the API key like let's say

7:00:22LinkedIn noy and it will use that and it

7:00:25will post that particular job

7:00:27description. Okay, so we have prepared

7:00:29all of the helper and utility related

7:00:31functionality. Now we have to work on

7:00:33the actual logic building. So you can

7:00:35see sometimes we have to run the loop.

7:00:38Sometimes we have to uh go through the

7:00:40condition. So these are the things we

7:00:41have to do. But in langen this kinds of

7:00:44functionality is not available. In

7:00:45langen I think I told you this kinds of

7:00:48conditional branching, looping, jumping

7:00:49is not available. So for this what we

7:00:52have to do? We have to write some manual

7:00:54code. So let's say here we have written

7:00:56the manual code. So first of all we have

7:00:58taken two variable approved and job

7:00:59description output. Okay. By default I

7:01:01have created as a false and this is this

7:01:03one is none. Okay. Now here you can see

7:01:07in step five we are running a loop until

7:01:10job description is approved. That means

7:01:12this particular things. Okay. This

7:01:13particular loop we'll be writing. So for

7:01:15writing this loop I have taken a while

7:01:17loop. Okay. While loop and I told uh

7:01:20while not approved. Okay that means

7:01:22unless and until this particular

7:01:23approved parameter is true this loop

7:01:25will be running. Then continuously what

7:01:27we are doing we're u creating the job

7:01:30description. Okay job description with

7:01:32the help of this particular prompt user

7:01:33is giving and we're sending to approved

7:01:36job description that means this

7:01:37particular function and unless and until

7:01:40we are not getting approved from this

7:01:41function this particular loop will be

7:01:44continuously running. Okay, you can see

7:01:45if not approved job des uh job not

7:01:48approved uh regenerating again it will

7:01:51come here again it will generate another

7:01:52one again it will send to the uh this

7:01:54particular function this loop will be

7:01:56continuously running okay let's say uh

7:01:59this particular job description is fine

7:02:00we got approved then what we'll do in

7:02:03the final step if it is approved then

7:02:05we'll try to post this job description

7:02:06with the help of this post JD function

7:02:09okay so that's how we can implement this

7:02:12system okay we can implement this system

7:02:14uh And yeah, we are able to do that.

7:02:16Okay, somehow we are able to do that.

7:02:17But to implement this system, I think

7:02:20one more thing you have observed which

7:02:21is this uh extra code. Okay, which is

7:02:24this manual coding. So let's say this

7:02:26manual function we have created again.

7:02:29Um

7:02:30this uh this manual code we have

7:02:33created. Okay, this manual code we have

7:02:36created. So this is called actually blue

7:02:40code.

7:02:43Okay, glue code. So to implement this

7:02:45project, we have to write okay so many

7:02:49line of glue code. Now let's say you are

7:02:51creating the entire workflow right now.

7:02:53Let's say you are creating the entire

7:02:54workflow right now. Just try to think

7:02:56about to complete the entire recruitment

7:02:58process how much glue code you have you

7:03:00have to write here. Okay. And it's

7:03:03recommended whenever you are creating

7:03:05any kinds of production grade

7:03:06application. So you have to avoid

7:03:09writing this kinds of glue code. Okay.

7:03:12you have to avoid to write this kind of

7:03:14glue code, this kinds of manual coding.

7:03:16Okay. So that's why in the market uh

7:03:20they published different different

7:03:21framework for different different kinds

7:03:23of task. Okay. For agents also we can't

7:03:26use langen because in langen we can

7:03:30implement we can implement this kinds of

7:03:32system. It's completely fine but for

7:03:33this we have to write so many manual

7:03:36coding so many glue code and this glue

7:03:37code is not good for our application.

7:03:40Okay. And again just try to think about

7:03:42as a developer uh definitely uh it would

7:03:45be very hectic task for you to write

7:03:47that that much of glue code okay inside

7:03:49your u uh codebase and just try to think

7:03:52about how much your uh your code base

7:03:55would be it would be huge codebase right

7:03:56to manage this codebase like you have to

7:03:59I mean uh you have to uh I mean take

7:04:02care everything and we won't be do that

7:04:05right so that's why guys we won't be

7:04:08using this lang uh for building this

7:04:11kinds of uh agentic workflow because if

7:04:13you see this agentic workflow is not a

7:04:15linear one it's a complex workflow right

7:04:18it's a complex workflow when it comes

7:04:20linear workflow that time it's

7:04:22completely fine let's say there is no

7:04:23condition there is no looping that time

7:04:25easily we can use the training concept

7:04:28and we can implement these things with

7:04:30the help of langen okay but when it

7:04:32comes this kinds of conditional uh

7:04:35conditional branch looping jump that

7:04:38time this lang is not recommend

7:04:40recommended for that. Okay. So for this

7:04:42we have to use some kinds of agentic

7:04:45framework. Okay. Agentic framework it is

7:04:48only for design for building this kinds

7:04:50of complex workflow complex block. Okay.

7:04:52And it has support with this kinds of

7:04:54conditional branching looping jumping

7:04:58all the functionalities it is having.

7:04:59Okay. That's why Langchen team has

7:05:02implemented another amazing framework

7:05:05called Langraph. Okay. So they have

7:05:08created one amazing framework called

7:05:09langraph. So lang graph is a agentic AI

7:05:12framework. Okay. With the help of that

7:05:13you can create agents application. Okay.

7:05:17So how much complex it doesn't matter.

7:05:19You can implement all kinds of agents

7:05:22application. And why this kinds of

7:05:24framework is uh really good for building

7:05:27agentic application because it works

7:05:30works uh I mean with respect to the

7:05:33nodes. Okay. I think you know graph is

7:05:35all about nodes. Okay. You can create as

7:05:38much as nodes you can then you can

7:05:40connect those nodes all together. Then

7:05:42you can also add the conditional

7:05:44statement. You can add the looping in

7:05:46the nodes. Okay, that means graph data

7:05:49structure is a complex data structure.

7:05:51It's not a linear data structure. If you

7:05:53have already studied about this DSA

7:05:55concept, I think you know that. So graph

7:05:57data structure is a complex data

7:05:59structure. It's a nonlinear data

7:06:01structure. So here we can do anything.

7:06:03Okay. So that's why uh this langraph is

7:06:08got I mean this is like very uh very

7:06:10powerful and popular framework when it

7:06:13comes for building any kinds of agent

7:06:15application and that's why langen team

7:06:18has developed this kinds of system and

7:06:19internally they're using uh langen only

7:06:22okay internally they're using langen

7:06:24only they have written some robust code

7:06:26for that and with the help of that

7:06:28actually they have built this lang graph

7:06:30for us uh so that we can use this lang

7:06:33graph for building AI agents

7:06:36application. Okay,

7:06:40I hope you understood. So as I told you

7:06:43this lang graph works uh with the help

7:06:45of nodes um because it has to create a

7:06:47graph and to create a graph we have to

7:06:49create a nodes. So if I now open the

7:06:51workflow you can see uh I can clear yeah

7:06:54so if I open the workflow as you can see

7:06:56here each and every block is kinds of

7:06:59nodes. Okay Lang graph will consider

7:07:00each and every blocks uh as a node. So

7:07:03let's say this hiding request it it

7:07:05would be a node. So I can write here h.

7:07:10So let's say this hiding request it's a

7:07:13it's a node

7:07:17padding request.

7:07:31Okay. Now next we have this create job

7:07:35description

7:07:37j. So this is going to be another note.

7:07:54This is going to be another node.

7:07:58And then

7:08:01we have

7:08:04um

7:08:06job approved. Okay, that means this

7:08:08checking function.

7:08:11So I can make it as job approved.

7:08:15Now there is another node

7:08:21called uh this post job description.

7:08:28Okay, post.

7:08:30I can make it as a post. Okay, so that's

7:08:33how it will create the nodes.

7:08:42Just a minute guys, let me fix it. Yeah,

7:08:46nodes. Okay, now after creating the

7:08:48nodes guys, what it will do? It will

7:08:50draw the edges. Okay, edges means the

7:08:53flow. Let's say this hiring request will

7:08:56go to the job uh description that means

7:09:00from here to here. Okay, this is called

7:09:02ages. Okay, in langraph we call it as a

7:09:05edges. Okay, you can see in the code

7:09:07also I'll explain this code as well. U

7:09:10but I I know that uh you you haven't uh

7:09:13written any kinds of code in Langra but

7:09:15it's completely fine. I'm going to teach

7:09:16you how to write the code but as a high

7:09:18level I'm going to make you understand

7:09:20okay how things are working. Now this

7:09:23job description will go to the uh job

7:09:25approved. Okay, this block that means

7:09:28this note. So again we'll create another

7:09:30edge.

7:09:31Okay, now this uh job approved will go

7:09:34to the next uh next ed uh next actually

7:09:37nodes which is post job description.

7:09:40Post job description. Okay, so we have

7:09:42drawn the edges. Okay, now we'll be

7:09:44working on the conditional and looping.

7:09:46Okay, now we we have to work on the

7:09:48conditional and looping. Now to uh I

7:09:50mean for better understanding maybe we

7:09:52can see the code guys here. Uh so this

7:09:55is the code implementation

7:09:58uh of langraph. Let's say the same

7:10:01workflow uh we can implement with with

7:10:03the help of langraph. So you can see the

7:10:05langraph implementation. So first of all

7:10:07we are adding the nodes. Okay all of the

7:10:09nodes one by one. First of all we are

7:10:11adding hiring request this this nodes we

7:10:14are getting these nodes. Okay. And uh

7:10:16you can see uh we are giving the name as

7:10:18well as we are giving a hiring request

7:10:20object. Now you can ask what is this

7:10:21hiring request object. This is nothing

7:10:23but this is a simple python function as

7:10:25you can see hiding request. Okay. So we

7:10:28are um creating a simple Python

7:10:30function. uh we are using LLM or we are

7:10:34using some kinds of API here in that and

7:10:36we are preparing a function and once

7:10:38this function is ready we are giving the

7:10:39object of that particular function in

7:10:41the inside the nodes that means this

7:10:43particular function will be uh created

7:10:46as a node okay node inside langraph then

7:10:49the next uh uh node we are adding create

7:10:52uh job description job description again

7:10:55create job description is another

7:10:56function okay we are giving the object

7:10:59here okay then we are creating

7:11:01[clears throat] Next note which is check

7:11:02approval that means this function. Okay.

7:11:05So this is the function check approval.

7:11:08Then next we are doing uh this uh post

7:11:11job description that means this note

7:11:13this note again this is the uh post

7:11:17approval. What is post appro uh post

7:11:19right? Post job description. Okay this

7:11:20one this particular Python function.

7:11:22Okay. So with the help of that we are

7:11:24preparing all of this node one by one.

7:11:26Now once node is created now I have to

7:11:28draw the edges. Okay. Now we'll be

7:11:30drawing the edges. So as you can see we

7:11:32are drawing the edges. Uh so now see the

7:11:34workflow. First of all uh hiding uh

7:11:37request will go to the

7:11:40uh create job description. So you can

7:11:42see uh graph add age uh hiding request

7:11:47will be connected with create job

7:11:49description. That means here to here.

7:11:52Okay. So the first one then the second

7:11:55one. Okay. You want to connect this

7:11:57particular edge. Now next is would be

7:12:00create job description to check

7:12:01approval. Create job description to

7:12:04check approval. Okay. So here we have to

7:12:06draw the edges. Okay. But in between you

7:12:09can see

7:12:11uh create job description to uh job

7:12:14approval. Here we have a uh we have a

7:12:17condition. Okay. If job is not approved

7:12:21then it will again create a job

7:12:22description. If it is approved then it

7:12:25will post the job description. Okay. So

7:12:26now we have to create this conditional

7:12:28statement. It would be very easy for me

7:12:30to create a conditional statement

7:12:31because we are using this uh uh graph

7:12:34structure. Okay. In line graph. Now you

7:12:36can see in graph itself there is a

7:12:38function called add conditional ages.

7:12:40Okay. Now what would be the condition?

7:12:43Condition would be depend on this check

7:12:45approval function. That means this check

7:12:46approval we have created. That means

7:12:48this one. Okay. So if this check

7:12:50approval returns no. Okay. If it is

7:12:53returns no. Okay. not accepted again it

7:12:56will create the job job description you

7:12:57can see if it is not approved then

7:12:59create the job job description it's a

7:13:01loop back right but if it is approved

7:13:03then it will go to the directly post ID

7:13:05now you can see in next graph we are

7:13:08again adding another edges post ID that

7:13:10means from here to here from here to

7:13:12here okay so that's how guys we can

7:13:14easily implement this kinds of system

7:13:16with the upline graph okay I hope you

7:13:19got it and see like very easy it is

7:13:21right but in my previous implementation

7:13:23it was very hard for me and we have to

7:13:25write so many line of glue code here but

7:13:28here it is not required. Okay. So I hope

7:13:31guys you have understood. So this is the

7:13:33easiest example I can give um like uh

7:13:36regarding this langen versus lang graph

7:13:39and why people are using lang graph why

7:13:41um it is recommended to use lang graph

7:13:44uh like uh instead of using langen for

7:13:46building this kinds of agentic workflow

7:13:48now I think everything is clear in your

7:13:50mind so that's why in this langraph

7:13:53implementation you can either use

7:13:55looping okay looping concept either use

7:13:58branching concept this conditional

7:14:01statement concept Okay, without writing

7:14:03any kinds of glue code. Uh that's why it

7:14:05is uh uh super powerful and recommended

7:14:09and easily you can implement any kinds

7:14:12of complex application complex agent

7:14:15application with the help of this line

7:14:17graph. Okay, because internally it is

7:14:19using this nodding concept, graphing

7:14:22concept. I hope it is clear guys. So

7:14:25guys, now I'll be discussing about the

7:14:27second challenges you will be getting

7:14:29whenever you are using uh lang chain um

7:14:34for this agentic AI application. So the

7:14:36challenge name is uh handling state. So

7:14:39let's try to understand what is state

7:14:41exactly. So see state a kinds of uh meta

7:14:44data uh we use whenever we execute the

7:14:48entire workflow. So if I open the

7:14:50workflow I think you have seen um these

7:14:53are some uh important blocks we are

7:14:55having. So every blocks will generate

7:14:57some kinds of output and based on this

7:14:59output actually we are deciding for the

7:15:01next block. Let's say hiring request

7:15:04will go to the job description. Job

7:15:06description will generate job

7:15:07description. Okay. Then job approved

7:15:09will try to check whether this job

7:15:11description is fine or not. If it is

7:15:13fine. If this job description sends yes

7:15:16then job post will be happening.

7:15:18Otherwise uh if it sends no that means

7:15:20again it will create a job description.

7:15:23So in uh in every step guys you can see

7:15:26we are generating some kinds of state

7:15:28data okay state data. So if you just go

7:15:30through this block I think you will

7:15:32understand u uh why this block are

7:15:35important and why the generated uh datas

7:15:38are important because based on the data

7:15:40we are making the decision for the next

7:15:41block. So as you can see if I show you

7:15:43this state. So let's say if this is our

7:15:45goal hire a backend software engineer.

7:15:47So first of all uh uh what will happen

7:15:50these are the information will be stored

7:15:52in the state memory that means the job

7:15:54um description text would be available.

7:15:57Then job approved or not this particular

7:15:59status would be true or false. Job

7:16:01posted or not this would be true or

7:16:03false. How many applications you got?

7:16:05Number of applications you have. Okay.

7:16:08Shortlisted candidates name is offer

7:16:10letter sent or not. Interview question

7:16:12is prepared or not. Okay. So these kinds

7:16:14of data you need to run the entire

7:16:16workflow because this uh your agents

7:16:19will try to refer this state okay state

7:16:21data and it will decide okay what to do

7:16:24next. Let's say uh you have run till

7:16:26here let's say you have run till here

7:16:29you have executed till here till

7:16:30monitoring. So now right now your agent

7:16:33is having this kinds of state data.

7:16:35Let's say it know actually how many

7:16:37application uh you you you have

7:16:40currently okay it it it received

7:16:42currently and how it will understand

7:16:44because this information is available

7:16:46inside state right so it it will solve

7:16:48let's say five application came so far

7:16:50so what it again it will do again it

7:16:52will tell this is not enough just try to

7:16:54modify the job description and again try

7:16:57to monitor everything okay based on that

7:16:59particular data it is deciding right so

7:17:01this is super important so this is

7:17:03called actually state And langen is

7:17:05stateless. Okay, langshen doesn't have

7:17:07any kinds of state related functionality

7:17:10because you can see this particular

7:17:12state would be stored as a key value

7:17:14pair like a dictionary. Okay, but langen

7:17:17langen doesn't give you any kinds of

7:17:21um dictionary or key value pair storing

7:17:25concept. Okay, that means langen is

7:17:26completely stateless here. Okay, you

7:17:30can't do it with the help of langen. You

7:17:32can do it for this maybe what you have

7:17:34to do you have to let's say whenever you

7:17:36are starting the code at the very first

7:17:38time you have to take a dictionary about

7:17:40u name let's say state okay you are

7:17:42taking a dictionary and uh you have to

7:17:45manually like define these are the key

7:17:47here manually define these are the key

7:17:49and every after every execution you have

7:17:52to manually update these are the value

7:17:53here okay so that means you are again

7:17:56writing the glue code here and this is

7:17:58very trick task for you to manage all of

7:18:00the state right so If I show you all of

7:18:03the state because it's not a like a very

7:18:05uh short state we are handling. If

7:18:07you're creating the entire workflow just

7:18:09try to think about how many state uh

7:18:10that mean how many metadata will come

7:18:12and every time you have up to date that

7:18:14inside langen okay so this would be head

7:18:16trick for you but inside uh this uh lang

7:18:21graph okay if I'm using lang graph so

7:18:24inside lang graph guys uh this concept

7:18:28is available so lang graph is like

7:18:30stateful

7:18:32okay stateful if you're using lang graph

7:18:34it is stateful because in lang graph We

7:18:37create a nodes right? We create a nodes

7:18:41and nodes will be having this kinds of

7:18:47uh this kinds of actually state

7:18:49connection. State connection means see

7:18:53state connection means we can we can

7:18:54create a state object. Okay, we can

7:18:56create a state object inside langraph.

7:19:00So state object.

7:19:02So this state object can be created with

7:19:04the help of pyic.

7:19:06So I think I already taught you pyntic

7:19:08in my playlist the same playlist you can

7:19:10check that either you can create with

7:19:12the help of type dict there is another

7:19:15concept you can uh use it type dict.

7:19:18Okay. So basically what you will do

7:19:19you'll just try to define this kinds of

7:19:21structure at the very beginning of your

7:19:24application and in every nodes you will

7:19:26try to provide this state access. Okay.

7:19:29So what the node will do? So after every

7:19:32node execution automatically these kinds

7:19:35of data would be updated. Okay. These

7:19:38kinds of data would be updated inside

7:19:40the state. Okay. So let me show you

7:19:42maybe uh you'll be clear enough.

7:19:46So I think I showed you an example

7:19:48right?

7:19:51I showed you one example related this

7:19:55yeah node concept. Yeah you can see we

7:19:57are creating the node. Okay, we are

7:19:59creating a node. So whenever you are

7:20:02creating a node, it will have the access

7:20:03to the state object. Okay, so let's say

7:20:06whenever it is doing any kinds of um

7:20:09execution, let's say it is generating

7:20:10the job description. That time um in the

7:20:14state there would be a section called

7:20:15job description in a key, right? It will

7:20:18try to update the job description.

7:20:19Again, it will run to the next node job

7:20:22approved. So whether job is approved or

7:20:24not whether it is true or false again it

7:20:27will try to update that particular

7:20:28parameter because we are defining this

7:20:31particular state with the help of this

7:20:33pentic pentic or this state dict okay we

7:20:36are doing that this kinds of structure

7:20:39so that's why in the code itself if you

7:20:41see the langraph implementation so every

7:20:44time in the function itself we are

7:20:45giving this kinds of state okay you can

7:20:48see we are giving this kinds of state

7:20:50okay and output it will also return you

7:20:52some kinds of state okay because it is

7:20:54updating in that particular um state

7:20:57object okay so that's how this lang

7:20:59graph handles this kinds of scenario

7:21:01this kinds of stating scenario okay uh

7:21:04but you now you can ask me in in lang

7:21:06chain uh we have the memory concept

7:21:08definitely right in lang chain we have

7:21:10the memory

7:21:12we can use the memory but memory you can

7:21:15use for what for the conversational

7:21:18workflow converation

7:21:21okay you can store the conversation the

7:21:23conversation you are doing with your

7:21:24chatbot or whatever you can state the

7:21:28you can store the conversation okay

7:21:30conversation story but it doesn't

7:21:33support any kinds of key value pair

7:21:34storing this kind of stating concept is

7:21:36it doesn't support you can store the

7:21:38conversation you can use conversation

7:21:40buffer memory for that but this kinds of

7:21:42thing is not possible okay I hope it is

7:21:45clear guys now guys let's talk about the

7:21:48hard challenges uh we'll be facing um uh

7:21:52which is eventdriven execution. Okay. So

7:21:55what is this eventdriven execution? See

7:21:57let's try to understand this one. So the

7:22:00workflow we have uh seen here. So this

7:22:02workflow can be executed in two way. Um

7:22:05money is

7:22:08uh let's say this is the workflow.

7:22:12Okay. So this can be executed through

7:22:14sequential manner.

7:22:17Okay. And event driven

7:22:21event driven. Okay. So let's try to

7:22:24understand the sequential. So let's say

7:22:27um sequential means let's say uh you are

7:22:30implementing through the lang chain and

7:22:31I think you know lang chain works in a

7:22:33uh in a chain order that means in a

7:22:35sequential order. So what I can do maybe

7:22:40just a minute

7:22:46or let's clear H. [clears throat]

7:22:50So see in Lchen

7:22:59in Lchen

7:23:01you have created in a sequential order.

7:23:03So let's say first of all you have given

7:23:06a prompt

7:23:08then you are passing this prompt to LLM

7:23:11lm is giving a uh kinds of output again

7:23:13you are preparing another prompt again

7:23:16this output and prompt you are giving to

7:23:17another LLM

7:23:19okay LM then you are getting some kinds

7:23:21of response here

7:23:24response here right so this is called

7:23:26actually sequential left to right you

7:23:28can see left right it is happening so

7:23:29this is a sequential order

7:23:32sequential order it is following. Okay.

7:23:35So, sequential order means this will

7:23:38start and this will uh complete the

7:23:41execution then it will be completed.

7:23:42Okay. In between it is not pausing

7:23:45anywhere. Okay. In between it is not

7:23:47pausing anywhere. But if you see the

7:23:49workflow inside workflow sometimes we

7:23:52have to pause the execution. Okay. So

7:23:55let's say if I give you example

7:23:57let's say if I come here you can see so

7:24:00whenever this workflow is running right

7:24:01it is running the workflow it's

7:24:03completely fine but here you can see it

7:24:06is waiting for some manual trigger right

7:24:08let's say it will uh wait for 7 days

7:24:12after waiting for 7 days then what it

7:24:14will do after posting the job

7:24:16description it will wait for 7 days then

7:24:18your monitoring application will be

7:24:19started okay so here it is waiting for

7:24:22some kinds of trigger Okay. So this

7:24:25triggering concept is not available

7:24:26inside that sequential execution. Okay.

7:24:29It is not available inside langen.

7:24:31Langen doesn't have any kinds of uh uh

7:24:34this uh pausing option triggering

7:24:36option. Okay. You can't do that.

7:24:40Okay. But you can implement inside

7:24:42langen. So for this what you have to do

7:24:44let's say maybe you'll be creating this

7:24:47part separately. Then you will wait for

7:24:497 days. Okay. Let's say in some uh in

7:24:52Python code you will be writing a

7:24:54function that that function will try to

7:24:56wait for seven days then again you will

7:24:58run this particular uh this particular

7:25:01let's say workflow okay so that means

7:25:02you have to do it manually again you

7:25:04have to write the glue code for that but

7:25:06inside langraph okay inside lang graph

7:25:09this kinds of concept is available this

7:25:11eventdriven concept is available so

7:25:13langen what it will do so automatically

7:25:16because it has the state connection

7:25:17right it has the state connection and

7:25:19the state itself this uh metadata would

7:25:22be available. You have to wait for 3

7:25:23days. So in lang lang graph

7:25:26automatically this particular

7:25:27eventdriven option should be available.

7:25:29So it will wait for the trigger. So once

7:25:31this trigger is complete then it will

7:25:32run the remaining workflow for you.

7:25:35Okay. So this is another challenges

7:25:37you'll be getting if you're using langin

7:25:39for building this kinds of agentic

7:25:42workflow. Okay. I hope you clear guys.

7:25:45So guys uh next challenges uh you'll be

7:25:48getting called fault tolerance. So what

7:25:50is this fault tolerance? Fault tolerance

7:25:52means let's say whenever we are running

7:25:54these kinds of big workflow so

7:25:56definitely there would be some kinds of

7:25:57fault in your application. Okay, fault

7:26:00in your application. Fault means let's

7:26:02say sometimes for uh what happens? Let's

7:26:04say you are executing the workflow.

7:26:06Let's say here you are executing the

7:26:09workflow uh at this particular workflow

7:26:12is getting executed. This particular

7:26:13block is executed. That time let's say

7:26:15you are posting the job description to

7:26:16the LinkedIn. Let's say uh that time

7:26:19LinkedIn API is not working. So

7:26:21definitely your application will stop

7:26:23that time. Okay. So this is called

7:26:24fault. Uh there is another fault. um

7:26:28let's say you have deployed this

7:26:30workflow in a server let's say AWS and

7:26:33AWS got down so this is another fault so

7:26:35that means this fault can be two types

7:26:37one is small type

7:26:41small type and one is big type okay in

7:26:44small type uh what is happening you are

7:26:47getting the fault in between let's say

7:26:50in between the block let's say you are

7:26:52not able to post the job in the LinkedIn

7:26:54because LinkedIn API is down Okay,

7:26:58big fault means let's say you are you

7:27:00have hosted this workflow in AWS and AWS

7:27:02got down that time your application will

7:27:04crash. So what happens inside uh this uh

7:27:08lang chain lang chain doesn't have any

7:27:11kinds of fault tolerance functionality

7:27:13integrated with it. That means if you're

7:27:15creating a chain let's say you have

7:27:16created this kinds of chain.

7:27:19Okay. This kinds of chain. Okay. So how

7:27:22chain executed? It executed in a

7:27:23sequential order. Let's say here you you

7:27:26break the chain. Okay. Let's say for a

7:27:27reason let's say this is the post job

7:27:30description. Let's say API is not

7:27:32working. So that time it will break here

7:27:34and all of the application will be break

7:27:38okay break then whenever you will be uh

7:27:41re-executing again it will reexecute

7:27:43from the beginning okay from here it

7:27:44will execute okay but already you have

7:27:48done so many stuff before posting the

7:27:50job description let's say your JD is

7:27:51prepared everything is ready but if

7:27:53you're running from beginning again it

7:27:55will do everything then again it will

7:27:57post the job description over the

7:27:59LinkedIn that means it is not able to

7:28:01resume from here okay it is not able to

7:28:03resume from here. It is executing the

7:28:05entire workflow again.

7:28:07Okay. Inside uh lime chain, this is the

7:28:10problem. Okay. Uh and let's say if your

7:28:14server is getting down, AWS is getting

7:28:16down also again you have to execute from

7:28:18the beginning. But inside langraph uh

7:28:21this fall tolerance functionality is

7:28:23available. So basically what happens

7:28:26let's say whenever you are creating this

7:28:27kinds of workflow. Let's say this is

7:28:29your workflow. Okay, this is your

7:28:31workflow. So let's say you are coming

7:28:33here and you you got you got some kinds

7:28:37of error. Let's say your LinkedIn API is

7:28:39not working that time it will give you

7:28:42um one option called retry. Okay, retry.

7:28:46So if you do the retry operation that

7:28:48means from after some times from here

7:28:51only your execution will start that

7:28:53means it will go to the this node and

7:28:54this node. Okay, it it doesn't have uh

7:28:57has to come here from beginning and run

7:28:59the entire workflow. Okay. And let's say

7:29:02you have hosted over the AWS AWS got

7:29:04shut down. And let's say you run till

7:29:07here. There is some other workflow also

7:29:10available. Let's say you run till here.

7:29:11Okay. So whenever you again let's say uh

7:29:14your AWS server uh fixed. Okay. And uh

7:29:18it is running again. So again it will uh

7:29:21continue from here. Again it will

7:29:23continue from here. Again it doesn't

7:29:25need to run from the beginning. So this

7:29:27kinds of fall tolerance option is

7:29:28available. And again this fault

7:29:29tolerance uh how it is u I mean handling

7:29:33with the help of the state concept state

7:29:35concept because we are having the state

7:29:37informations okay all of the state

7:29:39information every time langraph will

7:29:41take this snapshot of the state and it

7:29:43will stored in a memory okay you can

7:29:44also use a physical memory here if you

7:29:47want some memory database you can use

7:29:49and this state you can save inside a

7:29:50memory so every time it will take a

7:29:52snapshot of the state let's say what is

7:29:54the current execution current execution

7:29:56let's say post job description

7:29:58Post job description. Let's say here

7:30:00your uh uh let's say you got the fault.

7:30:03Okay. So this kinds of state already

7:30:06saved. Let's say before this post job

7:30:09description everything is ready but

7:30:10during post job description this is

7:30:12failed. So what it will do again retry

7:30:13from here again retry from here. It will

7:30:16not run from the beginning. Okay. I hope

7:30:18you got it. So that's why fall tolerance

7:30:20is another challenges inside langen. So

7:30:23guys, the next challenges uh and the

7:30:26very important challenges you'll be

7:30:28facing if you're using langen called

7:30:30human in the loop or hittl

7:30:32uh hl uh I think you know what is human

7:30:35in loop uh human in the loop and why it

7:30:38is required because I have given you the

7:30:40same example and let's try to understand

7:30:43from this workflow itself. So human in

7:30:45the loop actually it depends upon the

7:30:47human input. So uh basically you are not

7:30:50giving the full access to the agent

7:30:52instead of that some of the uh

7:30:56restriction you are setting let's say

7:30:57whenever it will create the job

7:30:58description uh before posting the job

7:31:02description it will ask for the approved

7:31:04to the human let's say it is asking for

7:31:05the approve to you if you approve that

7:31:08then it will post this job description

7:31:10okay or let's say here before sending

7:31:14this uh conducting the interview it will

7:31:15ask you uh whether uh you free or not?

7:31:19Can I schedule the interview? So if you

7:31:21give the access then it will like um

7:31:24schedule the interview for you. Okay. So

7:31:26this is called human in the loop and

7:31:28this human in the loop functionality is

7:31:29not available um default inside lang. Um

7:31:33I mean you can't um take the human in uh

7:31:36I mean human input in between the chain.

7:31:39So let's say if you create a chain here.

7:31:42Let's say this is your chain.

7:31:47This is your chain right and in between

7:31:50let's say you have to take a input from

7:31:51the human okay you have to take the

7:31:53input from the human

7:31:55that time uh you can't actually uh I

7:31:58mean uh use any kinds of default

7:32:00functionality for that so maybe what you

7:32:01can do in between maybe you can take a

7:32:03input function and you can take the

7:32:05input from the human but again uh this

7:32:08will stop the chain here okay unless and

7:32:10until you are not giving the input this

7:32:11chain won't be executed or it will take

7:32:13unnecessary computation and whenever it

7:32:15is longterm Right? Long-term means uh

7:32:17this kind of aentic system is long-term.

7:32:19So user can give the input after 2 days

7:32:22as well. Right? So that time I don't

7:32:25want to necessarily compute uh I don't

7:32:27want to necessarily use my computation.

7:32:29Right? So this is another problem. So

7:32:31maybe you can create this chain

7:32:32separately this ch separately in between

7:32:33you can ask the input and whenever user

7:32:35will give the input then you can recont

7:32:38this chain from here. Okay. But again

7:32:39you have to take all of this state uh I

7:32:42mean state data manually and you have to

7:32:45copy here again. So again you have to

7:32:46write some glue code there for that

7:32:48right. But inside this uh lang graph

7:32:51this human is loop already implemented.

7:32:53Okay this is already the first class

7:32:57citizen. Okay first class citizen inside

7:33:00this lang graph. It is already uh

7:33:03already available. Okay already

7:33:05available. Even if you go to the uh

7:33:07documentation of langraph uh there is a

7:33:10separate section for that. Let me show

7:33:12you. So this is the langraph

7:33:13documentation. So you can see human in

7:33:16the loop is available. So the human in

7:33:18the loop um hittl

7:33:22middleware wire lets you and human

7:33:24oversight uh to agents to call when

7:33:28model response an action that might

7:33:30requires a review. For example, writing

7:33:32to a file or execution SQL. Uh the um

7:33:36middleware can pause execution and wait

7:33:38a decision. Okay. So you can see this

7:33:40particular option is available and they

7:33:42have already integrated in their

7:33:43functionality. Okay, human in the loop.

7:33:45Okay, this is already available. We'll

7:33:47definitely learn this in detail whenever

7:33:49we'll uh learn the langen component. Uh

7:33:51sorry, lang lang graph component. I will

7:33:53try to learn each and everything. Okay,

7:33:55I I hope this part is clear. That means

7:33:57this is another challenges you'll be

7:33:59getting uh if you're using langen. Okay,

7:34:01and this is super important guys. If

7:34:02you're is creating this kinds of

7:34:04workflow, so this uh human in loop is

7:34:06required there. Okay, I hope you clear.

7:34:09Now let's talk about the next one which

7:34:11is nested workflow. uh nested workflow

7:34:14means see inside langraph you can run

7:34:16the nested workflow. So whenever I'm

7:34:19talking about lang graph I think you

7:34:20know we can create actually complex

7:34:25nodes here right it works as a node

7:34:30okay you can create this kinds of node

7:34:32okay now let's say a nested workflow

7:34:36means the nodes you are creating

7:34:38um inside this nodes you can create

7:34:41another graph

7:34:43let's say this node represents this

7:34:45kinds of graph okay that means This node

7:34:48itself it's a graph object. This is

7:34:50called nested workflow. Okay, I I think

7:34:53you get it. We call it as a subnote. So

7:34:55there is a concept inside the

7:34:57documentation. Let me show you.

7:35:01Um this is the documentation. Uh you can

7:35:05see if you see there is a concept called

7:35:07sub sub node. So let's say this is your

7:35:10uh node. This node itself should be a uh

7:35:12another graph. Uh and you can use this

7:35:15particular graph. Okay. So this is

7:35:17called actually sub sub node concept and

7:35:19we call it as a nested workflow and this

7:35:21nested workflow is very much required

7:35:23whenever you are creating this kinds of

7:35:24system. So let's say if I'm talking

7:35:26about a use case. So let's say if I'm

7:35:29talking about this conduct interview

7:35:31okay since said conduct interview uh

7:35:33this thing is not like uh very easy to

7:35:36implement because just try to think

7:35:38about if I want to conduct the interview

7:35:40first of all I have to prepare um set of

7:35:43questions for each and every candidate

7:35:46then I have to also

7:35:49um uh take the interview let's say round

7:35:50one round two round three okay I have to

7:35:52track those informations so instead of

7:35:54creating a single uh nodes here maybe I

7:35:57and uh create it as a sub node. So this

7:35:59will be connected with another nodes and

7:36:01that uh sorry this will connected with

7:36:04another workflow another graph and this

7:36:06graph will try to uh let's say uh

7:36:08prepare the interview questions for the

7:36:09candidate or uh taken taken care by the

7:36:12round one round two round three okay and

7:36:14so on. So these kinds of complex uh

7:36:17nodes whenever it is coming you can

7:36:19simply handle with the help of this

7:36:21nested workflow and this is very much

7:36:23important whenever you are building any

7:36:25kinds of uh multi- aent system. Okay, in

7:36:29multi- aent system, this nested workflow

7:36:31is required that time. But this uh

7:36:33nested workflow functionality is not

7:36:35available inside langen. Inside lang

7:36:38actually we can't create this kinds of

7:36:40sub nodes and all this is not possible.

7:36:42Okay. So that's why uh you can call it

7:36:45uh this is as a feature inside lang

7:36:46graph as well. Now guys the last uh

7:36:50challenges will be understanding which

7:36:52is observable uh observability.

7:36:55So basically uh what is observability

7:36:59actually let's try to understand

7:37:00observability refers to how easily you

7:37:03can monitor debugs and understand what

7:37:06your workflow is doing at the runtime.

7:37:08So whenever we are running these kinds

7:37:10of runtime so definitely we have to uh

7:37:13continuously do the observation

7:37:14otherwise what will happen uh sometimes

7:37:17it will do some um let's say unexpected

7:37:20uh task right let's say you have run

7:37:23your um agents uh uh for the LinkedIn

7:37:28ads okay so let's say it is running the

7:37:30LinkedIn ads continuously and you will

7:37:33end up with lots of cost that time right

7:37:35let's say it's not necessary to run that

7:37:38much of uh LinkedIn ads or that much of

7:37:41budget right so that time uh if you're

7:37:43not doing observations so definitely you

7:37:46will end up with lots of cost uh so that

7:37:48that that's why observability is

7:37:50required but it's not like that we'll

7:37:51sit there manually observe all of the

7:37:54execution it's not like that so

7:37:56definitely we have to use some automated

7:37:57things that will continuously do the

7:38:00observation continuously do the

7:38:01monitoring uh and uh it will give me the

7:38:04report okay so fortunately in lang chain

7:38:08If I'm talking about Langshen, Langshen

7:38:11has

7:38:13um observability tool which is Langmith.

7:38:17Okay, I think you heard about Langmith.

7:38:19So, Langmith is a um like observation

7:38:23tool with the help of Lang Langsmith. We

7:38:25can continuously track the Lang Lang

7:38:28chain actually pipeline Langchen chain.

7:38:30So whatever lang chain um chain will be

7:38:32executed all of the uh all of the

7:38:35actually let's say parameter we can uh

7:38:38we can actually monitor here in the lang

7:38:40langismith will automatically monitor so

7:38:42by default lang langismith um can

7:38:44support this lang chain u monitoring

7:38:47okay and don't worry we'll try to

7:38:49understanding langismith as well

7:38:50continuously uh sorry uh going forward

7:38:53but what is the problem with the lang

7:38:56chain uh if you're using langismith with

7:38:58that uh see if you're implementing

7:38:59writing this workflow with the help of

7:39:01Langen. So definitely you have to write

7:39:02lots of glue code. I already told you

7:39:04right you have to write lots of glue

7:39:05code but glue code cannot be uh

7:39:08monitored with the help of lang.

7:39:10Langismith only can monitor your lang

7:39:12chain chain okay chain code or whatever

7:39:15you are writing inside that but if

7:39:17you're writing extra glue code you can't

7:39:19actually uh you can't actually uh track

7:39:22with the line speed this is not possible

7:39:23but if I'm talking about lang graph if

7:39:26I'm talking about lang graph okay lang

7:39:28graph is having very strong connection

7:39:31okay it is having very um strong

7:39:33connection with lang

7:39:37okay so that means whatever node

7:39:39execution you are doing one by one all

7:39:41of the node would be tracked in the lang

7:39:44smmith okay langismith and you can see

7:39:47each and everything okay so that's why

7:39:49this langu as a observ observability

7:39:52tool we'll be learning in this playlist

7:39:54as well in detail I'll tell you how to

7:39:56use the lang and all and how we can

7:39:58perform the monitoring operation of our

7:40:00agent each and everything we we'll also

7:40:02try to understand here okay this is

7:40:04super important and uh uh yeah I think

7:40:06this is a good practice to add the

7:40:08observability uh whenever you are

7:40:10creating the application because there

7:40:11you will get the enough understanding

7:40:12about your workflow execution okay at

7:40:15runtime this is super important so yes

7:40:18guys we are done with uh all of the

7:40:20challenges we have understood each and

7:40:22everything in detail now we'll try to

7:40:24conclude uh this video uh so before

7:40:27concluding let me tell you few things so

7:40:31guys so far we have understood uh about

7:40:33the langraph and difference between lang

7:40:36and lang graph um And I also uh showed

7:40:41you the challenges actually we will be

7:40:43facing. Okay. If you're using only

7:40:46langen okay if you're not using lang

7:40:48graph what would be the challenges. Now

7:40:51you have pretty much u good

7:40:53understanding about the langraph what

7:40:54exactly the lang graph is. But again I

7:40:56have given a definition you can see lang

7:40:58graph is an orchestration framework that

7:41:00enables you to build straightful

7:41:02multi-step and event-driven workflow

7:41:04using large language model. it uh it's

7:41:07deals uh ideal for uh designing both

7:41:11single agents and multi-agent

7:41:12applications. Think of a langraph as a

7:41:15flowchart engine for LLM. You define the

7:41:18uh steps nodes. Okay, we call it as a

7:41:20nodes how they are connected edges um

7:41:23and uh and the logic that um governs the

7:41:28transitions. Langraph takes care of

7:41:30state management, conditional branching,

7:41:32looping, pausing, resuming, fault

7:41:34recovery feature uh feature essential

7:41:37for building robust production grade AI

7:41:39system. Okay. So I think you have seen I

7:41:41have introduced so many um so many

7:41:43actually strong terms here like uh this

7:41:46uh edges branching looping pausing okay

7:41:49fault recovery. So now I think this uh

7:41:52these are the terms are clear because I

7:41:54have already clarified these are the

7:41:55terms then I given you the introduction.

7:41:57So at the very beginning I could have

7:41:59given you the introduction to this line

7:42:01graph okay uh this kinds of uh

7:42:03definition I can show you this uh this

7:42:05uh actually page I can show you but uh

7:42:08you won't be able to understand okay

7:42:10what the langraph is and you that time

7:42:12actually you are not familiar with these

7:42:13are the concept so what I have done

7:42:15actually I have clarified all the

7:42:17concept now I have given you the

7:42:18introduction okay I have given you uh I

7:42:20have uh told you what is line graph

7:42:22exactly okay now I think you are pretty

7:42:24much uh clear with now let's try to

7:42:26understand when to use what kinds of

7:42:29framework. So use langen when you are

7:42:31building simple linear workflow like

7:42:33prompt chaining summarization or basic

7:42:36retriever system chatbots okay these are

7:42:38the things and use langraph when you use

7:42:41case uh involves complex nonlinear

7:42:44workflow that needs conditional paths

7:42:46loops okay human in the loops concept

7:42:49and multi- aent coordination and

7:42:50asynchronous or even driven execution

7:42:52okay so now I think guys uh you have the

7:42:55understanding uh about uh this concept

7:42:58like when to use what kinds of

7:43:00framework. Uh so based on the problem

7:43:02statement you can decide whether you

7:43:04will be using the langen, whether you

7:43:05will be using the langraph for that.

7:43:07Okay. So now I think you have the enough

7:43:09understanding on that. Now one more very

7:43:12important things will be understanding

7:43:13at the last uh so see people uh people

7:43:17will uh I mean uh tell you like uh don't

7:43:20use uh lang chain lang chain is like

7:43:23deprecated and all okay so should we

7:43:25still use lang chain or not? because

7:43:27this kinds of question will definitely

7:43:28come and uh through the entire video

7:43:30actually I have given the appreciation

7:43:31to the langraph instead of giving to the

7:43:34langen okay but things is not like that

7:43:37see still we have to use this langen

7:43:40okay langen is required why because

7:43:43langraph is built on top of langen okay

7:43:46internally they're using langen only

7:43:49okay uh then they have created this

7:43:51langraph framework so it is basically

7:43:53handling the complex workflow okay the

7:43:56complex workflow uh by adding the

7:43:58nodding concept but internally it is

7:44:00using langen because if you see still

7:44:04you need langen components like if you

7:44:05want to load any kinds of llm you have

7:44:07to use chat openi or any other open uh

7:44:09let's say llm provider uh functionality

7:44:12if you want to create a prompt uh so you

7:44:14have to use the prompt template if you

7:44:15want to create a retriever system you

7:44:16have to use the retriever documents

7:44:18loader tools etc okay these are the

7:44:20things you will be only uh loading from

7:44:22the langen not from the langraph okay I

7:44:25think you get it And langraph handles

7:44:26workflow orchestration while langchen

7:44:28provides the building block for each

7:44:30steps in the workflow. That means langen

7:44:32is uh very important. Okay. But we can't

7:44:36use langen to build the entire complex

7:44:38workflow orchestration. Okay. We create

7:44:41this orchestration. We create this

7:44:42workflow orchestration with langraph.

Understanding LangGraph Core Components

7:44:44But internally langraph uses some langen

7:44:47building blocks like these are the

7:44:48building blocks to uh work on that.

7:44:50Okay. I hope this part is clear guys.

7:44:53Okay. So guys uh I think uh you have uh

7:44:57now clear and uh I mean enough amount

7:45:00understanding on this langraph lang

7:45:02chain uh you have got the detailed

7:45:05introduction to the langraph uh and uh

7:45:08don't worry I'm going to teach you the

7:45:11uh teach you all of the component of the

7:45:12langraph we'll be also building the

7:45:14agents with that okay each and

7:45:15everything we'll be covering um in this

7:45:18uh course itself okay now in this video

7:45:21I'm going to discuss uh some important

7:45:24core component of langraph because uh

7:45:27what I feel like uh before starting the

7:45:30actual langraph concept first of all

7:45:32let's try to understand the langraph

7:45:34core component so once we have

7:45:37understood the lang lang graph core

7:45:39component it would be easy for us to

7:45:42learn all of these component one by one

7:45:44then we can combine all of them together

7:45:46and we can build any kinds of agenti

7:45:49application so guys as you can see uh

7:45:52what is lang Lang graph lang graph is an

7:45:54orchestration framework for building

7:45:56intelligence stateful and multi-step L

7:45:59workflows uh it enables advanced

7:46:02features like parallelism loops

7:46:05branching memory and resumeumability

7:46:08making it ideal for agentic and

7:46:10production grade AI applications and

7:46:13lang models your logic as a graph of

7:46:15nodes basically we call it as a task and

7:46:18ages okay I think you saw there are some

7:46:21uh ages we are drawing um in my previous

7:46:24class right so uh we call it as a edges

7:46:26we also call it as a routing instead of

7:46:28a linear chain okay so in langen we used

7:46:31to create a linear chain but here uh we

7:46:34don't create the linear chain instead of

7:46:36that we try to make everything as a

7:46:38graph um and uh uh to make this graph we

7:46:42use nodes and edges okay inside line

7:46:44graph so let's say you are having a LA

7:46:46markflow so let's say this is our L

7:46:49markflow

7:46:52Okay, this is our LM workflow and this

7:46:54is called actually edges. Okay, this is

7:46:56called actually edges

7:47:00H. So let's say this is our LM workflow.

7:47:03Okay, I'll tell you more about this LM

7:47:05workflow. What is LM workflow is? LMA

7:47:07workflow is nothing but um I told you

7:47:10about the workflow, right? Workflow is

7:47:11nothing but it's a uh it's a process of

7:47:14executing a entire uh let's say

7:47:16application, entire problem statement.

7:47:18So basically we try to represent as a

7:47:20workflow and inside that we use LLM

7:47:23right. So that's why we call it as LM

7:47:25workflows. So you can see um this is the

7:47:28LM workflows. So here we pass any kinds

7:47:31of input. Okay. And all of these you can

7:47:35see node. Okay. This is called actually

7:47:36node. This is called actually node. This

7:47:39node can be called as a task. Okay. Task

7:47:43basically let's say you are having you

7:47:46are having a entire goal. Okay, entire

7:47:48goal. So to achieve this goal, what you

7:47:52have to do? We have to break down this

7:47:53goal as a task. Okay, different

7:47:55different subtask. And each of the

7:47:57subtasks can be represented as a node.

7:48:00Okay, in lang graph. So we try to

7:48:02represent as a node. So this node will

7:48:05perform all of the task. Let's say some

7:48:07of the let's say the first node is

7:48:09responsible for taking the input. Second

7:48:12node is responsible let's say preparing

7:48:14the prompt. Okay. Then third node is

7:48:16responsible for calling the LLM. Okay,

7:48:19that's how another node will be

7:48:21responsible for calling a tool. That's

7:48:22how it is defining a separate separate

7:48:25task as a node. Okay, I hope you get it.

7:48:28Now we also call it as a flowchart. We

7:48:32also call it as a flowchart. As you if

7:48:34you see this particular graph, this is

7:48:36kinds of flowchart. Okay. Now you can

7:48:39see inside lang graph we can perform

7:48:42this parallelism looping branching

7:48:45memory reasonability each and

7:48:47everything. So if I'm talking about the

7:48:48parallelism so lang graph can be also

7:48:51executed in a parallel. Okay, let's say

7:48:53here you are having

7:48:56a a node. Here also you are having a

7:48:57node. So both node can be executed

7:49:00parallelly. Okay, both node can be

7:49:02executed parallelly. Let's say you are

7:49:04preparing a prompt template and here you

7:49:06are calling the LM. Okay, so it's not

7:49:08like that after preparing the prompt

7:49:10template you will call the LM. Both you

7:49:12can execute in parallel, right? That's

7:49:13how there are so many problem statement

7:49:16you can I mean um consider here. Okay.

7:49:20Now it can also supports this looping

7:49:22concept. Looping concept means let's say

7:49:26sometimes let's say you are you are here

7:49:28in this particular node. Let's say after

7:49:30completing this node again you have to

7:49:32go back. Okay again you have to go back

7:49:35and uh again you will re-execute and

7:49:37again you will try to send to the

7:49:39another nodes. I think you remembered

7:49:41our previous uh uh previous actually um

7:49:45example I have given you that uh

7:49:47interview uh interview agent AI uh I

7:49:50think uh huh so interview uh interview

7:49:53system okay that interview system what

7:49:55happens let's say whenever u uh sorry

7:49:58not interview that was actually

7:50:00recruitment agent so that actually what

7:50:03happened let's say if uh if let's say

7:50:06your job description uh is not generated

7:50:08properly so what it will again it will

7:50:10go back and again it will regenerate. So

7:50:12this is called actually looping right?

7:50:14This is called actually looping. You're

7:50:15performing the looping here. Then you

7:50:17can also perform the branching

7:50:18operation. Branching means the

7:50:20condition. Let's say if this condition

7:50:22is not true. Okay that means if if it is

7:50:24not yes then it will go here. Okay

7:50:28that's how you are creating branch here.

7:50:29So this is called branching. Let's say

7:50:32uh if uh you didn't get uh 20

7:50:35applications again what you will do

7:50:36again you will try to um like uh change

7:50:39the job description and wait for the

7:50:41application submission. So this is

7:50:42called actually branching. So this

7:50:44branching also can be supported. Then

7:50:45memory. Memory means let's say each and

7:50:48every nodes whatever it is generating

7:50:50the output it would be stored inside a

7:50:52memory. Okay. It will remember that

7:50:54particular output and input as well.

7:50:56This is called memory. Okay. Then uh

7:50:58reasonability. Reasonability means let's

7:51:01say I told you about the um about the

7:51:03actually u problem okay problem means

7:51:06let's say somehow your one of the uh

7:51:09application got uh let's say got trouble

7:51:12that means it got stopped let's say it

7:51:14got stopped here only in this particular

7:51:15node okay in this particular node it has

7:51:17stopped so whenever you will uh

7:51:20reinitialize the instance so instead of

7:51:22running from the beginning it can resume

7:51:25from here only it can continue from here

7:51:27only this is called resumability

7:51:29Okay. So that's why uh we uh call it as

7:51:32a like a very powerful uh I mean

7:51:35framework this particular langraph

7:51:37because the way it is handling all of

7:51:39the let's say task all of the um system

7:51:43this is completely amazing right and

7:51:45that's why uh we can't use the simple

7:51:48lang chain here the linear chain here to

7:51:51solve this kinds of complex workflow

7:51:53that's why lang graph is required and

7:51:55this is what actually your lang graph is

7:51:57okay so basically here we will be

7:51:59working with the nodes and edges okay to

7:52:01make a graph okay instead of a linear

7:52:04chain I hope you understood guys okay

7:52:06now let's try to understand about the LM

7:52:09workflow um in more detail uh so you can

7:52:12see what is LM workflow first of all

7:52:15let's try to understand so LM workflows

7:52:18are step-by-step process using which we

7:52:21can build a complex LLM applications

7:52:24each steps in a workflow performs a

7:52:26distinct task such as prompting ing

7:52:29reasoning, tool calling, memory access

7:52:31or decision making. Workflows can be

7:52:33linear, parallel, branched or looped

7:52:35allowing for a complex behavior like uh

7:52:38retries, multi- aents communication or

7:52:41two augmented reasoning and we'll be

7:52:43discussing about some common workflows

7:52:45as well. So the first workflow as you

7:52:47can see this is the linear uh sequential

7:52:49workflow. We can also call it as a

7:52:51prompt chaining. So here what happens

7:52:53let's say whenever we are giving any

7:52:55kinds of input it will first of all go

7:52:57to LLM. Okay, LM call because I'm

7:53:01calling it as a LLM workflow and

7:53:02definitely inside the workflow

7:53:04definitely LLM call should be there.

7:53:06Okay, LLM should be there that time we

7:53:08can call it as LM workflows. Okay, if it

7:53:10doesn't have any kinds of LLM that time

7:53:12you can't call it as LM workflow. And

7:53:14now inside a workflow there can be one

7:53:17or multiple LM call. Okay, one or

7:53:19multiple LM call. It's not like that you

7:53:21have to only use one LM call or let's

7:53:24say 5 LM call or 100 LM call. You can

7:53:26use as many as LM you can inside a

7:53:29workflow but make sure LM call should be

7:53:32there otherwise we can't call it as LM

7:53:34workflow. Okay. So let's say this is our

7:53:36workflow. So first of all this input

7:53:38will get this particular LLM. Then here

7:53:40we are let's say doing a kinds of

7:53:42verification whatever output we are

7:53:45getting whether it is good or not. Okay.

7:53:47If it is good then we are passing it to

7:53:49the another LLM. Okay. for another task

7:53:52then uh it will uh send an again to

7:53:54another LM for another task then it will

7:53:57uh give you some kinds of output okay

7:53:59otherwise if this particular response is

7:54:01not good then it will exit the

7:54:03application okay so this is called

7:54:04actually linear workflow uh you can

7:54:06understand okay from this particular

7:54:09so here you can understand uh this

7:54:11particular concept from this uh workflow

7:54:14itself okay I hope you cleared

7:54:17now let's take an example to understand

7:54:19this prompt chaining workflow So let's

7:54:22say you are building uh you are building

7:54:24an agent that agent will take a topic

7:54:26okay topic name as an input okay so this

7:54:29input should be a topic name topic name

7:54:33and what it does it generates a complete

7:54:36report on that particular topics okay so

7:54:39I think previously you saw I created

7:54:41these kinds of agents with the help of

7:54:42langen so that I passed a topic and it

7:54:44was preparing a detail uh detail

7:54:47actually um scientific report on top of

7:54:49that Okay. So, [snorts] first of all,

7:54:51what you are doing, you are giving this

7:54:53particular topic name uh to the first

7:54:55LLM call and that means the first LLM

7:54:58and this LLM will try to uh we will try

7:55:02to generate something. Okay, we'll try

7:55:04to generate something. Let's say this

7:55:06particular LLM um has generate a draft

7:55:09from this particular topic. Okay, so

7:55:11let's say it has generated a draft.

7:55:14Okay, draft. Now here you are doing a

7:55:16verification. Let's say you are writing

7:55:18a condition if this particular draft is

7:55:21more than 5,000 word. Okay, it is more

7:55:24than 5,000 word that time you are not

7:55:26going to take. You simply uh exit the

7:55:28application. Okay, you only take less

7:55:29than 5,000 word. So if it is less than

7:55:325,000 word then again what you will do

7:55:33again you will pass to the allar LLM.

7:55:36Let's say this LLM does the u review

7:55:39operation. Okay, review operation that

7:55:42means it will perform the review

7:55:44operation. The draft you have prepared.

7:55:46If review is completely fine, if it

7:55:48pass, okay, then it will go to the next

7:55:50LLM. This LLM will try to write this

7:55:52particular draft in a file. Okay. Uh

7:55:55write

7:55:58okay write this particular draft in a

7:56:00file. Then you will get the output.

7:56:02Okay. So this is the example you can

7:56:04consider about the prom chaining. Okay.

7:56:06So inside prompt chaining what you are

7:56:07doing? You are trying to break down a

7:56:09task. Okay. Um and you are trying to

7:56:12solve it. Okay. Step by step. This is

7:56:14called prom chaining. Now let's try to

7:56:16understand about the another uh LM

7:56:19workflow which is routing. Okay. So this

7:56:22is another kinds of LM workflow. Um uh

7:56:25this is called routing. Routing means

7:56:27here you are getting an input and you

7:56:29are using a LM um definitely LLM call.

7:56:33But this LLM call we are considering as

7:56:35a router. Router means it will basically

7:56:38route uh route the route the task. Okay.

7:56:42route the task to different different

7:56:43LLM. Okay, as you can see, let's say

7:56:45this is LLM 1, this is LM2, this is LLM

7:56:473. Okay, and here we are getting the

7:56:49output. So let's say you are building a

7:56:52customer uh support application. Let's

7:56:55say for the tech company. So there you

7:56:57are getting different different let's

7:56:58say customer questions. Let's say uh you

7:57:01are getting related um let's say you are

7:57:03running an ad tech company. Uh you are

7:57:05let's say getting the question related

7:57:07about your service. Okay. The service

7:57:09you usually provide uh let's say

7:57:11whatever course you provide. Okay.

7:57:13Whatever let's say content you are

7:57:16providing this kinds of service people

7:57:18are asking about. So let's say the first

7:57:20LM we we just let's say defined this

7:57:25service task to the first LM that means

7:57:27the prompt we have written here. So this

7:57:29particular LM will try to only handle

7:57:32about our service. Okay. Service related

7:57:33query. So let's say this is the service

7:57:36uh service lm. Okay. Now the next let's

7:57:39say t uh next let's say um uh I mean um

7:57:43task which is uh about our um

7:57:47about our let's say what I can say um

7:57:52or let's try to consider about a

7:57:54technical query

7:57:56technical query

7:58:01technical query okay technical query

7:58:03means let's say people are having a

7:58:04doubt related Python or machine learning

7:58:08deep learning whatever. So this

7:58:09particular LM will try to handle that.

7:58:11Let's say this is the tech LLM. Okay.

7:58:13Now there is another LM. This LLM will

7:58:15try to give you the interview related

7:58:17help. Okay. Interview preparation

7:58:20related help. Let's say you want to

7:58:22prepare for the interview. So uh this

7:58:25particular LM will try to handle the

7:58:28interview related task. Now whenever any

7:58:31kinds of student is giving the input

7:58:33let's say student asking about the

7:58:35services okay the service we usually

7:58:37provide in the DS with BP okay D with BP

7:58:40whatever service we provide he's asking

7:58:43for now what this LM router okay LLM

7:58:46call router will do it will

7:58:47automatically understand about your

7:58:49questions and it will decide when to

7:58:51send this where to send your question

7:58:54whether it has to send to the LM call uh

7:58:57sorry uh service service LLM whether it

7:58:59has to say uh send to the tech lm or

7:59:01whether it has to send to the interview

7:59:02lm. So definitely this is kinds of

7:59:04service related query it it will send to

7:59:07the service LLM here. Okay. And service

7:59:09LM will try to give you the response and

7:59:11you will see the output. Now let's say

7:59:12someone is asking about the technical

7:59:14query. Let's say he is getting uh Python

7:59:17uh function error. So that time LM

7:59:19router will understand okay now I have

7:59:21to send to the tech lm. TechM will give

7:59:23you the output and you will be able to

7:59:24see the output. Now there is another

7:59:26let's say question you are getting

7:59:27related interview. Your LM router will

7:59:29send to the interview LLM and you will

7:59:31be getting the output. Okay. So this is

7:59:33called actually routing workflow.

7:59:34Routing LM workflow. This kinds of

7:59:37workflow we can easily create inside the

7:59:38line graph. Okay. So definitely we'll

7:59:40try to also discuss about that. Now

7:59:42let's try to understand about the next

7:59:44workflow which is uh paraly um par uh

7:59:48parallelization.

7:59:50Inside parallelization actually what we

7:59:52can do we can execute uh the task in

7:59:55parallel. So let's try to understand uh

7:59:58this particular concept as well. As you

7:59:59can see, let's say here we are getting

8:00:01the input and some multiple LM call is

8:00:04happening. Okay, let's say LM 2, LM 1,

8:00:06LMU 2 and LM3. Then we are performing

8:00:09the aggregator operation, then we're

8:00:10getting the output. Okay. So if I'm

8:00:12giving you a realtime example, let's say

8:00:15uh I'm a YouTuber definitely I just try

8:00:17to upload my content to the YouTube and

8:00:20by default YouTube also

8:00:23YouTube also use internally this uh um I

8:00:26mean AI related uh functionality. Okay.

8:00:30So with the help of AI actually it u

8:00:32what it do it it try to let's say uh do

8:00:36the verification check of your content.

8:00:38Let's say the content we're uploading to

8:00:40the YouTube. Okay. Okay, let's say I

8:00:41have recorded a video. Okay, I have

8:00:43recorded a video. So, first of all, you

8:00:45will upload that video and it's not like

8:00:47that YouTube will directly take that

8:00:49video and uh it will allow you to

8:00:51publish. First of all, it will do some

8:00:53uh verification.

8:00:55Okay, verification.

8:00:57Verification means let's say it can be

8:01:00multiple layer verification. The first

8:01:01is let's say whether it is any uh

8:01:05unappropriate content or not.

8:01:11appropriate content or not. Then it will

8:01:13check whether it is sexual content or

8:01:16not. Then it will check whether this

8:01:18content is uh having any kinds of uh any

8:01:22kinds of let's say abusive or not. Okay.

8:01:25So this kinds of let's say multiple

8:01:27layer verification it will do. Now here

8:01:29what we can do for each of the

8:01:32verification maybe we can use different

8:01:34different task different different let's

8:01:36say LLM call for that. Let's say the

8:01:38first one is responsible for checking

8:01:41unappropriate

8:01:43okay unappropriate verification. Second

8:01:46one let's say it is responsible for

8:01:49sexual verification and third one is

8:01:51responsible for let's say um abusive

8:01:55verification. Now it's not like that

8:01:57after checking this unappropriate

8:01:59verification you have to do the sexual

8:02:00verification or after checking the

8:02:01sexual sexual verification you have to

8:02:04check for abive verification. It's not

8:02:05like that. All of the checks are

8:02:08independent here. Okay. So instead of

8:02:10running sequentially, you can run in

8:02:12parallel. So parallelly all of the check

8:02:14will done. Okay. Once you will get all

8:02:16of the um let's say check check uh let's

8:02:19say ratings and answer. Then we'll try

8:02:21to aggregate them together. Okay. Let's

8:02:23say it will give you some kinds of

8:02:25rating. Let's say it has given you 9.5

8:02:27out of 10. Okay. That means this video

8:02:29is good. It it has also given you let's

8:02:31say 9.6 around 10. Okay. It has also

8:02:34given you 9.5 around 10. Then you are

8:02:36combining all of them together. You are

8:02:38making the average and let's say there

8:02:40is a condition uh there is a average

8:02:42threshold. Let's say if this threshold

8:02:43is matching that time you will try to

8:02:45accept this video otherwise you'll try

8:02:47to reject the video then you are getting

8:02:49the output here. Okay. So that's how

8:02:51this parallelization

8:02:53will be working and uh this kinds of

8:02:55workflow also we can easily create uh

8:02:57inside our langraph as well. Okay. Now

8:03:00the next uh workflow let's try to

8:03:02understand which is this orchestrator

8:03:05workflow. Okay. So this is uh this is

8:03:07the same kinds of uh I mean paralleliz

8:03:10uhization actually workflow as you can

8:03:13see we are also taking all of the result

8:03:16and we are also doing the aggregator

8:03:18operation and we're getting the output

8:03:20but the only difference is uh let's uh

8:03:23let's try to discuss about

8:03:25so in this workflow uh as you can see um

8:03:29before this uh uh before this particular

8:03:32section there is another section we have

8:03:35which is orchestrator. Okay,

8:03:36orchestrator is uh another you can say

8:03:38lm um lm uh call. So basically this is

8:03:42the main okay lead uh lead actually um

8:03:47uh lead nodes this particular nodes will

8:03:49decide uh a particular task it is

8:03:53getting uh so what to assign whether it

8:03:55will assign to the llm 1, llm 2 and lm

8:03:583. Okay, it will basically decide but if

8:04:00you see the previous one the

8:04:02parallelization one. So basically here

8:04:04we are uh uh setting the task. Let's say

8:04:07here we are assigning the task. Let's

8:04:08say LM uh one will get the task related

8:04:11unappropriate content. LM will get the

8:04:13task related uh let's say uh sexual

8:04:16content and LLM3 will try to get the

8:04:19task related abive content. We defining

8:04:21the task but here there is no task

8:04:23nature. Okay. So basically your

8:04:25orchestrator will decide where to set

8:04:27this particular task. Okay. So uh based

8:04:30on the orchestrator uh it will define

8:04:32let's say it can define to llm 1 lm 2

8:04:35and lm 33 okay it doesn't matter but it

8:04:37will decide okay which one would be

8:04:38appropriate for this particular task

8:04:40then once we are getting this we are

8:04:42again doing the synthesizer that means

8:04:44aggregating and we're getting the output

8:04:46okay so your orchestrator can also

8:04:48define this particular task to only lm1

8:04:50okay or let's say it can define the task

8:04:52to lm1 and lm3 it doesn't matter okay

8:04:55based on the task it will decide it can

8:04:57either give to the uh let's multiple LM

8:05:00either it can give it to the one LM.

8:05:01Okay. So this is called actually

8:05:02orchestrator workflow. I hope you get

8:05:04it. Okay. So this is the similar kinds

8:05:06of your parallelization. Now the next

8:05:08workflow you are having this evaluator

8:05:11optimizer.

8:05:12Okay. So what this evaluator optimizer?

8:05:15So I think by the workflow itself you

8:05:17can understand uh the uh actual uh

8:05:21example. Okay. How this will work. So

8:05:23basically it has one LM call generator.

8:05:26Okay. LM call generator. uh this

8:05:28particular uh section and it it is

8:05:31having another one called LM call

8:05:33evaluator. Okay. So basically whatever

8:05:35input you are getting giving first of

8:05:37all LM this LM call is generating this

8:05:40particular output then you are sending

8:05:42to the LM call evaluator and it is

8:05:44checking okay it is checking uh whether

8:05:47it is good or not. Okay whether it is

8:05:49good or not and if it is not good it

8:05:51will reject and with the reject it will

8:05:54also give some kinds of feedback like

8:05:55what to update next. Okay. So this will

8:05:58get again uh this particular LM call

8:06:00generator the rejection parameter as

8:06:02well as the feedback. Based on the

8:06:04feedback again it will try to based on

8:06:06the feedback again it will try to

8:06:07generate. Okay. Again it will try to

8:06:08send to the LM call evaluator. Okay.

8:06:11Then if it is good then it will accept

8:06:12and you'll see the output. Okay. And

8:06:14this particular loop will be

8:06:15continuously happening unless and until

8:06:17this LLM uh call evaluator will accept

8:06:20your content. Okay. So I think you know

8:06:22that in our uh that uh recruitment agent

8:06:26I told you about the job description

8:06:27right. So let's say one of the LM will

8:06:30generate the job description here. Let's

8:06:31say this is this is uh generating the

8:06:34job description and another LM you're

8:06:36using for verifying the job description

8:06:38whether it is perfect or not. If not

8:06:40perfect it will give you some kinds of

8:06:41rejection and the feedback. Again it

8:06:43will try to generate the job

8:06:44description. Again it will send and if

8:06:46job description is fine then it will

8:06:47accept it um that particular job

8:06:49description. Okay. I hope you get it

8:06:51guys. So guys, I have shown you I think

8:06:55uh five workflows here. 1 2 3 4 and

8:07:01five. Okay. So five different LLM

8:07:03workflows I have explained here. And

8:07:04don't worry I'm going to um I'm going to

8:07:07cover these are the workflow in this

8:07:09particular playlist itself. Okay. We'll

8:07:12try to see all of the workflow one by

8:07:13one. Now the very important concept

8:07:16we'll try to understand about the um

8:07:20langraph uh components okay we'll try to

8:07:22understand lang graph core uh components

8:07:25uh which is graph nodes and edges okay

8:07:28although I've given you the highle

8:07:30overview in my previous video what is

8:07:31graph nodes and edges but still we'll

8:07:33try to understand this particular

8:07:35concept in detail so for this here what

8:07:38I'm going to do I'm going to take an

8:07:40example I'm going to take a problem

8:07:42statement and this problem statement

8:07:44we'll try to uh define as a graph okay

8:07:47define as a workflow then we'll try to

8:07:49understand these are the concept so guys

8:07:52uh as you can see here I have taken an

8:07:54example um so let's say here we want to

8:07:57create a system uh that generate a uh SE

8:08:01topic okay I think you know about SE uh

8:08:04so whenever you are let's say going for

8:08:09any big uh universities

8:08:12uh so basically you have to submit

8:08:15there. Okay. Uh bas based on the topic.

8:08:18So let's say uh what it does it uh

8:08:20collects the student uh SE submissions

8:08:24and it evaluates in parallel on depth of

8:08:27analysis, language quality and clarity

8:08:30of thoughts based on the combined score.

8:08:33It either gives the feedback for the

8:08:35improvement or approach that I see.

8:08:37Okay. So to build this particular system

8:08:40first of all we have to uh break down

8:08:42the task okay let's say this is the

8:08:44entire goal okay this is the entire goal

8:08:46of our system now to achieve this goal

8:08:48we have to define uh a set of task okay

8:08:51the let's say first task what it would

8:08:53be so let's say this particular system

8:08:55will first of all generate a se right

8:08:57the uh first of all we have to generate

8:08:59a topic so system generate a relevant uh

8:09:03UPS style as topic and uh present in uh

8:09:08pres present it to us to the student

8:09:10let's say uh you are giving UPSC exam

8:09:13that time let's say the this particular

8:09:15essay topic you have to prepare okay

8:09:17then you have to collect the SE from the

8:09:19student so student write and submits the

8:09:21SE based on the generated topics okay

8:09:24you you will try to collect that after

8:09:26collecting uh your system will evaluate

8:09:28the SE okay parallel evaluation block

8:09:30because here we will be evaluating based

8:09:32on the analysis language quality clarity

8:09:35of thought so All of the checks we are

8:09:38doing, all of the evaluation checks we

8:09:39are doing based on the language, based

8:09:41on the um language quality, then

8:09:44analysis, okay, clarity of thought, we

8:09:46are checking each and everything. Okay.

8:09:48So after getting the evaluation report,

8:09:50we are aggregating the results. Let's

8:09:52say the combined the three scores and

8:09:53generate the total scores. Uh let's say

8:09:55we got the three scores all together.

8:09:57Then we combined them and we got one

8:09:59average score and we matched with the

8:10:01threshold. Now here there is another uh

8:10:04task you can see conditional routing. So

8:10:06based on the total score either you will

8:10:08uh accept that particular

8:10:11SC otherwise you will give the feedback

8:10:13let's say again you have to update this

8:10:15particular SC. Okay. So then then you

8:10:17can see we are uh our next is the give

8:10:20feedback based on the uh conditional

8:10:22routing that means aggregating results

8:10:24we are giving the feedback and there is

8:10:26another option we have kept. Let's say

8:10:27if user wants to uh give the uh revision

8:10:30version of that particular AC, they will

8:10:31be able to do that. Then at the last

8:10:33we'll try to show the success uh message

8:10:35to the um student. Okay. If your if

8:10:39their essay is good, then we'll try to

8:10:40congratulate them. Okay. So this is the

8:10:42entire let's say um problem. Now if I

8:10:45want to uh if I want to represent with

8:10:47the help of lang graph. So first of all

8:10:49we have to make it as a graph. Okay. I

8:10:51think you know lang graph um make every

8:10:54let's say problem statement as a graph

8:10:56as a workflow. Okay. So basically it

8:10:58will represent as a graph after

8:11:01representing as a graph then what it

8:11:04will do it will try to uh take all of

8:11:07this task as a node. Okay all of the

8:11:09task as a node then it will connect the

8:11:11edges let's say after uh which node

8:11:15another node would be executed. Okay

8:11:17this particular connection will be do

8:11:19doing with the help of edges. So for

8:11:20this I have already prepared a um graph.

8:11:23Let me show you. Let's say this is our

8:11:25uh line graph graph we have prepared.

8:11:27Okay. So you can see uh whatever problem

8:11:30statement I have showed you here. So I

8:11:31have just represent as a graph. First of

8:11:33all it will generate a topic. So this is

8:11:35the first you can see this is the first

8:11:40uh first task right. Let me just write

8:11:43here this is the first task.

8:11:46Okay. because we broken down our entire

8:11:50goal as a task and generate topic was

8:11:52one of the task and this task we

8:11:54represented as a node okay this is

8:11:56called actually node each and every

8:11:58block is a node here okay now this is

8:12:00another task as you can see right AC

8:12:02right as means you can also let's say

8:12:05take the from the student okay user will

8:12:08upload that student will upload that

8:12:10then after uploading you are doing the

8:12:12evaluation here okay so this uh this

8:12:15evaluation is also another task another

8:12:17node. So this is also node this is uh

8:12:19this is also node this is another node

8:12:21this is another node this is another

8:12:22node so here we are let's say evaluating

8:12:24with the with respect to the clarity of

8:12:26thought depth of analysis lang base then

8:12:28we're getting some kinds of score here

8:12:29okay let's say we are getting some kinds

8:12:31of score let's say this this one is

8:12:33given you 9.5 this one is given you 9.8

8:12:35need this one is giving you 8.5. Okay,

8:12:38based on that we are doing the final

8:12:39evaluation. We are aggregating the

8:12:41results. Let's say our threshold is 9.5

8:12:45and after combining all of these we are

8:12:47getting uh 9.5 or greater than 9.5 then

8:12:50that time what I will do I'll just try

8:12:52to simply give the success message to

8:12:53these students. Okay, let's say I will

8:12:56congratulate them otherwise I will give

8:12:58the feedback. Let's say this is another

8:13:00another node. In this particular node

8:13:02I'll give the feedback. So in the

8:13:03feedback itself I'll tell what to update

8:13:06otherwise they can also resubmit that

8:13:08particular hy to me. Okay. So this is

8:13:10the entire representation and you can in

8:13:12the representation itself you can see

8:13:14this is the entire graph. Okay. This is

8:13:15the entire langraph graph and each of

8:13:18the task is a node. Okay. Each of the

8:13:20task is a node and the connection you

8:13:22can see this particular connection this

8:13:23is called edge. Okay. This edge is

8:13:25represents after generate topics write a

8:13:28will execute. After write a this uh

8:13:31evaluation uh let's say nodes will

8:13:33execute. After evaluation this final

8:13:35evaluator node will execute. Okay. Then

8:13:38either it will go to this access nodes

8:13:40either it will go to the feedback nodes.

8:13:41Okay. This is called ages. This is

8:13:42called connection. Okay. So if you

8:13:44understand this thing guys it will be

8:13:46very easy for you to create any kinds of

8:13:48langraph graph for you. Okay. And you

8:13:51can represent any kinds of problem

8:13:52statement in a graph. Okay. I hope you

8:13:54clear guys. So guys, now we'll be uh

8:13:57discussing about the next uh line graph

8:13:59component which is state. So I think you

8:14:02know already about this state. I have

8:14:04given you the state overview in my

8:14:06previous video. But let's try to

8:14:07understand. So as you can see in lang

8:14:09graph state um it is the shared memory

8:14:12that follows through uh your workflows.

8:14:15It holds all the data being passed

8:14:18between nodes as your graph runs. Okay,

8:14:21as your graph runs. So as you can see uh

8:14:23this is uh how your uh state looks like.

8:14:27So this is a kinds of u like python

8:14:31object okay python uh kinds of

8:14:33dictionary object it is having the key

8:14:35key and value pair either you can create

8:14:37this with help of pentic okay pentic

8:14:41uh library with uh inside python either

8:14:43you can also create it as a type dict

8:14:46okay type dict both you can use to

8:14:49define this particular state uh memory.

8:14:51So I think you know that uh to run a LM

8:14:54workflow let's say this is our complete

8:14:56LM workflow we need this kinds of state

8:14:58that means some metadata informations

8:15:01because each of the nodes will generate

8:15:04some kinds of output and that particular

8:15:07output will take uh taken by another

8:15:09nodes okay let's say this generate topic

8:15:12will generate some kinds of topic okay

8:15:14topic name so this topic name will go to

8:15:16the next node which is this right a

8:15:19because uh on top of that your um essay

8:15:22will be written right so that means

8:15:23whatever topic uh this particular node

8:15:26is generating this should be stored in

8:15:28this state memory and the next node

8:15:31let's say this write as a we'll take

8:15:33that particular topic and it will write

8:15:34that content as well so after writing

8:15:36this content this content would be also

8:15:39saved in the state memory so you can see

8:15:40there is another section called text

8:15:42topic okay then we are uh evaluating the

8:15:45scores and all of these uh scores would

8:15:48be saved in this uh this uh uh statement

8:15:51memory. You can see they have this

8:15:52score, language score, clarity score. So

8:15:54after this score, you will perform the

8:15:55final evaluation. Okay. So totally score

8:15:57would be also saved. Then you will be

8:15:59giving the feedback. This feedback will

8:16:00be al also saved. Then evaluation round

8:16:02it will also save. Okay. So that means

8:16:05uh to execute the entire nodes to

8:16:07execute the entire workflow you need

8:16:09this particular state. And this state is

8:16:11a shared okay it's a shared memory. As

8:16:13you can see it's a shared memory. Shared

8:16:15memory means each of the nodes will take

8:16:17this particular state as an input. Okay.

8:16:20Each each of the node will take this

8:16:22particular state as an input. All of the

8:16:24node okay all of the node will take this

8:16:25particular state and after taking it

8:16:28once it will generate some output this

8:16:30output will be instantly updated in that

8:16:32particular state. Okay, that's why this

8:16:34state is mutable as well. Okay, mutable.

8:16:37Mutable means you can change it any time

8:16:39and after exe uh every execution this

8:16:43state would be uh saved. Okay, because

8:16:46this is completely dynamic and this is

8:16:49required guys. Okay, without that

8:16:51actually um you can't create any kinds

8:16:53of agent application inside line graph.

8:16:56Okay, this state is required.

8:16:58So yes, I think you have understood and

8:17:00uh whenever we'll try to um uh create

8:17:03these kinds of uh uh application

8:17:06definitely we'll uh define this state at

8:17:08the very beginning either we can use p

8:17:10identicular we can use type dict for

8:17:12that okay and we'll try to define this

8:17:14state and for your problem statement you

8:17:16have to define the state like what are

8:17:18the variable you'll be keeping here what

8:17:21data uh you you feel like okay this

8:17:24should be updated to run your entire

8:17:26agents okay this thing will try to uh

8:17:28define at the very beginning. Now let's

8:17:30try to understand the next uh component

8:17:33of lang graph which is reducer. So what

8:17:36is reducer exactly? Uh so reducer in the

8:17:39lang graph defines how updates from

8:17:41nodes are applied to the shared state.

8:17:44Each key in the state can have its own

8:17:47reducer which determines whether new

8:17:50data uh replaces, merges or adds to the

8:17:52existing value. So if you see this

8:17:55reducer is very close to your state.

8:17:57Okay, this is very close to the state.

8:17:59That means whenever you are defining the

8:18:01state that time reducer will come to the

8:18:03picture. Okay, so let me give you one

8:18:05example. Uh see as of now what we are

8:18:08doing let's say whatever we are getting

8:18:10the data from each and every nodes we

8:18:14are directly updating in the state

8:18:15memory. Okay, I think you know that and

8:18:17this state is a shared uh shared uh

8:18:20actually memory and it it is accessible

8:18:23to all of the nodes here. Let's say this

8:18:24nodes will also take this state. These

8:18:26nodes will also take this states. Okay,

8:18:27all of the nodes will take this state

8:18:28and it will update in real time. That

8:18:31means every time the value uh you are

8:18:33changing here it is replacing okay let's

8:18:35say previously you you generated a topic

8:18:38let's say topic a so again whenever you

8:18:40will second time execute that this topic

8:18:42will replace that means the previous

8:18:43topic will be removed okay that that

8:18:45means we are replacing the value that's

8:18:47how depth score language score clarity

8:18:50score acetics okay so all of the

8:18:53parameter you are changing every time

8:18:54and your previous uh information you are

8:18:56losing but let's say sometimes

8:18:59uh let me give you first of One example

8:19:01let's say you are creating an

8:19:02application okay you are uh you are

8:19:05building an application that application

8:19:07let's say um takes two number so let me

8:19:10just give you the workflow let's say

8:19:14takes two number a and b after that it

8:19:17perform the sum operation okay then

8:19:20whatever sum you get okay it perform the

8:19:24multiply operation with three okay then

8:19:27it shows the result

8:19:30result. Let's say this is your

8:19:31application. Now in this application,

8:19:32what would be the state? If you consider

8:19:34state, so state would be first of all

8:19:37the first number.

8:19:39First number,

8:19:43okay, first number should be state then

8:19:45second number

8:19:49then the result.

8:19:53Okay. So this this is this is your

8:19:55state. So what will happen? Let's say

8:19:57you are giving two number. First number

8:19:58is five, second number is six. And if

8:20:01you do the sum operation, what would be

8:20:02the result? It would be 11. Okay, 11.

8:20:06But if you see you are multiplying by

8:20:08three. Okay, if you multiply by three,

8:20:10so what will happen? This result will be

8:20:12replaced. That means previously it was

8:20:14uh previously it was 11. Now I'll rub

8:20:17this 11. Initially after summing the

8:20:20result is 11. Now you have to multiply

8:20:22by 3. So if you multiply by 3 that means

8:20:24this 11 will be replaced by 33. Okay

8:20:28that means this 11 is not there anymore.

8:20:30Okay, this is changed completely. But in

8:20:33some application, let's say uh let me

8:20:36give you another example. I will

8:20:39rub this. Now, let's say you are

8:20:41creating a chatbot.

8:20:43You're creating a chatbot.

8:20:46In the chatbot, what you are doing? You

8:20:47are doing the conversation uh to the uh

8:20:50AI uh your conversation to the uh

8:20:53application. Let's say this is your app.

8:20:56Okay, this is your app and you are doing

8:20:57the conversation. So in this uh

8:20:59application what would be the state?

8:21:01State state it would be the let's say

8:21:03message the message we are sending or

8:21:05message we are getting from the um

8:21:08application. So initially let's say you

8:21:10have given hi

8:21:13I am bi

8:21:16okay let's say this is your message. So

8:21:17this message would be saved here. Let's

8:21:19say hi,

8:21:23I am BP. Okay. Now let's say second time

8:21:25you have given uh I like

8:21:29football.

8:21:31Okay. Now this message will be replaced.

8:21:33Okay. Let's say this this will removed

8:21:35and it will replace by I like

8:21:40football.

8:21:41Okay. Football.

8:21:43Now if you ask what is my name? So that

8:21:47time um let's say your nodes won't be

8:21:50able to uh get get your name because

8:21:52this this name is already removed okay

8:21:54from the state memory. Now you only have

8:21:57I like football okay this is the

8:21:58problem. So in this case if you're using

8:22:01only state without reducer that time it

8:22:03will replace that but if you're using

8:22:05reducer okay inside reducer you can

8:22:08define whether you have to okay you have

8:22:12to replace the data or merge the data or

8:22:15add the data. So in this case maybe we

8:22:17can add the data. So that means my

8:22:18previous message would be also there.

8:22:20Let's say I am bi

8:22:24after giving a comma maybe I can add the

8:22:26second message. That's how continuously

8:22:28all of the messages would be saved here.

8:22:30Either you can merge, either you can

8:22:32replace, everything can be defined with

8:22:33the help of this reducer. Okay. So that

8:22:35means the reducer in langraph defines

8:22:37how updates from nodes are applied to

8:22:39the shared state. Okay. That means

8:22:41whenever you are creating the state that

8:22:43time you can define all of the state

8:22:46data you are preparing, right? Whether

8:22:47it should be addable, it should be

8:22:49mergible or it should be replaceable.

8:22:51Okay. So in this case let's say we have

8:22:53defined this particular state. So in the

8:22:55feedback section you can see we have

8:22:57given add. Add means instead of uh let's

8:23:00say replacing the feedback it will

8:23:03continuously add. Let's say this is our

8:23:04example I showed you. So in this example

8:23:06let's say the feedback we are getting.

8:23:08So this feedback should be definitely

8:23:09saved in the state memory. So next time

8:23:11whenever it is executing okay it will

8:23:14see that particular feedback the

8:23:15previous feedback then it will give the

8:23:16new feedback otherwise what will happen

8:23:18the same feedback continuously it might

8:23:19give right? So that's why it should be

8:23:21addable. Okay, it should be addable

8:23:23inside state memory. So this is the work

8:23:25of reducer and definitely we'll also

8:23:28learn um by a project okay uh in this

8:23:31particular playlist there I'll try to

8:23:32use this reducer concept as well with

8:23:34the state. So there this part would be

8:23:36more clear. So I think guys now you got

8:23:38it what is the reducer? So reducer only

8:23:40can be used whenever you are using the

8:23:42state concept inside the line graph.

8:23:44Okay now I think it is clear. So guys

8:23:46now we'll be understanding the last

8:23:49concept of this lang graph which is lang

8:23:51graph execution model. So what is this

8:23:53lang graph execution model means that

8:23:56means uh the way it is executing the

8:23:59graph because I think you know lang

8:24:01graph internally defines uh your problem

8:24:04statement as a graph. It creates the

8:24:06nodes then uh it creates the edges. Okay

8:24:10that's how basically it executes

8:24:12everything. So what is the execution

8:24:15process of this particular graph? Okay,

8:24:17this is called actually execution model.

8:24:19So lang graph internally follows uh one

8:24:23amazing execution uh model strategy

8:24:26which is u let me show you which is

8:24:30actually google uh pragle. Okay, pragle.

8:24:33So what is Google pragle? Google pragle

8:24:34is a system for large scale graph

8:24:36processing. Uh so basically uh they have

8:24:39published this particular research long

8:24:41uh uh long ago that time actually they

8:24:44showed if you are having a large scale

8:24:46graph okay that time how it can be

8:24:48processed okay so internally lang graph

8:24:50uses the same technique uh for executing

8:24:53this kinds of graph

8:24:56because if you see the langraph uh

8:24:58actually graph uh whenever you are

8:25:00creating very big workflow that time

8:25:02this graph would be also big and to

8:25:04process this to execute this you have to

8:25:06follow that pragle strategy. Okay. Now

8:25:09this is the strategy guys. As you can

8:25:11see here I have already defined all of

8:25:13the uh execution process. So first of

8:25:16all what happens uh if you see here

8:25:18first of all it defines uh the graph.

8:25:21Okay. So whenever you are giving any

8:25:23problem statement uh it it will define

8:25:25the graph. So whenever it will define

8:25:27the graph first of all it will define

8:25:29the state schema that I showed you

8:25:32showed you about the schema right uh

8:25:33state schema. uh either you can uh do it

8:25:36with the help of pentic with the help of

8:25:38uh type dict okay you can you you just

8:25:40need to define this schema after that

8:25:43you have to prepare the node and edges

8:25:45okay so this node and this edge

8:25:47connection okay so fun uh and what is

8:25:50node actually this node is nothing but

8:25:52it's a simple python function okay it's

8:25:55a python function only if you can write

8:25:56a python function if you can write a

8:25:58python code you can just define any

8:26:00kinds of node okay because each of the

8:26:02nodes is responsible for a specific task

8:26:04And this task you are solving inside

8:26:06this Python function only. Okay, that's

8:26:08it. And what is edges? Which node

8:26:10connects to uh which okay that means

8:26:12this particular ages will be connecting

8:26:14to another nodes. Okay, like the

8:26:16execution flow like after this node

8:26:18which node would be executed. So once

8:26:20you have defined this particular graph

8:26:23then next step you will do the

8:26:24compilation. So here we'll do the

8:26:27compile. Compile operation compile means

8:26:28let's say you have created a uh graph.

8:26:30Let's say this is your graph. Okay, this

8:26:32is your graph and this is the age

8:26:34connection and let's say you created

8:26:35another node but this node doesn't have

8:26:37any kinds of connection. Okay, so after

8:26:39doing the compilation you will be able

8:26:41to understand okay this node doesn't

8:26:43have any kinds of connection that means

8:26:45there's some problem with the graph.

8:26:46Okay, otherwise what will happen? Our

8:26:47entire agentic system will be okay uh

8:26:50terminated. So that's why after defining

8:26:52the graph we have to do the compilation

8:26:54to checks the graph structure and

8:26:56prepared prepares for the execution.

8:26:58Okay. Then the uh third thing we'll be

8:27:00doing the invocation operation. So

8:27:02invocation operation that means uh

8:27:04whatever first node we have prepared

8:27:06we'll try to do the invoke operation

8:27:07with our initial state. The state we are

8:27:10preparing we'll try to pass to this uh

8:27:12pass to this initial actually nodes and

8:27:14this initial nodes what it will do it

8:27:16will take this uh state and it will

8:27:18execute and it will generate some kinds

8:27:20of output and this output would be also

8:27:22updated in the state. Okay. So once it

8:27:25has updated to the state then this state

8:27:27will go to the another function okay

8:27:29another another nodes and this node

8:27:31would be also initialized that that

8:27:33means activated okay so after giving

8:27:35this initial state this node would be

8:27:38activated and once you get some kinds of

8:27:40output from this node then it will pass

8:27:42to the next one the next one would be

8:27:44activated okay so this is called

8:27:46actually invocation okay you can see

8:27:47langraph sends the initial state as a

8:27:50message to the entity of nodes okay then

8:27:53once it gets this particular particular

8:27:55uh let's say uh uh output and whenever

8:27:58it activates okay we call it as a super

8:28:01step begins okay execution process uh in

8:28:03rounds that means uh it's not like that

8:28:05manually you have to uh I mean initiate

8:28:08uh and invoke all of the nodes one by

8:28:10one so once you invoke the first one

8:28:13okay the remaining one will be

8:28:15automatically executed because it is

8:28:17getting the output and after getting the

8:28:18output this will go to the input to the

8:28:20next node and next node would be uh

8:28:23activated Okay, this is called actually

8:28:25super begins. Super step begins. Okay,

8:28:27lang lang graph call it as a super step

8:28:28begins. That means all of the nodes

8:28:30would be activated that time. That means

8:28:32you can see message passing and node

8:28:34activation. The messages are passed to

8:28:36the downstream nodes via edges. So that

8:28:38means whatever output you are getting

8:28:39from the first node, it will go via this

8:28:42edges to the second node. Then it will

8:28:44be activating one by one. Okay. So this

8:28:45is called super step begins. Okay. And

8:28:48with the help of that it perform the

8:28:50message parsing and node activation. And

8:28:52the last step which is nothing but uh

8:28:54nothing but the halting conditions. So

8:28:56execution stop when all uh no nodes are

8:28:59activated and no messes are in transit.

8:29:02That means if all of the node has been

8:29:03activated and no message are uh let's

8:29:06say in transit that time this particular

Build Sequential Workflows in LangGraph

8:29:08condition would be stop and your graph

8:29:11would be also stop. Yeah. So this is

8:29:13called actually the spreel a system for

8:29:15large scale graph execution process and

8:29:18langraph follow the same strategy

8:29:20whenever they execute their graph. Okay.

8:29:22So yes guys I think you have understood

8:29:24all of the concept about the uh lang

8:29:28graph all of the component about the

8:29:29langraph. Now it would be easy for you

8:29:31to uh code in langraph whenever we try

8:29:34to write the code whenever we'll create

8:29:36the agents that time you won't be having

8:29:38any kinds of confusion you won't be

8:29:40having any kinds of problem related each

8:29:42of the components we have discussed so

8:29:45guys so far we have uh discussed about

8:29:48the theoretical aspect of agentic AI uh

8:29:52as well as I have already given you the

8:29:55in-depth understanding about the uh

8:29:58langraph components and all. Now it's

8:30:01time to start the practical uh

8:30:04exploration. So from this video onward

8:30:07guys uh we'll be working on the uh

8:30:09practical part of the langraph. So uh

8:30:12first of all we'll be starting with the

8:30:14very uh basic workflow uh inside

8:30:17langraph which is uh sequential

8:30:19workflow. I think I have already told

8:30:21you about that. First actually workflow

8:30:23the workflow name is sequential

8:30:25workflow. Okay, sequential means uh this

8:30:27will run um uh in a step-by-step uh

8:30:30let's say manner. Okay, this is called

8:30:32sequent sequential workflow. So, it

8:30:34doesn't have any kinds of looping. It

8:30:36doesn't have any kinds of conditional

8:30:37branching. Okay, it doesn't have

8:30:39anything. Only uh it will be working as

8:30:42a sequence manner. Uh so we call it as a

8:30:45sequential workflow. Okay. So for this

8:30:47guys uh first of all uh we'll be

8:30:49installing the langraph. Okay. In inside

8:30:51our system. So to install the langraph

8:30:54guys you can visit this langraph

8:30:56documentation. So there uh you will be

8:30:58getting uh all kinds of actually

8:31:00tutorial how to install okay how to

8:31:03create your first agent. So each and

8:31:04everything they have already given. So

8:31:06see if you want to install this langraph

8:31:08you can use the pip command either you

8:31:10can use uv okay so let's use pep as of

8:31:13now maybe in future I will also show you

8:31:15how to use the uv package manager as

8:31:17well. So you just need to run pip

8:31:19install lang graph. So this lang graph

8:31:21would be installed inside your system.

8:31:23So for this let's open up our local

8:31:25folder and here I'm going to just open

8:31:28up my visual code studio

8:31:33h

8:31:35and I will also open up my terminal

8:31:37here.

8:31:40Okay. So the first thing guys uh here

8:31:43I'm going to create a file called readmi

8:31:47md and inside that I'm going to mention

8:31:50um all of the command you need to

8:31:53execute uh to install this uh lang graph

8:31:56to create your virtual environment and

8:31:58everything. So if you want to create the

8:32:00virtual environment you have to execute

8:32:02this command called cond createen

8:32:07n okay then you can give the name of the

8:32:10environment I will give let's say lang

8:32:12graph

8:32:16test okay python

8:32:20you can specify the python version

8:32:21python is equal to 3.11

8:32:24and hyphen y okay so this is the command

8:32:27first of all you have to execute this

8:32:28command want to create a virtual

8:32:29environment then you'll be installing

8:32:31this line graph. Okay. Now you have to

8:32:33activate this environment. After that

8:32:35you'll be installing the

8:32:38requirements. We have to install pyener

8:32:43requirement.txt.

8:32:45Okay. So these are the command guys you

8:32:47have to uh follow first of all. So let's

8:32:49create this requirement.xt

8:32:51here.

8:32:52H. So inside that let's mention our line

8:32:55graph package.

8:33:01Okay. Lang graph. So apart from lang

8:33:03graph uh you need to install some other

8:33:05library as well like you need this lang

8:33:09chain open ai. Okay. So we are using

8:33:12this langchen openai because uh I'll be

8:33:14using my openai uh large language model

8:33:18but if you want you can also use any

8:33:19other model um from any other provider.

8:33:22Let's say you can use open router, you

8:33:24can use gro API, okay, you can use

8:33:27gemini API, anything you can use. It's

8:33:29completely up to you. It's a very easy

8:33:31things. You just need to uh change this

8:33:33model provide at that time. Okay. So

8:33:35with me, I am having my open API key.

8:33:37That's why I'll be using this one. Okay.

8:33:39And if you want to use openi API, so

8:33:41that time you have to install this

8:33:43langen openi because I told you langraph

8:33:46uh doesn't work actually independently

8:33:48internally. It is uses langen. Okay. And

8:33:51uh for all the model u let's say loading

8:33:54creating the prompt template we need the

8:33:56langen okay still langen is required

8:33:58then uh I also need pythonb

8:34:02for the environment management okay now

8:34:04guys uh you have to install this

8:34:06requirement txt file but before that I

8:34:09told you you have to create the

8:34:10environment so try to copy the first

8:34:12command and execute from your terminal

8:34:15so this will create the environment okay

8:34:17for you but for me this environment is

8:34:19already available I'll activate the

8:34:21environment. So can't activate langraph

8:34:23test. Yeah. So you can see this is

8:34:26already available. But if you don't have

8:34:28just try to create it first of all then

8:34:30just execute this requirement command.

8:34:33It will install everything. So for me it

8:34:34is already satisfied because I installed

8:34:36previously. Okay. Now once it is done

8:34:39now what I'm going to do guys um let me

8:34:41just tell you about the sequential

8:34:43workflow. Okay. Uh what is the workflow

8:34:46we'll be creating here. See here I'm

8:34:48going to create a very simple uh

8:34:50workflow without using any kinds of LLM.

8:34:52Uh I'll also show you how to use uh LLM

8:34:56um how to create the LM workflow as

8:34:58well. Don't worry but this is our first

8:35:00workflow we are creating inside Lang

8:35:02graph and we don't know how to code

8:35:03inside Lang graph right so to understand

8:35:05the workflow first of all we'll be

8:35:07creating a very simple workflow without

8:35:09using any kinds of LLM. Then I'm also

8:35:12going to show you how to use the LLM as

8:35:13well. Okay. So guys uh now let's see uh

8:35:16what workflow we'll be creating first of

8:35:18all. So here you can see uh we'll be

8:35:21creating a sequential workflow uh and

8:35:23the workflow is temperature conversion

8:35:26workflow. Okay. So here it doesn't have

8:35:29any kinds of LLM. As you can see this is

8:35:31a simple workflow we have created

8:35:33without using any kinds of LLM. So

8:35:35basically this workflow what it will do

8:35:37it will

8:35:39convert actually Celsius temperature to

8:35:42Fahrenheit. Okay. This is the only work

8:35:44this workflow will do. And if we convert

8:35:48this workflow in a graph. So this will

8:35:50look like that. So as you can see we

8:35:52have taken the start node then convert

8:35:55temperature node and the end node. So

8:35:57start and end would be common for all

8:35:59the workflow you'll be creating uh with

8:36:01the help of this langraph. This is a

8:36:04dummy nodes you can say because langraph

8:36:06understands okay workflow starts from

8:36:08here and it it uh ends actually here.

8:36:11Okay. And basically it takes the input

8:36:13uh to the like other nodes as well. And

8:36:17this will also have a state right state

8:36:19is a shared memory and this is a mutable

8:36:23u let's say object you can create this

8:36:25uh state with the help of pentic either

8:36:28you can use type dict okay anything you

8:36:29can um use it. So basically the state I

8:36:33have to share to all of the node so that

8:36:35it can take the data and it can update

8:36:37the data as well in real time. So you

8:36:41can see uh in this particular workflow

8:36:44the only function I have to write this

8:36:46conversion function temperature

8:36:47conversion function. So user will give

8:36:49Celsius uh temperature and I'll try to

8:36:52convert it to the Fahrenheit. Then this

8:36:54uh uh this Fahrenheit output would be

8:36:56show uh shows shows as an output. Okay.

8:36:59So you can see for this we have created

8:37:02we have taken a node convert temperature

8:37:04and this node would be a simple Python

8:37:06function. in that particular Python

8:37:08function what I will do I'll just try to

8:37:10I'll just try to uh write u um the uh

8:37:14code related conversion uh temperature

8:37:17conversion and whatever output we'll try

8:37:19to get we'll try to update in this

8:37:21particular state so here in this

8:37:22particular variable we'll try to update

8:37:24that let's say whatever uh temperature

8:37:26user will give this is in Celsius so

8:37:28this will save inside this particular

8:37:30state uh let's object and whatever I'll

8:37:33try to convert right uh in the

8:37:35Fahrenheit this one I'll try to save it

8:37:37here. Okay. Then whenever I'll try to

8:37:39show the output. So from here I'll try

8:37:41to read and I'll show the output here.

8:37:43So this is a simple workflow guys. Uh we

8:37:45have to create and this state is a

8:37:47shared memory. So this will go to the

8:37:49all of the uh all of the nodes. Okay.

8:37:52One by one and the complete you can see

8:37:54this diagram this workflow this is

8:37:56called actually graph. Okay I hope you

8:37:58cleared. Now let's try to code inside

8:38:00lang graph. So what I'm going to do, I'm

8:38:02going to open up my uh So let's create a

8:38:06file here.

8:38:07I'm going to create a file.

8:38:14I'm going to name it as

8:38:19one temperature conversion workflow

8:38:22NB. Okay. So here I have taken the

8:38:25Jupyter notebook file guys because here

8:38:27I'm not creating any kinds of end to end

8:38:29project. I'm just explaining the

8:38:31concept. Uh that's why I think this

8:38:34notebook uh format would be uh great fit

8:38:37for that because I will also show you

8:38:39the uh workflow in a diagram. Okay. And

8:38:42this diagram I can't uh I can't actually

8:38:46uh show you inside Py file. That's why I

8:38:48have taken this file notebook file. So

8:38:51let's select our environment line test.

8:38:53Yeah. So first of all uh what you have

8:38:56to do guys you have to uh import some

8:38:58library.

8:39:00So here let me comment. First of all you

8:39:03have to import

8:39:06some library. Okay. So you have to

8:39:08import uh this line graph. So from lang

8:39:12graph

8:39:14dotg graph.

8:39:16Okay you have to import state graph.

8:39:20Okay you have to import state graph. If

8:39:22you check the documentation as well. So

8:39:25here also they are doing the same thing

8:39:26from lang graph they're importing state

8:39:28graph then start and end. Okay this is a

8:39:31dummy nodes I already told you this will

8:39:33be common for all the uh workflow you'll

8:39:36be creating with the help of this line

8:39:37graph. Okay. So let's try to import

8:39:39them.

8:39:41H so state graph then I need start

8:39:46I need start

8:39:48then I need

8:39:52end.

8:39:57So here state graph is the function with

8:39:59the help of that we create the graph.

8:40:01Okay, entire graph it will be creating

8:40:03basically uh this helps to create the

8:40:06graph as well as uh to add the state uh

8:40:08inside our graph. Okay, now let me

8:40:11import them. Yeah, so import is

8:40:13successful. Uh that means we have

8:40:15already installed this langraph and we

8:40:17are able to import uh everything. Okay,

8:40:19then I also need to import this type

8:40:22dict from typing. So from typing.

8:40:27So first of all I'm going to show you

8:40:30how we can create the state with the

8:40:31help of this type dict uh typed dict

8:40:34actually module u from python then later

8:40:37on I'm also going to show you how we can

8:40:39create this uh state with the help of

8:40:41pientic okay pientic is another uh

8:40:44python framework with the help of that

8:40:45you can also create the state so let's

8:40:47import

8:40:49typed dict

8:40:52this one now let me import all of them

8:40:56now the first thing Guys, I have to uh

8:40:58initialize the state uh state object.

8:41:01Okay, state is important. Uh without

8:41:04state actually we can't uh create the

8:41:06graph. Then after creating the state

8:41:08we'll be creating the entire graph.

8:41:10First of all, we'll be um uh creating

8:41:12the nodes all the nodes. Then after that

8:41:15uh we'll be uh we'll be creating the

8:41:17ages as well. Okay. So this is called

8:41:19ages. Ages means this is the connection.

8:41:21Let's say after uh which node uh which

8:41:24node would be executed. Okay. This is

8:41:26the connection. So this edges should be

8:41:28also created. Okay. And if we uh create

8:41:30all of them uh this will be uh this will

8:41:32become a graph. Okay. So now let's try

8:41:35to define the state here. Uh so here

8:41:38maybe I can comment

8:41:40define

8:41:43state

8:41:46H. So for this problem I told you state

8:41:49would be uh two state. Okay. uh one is

8:41:53temperature Celsius and temperature

8:41:55Fahrenheit. So let's try to define that.

8:41:57So for this I'll write a class.

8:42:01Okay, I'll write a class.

8:42:03I'm I'm going to name this class as a

8:42:06temperature

8:42:09state.

8:42:12Okay. And I'm going to inherit uh this

8:42:15uh class with this type dict uh function

8:42:18we have imported. Okay. Now basically

8:42:21you are telling this class uh um like

8:42:24this class right now can store uh any

8:42:27kinds of data as a key value pair. Okay.

8:42:30Now the first key should be the

8:42:32temperature

8:42:34temp Celsius.

8:42:37Okay. And uh you can mention the data

8:42:39type as well. What should be the data

8:42:41type for this particular u uh variable.

8:42:45So basically uh Celsius should be in a

8:42:47float uh data type. I think you know

8:42:49that it can't be integer. It should be

8:42:51float. That's why I told uh it is a

8:42:54float. Okay, float data type. Then you

8:42:57have to write another variable called

8:43:01temperature Fahrenheit. So this should

8:43:03be also a float type data. Okay. So this

8:43:06will become our state. Okay. This will

8:43:08become our state and this state we'll be

8:43:10using inside our nodes. Okay. All of the

8:43:12nodes we'll be creating. Yeah. Now this

8:43:15state is also ready. Now let's work on

8:43:17this graph. So here what I'm going to do

8:43:20uh here let's say I'm going to comment

8:43:25define

8:43:28okay define and

8:43:32compile

8:43:34graph I think you know after defining

8:43:36the graph you have to compile I told you

8:43:38the graph execution process right in my

8:43:41previous video as well

8:43:44so to define the graph I told you first

8:43:46of all you have to use this state graph

8:43:47of uh function you have to create a

8:43:50object of that. So let's uh create a

8:43:54object called graph. Then I'm going to

8:43:57initialize state graph and inside that

8:43:58you have to pass the state the state you

8:44:01have created. This is the state

8:44:02temperature state. Okay. So basically

8:44:05this will take the state. Now see what

8:44:08is happening if you're using the state

8:44:09graph object right state graph

8:44:11functionality and if you're passing the

8:44:13state inside that uh so basically this

8:44:16particular function will try to provide

8:44:18the state to all of the nodes okay

8:44:20automatically one by one you don't need

8:44:22to manually provide that okay so this is

8:44:24the main benefit here so that's why

8:44:26we're using the state graph state graph

8:44:28u basically takes this uh state object

8:44:31and it provides to all of the nodes okay

8:44:33one by one now uh we I have defined our

8:44:38graph here.

8:44:40So this is called definition

8:44:43of the graph. Define your graph.

8:44:50Define your graph. Now next I have to

8:44:54add the nodes

8:45:02nodes to your graph to the graph. So to

8:45:06add the nodes guys you just need to

8:45:08write graph dot add nodes

8:45:12okay add nodes then you have to provide

8:45:15the nodes name okay nodes name at the

8:45:18very first time you have to give the

8:45:19nodes name let's say if you see my nodes

8:45:22here okay if you see my nodes here so

8:45:28I have only one nodes which is this uh

8:45:31convert temperature right I have only

8:45:33one nodes which is convert temperature

8:45:35now I Ask me start and ed ends is also a

8:45:38node right but this is a dummy node this

8:45:40thing you don't need to create it

8:45:42separately okay so whenever you are uh

8:45:45defining the ages okay that time you

8:45:47will mention that let's say uh after

8:45:49start uh after start this convert

8:45:53temperature node would be connected okay

8:45:54this is called actually connection

8:45:56that's why we call it as a um like uh

8:45:58dummy nodes we don't need to create

8:46:00separately here okay we don't need to

8:46:02add separately here so by default your

8:46:05uh lang graph adds that and we just need

8:46:07to uh we just need to connect this

8:46:10particular nodes to our actual nodes.

8:46:12Okay, this is the fun here. Now let me

8:46:14first of all create none I'm going to

8:46:16explain okay how it works. So first of

8:46:18all here I have to add our nodes. So

8:46:20here I only have one nodes which is

8:46:22convert temperature. So maybe I can just

8:46:24give a name. I'll give let's say convert

8:46:28okay convert

8:46:31temp. You can give any name it's up to

8:46:33you. But make sure uh the name you are

8:46:35giving here the same name you use for

8:46:38creating that particular function. Okay.

8:46:40Now this will take that uh convert

8:46:43temperature function object. Okay. This

8:46:45will take this convert temperature

8:46:47function object and I told you every

8:46:48node takes a function and this function

8:46:50is nothing but it's a Python simple

8:46:52function. Okay. Now let's try to create

8:46:53this convert temperature function

8:46:55individually here. So what I'm going to

8:46:57do, I'm going to uh simply

8:47:01um come here. So basically this is our

8:47:03first node.

8:47:12So now let's write the function. So def

8:47:15convert temperature. So this will take a

8:47:18state.

8:47:19Okay, this will take a state. What is

8:47:22this state? This temperature state.

8:47:25And this will return uh also the state I

8:47:29told you every time this state would be

8:47:32the input and each and every nodes will

8:47:36return some kinds of output. This output

8:47:38should be also state okay the updated

8:47:40state. So that's why I have to uh I have

8:47:43to give this um blueprint that uh this

8:47:47function takes uh state uh state as an

8:47:50input and it also returns the state.

8:47:52Okay, this temperature state only. So

8:47:54that's how you can give the blueprint of

8:47:56a function. Okay. Now inside that first

8:47:59of all I'll take the Celsius data

8:48:01whatever data user will provide. So here

8:48:04I'll just write Celsius.

8:48:07Celsius okay is equal to this Celsius

8:48:10should be available inside state. Okay.

8:48:12So we are calling state and we are

8:48:14extracting the Celsius only because this

8:48:17is a dictionary right now and you know

8:48:19how to work with the dictionary right?

8:48:21uh so we are working in a same then

8:48:23after that we'll try to convert uh we'll

8:48:26try to convert this to the Fahrenheit so

8:48:28I've already written the code let me

8:48:29show you

8:48:31so here we are converting to the

8:48:34Fahrenheit okay you can see Celsius to

8:48:37Fahrenheit and if you want to see how to

8:48:39convert Celsius to Fahrenheit you can go

8:48:42to Google

8:48:44you can search here so you will see the

8:48:47formula okay so this is the formula so

8:48:49we are replicating the same formula here

8:48:52you can see we are replicating the self

8:48:53same formula we are first of all

8:48:55multiplying this Celsius uh with uh 9

8:48:58out of five then we are adding 32 with

8:49:01that so once we get this Fahrenheit we

8:49:03have to also we have to also update the

8:49:06state memory right we have to also

8:49:08update the state memory because we have

8:49:09taken a variable called temperature

8:49:11Fahrenheit now whatever Fahrenheit we

8:49:13got we have to update inside this

8:49:15particular state right so for this

8:49:18uh that's how we can update because this

8:49:19is a dictionary right this dictionary.

8:49:21So I'm uh just adding this particular

8:49:23new value to this variable to this key.

8:49:26Right? So here we're using round

8:49:27function because if it is a float type

8:49:30uh data so after point there would be

8:49:33too many number but I'm not taking too

8:49:35too many number. I'm only taking last

8:49:37two uh digit okay after after the point.

8:49:40Now once it is done I'm going to simply

8:49:42return this state. So return this state.

8:49:46Okay that's it. So this is our simple

8:49:48python function we have created. Okay.

8:49:50Now this function can convert any kinds

8:49:53of Celsius data to Fahrenheit and we are

8:49:55updating the state here. Okay, that's

8:49:57it. Now this particular function will

8:50:00object will come here. So that's how

8:50:02guys we have created our first node. We

8:50:04have added our first node. Now see this

8:50:06node has added. Okay. Now you have to

8:50:10create this edges. Okay. You have to

8:50:11create it create this edges that that

8:50:13means the connection the flow of

8:50:14execution. So for this let's do that. So

8:50:18here I'm going to comment add edges

8:50:23to the graph. So first of all you have

8:50:25to

8:50:28add the first edges. Now see this start

8:50:30node will come here. Okay. Now see so

8:50:33here I'll just write start and convert

8:50:36them. Just try to see this uh graph. See

8:50:39now I'm telling this start node would be

8:50:41connected to the convert them. Okay,

8:50:43that means this is the connection we are

8:50:44making right now because from here it

8:50:46will start and it will go go to the

8:50:48convert temperature. See here we're

8:50:50doing start to convert temperature.

8:50:52Okay, now I will add the second graph

8:51:00sorry second edge add is now convert

8:51:03them to end. Now you can see uh so

8:51:05basically let me just show you. See

8:51:08first of all we connect it here right

8:51:11that means this connection this

8:51:13connection we have built start to

8:51:15convert temperature now convert

8:51:17temperature to end okay that means this

8:51:19particular edge we are getting right now

8:51:21this edge is already created start to

8:51:23convert them now convert them to end

8:51:25okay particular uh this this edge we are

8:51:27getting uh this edge is already created

8:51:30now we are doing it here so you can see

8:51:32convert them to end okay I hope you

8:51:34clear guys now once this is done then

8:51:37you will compiling the graph. So compile

8:51:41the graph. So you just need to write

8:51:44uh graph

8:51:47dot compile.

8:51:49Okay. And this returns you the workflow.

8:51:52So maybe I can store inside a variable

8:51:59workflow. Okay. Now let's compile.

8:52:05So compilation is also done. Now we'll

8:52:08simply execute the graph.

8:52:17Execute the graph.

8:52:24Now guys, we'll try to execute the

8:52:26graph. So to execute the graph uh first

8:52:28of all you have to take the initial

8:52:31state that means the input uh which is

8:52:34the uh Celsius okay Celsius uh um

8:52:38temperature. So here what I can do I can

8:52:42create a variable. I'm going to name it

8:52:44as you can also call it as input state

8:52:47or initial state. Okay, it's up to you.

8:52:50But I have named it as initial state

8:52:52because this this will become my initial

8:52:53state. Okay, the first state which is

8:52:55nothing but the uh temperature Celsius,

8:52:58right? So initial state. So temperature

8:53:00Celsius I'm giving let's say 28.5.

8:53:03Now this thing we'll try to provide to

8:53:05the workflow. So I have created my

8:53:08workflow

8:53:10workflow dot invoke. Now you can perform

8:53:13the invoke operation because this is a

8:53:15lang graph object. Inside that I'm going

8:53:17to pass my initial state and this will

8:53:19uh return you the final state. Okay,

8:53:22final state that means the output.

8:53:25Final state and this final state I'm

8:53:27going to simply print it here. Okay,

8:53:30done. Now let's uh see whether it is

8:53:33working or not. Now see if I execute.

8:53:34Now see initially we have given 28.5

8:53:38this is the Celsius temperature. Now the

8:53:41final state is uh temp temperature

8:53:43Fahrenheit 83

8:53:46uh 3. Okay you can also try with Google

8:53:50let's say if I'm giving Celsius now see

8:53:54Celsius is uh 28.5

8:53:56and you are getting 83.3

8:54:00you can see 83.3 that means it's working

8:54:02fine right? So we are able to execute

8:54:04our first graph guys. Okay, we are able

8:54:07to create our first graph and this is

8:54:09completely working fine. See there is no

8:54:12problem. Now if you want to see this

8:54:14graph as a uh image you can also do

8:54:17that. That that means you can visualize

8:54:18this particular graph. This is very

8:54:20interesting things I found in langraph.

8:54:22So let me just comment here. Okay

8:54:24visualize

8:54:27graph.

8:54:28So I found this code inside this

8:54:30langraph documentation.

8:54:33Yeah. So here we are using this ipython

8:54:36display um and we are importing this

8:54:38image function. Inside that we are just

8:54:41giving workflow.get graph. Okay.

8:54:43Basically this will get the graph and we

8:54:45are drawing this particular graph as a

8:54:46mar mermaid png. Okay. So mermaid is a

8:54:50kinds of uh you can talk about it's a

8:54:53flowchart. Okay flowchart style. You can

8:54:55search on Google mermaid flowchart or

8:54:58simply search for mermaid. You will see

8:55:00that. Uh okay. Mermaid flowchart.

8:55:06Yeah. See, so this will give you this

8:55:07kinds of flowchart. Okay. Now let me

8:55:09show you.

8:55:11If I execute,

8:55:14see guys, you are getting the flowchart.

8:55:16Now see this flowchart and this

8:55:18flowchart. Just try to tell me whether

8:55:21you are able to see this is same or not.

8:55:23Okay, this is same right. So you can see

8:55:27start then it is going to the convert

8:55:29temperature.

8:55:31then it is uh giving you the final

8:55:34output that means the end nodes. Okay,

8:55:36amazing. So guys, congratulation. We

8:55:39have created our first workflow, first

8:55:41uh line graph graph and this is

8:55:43completely working fine. So guys, now

8:55:45what we'll do, we'll just try to uh

8:55:48update uh the workflow we have created.

8:55:50Let's say this is our workflow. Uh so

8:55:53here we are only converting the

8:55:55temperature to the Fahrenheit. Now what

8:55:57I have done, I created another workflow.

8:55:59So this is the sim similar workflow only

8:56:01I have added a new node here you can

8:56:04see. So the node name is label weather.

8:56:07So what this label weather will do let's

8:56:09say the fahrenheit temperature we are

8:56:12getting uh we'll just try to label that

8:56:15label means let's say if this fahrenheit

8:56:18temperature is less than 50 that time

8:56:21weather status is cold. Okay. If let's

8:56:23say Fahrenheit temperature is it is uh

8:56:26less than equal 50 and less than equal

8:56:29uh 77 that time it is mild. Okay. If it

8:56:32is less than 95 uh then that time it is

8:56:36hot. And if it is not all of them that

8:56:39means it is extreme heat. Okay. So this

8:56:41kinds of labeling I want to do. So for

8:56:44this I have created another node here.

8:56:47I'll I'll be writing another node here.

8:56:48this particular node will try to um try

8:56:52to uh figure out the weather status.

8:56:55Okay, it will try to figure out the

8:56:56weather status whether the weather is

8:56:58hot, cold, mild. Okay, or extreme hot

8:57:01etc. Right? And uh to create this

8:57:04particular uh graph guys, I need another

8:57:07state called weather status because uh

8:57:10these nodes will return the label right

8:57:13whether it is hot, cold, mild or

8:57:15anything. So this particular data I have

8:57:18to also save in the state that's why I

8:57:19have taken another variable called

8:57:21weather status here. But previously this

8:57:23was missing here. Okay. Now let's try to

8:57:25update this. So what I'm going to do I'm

8:57:27going to open up my code again. So see

8:57:29here I'll add another nodes. Okay. I'll

8:57:31add another nodes here.

8:57:34Yeah.

8:57:36Let's say the node name is

8:57:40uh label weather. Okay. And it will take

8:57:42a function Python function called level

8:57:44weather. So now let's write this

8:57:46function. So after this function maybe I

8:57:48can write it here.

8:57:51So def label weather. So this will take

8:57:54this state as an input.

8:57:59Okay. And it will also return this state

8:58:01as an output.

8:58:04State as an output. Okay. So already I

8:58:07got the suggestion code from my uh from

8:58:11my co-pilot. Let me show you the code I

8:58:14have written.

8:58:16So this is the code. Okay. Now let me

8:58:20also

8:58:23comment here.

8:58:26Let's say this is for

8:58:29label

8:58:34weather

8:58:37condition. This is our second note.

8:58:39Okay. So now what what we are doing the

8:58:42Fahrenheit temperature we are getting

8:58:44we're taking it from the state okay we

8:58:46are pulling the Fahrenheit from the

8:58:47state instead of Celsius

8:58:50uh because I want to check with respect

8:58:53to the Fahrenheit okay I want to check

8:58:55with respect to Fahrenheit you can also

8:58:56do it with the help of Celsius as well

8:58:59Celsius temperature as well you can also

8:59:00label that but I want to do it with the

8:59:02help of Fahrenheit I want to I want to

8:59:03only show you the output we are getting

8:59:06whether we can use it inside this

8:59:08particular node or not okay that's why

8:59:09I'm using is uh temperature um finite

8:59:14then after that I'm checking if finite

8:59:15is less than 50 that time uh weather

8:59:18status should be cold we are updating

8:59:21this

8:59:23state okay there should be another

8:59:24variable called weather status and right

8:59:28now this status should be hot cold mild

8:59:30so I can consider this should be a

8:59:31string type data okay now let me execute

8:59:34this node yeah now you can see this

8:59:36weather starter should be cold if it is

8:59:40less than and equal 50 or less than 73

8:59:4377 that time the weather status should

8:59:45be mild. If it is uh less than 77 and

8:59:49less than 95 this should be hot

8:59:51otherwise it should be extreme heat.

8:59:53Okay. So this is our uh uh this is our

8:59:56logic we have written inside this label

8:59:58weather function and we are returning

8:59:59the state. Okay. Now let me execute. Now

9:00:02what I'm going to do just execute from

9:00:05the beginning one one more time just to

9:00:07show you the output.

9:00:10H. So the node add is done. Now we'll

9:00:12try to add the edges. Okay. Now we'll

9:00:15add the edges. That means after convert

9:00:18temperature, this will go to the label

9:00:19weather. Okay. So here I'm going to

9:00:21write

9:00:22um

9:00:24see uh start start uh convert

9:00:28temperature. Okay, that means this part

9:00:29is done. Now I have to work on this

9:00:32part. Convert temperature to level

9:00:34weather. So here I have to write

9:00:37convert temperature to level weather.

9:00:39Okay. Now label weather to end. Now here

9:00:43I just need to light right level weather

9:00:47to end. Okay. Now I think you have

9:00:49understood this particular edge

9:00:50connection. Okay this like very amazing

9:00:53right and if you understand this edge

9:00:55connection just trust me you can create

9:00:56any kinds of workflow inside langraph.

9:00:58Okay that's why I'm showing you this

9:01:00easy workflow at the very beginning. Now

9:01:02once it is done, now let's try to

9:01:04compile the graph again. Then I will

9:01:08execute

9:01:10the graph. This only takes the uh

9:01:12temperature Celsius input.

9:01:15H uh so you can see temperature Celsius

9:01:18this 28.5 we are getting the Fahrenheit

9:01:21and based on the Fahrenheit result we

9:01:24are seeing that weather status is hot

9:01:26right now. We can check if it is 83

9:01:28right

9:01:3083 that means here this condition is

9:01:32matching here okay that means this

9:01:34particular condition is hot right now

9:01:37okay now if I visualize this graph now

9:01:39see another node is added which is level

9:01:41weather now this uh this graph and this

9:01:45graph I think you can match okay great

9:01:49guys so yes this was the first uh

9:01:53sequential uh sequential actually

9:01:56workflow we have created without using

9:01:58any kinds of large language model. So

9:02:01now I'm going to show you how we can

9:02:03create sequential workflow uh with the

9:02:05help of large language model as well. So

9:02:08guys uh now we'll be creating a LLM

9:02:11workflow. Uh previously the workflow I

9:02:13showed you uh this workflow I have

9:02:15created this is a non-LM based workflow.

9:02:17Uh here I'm not using any kinds of LLM.

9:02:19Okay. uh with the help of simple python

9:02:21function simple python logic I was

9:02:24handling everything now let's say you

9:02:25want to use llm okay llm inside the

9:02:28workflow so how to create the workflow

9:02:31for that let's try to understand and see

9:02:33here our main goal is to learn the lang

9:02:36graph uh like workflow creation the

9:02:39problem statement I'm taking uh it might

9:02:41be very simple uh you can think about

9:02:43okay this this thing I can create with

9:02:45the help of simple python function only

9:02:47but why we are writing that much line of

9:02:49code. Okay. So our intention is to learn

9:02:52the um lang graph workflow. Okay. How we

9:02:55can use the lang graph? How we can

9:02:56create the workflow? How we can create

9:02:58the node edges. Okay. Each and

9:03:00everything this idea I'm giving you.

9:03:01Okay. So problem statement doesn't

9:03:03matter. You can use any kinds of problem

9:03:04statement. So after learning this simple

9:03:07concept so later on whenever we'll be

9:03:09creating the actual agents or big

9:03:12project. So this concept will help us a

9:03:14lot. Right? So that's why we are um uh

9:03:17explaining this concept with the help of

9:03:18simple workflow. Now here I'm going to

9:03:21take another uh very simple workflow

9:03:23guys for the LM workflow. So here what

9:03:26I'm going to do uh here this is the uh

9:03:29workflow. This is the graph you can see.

9:03:31So basically this will have the start

9:03:33and end nodes definitely because this is

9:03:35common. So the only one nodes I'll be

9:03:37creating here the LMQA nodes. Okay. So

9:03:39LMQA means what it will perform. So

9:03:41basically user will give some of the

9:03:43question and this lm will uh answer that

9:03:46particular question and this will return

9:03:48you the answer only this simple

9:03:50operation will be doing okay in this

9:03:52particular workflow. So for this what

9:03:55should be the state? The state should be

9:03:56definitely the question whatever

9:03:58question user is giving and whatever

9:04:00answer we are getting from the LLM this

9:04:02should be another state. Okay. So this

9:04:05state should be passed to all of the

9:04:06nodes and it will real time update that

9:04:09and our uh uh workflow would be ended.

9:04:12So this is the simple uh graph guys. Now

9:04:15let's try to implement this graph with

9:04:17the help of lang graph. So for this I

9:04:19have already prepared a notebook as you

9:04:21can see simple keyway LA workflow. So

9:04:23let me open it up and uh to run this uh

9:04:26um um code guys you need this file

9:04:30because in the env I have mentioned my

9:04:32openi API key because here we are using

9:04:34large language model and I'm using openi

9:04:37large language model but if you want to

9:04:38use any other large language model you

9:04:40can use it completely fine for this you

9:04:42can change the API key here. So this is

9:04:44the uh code guys. This is the notebook I

9:04:46have prepared. Now this is this looks

9:04:49same as per your previous uh notebook.

9:04:51Only the things I have added the llm

9:04:53functionality here. Now first of all you

9:04:55have to import some necessary library.

9:04:57So see you can see we are importing the

9:04:59same uh state graph start ends from the

9:05:02langraph graph. Then one additional

9:05:04package we're importing langchen peni

9:05:07chat opi. I told you if I want to use

9:05:09any kinds of uh let's say large language

9:05:12model or whatever I have to still use

9:05:15langen because langraph doesn't have

9:05:17direct functionality so that

9:05:19functionality can load any kinds of llm

9:05:21okay so it has to use this langen to

9:05:23load the large language model so here

9:05:25one more thing you are also learning how

9:05:27we can use langen along with the lang

9:05:28graph okay so this is the concept so we

9:05:31are importing chat open a let's say if

9:05:32you're using any other other provider if

9:05:34you're using grock or open router inside

9:05:36langen it is available you simply you

9:05:38can open it up. Then we are also

9:05:40importing type dict just to create the

9:05:42state and the load envadment

9:05:45variable.

9:05:48Now the first step we are loading the

9:05:49environment variable this env. For this

9:05:52we are calling this load env. So if it

9:05:54is returns two. Okay first of all I have

9:05:57to import this. Now I'll execute. Now if

9:06:00it if it returns to that means this env

9:06:03file is present and inside that we have

9:06:04the uh key right. It has loaded

9:06:07successfully. Now we'll try to define

9:06:09the large language model. Okay. So here

9:06:10we are creating a model object and we

9:06:12are calling the chat openi. So by

9:06:14default I think it loads a model. Okay.

9:06:16Uh I think GPT 3.5 turbo model it will

9:06:19load. You can also change the model

9:06:21parameter. If you want to use any other

9:06:22model like GPT 5 or 4 you can easily do

9:06:25that. But I will take the default model.

9:06:27It's completely fine for me. Okay. So I

9:06:28got my model object. Now here you can

9:06:30change with any model object. Either you

9:06:32are using grock uh either you can using

9:06:34open router Gemini anything you can use.

9:06:37Now we have to create this state. Okay,

9:06:40this state we have to create and I told

9:06:41you to create this workflow I need u

9:06:45this these two state question and

9:06:46answer. So this thing I'll be creating

9:06:48right now. You can see I have written a

9:06:50class I named it as LLM state and again

9:06:53I'm inheriting with the help of type

9:06:54dict. Now we can store the data as a

9:06:57question uh key value pair. Now the

9:06:59first state you can see this is the

9:07:00question and the data type should be

9:07:02string because usually uh whatever

9:07:05question we are writing this is kinds of

9:07:06string type data and answer also this is

9:07:09a string type data okay we are

9:07:10preferring the state now once uh state

9:07:12preparation is done now we'll be

9:07:15creating the nodes but before uh showing

9:07:17you the nodes u logic I will show you

9:07:20the graph definition so you can see guys

9:07:22uh we are creating the state graph and

9:07:24we are passing the state the state we

9:07:26have created this state then After that

9:07:29we are adding the nodes. Okay. The first

9:07:31node we have added the LM QA. Okay. Now

9:07:33this LLM QA we have to write. Okay. This

9:07:35LLM QA we have to write. So this this is

9:07:37this should be a simple Python function.

9:07:39Inside that we'll perform the LLM call.

9:07:41So see LM QA this is the function we are

9:07:44writing. This will take this state as an

9:07:45input and return the state as an output.

9:07:48Now whatever question user is giving I

9:07:52am taking it from the state. Then I'm

9:07:54preparing a prompt. Answer the following

9:07:56questions. We are giving the questions.

9:07:57Then this particular prompt I'm just

9:07:59giving to the model. We're just doing

9:08:01model.info giving the prompt and

9:08:03whatever content it is giving me. I'm

9:08:05just extracting in the answer and this

9:08:07answer I'm updating in the state memory

9:08:09again. Okay. So you can see it is having

9:08:11the answer key. I'm updating the value

9:08:13there and we're returning the state.

9:08:15Okay. Now let's execute.

9:08:21Now once our node is added now we'll be

9:08:24working on the edges. We'll try to

9:08:25connect the edges. Now if you see the

9:08:27graph so see first of all start node

9:08:29will connect to the lm QA. So we are

9:08:32connecting that start to lm QA. Then LLM

9:08:35QA will be connected to the end. You can

9:08:37see then add LLM QA to end. Okay. And I

9:08:42told you start and end is a default node

9:08:44inside Langraph. You don't need to

9:08:46manually add that. This is a dummy node.

9:08:48Okay. So only we'll be calling whenever

9:08:50we'll be adding the edges. So once it is

9:08:52done we'll try to compile the graph.

9:08:54Let's compile. Okay, now everything is

9:08:57ready. Now we can execute the graph. So

9:08:59we are preparing the initial state which

9:09:00is nothing but the question. Let's say

9:09:02here I'm giving a question who is the

9:09:04creator of Python and uh the workflow we

9:09:07have created. We are just doing the

9:09:08inbing operation. We are giving the

9:09:09initial state and we are getting the

9:09:11final state output. Then we are just

9:09:13returning the answer. So I'm asking a

9:09:16question which is the creator of Python.

9:09:18Now let's see.

9:09:20So see the Python was created by Guido

9:09:23Van Rosrom in the late '9s80s. Okay,

9:09:261980s. So it's working fine. Okay, you

9:09:28can give any other question as well. It

9:09:30will work. Now let's try to visualize

9:09:32the graph. So here I will execute this

9:09:34code. This code is common. Now see this

9:09:36is uh the graph. You can see start LMQA

9:09:39and ends. Okay, amazing. So this is the

9:09:42actually LM workflow we have created. So

9:09:44previously we created without uh nonLM

9:09:47workflow. Now we have created LM based

9:09:49workflow. Okay, I hope you get it. So

9:09:51that's how guys, if you want to use any

9:09:53kinds of large language model inside the

9:09:55workflow, you can uh define it like

9:09:57that. Okay, now we'll be learning

9:09:59another uh amazing concept. I I think I

9:10:02told you in my previous video as well

9:10:04called prom chaining. Promching means

9:10:06you can use multiple LM calls. See here

9:10:09I'm using only one LM call, right? One

9:10:11LM call. But if you want to use multiple

9:10:13LM call, that is also possible. So we'll

9:10:16be learning in the pom uh we'll be

9:10:18learning this concept in the prom

9:10:19chaining. Okay. So I'm going to create

9:10:20another notebook. There I'm going to

9:10:22show you how we can perform the prom

9:10:24chaining operation. That means one uh

9:10:26LLM answer you are getting. You can pass

9:10:28this answer to another LM to get another

9:10:30response. Okay, this is also possible

9:10:31here. Let me show you that part as well.

9:10:33So guys, now I'll explain about this

9:10:36prom training. Uh this is another

9:10:38sequential workflow. So in our previous

9:10:41uh workflow, we did the single LLM call.

9:10:44That means uh user was giving any kinds

9:10:46of question and it was generating the

9:10:48answer. But let's say you want to do

9:10:50multiple LM call that means uh after one

9:10:52LM call that output you want to use for

9:10:55another LM okay as an input. This is

9:10:57called prompt chaining. So for an

9:11:00example let me just uh tell you see here

9:11:03what I'm going to do. I'm going to let's

9:11:05say uh create a blog generator. Okay

9:11:08blog generator from a topic. So here

9:11:11let's say user will give a topic name.

9:11:13Okay. So this will generate a blog.

9:11:16Okay, block blog for that. But this

9:11:18block I'm not going to generate

9:11:19directly. Instead of that what I'm going

9:11:21to do first of all I'm going to take

9:11:22this topic name. Then I'm going to pass

9:11:25to LLM. Okay, I'm going to pass to LLM.

9:11:29And this LLM will try to generate the

9:11:31outline. Okay, outline for the block. So

9:11:34let's say this will generate the

9:11:36outline. Okay, outline of the block from

9:11:39this LLM. And whatever outline I will

9:11:41give uh get from this LLM, I'll pass to

9:11:43another LLM. Okay. And this LLM will try

9:11:46to

9:11:48take this topic as well as this outline

9:11:50and it will generate the block.

9:11:54Okay. And we'll be getting the final

9:11:56block as an output. Okay. At the last.

9:11:58So this is the workflow and this is

9:12:00called actually prompt chaining concept.

9:12:03Okay. Prompt chaining concept. Basically

9:12:05whatever output we are getting from a

9:12:07first large bank model we are passing it

9:12:09to the second LLM as an input and we are

9:12:11getting a final output. That means we

9:12:13are calling multiple LM call here. This

9:12:14is called prompt shading concept. Okay.

9:12:16So this workflow we'll try to create

9:12:18right now. Now see guys I have already

9:12:20created this uh graph. Okay. Uh I've

9:12:23already created this workflow as you can

9:12:24see. So start and end would be common.

9:12:26So here I have to create two nodes. One

9:12:28is the create outline. That means

9:12:30whatever input I'll be getting. That

9:12:32means uh the topic. So first of all I'll

9:12:35generate outline and this outline as

9:12:37well as the topic I'll send to another

9:12:39nodes which is create block. This will

9:12:41generate the blog and I'll be getting

9:12:43the final block as an output. Okay. And

9:12:45what should be the state for this

9:12:46particular uh workflow? First of all the

9:12:49title that means the blog title. Okay.

9:12:51Then whatever outline it will generate

9:12:53this outline as well. And whatever

9:12:55content that means the blog will be

9:12:57getting this should be another state.

9:12:59Okay. So that means three state will be

9:13:00available for this particular uh

9:13:02workflow for this particular graph.

9:13:04Okay. Now let's try to represent in the

9:13:06lang graph code. So for this I have

9:13:08created another notebook as you can see

9:13:10prompt chaining workflow. So let's open

9:13:12it up. So this is the notebook. So again

9:13:14this is the same uh as per your previous

9:13:16notebook I created. First of all we have

9:13:18to import all the necessary libraries.

9:13:21You can see we are importing state graph

9:13:22start ends chat open. Okay. Then type d

9:13:26load env. Then we'll be loading the env

9:13:28uh env file to load the opinion API key.

9:13:32Then we'll be defining the large

9:13:33language model. Then we'll be creating

9:13:36the state and uh this state name I have

9:13:39uh named it as blog state. And again I'm

9:13:41doing the inheritant inheritance

9:13:43operation with the help of this type

9:13:45dict. Now we are preparing the state.

9:13:47State means the title, outline and the

9:13:49content. Okay. Three state we are

9:13:50taking. H now before creating the nodes

9:13:54first of all let me show you the graph

9:13:57okay see here we are creating the graph

9:14:00state graph and we are passing the state

9:14:02and first of all we are adding the nodes

9:14:04okay so the first nodes we are adding

9:14:06for the create outline now let me show

9:14:08you this create outline function so this

9:14:10is the create outline function so this

9:14:11will take this state as an uh input and

9:14:14uh return you the state as an output

9:14:17okay so whatever title user is giving

9:14:19first of all I'm taking the title And

9:14:21here I'm preparing a prompt generate a

9:14:23detail outline for the blog uh for a

9:14:26blog on the topic. So then we are

9:14:28passing it to the LLM. LM is giving the

9:14:30outline. This outline we are saving

9:14:31inside the state. Okay, inside outline

9:14:33variable then we are returning the

9:14:35state. Then after that if you show if

9:14:37you see I'm adding another nodes okay

9:14:40called generate blog. Now whatever

9:14:43outline I got and title I got I will

9:14:45pass to this particular function. You

9:14:47can see uh it will take from this state

9:14:50the title as well as the outline. Then

9:14:51I'm preparing another prompt. This

9:14:53prompt is telling write a detailed blog

9:14:55on the title. Okay, using the following

9:14:57outline. The outline we are getting as

9:14:58well as the title we are using here.

9:15:00Then we are passing it to the LLM. Okay,

9:15:02again we're doing the LM call. Whatever

9:15:04LM is generating, I'm just storing in

9:15:06the content. That means this is the

9:15:08final block. Okay, I'm storing inside

9:15:09this content uh content state. Okay, so

9:15:13it is done. Now you can see we are

9:15:15adding both of the nodes one by one. So

9:15:18this uh nodes is added create outline

9:15:20and uh create blocks. Now I have to

9:15:22create the edges. Now to create the

9:15:24edges guys here you can see I'm creating

9:15:26the edges. First of all age would be

9:15:28created. Start to create outline. You

9:15:31can see start to create outline. Then

9:15:34create outline to create block.

9:15:38Create outline to create block. Okay.

9:15:40Then create block to end. create block

9:15:44to end. Okay, then we are doing the

9:15:45compile operation.

9:15:48Then now we'll execute the graph. So

9:15:50here as initial state we are giving the

9:15:52title. Okay, we are giving a title let's

9:15:54say raise of AI in India. Let's say this

9:15:56is our uh title and I want to generate

9:15:59outline and then block. Now we are

9:16:01giving into the workflow. We are doing

9:16:03the blocking operation and we are

9:16:04getting the final state as an output.

9:16:09See

9:16:15it is doing multiple LM call that's why

9:16:17it's taking some time. First of all it

9:16:19will invoke first LLM then the second

9:16:22LM. Right now see here we are getting

9:16:24the output. So this is the title based

9:16:26on the title we are getting the outline

9:16:28and also we have a content final content

9:16:31I think somewhere content is also there.

9:16:33Uh we can see uh here. So final state uh

9:16:37first of all I want to see the outline.

9:16:39So this is the outline. Okay, it has

9:16:40prepared. Now if I want to show you the

9:16:44content that means the blog. So this is

9:16:46the blog guys. Okay, I'm getting. So

9:16:48this is called prompt shading concept.

9:16:50Now if I want to show you the

9:16:53graph. So this is the graph. You start

9:16:55create outline then it will go to the

9:16:57generate block create block then hands.

9:17:00Okay, I hope you got it guys. Okay, so

9:17:02that's how guys we can create any kinds

9:17:04of sequential workflow. Either you can

9:17:06create a nonLM based, either you can

9:17:08create LLM based, either you can create

9:17:10prompt chaining based, anything you can

9:17:12create only you just need to know how to

9:17:14uh how to define these uh nodes and this

9:17:18particular connection. Okay, age

9:17:19connection if you can understand this

9:17:21concept you can just trust me you can

9:17:24create any kinds of workflow okay inside

9:17:26lang graph. Now I think by end of this

9:17:29video it is uh very much clear how we

9:17:31can create any kinds of sequential

9:17:32workflow inside lang graph. Okay don't

9:17:34worry I'm also going to show you uh like

9:17:37complex workflow as well like parallel

9:17:38workflow. Okay there are lots of

9:17:39workflow we saw right we'll be learning

9:17:42each of them don't need to worry but

9:17:44before starting that complex workflow

9:17:46first of all I've given you the

9:17:47sequential workflow. uh I think uh now

9:17:50you have enough understanding how to

9:17:52code inside langraph at least right now

9:17:54I think these are the syntax won't be

9:17:55confusion to you right like what is a

9:17:58node what is ajs okay so so far we have

9:18:00learned so many theoretical concept now

9:18:02we have seen the practical

9:18:04implementation

9:18:05and all of this code and everything

9:18:07would be available in the description

9:18:09from there you can uh download and you

9:18:11can uh try in your system and one more

9:18:14exercise you can perform let's say this

9:18:16prom training u we have

9:18:19Maybe you can add another node for the

9:18:21evalu evaluation for this block. Let's

9:18:23say the blog you are generating whether

9:18:25this is good or bad. You can uh take

9:18:28another LLM. You can take another nodes

9:18:30and you can evaluate that and you can

9:18:31also uh print the evaluation result.

9:18:34Let's say it needs the feedback or not

9:18:37or it is completely fine. This kinds of

9:18:39result you can also uh print. Okay, that

9:18:42means you you have to take another state

9:18:43here and whatever result you are getting

9:18:45you can also show the result here. Okay,

9:18:47after you can see uh content maybe you

9:18:51can uh print another result which is

9:18:53evaluator result. Okay. Now the best

9:18:56part is of this state is you you can

9:18:58access all of the output. Okay. All of

9:19:00the output input any time. Let's say we

9:19:02have generated uh these three uh three

Implement Parallel Workflows in LangGraph

9:19:05things right? Uh title, outline and

9:19:07content and it is accessible anytime.

9:19:09Okay. This is the final state. From the

9:19:11fin from the final state you can access

9:19:15um any kinds of state. Let's you can

9:19:17access title, outline, content or if

9:19:19you're adding the evaluator you can

9:19:21access it anytime. Okay. So yes that's

9:19:23it guys. So yes uh this is all about

9:19:26from this video. I hope you got it. Now

9:19:28in the next video guys we'll be uh we'll

9:19:30be learning uh some other workflow as

9:19:33well. Okay like uh parallel workflow

9:19:35we'll be also learning conditional

9:19:37workflow, iterative workflow. Okay, all

9:19:38the workflow we'll try to cover one by

9:19:40one. So guys uh we are continuing with

9:19:42our uh complete agenti course and as you

9:19:46know we started uh learning our first

9:19:49orchestration framework which is

9:19:51langraph and in our previous video I

9:19:54have already showed you how we can build

9:19:56sequential workflow inside langraph. So

9:20:00if I open up my um previous uh like uh

9:20:04materials. So there I already showed you

9:20:07about the sequential workflow and I

9:20:08think you know how sequential workflow

9:20:10works. Basically it will work as a

9:20:12step-by-step manner. Okay. First of all

9:20:14let's say this node then this node then

9:20:16this node okay that's how it will

9:20:17execute okay as a sequence. So if I uh

9:20:20show you see I created a nonlm based

9:20:23workflow and lm workflow uh then prompt

9:20:26chaining workflow. So as you can see u

9:20:29after executing this node this node

9:20:31would be executed. Okay then you will be

9:20:32getting the output. So this is a

9:20:34sequential order. Now we'll try to

9:20:36understand this uh parallel workflow

9:20:39like how parallel workflow works and

9:20:42we'll also try to uh write the code

9:20:45inside langraph. And uh here is the

9:20:47example guys. The first example I'm

9:20:48going to show you the employee analytics

9:20:51workflow. Okay. So this is the example I

9:20:52have taken. uh I already told you just

9:20:55don't um I mean don't focus on the

9:20:57problem statement I I have taken some of

9:21:00the problem statement uh easy problem

9:21:01statement so that I can make you

9:21:03understand these are the workflow so

9:21:04later on we'll be building some amazing

9:21:06ANTI application completely end to end

9:21:09so you can see guys uh here uh this is

9:21:12the parallel workflow uh graph as you

9:21:15can see uh so you you can see the

9:21:17difference between the sequential and

9:21:20the parallel sequential means uh After

9:21:23executing this node, this node will be

9:21:25executing. That means the output you are

9:21:28getting from this particular node, you

9:21:30are passing this particular output to

9:21:32the next node and this node is taking

9:21:34that um output as an input. Then it is

9:21:36executing. Okay, that means um you have

9:21:40to wait okay um you have to wait till

9:21:42this node just complete the execution

9:21:45then this node will start. But in

9:21:47parallel workflow um it's not like that.

9:21:51Each of the nodes are independent that

9:21:53means you can execute them

9:21:55independently. Okay, simultaneously you

9:21:57can execute all of the node and you can

9:22:00get the output. So for this I have taken

9:22:02one amazing example called employee

9:22:04analytics workflow. So basically what

9:22:06we'll do here we'll just try to take

9:22:08some employee data. So here I already

9:22:10created the state as you can see I have

9:22:12already defined the state for this

9:22:14particular demo. So as you can see let's

9:22:16say this is our employee state and you

9:22:17know what is a state right? state is a

9:22:20uh a shared memory uh inside our graph,

9:22:22right? And it will pass to all of the

9:22:25nodes. So you can see these are the data

9:22:28we'll be taking from the user. Okay,

9:22:30let's see employee name, monthly salary,

9:22:33working days and completed projects.

9:22:35Okay, based on that what we'll do, we'll

9:22:37just try to calculate the bonus of the

9:22:40employee, uh yearly salary of the

9:22:42employee and the project evaluation. Ev

9:22:44evaluation means the project is

9:22:46excellent. uh let's say project work is

9:22:48excellent or average okay we'll try to

9:22:50mark that now you can see u to do that I

9:22:54don't need to wait for any of the node

9:22:57here let's say I don't need to wait for

9:22:59this bonus to calculate the yearly

9:23:01salary then I don't need to wait for

9:23:04project evaluation for this calculate

9:23:07yearly salary okay I don't need to wait

9:23:08for each and every nodes here because

9:23:11each and every nodes are independent the

9:23:13task I have taken you can see this is

9:23:15completely independent task So instead

9:23:17of running this in a sequential manner

9:23:20so I can follow this par parallel

9:23:22workflow. Okay. So that I can execute

9:23:25them in parallel and I can quickly

9:23:27complete my task. Okay. Otherwise if you

9:23:30if you are running in sequential order

9:23:32you have to wait for the previous node

9:23:34to be executed. Okay. But here it's not

9:23:36like that. This is completely

9:23:37independent. Then after uh getting all

9:23:40of this uh information what we'll do

9:23:42guys we'll just try to give a summary.

9:23:45uh summary means let's say the employee

9:23:47name their salary yearly salary project

9:23:51evaluation calculated bonus we'll just

9:23:53try to return a string complete uh

9:23:55detail summary string and we'll just try

9:23:57to end the graph okay so this is a

9:23:58simple problem statement I have taken

9:24:00again I told you guys uh don't uh just

9:24:03focus on the problem statement uh just

9:24:05to make you understand I have taken this

9:24:07problem statement the main intention you

9:24:08have to learn this workflow okay how we

9:24:10can build this workflow so first of all

9:24:12we'll try to learn this nonLM based

9:24:14workflow So here I'm not going to use

9:24:15any kinds of LLM. Uh then after learning

9:24:18this nonLM based workflow, the next one

9:24:20I'm going to take the LM workflow. Okay.

9:24:23So both we'll be learning. No need to

9:24:25worry. Now let's start the coding inside

9:24:27Langraph. So what I'm going to do guys,

9:24:29I'm going to simply

9:24:31um create a

9:24:34I'm going to simply create a file here.

9:24:37I'm going to name it as four

9:24:40um employee data analytics. Okay.

9:24:42Employee

9:24:53analytics

9:24:58workflow.

9:25:06I'm going to create a notebook file.

9:25:10Perfect. So here I'll take the code cell

9:25:12and I will select the kernel. Uh so

9:25:14previously I created this environment. I

9:25:16think you remember we'll try to select

9:25:18that as well. H fine. Now guys the first

9:25:22thing what you have to do I think you

9:25:24remember the first thing you have to

9:25:26import all of the necessary library. So

9:25:28maybe what I can do I can refer my

9:25:30previous notebook and I can just import

9:25:34all of the necessary library. I need um

9:25:37I need this one right? this uh line

9:25:41graph state graph and start and end. So

9:25:44I'll try to import the this as well as I

9:25:46need this uh typing

9:25:49to create this uh state. Okay, I need

9:25:52this particular type dict. Now let's

9:25:54import it. H now the second thing guys

9:25:58you have to define the state. Okay, if

9:25:59you uh if you see that let's say the

9:26:02previous example also uh so this is LM

9:26:04workflow. But if I open my previous

9:26:06example, let's say this one I created,

9:26:08right? This is the non LLM based

9:26:10workflow. Uh then second thing you have

9:26:12to define the state and uh for this uh

9:26:15example guys what should be the state.

9:26:17So this is the state I already prepared.

9:26:19First of all uh these are the state

9:26:20we'll be taking from the u user and

9:26:24these are the state we'll be uh we'll be

9:26:26just calculating. Okay we'll be updating

9:26:27basically let's say this calculate uh

9:26:30yearly salary. We'll try to calculate

9:26:32the yearly salary and we'll try to

9:26:33update in the inside this particular

9:26:34state. Then bonus okay we'll update

9:26:37inside this uh state then project

9:26:39evaluation we update inside this project

9:26:41status and summary whatever summary we

9:26:44are getting we'll also update here okay

9:26:46and all of the data type I have also

9:26:47mentioned you can see employee name

9:26:49should be string data type monthly

9:26:51salary should be integer working days uh

9:26:53it should be also integer completed

9:26:55project it should be integer that means

9:26:57the number of project employee has

9:26:59completed yearly salary this is also

9:27:01integer bonus amount also integer

9:27:03project status okay uh this status I

9:27:06will let's say tell excellent average

9:27:08okay so this should be a string and

9:27:09summary also should be a string okay so

9:27:11this is the data type now let's uh try

9:27:13to um just write same uh uh state uh

9:27:17inside our notebook I'm going to just

9:27:19close this other file

9:27:21so

9:27:23this is the state guys okay you can see

9:27:25the same state we have prepared here and

9:27:27I just named it as employee state and I

9:27:29inherited with type tic because I can

9:27:32store my data as a key value pair okay I

9:27:34think I have already disced test

9:27:35previously. Okay, this thing. So, I'm

9:27:37not going to repeat again. Now, uh my

9:27:40state is done. Now, I'll just need to uh

9:27:43create the graph. Now, let's try to

9:27:45create the graph. So, we'll try uh

9:27:48create the graph. You can see we are

9:27:49using a state graph. And inside that we

9:27:51are passing our state. Okay. Employee

9:27:53state. Now, we have to add the nodes.

9:27:55Okay. Now, how many nodes we are having?

9:27:57Uh 1 2 3. Okay. And last, we have

9:28:00another nodes called summary. And start

9:28:02and end. You don't need to take it

9:28:03because this is a default node inside

9:28:05langraph. This is a dummy node. So first

9:28:07of all let's try to create this um uh

9:28:10this one this um calculate bonus or you

9:28:16can create any of them because this is

9:28:18completely independent right uh you are

9:28:19not uh I mean uh you you don't need to

9:28:22worry about the like order because this

9:28:24is not a sequential one you can create

9:28:26any of them any of them. Okay. So first

9:28:28of all let's create uh this calculate

9:28:30yearly salary. So here I'm going to add

9:28:33a node.

9:28:38So this is the node guys. Graph add

9:28:40nodes. I named it as calculate early

9:28:42salary and the same name I used for this

9:28:44particular function. Okay. And this is

9:28:47going to be a python function. We'll

9:28:48just try to write the function. Okay.

9:28:50Just give me some time. So like that

9:28:52I'll also define for all of these nodes

9:28:55one by one. Uh the next one I'm going to

9:28:57create for

9:28:59uh calculate bonus and project

9:29:01evaluation.

9:29:04Yeah. So calculate bonus this one and

9:29:06the project evaluation. Project

9:29:08evaluation. Okay. So all of the nodes I

9:29:10have created only the last node I have

9:29:12to create this summary.

9:29:14Now let's also create the summary.

9:29:18Summary. Okay. My node uh creation is

9:29:22done. Now I'll write these are the

9:29:23function one by one. So I'll come here.

9:29:27So here I will comment

9:29:29uh this is our node one and the function

9:29:31name is calculate yearly salary. Okay.

9:29:33Now let's define a function def uh

9:29:36calculate yearly salary

9:29:40and uh this will uh take this uh

9:29:42employee state uh as an input because

9:29:45every nodes takes this uh state. I think

9:29:47you remember okay every node takes this

9:29:49state. Okay. And also return a state

9:29:52right. So we are we are giving this type

9:29:54hint here. So let's try to write write

9:29:57the logic here. Uh so first of all we'll

9:29:59try to calculate the yearly salary. So

9:30:01how to calculate the yearly salary? I

9:30:03think you know that we have the monthly

9:30:04salary. So what I can do uh I can just

9:30:07multiply by 12. So this will give me the

9:30:09yearly salary and multi salary I have

9:30:12inside the state. You can see the

9:30:13monthly salary I have inside the state.

9:30:15So once it is done I'm going to update

9:30:17the yearly salary where in my state

9:30:19again. You can see we are updating this

9:30:21yearly salary in this state. Then we are

9:30:23returning the state. You know that every

9:30:26nodes return the state. Okay, we are

9:30:28returning the state. It's completely

9:30:29fine, right? We have written the first

9:30:31uh first nodes. Now like that we'll also

9:30:34write the second nodes uh state nodes

9:30:37doine. We have to execute this cell. Now

9:30:40let's execute. Okay, now it's working

9:30:42fine. Now the second node guys, we have

9:30:44to write for the calculate bonus for

9:30:48this one. Uh let's write this function

9:30:56def calculate bonus. This will also take

9:31:00um

9:31:02this will also take uh employee uh state

9:31:06that means the state and also return the

9:31:08state. Okay. And here we'll try to

9:31:10calculate the bonus. So you can see we

9:31:13whatever um

9:31:16so what I can do I can calculate the

9:31:19bonus based on the monthly salary

9:31:23monthly salary so I'll just try to

9:31:25multiply by two okay see here I'm not

9:31:29calculating the exact bonus yet just try

9:31:31to think about just I'm adding some

9:31:33bonus uh based on the monthly slid of

9:31:35that particular employee okay and after

9:31:37that we are adding this bonus amount uh

9:31:39inside the state then we are returning

9:31:41this state. Okay, it's done. Now we'll

9:31:44try to create the next one which is uh

9:31:46project evaluation

9:31:51node three project evaluation def

9:31:54project evaluation this will also take

9:31:56the state as an input and return the

9:31:57state as an output. So here I can just

9:32:00write a logic. So let's say this is the

9:32:02logic. I can write simple logic. If uh

9:32:06let's say the completed project amount

9:32:08is more than five. So that time I can

9:32:11just give the status excellent otherwise

9:32:14I'll just try to tell it's average one.

9:32:16Okay. Now I'll update this project

9:32:19status. Then I will return the status.

9:32:21Okay. So yeah this is our notes we have

9:32:23uh prepared. Now uh once it is done the

9:32:27at the last I will add this summary

9:32:28notes as well. Now let's add the summary

9:32:30note. So inside summary I'm just going

9:32:33to return all of the summary. That's it.

9:32:38So ref summary.

9:32:43So here I will just initialize the

9:32:46summary. Let's say this is the entire

9:32:48summary text. I've taken the f string

9:32:50and I'm just joining the string all

9:32:52together. employee employee name then

9:32:55has a yearly salary of yearly salary a

9:33:00bonus of bonus amount project status is

9:33:03the project status okay that mean this

9:33:05is a complete string I'm just writing

9:33:06and updating and returning it okay

9:33:09that's it now let me execute yeah my all

9:33:11of the nodes are prepared now what I

9:33:14have to do guys uh we have already

9:33:15created all of the nodes that means

9:33:17nodes is created now we have to add the

9:33:20edges okay this is called edges now we

9:33:21have to do the edge connecting

9:33:22connection. Now let's try to do the edge

9:33:24connection.

9:33:25So for this I think you know that we use

9:33:28this

9:33:30add edge uh uh addage function inside

9:33:33lang graph. So here I can comment h. So

9:33:36first of all try to see how we are going

9:33:38to connect the edges. You can see from

9:33:41start it is connecting to calculate

9:33:44bonus. It is connecting to calculate

9:33:47yearly salary. It is connected to

9:33:49project evaluation. Okay, that means

9:33:52simultaneously you can see it is having

9:33:54three connection. Okay, with calculate

9:33:56bonus, uh calculate yearly salary and

9:33:58project evaluation. So what I'm going to

9:34:00do, I'm going to do the same thing.

9:34:01First of all, I'm going to add this

9:34:04start with calculate yearly salary. Then

9:34:07I'm going to add with my calculate

9:34:10bonus. Then I'm going to add with

9:34:13project evaluation.

9:34:15Okay, I'm going to add with project

9:34:17evaluation. Now just try to um relate

9:34:20you can see start is connected with

9:34:22yearly salary calculate bonus and

9:34:23project evaluation. Okay. So these are

9:34:25the connection I have already made. You

9:34:27can see these are the connection I have

9:34:28already made. Now this connection is

9:34:31complete. Now I have to build this

9:34:32connection. Okay. That means now um

9:34:36calculate bonus is connected to the

9:34:37summary. Yearly salary also connected to

9:34:40the summary. Project evaluation is also

9:34:42connected to the summary. Okay. That

9:34:43means I have to build this connection.

9:34:44Now let's do that. So here what I'm

9:34:46going to do

9:34:48I'm going to write uh calculate yearly

9:34:51salary it is connected to summary

9:34:53calculate yearly salary it is connected

9:34:55to summary okay then calculate bonus it

9:34:59is also connected to the summary and uh

9:35:02project evaluation this is also

9:35:04connected to the summary okay project

9:35:06evaluation this is also connected to the

9:35:08summary and summary is connected to the

9:35:10end now let's add another edge

9:35:14H summary is connected to the end. Now

9:35:17just try to relate. Okay, just trust me

9:35:20if you can understand this one just the

9:35:23age connection at the node creation you

9:35:25can build any kinds of workflow inside

9:35:27langraph. Okay, any kinds of workflow

9:35:29you can create. So I hope guys you got

9:35:31it. Okay, I hope guys you got it how we

9:35:33have made this connection. Okay, and

9:35:36this is a independent connection. This

9:35:38is a independent connection. Nobody uh I

9:35:41mean none of the nodes is dependent on

9:35:44another nodes. Okay. So that's why we

9:35:46call it as a parallel workflow. Now let

9:35:48me show you for this. First of all we

9:35:50have to compile the workflow. Let's

9:35:52compile. Okay. Now I'll compile the

9:35:55workflow. Now you can just see the

9:35:57workflow graph. See if you're using uh

9:36:00this Jupyter notebook you don't need to

9:36:02write uh this extra code for that.

9:36:05uh I think in the recent update u they

9:36:07have uh automatically done this one in

9:36:10the cell itself. So previously I used

9:36:12this code to draw this graph but right

9:36:15now you don't need to do that. If you

9:36:17just print this workflow you'll

9:36:18automatically see this particular uh

9:36:20graph. Okay. Now see guys this is the

9:36:23graph and this is our parallel um

9:36:27parallel workflow we have created. Now

9:36:29just try to relate this graph. Okay. Now

9:36:31you can see start and it is connected

9:36:33with all of the nodes independently

9:36:35connected. Then whatever um result we

9:36:39are getting we are just returning the

9:36:40summary and we're ending the graph.

9:36:42Okay. So this is the parallel workflow.

9:36:44Now let's try to execute. So what I'm

9:36:46going to do I'm going to uh initialize

9:36:50my initial state and what should be the

9:36:52initial state. These are the uh state

9:36:54should be the initial one because we'll

9:36:56be taking these are the data from the

9:36:57user. So let's define that.

9:37:01So this is our initial state. You can

9:37:03see I'm taking the employee name. Um

9:37:05then monthly salary. So I'm going to

9:37:07take my name. Let's say I'm the

9:37:09employee. This is the monthly salary.

9:37:11This is the working days. And this is

9:37:12the completed project. Okay. Now we'll

9:37:14just try to run this workflow.

9:37:17Run the workflow. So we're just running

9:37:20this workflow dot invok. We are giving

9:37:22the initial state and we're getting the

9:37:24result. Now execute. Okay. Now see guys

9:37:28here we are getting one output. The

9:37:30output is add key employee name can

9:37:32receive only one value per step. Use an

9:37:35annotated key to handle multiple uh

9:37:38value. Now you can ask me why we are

9:37:41getting the error. Okay, why we are

9:37:43getting this error? Because everything

9:37:45is fine so far, right? Everything is

9:37:47fine so far. But why we're getting the

9:37:49error? See the reason I showed you this

9:37:52error? Actually, I could have fixed it

9:37:54previously, but I showed you this error

9:37:56so that you can relate the difference

9:37:57between the sequential workflow and uh

9:38:01this um this uh parallel workflow. Okay,

9:38:05if you can understand this, I think you

9:38:07won't be having any kinds of problem.

9:38:09See what is happening. If I show you my

9:38:12workflow again, so this is my workflow.

9:38:15See here we created the state, right? We

9:38:18created this state and we are passing

9:38:20the state to the all of these nodes. But

9:38:22if you just observe uh if you just

9:38:24deeply observe what is happening

9:38:26whenever we are passing this uh state uh

9:38:29to all of the nodes what is happening to

9:38:31calculate the bonus what I'm using okay

9:38:34to calculate the bonus what I'm using

9:38:36I'm using this uh initial state that

9:38:39means whatever data user is passing I'm

9:38:40I'm using that so to calculate this I

9:38:43think I was using this um monthly salary

9:38:46only right I was using the monthly

9:38:47salary and I was updating this value

9:38:52wire

9:38:53in this particular section

9:38:56that means this boner bonus amount

9:38:58variable would be changed okay after

9:39:01running this state this particular

9:39:03variable would be changed I'm not

9:39:04changing these are the variable right

9:39:06that means the monthly salary is remain

9:39:08same I'm not changing it anywhere that

9:39:10means the employee name I'm also not

9:39:11changing working days also I'm not

9:39:13changing completed project also I'm not

9:39:16changing right I'm only changing these

9:39:18are the variable here but these are the

9:39:20variable remains same common right so

9:39:23wherever you are passing the state

9:39:25everywhere it is updating here only not

9:39:27here okay so that's why in parallel

9:39:30workflow whenever you are giving this

9:39:32simultaneously to all of the nodes okay

9:39:35so this nodes uh actually

9:39:39conflicts each other conflicts each

9:39:40other means there is no update so it

9:39:43conflicts like uh whether the value we

9:39:45are getting here this is correct for

9:39:46this nodes or not whether the value we

9:39:49are getting here this is correct correct

9:39:50for these nodes or not. Okay, that means

9:39:52it conflicts inside because we are

9:39:55returning the entire state. Here you can

9:39:56see we are returning the entire state.

9:39:58Although we are not updating this at the

9:40:00state but still we are returning the

9:40:02entire state that means the entire state

9:40:04will go to the another node. Okay, that

9:40:06means the entire state will go to the

9:40:08another node. Although we are not doing

9:40:10any kinds of update but we are returning

9:40:11the state. Okay, it's not recommended.

9:40:13So whenever you are creating the

9:40:14parallel workflow you have to make sure

9:40:18only the update you are doing inside the

9:40:20variable that particular variable or

9:40:22that particular state you have to return

9:40:23only okay let's say in this case let me

9:40:26just give you an example let's say in

9:40:28this case we are only calculating what

9:40:31we are only calculating the yearly

9:40:32salary so instead of returning all the

9:40:34state together what I'm going to do only

9:40:36I'm going to return the yearly salary

9:40:38okay because this is a parallel one I

9:40:41don't need to like wait for my employee

9:40:44name monthly salary these are the things

9:40:45right whatever update I'm just doing

9:40:47I'll just only try to return that so

9:40:49instead of uh this uh update what I'm

9:40:52going to do guys I'm going to only

9:40:54return

9:40:57I'm going to only return

9:41:01uh yearly salary

9:41:05see I'm going to only return the yearly

9:41:07salary we have calculated we are only

9:41:08returning that because at the end uh

9:41:11this is this is a dictionary. Okay, this

9:41:13this nodes returns a dictionary. Okay,

9:41:14we have to return a dictionary somehow.

9:41:16Now I don't need to give this time type

9:41:18time type time type time type time type

9:41:18time type time type time type time type

9:41:18time type time type int. Okay, this is

9:41:19not required because we are not

9:41:20returning the entire employee state.

9:41:22Okay, now I'm going to just remove it.

9:41:24So only it will take the state and

9:41:26whatever update it will do inside the

9:41:28state and that state will only return

9:41:30not any other state. Okay, not any other

9:41:33state only the updated one it will

9:41:34return. So for this I'll uh update for

9:41:36all the nodes I have done. So let's say

9:41:39here

9:41:40uh I was

9:41:43uh updating the bonus amount. So I'll

9:41:45only return the bonus amount and this

9:41:47thing is not required.

9:41:52Okay. Now for this project evaluation

9:41:55also I'll do the same thing.

9:42:00Return the project status. This thing is

9:42:02not required.

9:42:04Now for summary also

9:42:07we'll do the same thing.

9:42:16This is not required. Okay. So let me

9:42:19check everything is fine or not. Yeah,

9:42:21everything is fine. Now let me execute

9:42:22from the beginning.

9:42:26Now our workflow is created.

9:42:29Now we'll

9:42:31uh now we'll just try to invoke this

9:42:33workflow. Now see it's working. Now if I

9:42:35print the result

9:42:38see we are getting the final result. So

9:42:40this is the employee name, monthly

9:42:41salary, working days, completed project,

9:42:44yearly salary. So see we got the

9:42:46calculated yearly salary. Then bonus

9:42:49amount project status excellent because

9:42:52the completed project is seven and our

9:42:55logic was if it is more than five right

9:42:57more than an equal five that means it is

9:42:59excellent you are getting the excellent

9:43:01here and here's the summary but summary

9:43:04is giving a function so let me check

9:43:10okay so this should be summary text I'm

9:43:13just returning the function only right

9:43:15the nodes only so this should be a um

9:43:18this this variable. Now I think this

9:43:20should work.

9:43:26H now we are getting the summary.

9:43:28Employee BP has yearly salary of that

9:43:31amount. Bonus uh bonus is that amount

9:43:33and project status is excellent. Okay.

9:43:36So this is our uh uh parallel workflow

9:43:39guys we have created and I hope you

9:43:41understood. Okay. Okay, I hope you

9:43:43understood and uh this particular

9:43:45concept also you understood why we don't

9:43:47need to return the entire state inside

9:43:50parallel workflow. If you're creating

9:43:52the sequential workflow, it's completely

9:43:54fine. You can return the entire state

9:43:56that time. Okay, you can return the

9:43:57entire state that time. But whenever you

9:44:00are creating the parallel workflow, make

9:44:01sure only the state you are changing,

9:44:05just try to uh return those state only.

9:44:08Okay, not the entire state. Okay, you

9:44:10don't need to do like that because uh

9:44:13internally it will do the conflict

9:44:14operation because we can't pass

9:44:16simultaneously to all of the nodes the

9:44:19same state. Okay, this is not possible.

9:44:21So in every state that should be that

9:44:23should uh should be updated. Okay, state

9:44:26should be updated. But here you can see

9:44:28it is not getting updated. Okay, after

9:44:30going to the every state, every nodes it

9:44:33is not going to be updated. Okay, that's

9:44:34why this is going to be conflicted. So

9:44:37we have to update it somehow. So that's

9:44:39why we only are returning these are the

9:44:41state which is getting updated. Get it?

9:44:43Yeah. So this is the concept guys and

9:44:45this is our first non nonLM based

9:44:48workflow we have created and this is the

9:44:49parallel workflow. It is executing as

9:44:52parallel. Okay. Now we'll try to create

9:44:55another workflow. Uh we'll use the LLM

9:44:58and we'll call as a LM parallel

9:45:00workflow. Now let's try to see how we

9:45:02can uh create this LLM based parallel

9:45:05workflow guys. So guys, so far we have

9:45:08created uh this nonLM based parallel

9:45:11workflow. Uh we have already seen the

9:45:13example how it can be done. Now I'm

9:45:16going to show you how we can create LLM

9:45:18based parallel workflow. Now we'll try

9:45:20to integrate LLM with that. And for this

9:45:23example uh I'm going to take uh this

9:45:26particular demo called SA workflow. So I

9:45:28think you remember uh in my introductory

9:45:31session whenever I was giving you the

9:45:33introduction about the langraph I used

9:45:36one example called essay okay essay

9:45:38writing example so there there I created

9:45:40a system I created a workflow that

9:45:42workflow takes an essay as an input and

9:45:45it does uh the evaluation based on some

9:45:47parameter like uh it checks the um it uh

9:45:52depth analysis then language uh

9:45:55evaluation then uh um like research of

9:45:58thought evaluation. Okay, based on that

9:46:01uh it returns you uh some kinds of

9:46:03feedback as well as the score and we get

9:46:06the final evaluation then we conclude

9:46:08that right. So these kinds of things I

9:46:10think I uh already discussed about my uh

9:46:13this session. Okay. Uh this is the

9:46:15number seven video I have already

9:46:16discussed. You can go through that uh if

9:46:18you want to understand about that

9:46:20particular workflow. But again I'm going

9:46:22to um show you the workflow here. I

9:46:24already created the workflow. I'm going

9:46:25to discuss it here. And uh you can also

9:46:27see what is essay. Essay is a like uh

9:46:30it's a short non-frictional

9:46:32piece of writing that presents a

9:46:34specific argument analysis or personal

9:46:36point of view on a particular subject.

9:46:38Okay. So basically whenever you um

9:46:41attend any kinds of uh let's say uh

9:46:44exams or you if you are studying in a

9:46:47university any kinds of university that

9:46:48uh so these are the essay writing you

9:46:50will be getting there. Okay. So this is

9:46:52a kinds of research topic you can talk

9:46:54about. So what I'm going to do I'm going

9:46:56to take this same example uh here to

9:47:00make you understand this LM based

9:47:01workflow because here we'll be utilizing

9:47:03the LLM to analyze is the essay right

9:47:05and we'll also do the marking and all.

9:47:07So this is the workflow. This is the

9:47:09graph guys. Uh we we I have created as

9:47:11you can see start and end nodes would be

9:47:14common and these are the nodes we'll be

9:47:15creating. Uh evaluate analysis nodes.

9:47:18That means uh whatever essay topic will

9:47:20be giving right. Uh essay will be giving

9:47:22it will try to evaluate the analysis

9:47:24whether the analysis section is good or

9:47:26not. It will evaluate and it will give

9:47:27you two things. Okay. This is this will

9:47:29give you two things. Uh just let me

9:47:32write down

9:47:33what I can do. I can take a screenshot.

9:47:40I can take a screenshot and I'll open up

9:47:42my board.

9:47:46So now let me tell you

9:47:52so let's say you are giving a essay

9:47:54here. You are giving a

9:47:58essay here. Okay. That that means the

9:48:01entire essay essay text you are giving.

9:48:03So basically first of all we'll be

9:48:04running this uh evaluate analysis. So

9:48:07this evaluate analysis will try to

9:48:08analyze the entire essay. It will this

9:48:10it will give you two things. The first

9:48:12one is the uh feedback.

9:48:16Okay

9:48:17feedback feedback of the essay and

9:48:21second one is the score.

9:48:23This will give you a score. Uh let's out

9:48:26of 10 it will give you some kinds of

9:48:27score. Then next nodes we have writing

9:48:30for the evaluate language. Let's say you

9:48:32are using English language, right? So,

9:48:35how is your grammatical uh let's say uh

9:48:38I mean uh grammatical arrangement or if

9:48:41you are following the right grammaticals

9:48:44structure or not and uh what is the

9:48:46words you are using. So this kinds of

9:48:48language related evaluation will perform

9:48:50then again this will give you a

9:48:51feedback.

9:48:54Okay. And this will also give you a

9:48:55score out of 10 right then we'll just

9:48:58perform another analysis. This is the

9:49:00like uh uh thought analysis. Thought

9:49:03analysis means the thought thought of on

9:49:06top of this essay. Okay. Uh so here this

9:49:08will also give you a feedback

9:49:12and the score.

9:49:15Okay. That means every nodes we are

9:49:17getting two two things feedback score.

9:49:20Feedback is score feedback is score.

9:49:21Okay. Then we'll pass this feedback

9:49:24score uh uh feedback and score all of

9:49:26the feedback and score from all of the

9:49:28nodes. Let's say this is node one, this

9:49:29is node two, this is node three to

9:49:31another nodes called final evaluator. So

9:49:33that means this will evaluate based on

9:49:35all of the feedback. Let's say this is

9:49:37feedback one, this is feedback two, this

9:49:38is feedback three. So it will take all

9:49:40of the feedback then it will give you

9:49:41the final feedback.

9:49:43Final feedback,

9:49:47okay, or evaluation. Then it will take

9:49:50all of this code, okay? All of this

9:49:52code. And this will return you the

9:49:54average score of that. Okay, average

9:49:57final score of that. Okay, so this is

9:50:00how actually we'll be uh implementing

9:50:02this particular essay. Then once it is

9:50:03done, we'll try to end this particular

9:50:06uh end this particular but um graph.

9:50:09Okay, now if I get back to my workflow,

9:50:12I think now you are getting right and to

9:50:14make this workflow I need these state.

9:50:16Okay, I already prepared the state as

9:50:18you can see. I need this state. I named

9:50:20it as assay state and I inherited with

9:50:22type dict and first of all I need to

9:50:24take the essay and essay should be

9:50:25string right this is a variable then

9:50:28language feedback that means uh here so

9:50:30evaluate uh language this will basically

9:50:32do the language uh language evaluation

9:50:35and whatever feedback we'll be getting

9:50:36we'll try to save inside language

9:50:38feedback then it will also give you uh

9:50:40this will also give you um another score

9:50:44right uh that means the uh language

9:50:46score so instead of storing inside a

9:50:48single var variable. So what I'm doing?

9:50:50So here you can see I have taken another

9:50:52variable called individual score. Okay.

9:50:55And here I use this annotated list

9:50:58integer operator add. So I think you can

9:51:01call this uh call this concept right. So

9:51:03this is called actually reducer. I

9:51:05already talked about the reducer here uh

9:51:07in my um demo whenever I was explaining

9:51:10about the langraph core component there

9:51:12I talked about the reducer. So if you

9:51:14haven't watched that video guys please

9:51:15try to watch because this is important

9:51:17without that actually you won't be able

9:51:18to understand what is reducer exactly.

9:51:20So reducer uh will help us to uh replace

9:51:24add and merge the uh like data inside

9:51:28the state. So uh by default it will

9:51:30replace everything. I think so far

9:51:32whatever state we have created it was

9:51:34replacing every time right but as you

9:51:36can see from each and every nodes from

9:51:39each and every nodes we are getting some

9:51:41score. Okay, let's say if I'm only

9:51:43taking one let's say score variable. So

9:51:46what will happen? So whenever I'll get

9:51:48this score from here, let's say I got 12

9:51:50uh sorry I got let's say 8. Then from

9:51:54this particular nodes I'm I get another

9:51:56score from this particular node I get

9:51:58another score. Let's say this is 8.5. So

9:52:00what I will do this 8.5 8 would be

9:52:02replaced by 8.5. So that means I will

9:52:04lose my previous score of that evaluate

9:52:06analysis. Right? Then let's say this

9:52:08this node has generated another one.

9:52:10Okay, let's say 9.5. So again, it will

9:52:13replace by 9.5. So I lose my previous

9:52:15like uh score, right? But I need all of

9:52:17this code to make the average. So I need

9:52:20this score as well. I need this score as

9:52:23well. I need this score as well. That

9:52:24means I need to keep inside a

9:52:27dictionary. Let's say the first score

9:52:29I'm getting eight. Second score I'm

9:52:31getting 8.5. The third score I'm getting

9:52:339.5. I'll store all of the score from

9:52:36all of the nodes. Okay, inside a list.

9:52:39Then I'm going to create a average of

9:52:40that particular score. And this is going

9:52:42to be my final evaluation. Okay. And for

9:52:45this we are using this operator do add

9:52:47here. Okay. You can see we are using

9:52:49operator do add here. And we are using

9:52:51annotated. Okay. I think you know what

9:52:53is annotated. Whenever I want to use

9:52:55reducer, right? I have to use this

9:52:57annotated. And here we are mentioning

9:52:59that should be a list of integer. Okay.

9:53:01There should be a list of integer. That

9:53:03means I want to uh I want to uh let's

9:53:06say store uh store list of integer here.

9:53:09So here I have taken a float value but

9:53:10you can consider I want to uh you can

9:53:13also like give it as float value here.

9:53:15Let's say sometimes uh score should be

9:53:17also um float value 8.5 7.5 but I told I

9:53:21need only integer type uh like feedback

9:53:24okay integer type score. So that's why

9:53:26given list of integer and operator dot

9:53:29add that means I want to perform reducer

9:53:31reducer what operation add operation

9:53:34that means instead of replacing it will

9:53:35every time add all of the score so

9:53:37whatever score I'm going going to get

9:53:39from my evaluator analysis I'll store it

9:53:41here okay apart apart from the feedback

9:53:43then from evaluator language also I'm

9:53:46going to add the score from uh evaluate

9:53:48thoughts whatever feedback score I'm

9:53:50getting I will also try to add there

9:53:51okay so that's how you can see for all

9:53:54of the nodes I have indiv individual

9:53:56variable. So you can see language

9:53:58feedback I have one variable then

9:54:00evaluate of thought that means uh uh

9:54:04this one

9:54:06clarity feedback okay uh this is uh

9:54:08clarity of thought you can consider and

9:54:10the full name is clarity of thought we

9:54:12have taken a variable called clarity

9:54:14feedback so basically this feedback will

9:54:16store here then we have evaluator

9:54:19analysis that means the analysis

9:54:20feedback it will store here okay that

9:54:22means language analysis then evaluate

9:54:26thoughts. Okay, clarity of thoughts.

9:54:28Then the overall feedback. That means

9:54:30from final evolution also we are getting

9:54:31a feedback. From final evaluation also

9:54:34we are getting a feedback. So this

9:54:35feedback will store inside overall

9:54:37feedback. Okay. And final evalution will

9:54:41give you another uh score which is

9:54:43average score. And for average score we

9:54:45have kept another separate variable

9:54:47called average score. And this should be

9:54:48a float value. Okay. And for individual

9:54:52uh score we are getting we are storing

9:54:54inside this particular list. Okay,

9:54:56individual score this should be a list

9:54:58and we are performing the reducer add

9:55:00operation. Okay, now I think you got it

9:55:02how we created this particular state.

9:55:05Okay, how we created this particular

9:55:06state. Now I think this is pretty much

9:55:08clear guys

9:55:10and to understand this reducer concept I

9:55:12will suggest you go through this uh

9:55:14recording. Okay, lang core component you

9:55:15will try to understand okay how reducer

9:55:17works. So yeah, I think our uh uh our uh

9:55:21state is ready. Everything is ready. Now

9:55:23we can start working on that. But one

9:55:25more issue we'll be having which is this

9:55:27u uh output format. Okay, that means I

9:55:31need a structure output from my LLM.

9:55:33That means every nodes will return

9:55:35feedback and score feedback and score

9:55:37feedback and score. And we are using LLM

9:55:38and you know LLM is unstructured uh uh

9:55:41data generator. Okay, we won't be

9:55:43getting this kinds of feedback score

9:55:45every time. Let's say if you're adding

9:55:47by the prompt I need a feedback and

9:55:49score only let's say it will run five

9:55:51times maybe in six times it will give

9:55:53you some other parameter as well that

9:55:55time your code will crash right so to

9:55:57make our output stack chart so I taught

9:56:00you about uh I already taught you about

9:56:02this pyantic right so you can see

9:56:04pyantic for AI agents I've already taken

9:56:07a class on that so you just need to go

9:56:09through this pantic because we'll be

9:56:11using pentipic concept to get the

9:56:13structured output from my lm Okay. Now

9:56:16let's try to show you how it can be

9:56:17done. So what I'm going to do here I'm

9:56:19going to create another um another file.

9:56:23So I'm going to name it as

9:56:26pipe

9:56:30as a workflow.

9:56:39I'm going to select my environment.

9:56:43So first of all I will import all of the

9:56:45necessary library.

9:56:47So I need this state graph start end

9:56:50okay from lang graph. Then I also need

9:56:55openi model because here I'm going to

9:56:58use llm and for lm I'm going to use

9:57:00openi model. You can use any model. Okay

9:57:02it's up to you. You can use gemini gro

9:57:05provider any kinds of model you can use.

9:57:07But I already have the open API key

9:57:09yesterday. I already collect uh

9:57:10collected. I think remember okay that's

9:57:12why I'm using that then uh okay I'm

9:57:15going to close this

9:57:17then I need this uh load env to load my

9:57:21involvement variable because inside

9:57:23environment variable I I have my API key

9:57:25then I need um

9:57:28these are the

9:57:32these are the import as well from typing

9:57:34I'm importing this type dict and

9:57:35annotated why annotated because you know

9:57:37that uh to make this reducer Okay, I

9:57:41need this annotated. Okay, annotated is

9:57:43required. Uh and it is available inside

9:57:45this typing. We are importing annotated

9:57:47and we are using pientic. So from

9:57:49pientic we are importing base model

9:57:53and field and you have to install

9:57:56pientic for this. Uh let me install

9:57:58pientic.

9:58:04Pentic

9:58:06I'll install this specific version of

9:58:08the piantic. Now let me

9:58:12uh activate my environment.

9:58:20Then let's install the requirements

9:58:22again.

9:58:32Okay. Done. Now I'll come here. Now you

9:58:35can use this pi identic. So from identic

9:58:37I'm importing base model and field and

9:58:39what this base model field does guys I

9:58:41already discussed in this session please

9:58:42go through that okay I'm not going to

9:58:44repeat again so this session will give

9:58:45you the entire entire idea about pi

9:58:47identity okay why it is required and

9:58:50operator for this add operation that

9:58:53means for the reducer okay uh operation

9:58:56dot add operator do add we have to write

9:58:58it here so once it is done now let me

9:59:00import all of the package yeah so it's

9:59:04working fine now first of all we'll try

9:59:06to load put the involvement variable.

9:59:10Yeah. Then we'll prepare the model.

9:59:14So here I'll take GPT4 mini. Okay. This

9:59:17model. This is our LM. Now you can

9:59:21perform the invoke operation if you want

9:59:24directly. But if you perform the invoke

9:59:26operation right now, so what will

9:59:27happen? Uh this will uh give you

9:59:29unstructured output. But I need what? I

9:59:32need only this uh feedback and score.

9:59:34Okay. Okay, I need feedback score uh

9:59:36from this uh model. Okay, whatever essay

9:59:39I'll give you um I'll I'll give to this

9:59:42uh model, it will give me feedback and

9:59:44score. So I have to make the structure.

9:59:46So how to make the structure? For this

9:59:48we'll be using the pyic. So here I have

9:59:51created one pentic class.

9:59:54So this is the pentic class. So the name

9:59:58of the pyic class is evaluation schema.

10:00:01Uh and we are inheriting with the base

10:00:03model. Okay, the base model we have

10:00:04imported here, we have inherited and

10:00:08here is the pentic syntax. Okay, this

10:00:11syntax I already taught you in that

10:00:12session. So this should be uh string and

10:00:14this should be integer and here I have

10:00:16given the field. So in the field I'm

10:00:18telling detail feedback for for the

10:00:22essay and for score I've given a

10:00:25description score out of 10. uh so this

10:00:28is the greater than and this is the

10:00:30lesser than okay greater than zero and

10:00:32lesser than 10 so this should be the

10:00:34score so this that's how you can make

10:00:36the structured output from any kinds of

10:00:38given lm okay now uh to make the

10:00:43structured uh model what I'm going to do

10:00:46simply I'm going to just add this uh add

10:00:51the schema to the model so for this you

10:00:53have to call the model dot with

10:00:56structure output there is a function

10:00:57function called with structured output I

10:00:58think

10:01:02with structured output inside that you

10:01:04have to pass this class okay this pentic

10:01:07class now this will set um uh into the

10:01:10model that means whenever you will

10:01:12generate any kinds of output this will

10:01:14have two things one is the feedback is

10:01:16the score okay now I'll store inside

10:01:19another variable called structured model

10:01:21now this is going to be my structured

10:01:23model object okay now every time I'm

10:01:25call this I'm going to call this model.

10:01:27Okay, not this model. This model will

10:01:28give you unstructured output, but this

10:01:30model will give you the structured

10:01:31output. Okay, now let me execute

10:01:36and see whether everything is fine or

10:01:38not. H now if you want to test guys, so

10:01:40maybe I can show you. So I'll give a

10:01:42essay here.

10:01:44So this is one essay I generated from

10:01:46chart GPT. You can see this is essay I

10:01:49generated from chart GPT Europe in the

10:01:52age of AI, the regulatory super power.

10:01:55So what I'm going to do, I'm going to

10:01:57pass this asset to this structured model

10:02:00with a prompt.

10:02:03So this is the prompt uh I have written.

10:02:05Evaluate the language quality of the

10:02:08following essay and provide a feedback

10:02:11and assign a score out of 10. Okay, I'm

10:02:12giving the essay text here and right now

10:02:15I'm calling the structured model, not

10:02:16the model only. Okay, structured

10:02:18model.invoke and I'm passing the prompt.

10:02:20Now this will give you the result.

10:02:24Okay, result I stored inside result

10:02:26variable. Now let's execute.

10:02:38Yeah. Now if I print this result,

10:02:44you'll see that it will have two

10:02:46parameter. One is the feedback. Okay.

10:02:48Feedback of the essay and another one is

10:02:51the score. Okay, see I got this code.

10:02:54You can also extract it if you want. So

10:02:56you just simply need to write result dot

10:03:00feedback.

10:03:04Okay, you'll get the feedback and if you

10:03:06want this code, you can call

10:03:08result.core.

10:03:10Okay, this this code you got. I hope you

10:03:13got it guys. Okay, that's with the pyic

10:03:15you can um you can get the structured

10:03:17output from any large than case model.

10:03:19Okay, this is very much important.

10:03:22Now we'll try to start writing our uh

10:03:25this workflow. Now first of all let's

10:03:26prepare this state. So already state is

10:03:29given. I'm going to just replicate the

10:03:30same state here.

10:03:33So this is our state

10:03:36essay state. So we giving the essay

10:03:38language feedback test analysis feedback

10:03:40clarity of clarity feedback overall

10:03:42feedback individual scores and this is

10:03:44uh reducer uh reducer concept you're

10:03:47using. Basically this should be a list

10:03:48of score. Okay. and it will add every

10:03:50time and the average score. Now let's

10:03:53initialize that.

10:03:55Now we'll write our our graph. Let's

10:03:58prepare the graph.

10:04:01Yeah. So we have given this state to

10:04:03this graph. Okay. Now we'll try to add

10:04:08the nodes. So first of all I will add

10:04:10this node, this node, this node. Okay.

10:04:13And the final evalation node. Total four

10:04:15nodes I have to add. Let's add it. Um I

10:04:19have already prepared all of the node

10:04:24add node.

10:04:30So yeah you can see we're adding the

10:04:31nodes. First of all we're adding the

10:04:33evaluation evaluate language. Okay

10:04:36evaluate language this node. Then we are

10:04:38adding evaluate analysis this node. Then

10:04:42we are giving evaluate thoughts this

10:04:44node. Okay. Then last final evaluation.

10:04:47final evalation. Okay, my node is done.

10:04:50Now we have to uh create these are the

10:04:52Python function one by one. Let's create

10:04:54quickly.

10:05:04So here I'm going to just create it

10:05:06quickly. First of all I'm going to

10:05:07create this function evaluate language.

10:05:11So I already created let me show you.

10:05:15Yeah. So evalute language this will take

10:05:17this state as an input and here you can

10:05:19see uh I'm using llm and for this I

10:05:22prepared a prompt. So here I'm telling

10:05:24evaluate the language quality of the

10:05:26following essay and provide a feedback

10:05:27and assign a score out of 10 and we're

10:05:29giving the state uh sorry essay from the

10:05:32state. Okay and we are calling this

10:05:34structured model that means the

10:05:36structured model we have prepared here

10:05:38this model. Okay, instead of this model,

10:05:40so structured model, so this model will

10:05:42give you two things. One is the

10:05:43feedback, one is the score. So the

10:05:46feedback we're storing inside language

10:05:47feedback. That means this particular

10:05:49variable because we are evaluating the

10:05:51language here. That's why feedback will

10:05:52go to the language feedback. And the

10:05:54score we are getting we are storing

10:05:56inside individual score and this is um

10:05:59like uh reducer type that means we are

10:06:01adding inside a list. So that's why you

10:06:04can see individual score output score.

10:06:06Okay, that means the first code will

10:06:08save here. That means let's say

10:06:10uh what I'm going to do

10:06:16see

10:06:17that means um from here uh evaluate

10:06:21language right I think it is evaluate

10:06:23language uh evaluate language so that

10:06:26means we are executing this note so this

10:06:28node will give you two things one is the

10:06:29feedback

10:06:32one is the score okay so feedback I

10:06:35already stored inside my feedback um

10:06:39feedback um uh feedback state that means

10:06:43here language feedback now score okay

10:06:45score what I'm doing because I created

10:06:47an individual feedback variable okay uh

10:06:50so here let me show you

10:06:52maybe I can take a screenshot

10:07:06so Here you remember I created this

10:07:10individual score variable. So basically

10:07:11this is a list. Okay. This should be a

10:07:13list. This should be a list. Okay. And

10:07:16we added our first score which is this

10:07:20uh evaluate language. Let's say it has

10:07:21given you eight. Okay. Then there would

10:07:24be a comma

10:07:26done. Okay. Now I will write for the

10:07:29next nodes which is evaluate analysis.

10:07:32Okay. because I already executed uh I

10:07:35already created this node evaluate

10:07:36language this will give you feedback and

10:07:38it's code I already got it and instead

10:07:40of returning all the state we are

10:07:41returning the updated one only because

10:07:44in my previous example I showed you if

10:07:46you're creating parallel workflow you

10:07:48don't need to return the entire state

10:07:50instead of that only you just you just

10:07:52need to return the updated state okay

10:07:54otherwise there would be a conflict

10:07:56problem okay yeah so now let me define

10:07:59this node now once it is done I'll

10:08:02define Find the next note which is the

10:08:05depth of analysis. Evaluate analysis.

10:08:08This will take the state and here we are

10:08:10giving the prompt again. Evaluate the

10:08:12depth of analysis of the following essay

10:08:13and provide a feedback and assign a

10:08:16score out of 10. And we are giving the

10:08:17essay and this will uh pass to the

10:08:19structured model. This will give you two

10:08:21things. One is the feedback. So this

10:08:22feedback I'm storing inside analysis

10:08:24feedback. that means here in this

10:08:27particular variable and it is giving you

10:08:29the individual score and we are uh

10:08:32storing this uh score in the individual

10:08:34score that means here okay this is a

10:08:37list so like let's say this has given

10:08:39you uh again eight okay this will store

10:08:42here okay that's how we are storing now

10:08:47this is also done now we'll write for

10:08:50the next one which is

10:08:53clarity of thought analysis is evaluate

10:08:55clarity clarity of thought. Again, this

10:08:57will take the state as an input. We are

10:08:59defining the prompt. Evaluate the

10:09:00clarity of the thought of the following

10:09:02essay and provide a feedback analysis

10:09:04and assign a score out of 10. Okay,

10:09:06we're giving the essay and we are

10:09:09passing it to the structured model

10:09:14and this will give you two things. One

10:09:15is the feedback. So feedback I'm storing

10:09:17inside clarity feedback in this uh

10:09:20variable and the score we are getting

10:09:22we're storing inside individual score.

10:09:24Okay, that means here then again it will

10:09:27get give you another score. Let's say

10:09:29you got uh nine here. Okay, so that's

10:09:32how your individual score will form,

10:09:35right? And now we have all of the score

10:09:37from all of the nodes. Now we'll try to

10:09:39make the average one. Okay, later on.

10:09:42Now it's done. You can see uh we are

10:09:44also returning uh these two things

10:09:46clarity of uh clarity feedback and

10:09:47individual scores and this will become

10:09:49my next node. Now we have to work on the

10:09:53uh final node which is final evaluation.

10:09:56Now let's also write that

10:10:00this is our final evaluation nodes.

10:10:02Again this will take the state as an

10:10:04input and again we are preparing a

10:10:06prompt based on the following feedbacks.

10:10:08Uh create a summarized feedback. Okay.

10:10:10Now here we are passing all of the

10:10:12feedback one by one. That means this

10:10:14feedback, this feedback, this feedback.

10:10:16Okay. This feedback, this feedback, this

10:10:18feedback. Three feedback we are giving.

10:10:20language feedback

10:10:22then depth of analysis feedback clarity

10:10:24of thought feedback and I'm just uh

10:10:28telling the model give me a overall

10:10:30feedback and right now I only need a

10:10:32feedback I know I don't need any kinds

10:10:34of score okay so that's why I'm using

10:10:37the original model instead of working on

10:10:40the structured model I'm now invoking

10:10:43the original model because I only need

10:10:45the feedback that's why I'm invoking on

10:10:48the original model I'm giving giving

10:10:50this prompt and whatever content it is

10:10:52generating I'm just storing inside

10:10:53overall feedback. Okay. Now I have to

10:10:56calculate the average um average score.

10:10:58Okay. And how to calculate the average

10:11:00score? Because I already have the all of

10:11:02this score, right? All of this score as

10:11:04a list. Now you can see from this state

10:11:07I'm extracting the individual score.

10:11:09Okay, individual score uh because this

10:11:12is a list. Okay. Now we are calculating

10:11:14the length of this uh uh uh like list

10:11:18and how many uh like let's say variable

10:11:21uh how many value we are having we are

10:11:23just doing the dividing operation. Okay

10:11:25first of all we are doing the sum

10:11:26operation you can see. So how to

10:11:28calculate average? First of all you will

10:11:29do the sum operation. You will do the

10:11:31sum operation 8 + 8 + 9. Okay then

10:11:34you'll just try to divide with the

10:11:36number of uh item you have. Let's say we

10:11:38have three here. Now whatever output you

10:11:40will be getting this is your average.

10:11:42Okay. So we are calculating the average

10:11:43like that. First of all we are summing

10:11:46all the value. Then we are dividing with

10:11:48length of the uh item we are having

10:11:50inside the list. Then this is going to

10:11:52be your average score and we are

10:11:54returning the overall feedback and

10:11:56average score. So overall feedback we

10:11:57are storing inside this variable overall

10:12:00feedback and the average score we are

10:12:02storing this average. Okay average score

10:12:04here. That's it.

10:12:07Okay. Now all of the function we have

10:12:09created. Now we have to add the nodes.

10:12:11Now let's try to refer this graph and

10:12:13add the nodes. Now see whenever you are

10:12:15adding the nodes first of all you can

10:12:17see start would be connected to the

10:12:18evaluate analysis evaluate language

10:12:20evaluate of thoughts. Let's add that

10:12:29addages.

10:12:35Yeah. So you can see start is connected

10:12:37with evaluate language, evaluate

10:12:39analysis, evaluate thoughts, evaluate

10:12:42analysis, evaluate language, evaluate

10:12:43thoughts. Okay, that means these are the

10:12:45connection we have built. Now evaluate

10:12:48analysis is connected with final

10:12:49evaluation. Evaluate language is

10:12:51connected with uh final evaluation and

10:12:53evalu evaluate thought is connected to

10:12:55final evaluation. Now I have to make

10:12:57this connection. Now let me do that.

10:13:01See evaluate language is connected to

10:13:04the final evaluation. Evaluate analysis

10:13:05is connected to the final evaluation.

10:13:07Evaluate at heart is connected to the

10:13:09final evaluation. That means this

10:13:10connection is also done. Now final

10:13:12evaluation is connected to the end.

10:13:17Now final evaluation is connected to the

10:13:19end. Okay. Now we have to compile the

10:13:21graph.

10:13:25Done. Now if you print the workflow.

10:13:29So that's how your workflow looks like.

10:13:31And now you can verify this workflow and

10:13:33this workflow. Okay. These are same. Now

10:13:37I need to uh invoke this workflow. So

10:13:40for this let's prepare another essay.

10:13:43So I generated another ay from my chart

10:13:45GPT. So this is another essay. I named

10:13:48it as ay 2. Okay. So this is in test

10:13:50state in the age of AI then

10:13:52infrastructure and capital super power.

10:13:55So I'm going to invoke it right now with

10:13:57my workflow.

10:13:59So let's do that.

10:14:02So first of all here I have prepared the

10:14:04initial state and I have given my SA

10:14:06okay then we are involving the workflow

10:14:09and this will return you the result

10:14:29done now we'll print this result.

10:14:33See here you have all of the data. So

10:14:35this is the essay. This is the language

10:14:37feedback you got. This is the analysis

10:14:39feedback feedback you got. This is the

10:14:40clarity feedback you got. This is the

10:14:42overall feedback you got. This is the

10:14:44individual scores for from all of the

10:14:46nodes. Okay. And this is the average

10:14:48score. I hope you get it guys. See

10:14:52amazing right? So that's how we can

10:14:54create any kinds of LLM based parallel

10:14:57workflow. Uh now I think it is pretty

10:14:59much clear and the only things is that

10:15:03you have to understand the connection

10:15:05you have to understand this graph and

10:15:07the state. Okay the state you will be

10:15:08using here and when to use this u

10:15:12reducer when to use the pantic you have

10:15:15to understand

10:15:17uh by seeing the problem statement. So

10:15:20here two things you have learned um I

10:15:23just used in this particular practical

10:15:25demo. One is the pientic how to use

Master Conditional Workflows in LangGraph

10:15:28pientic to get the structured output.

10:15:30Okay. Then another one this reducer. So

10:15:34reducer we already uh saw right uh in

10:15:37the concept understanding now we

10:15:40practically applied this reducer as

10:15:42well. Okay in the lang lang graph. So

10:15:44yes guys uh this is all about uh that's

10:15:47how we can create any kinds of parallel

10:15:48workflow. Now in the next video I'm

10:15:51going to teach you some other workflow

10:15:53like conditional, iterative. Okay, each

10:15:56and everything we'll try to discuss then

10:15:58we'll also implement some amazing uh

10:16:01practical project. Okay, agent project.

10:16:03Okay, in our previous video I have

10:16:06already discussed about uh parallel

10:16:08workflows like how parallel workflow

10:16:10works and uh we already did the coding

10:16:13as well with the help of lang graph. Uh

10:16:16now let's try to understand this

10:16:17conditional workflows and this

10:16:19conditional workflows would be more

10:16:21interesting because if you have already

10:16:23uh let's say learned programming

10:16:25language you know that inside

10:16:26programming language we have something

10:16:28called a condition right so based on

10:16:30this a condition we uh handle any kinds

10:16:33of conditional based scenario so the

10:16:35same thing you can do inside langraph as

10:16:38well whenever you are having a workflow

10:16:40this is having some kinds of condition

10:16:42you can handle this kinds of scenario

10:16:43with the help of this conditional

10:16:45workflows. Okay. So, make sure you watch

10:16:48this video till the end. Don't miss

10:16:50anything. And if you found this content

10:16:52useful, guys, please try to subscribe to

10:16:54my channel and hit the like. Uh just uh

10:16:57hit the like guys because like is

10:16:58required if you like the session. So, uh

10:17:01it will be uh it will be reaching to all

10:17:03the people out there so that they can

10:17:05also find this kinds of content and

10:17:08please try to share this video with your

10:17:09friends and family. So, first of all,

10:17:11let me give you the idea about

10:17:12conditional workflows. Then I will also

10:17:14show you how we can code with the help

10:17:16of lang graph. How we can implement this

10:17:18conditional workflow with the help of

10:17:19lang graph. So here also I'm going to uh

10:17:22take two kinds of example. I'm going to

10:17:24take the first example nonlm based

10:17:27conditional workflows. First of all I'm

10:17:28going to show you the nonlm based

10:17:30workflows. Then after that I'm also

10:17:32going to show you the lm based

10:17:33workflows. Okay. Both we're going to

10:17:35cover here. So if you see here um this

10:17:38is the conditional workflows guys. So

10:17:40this is uh similar to the uh parallel

10:17:43workflows. I think you already studied

10:17:45about parallel workflows. Okay. So let

10:17:47me show you. So previously I already

10:17:48discussed about this parallel workflows,

10:17:50right? So in uh parallel workflows what

10:17:52happens if you give a task. So basically

10:17:56here we are having multiple nodes and

10:17:58all of the nodes would be executed

10:18:00independently. That means it will

10:18:02execute uh it will be executed in

10:18:04parallel. Okay. Altogether it will be

10:18:06executing. Then whatever result I was

10:18:08getting, I was just aggregating and u

10:18:12showing the results. Okay. But inside

10:18:14this conditional workflow, this is uh um

10:18:17little bit different. Let me show you.

10:18:19So inside conditional workflow, what

10:18:21will happen? See here also we are having

10:18:23multiple nodes. Okay. Uh in parallel but

10:18:26these are actually condition. Okay.

10:18:28These are actually condition. That means

10:18:30let's say uh let's say whatever content

10:18:33we are sending. So first of all it will

10:18:35analyze that after doing the analyze it

10:18:38will perform a conditional statement

10:18:41that means if this content is good let's

10:18:44say it will approve that particular post

10:18:47if it is let's say uh if is let's say

10:18:51needs any human review that time it will

10:18:55send it to the human review okay and it

10:18:58if it is having any kinds of problem

10:19:00that time it will directly reject the

10:19:01post that means here you are checking

10:19:03the condition based on the condition you

10:19:05are executing one of the node. Okay, you

10:19:07are not executing all of the node. You

10:19:10are only executing one of the node.

10:19:12Okay, let's say

10:19:15this node can be executed based on the

10:19:17condition or this note can be executed

10:19:19based on the condition or this node can

10:19:21be executed based based on the

10:19:23condition. Okay, based on that you are

10:19:25ending the entire graph. But here it's

10:19:27not like that. Here you are executing

10:19:28all the node togethers. Okay, in

10:19:30parallel you are executing then you are

10:19:32aggregating the results and you are

10:19:33showing that. But here it's not like

10:19:35that. This is working as a a fields

10:19:37condition. Okay, so let me show you. See

10:19:40here basically we'll just write a

10:19:42condition. Okay, let's say here the

10:19:44problem statement. First of all I'm

10:19:45going to show you u this is actually

10:19:48content moderation system. This is the

10:19:50nonlm based workflow. First of all I'm

10:19:52going to create then after that I'm also

10:19:54going to show you how to create the LMB

10:19:56based workflow. So here basically we'll

10:19:57be creating a content moderation system

10:19:59for a social media platform. It

10:20:02processes a user text post and evaluate

10:20:05it for spam and conditionally allowed it

10:20:08to be published. Okay, published either

10:20:12flagged for the human review. If it is

10:20:15uh need any kinds of human review it

10:20:16will try to send to the human review or

10:20:18it will automatically reject that

10:20:20particular post. That means here we'll

10:20:22be uh basically deciding this kinds of

10:20:25statement based on the condition. Okay,

10:20:28condition we'll first of all check the

10:20:29content. Whatever content user will

10:20:32post, whatever text user will post,

10:20:33we'll try to check that. Okay, before

10:20:35checking that we'll try to first of all

10:20:36format the post. Format the post means I

10:20:38will show a message. Okay, I will show a

10:20:41message like let's say this is the user

10:20:43he has posted this uh this this

10:20:45particular content. After that we'll

10:20:47analyze that, right? Analyze that. So

10:20:49this analyze function will try to

10:20:52analyze whether this is uh this is uh

10:20:55this particular post I can directly post

10:20:56or not if it doesn't have any kinds of

10:20:58violation or not or either if user is

10:21:02completely new to my platform okay first

10:21:04of all I have to send this post for the

10:21:07review okay either if it is having any

10:21:10kinds of uh violation related post I'll

10:21:12just try to reject that particular post

10:21:14okay so this is the condition so

10:21:16basically here you are sending uh you

10:21:18are handling this kinds condition. If

10:21:20else condition,

10:21:24if else condition, okay, if else

10:21:27condition, if this uh post is fine, you

10:21:30are approving that. Okay, if it is uh uh

10:21:34like uh uh if it uh

10:21:39or if user is completely new user, okay,

10:21:43new user, you are sending for the human

10:21:45review or else you are rejecting the

10:21:47post. that means there is there is a

10:21:49violation problem. Okay. So this is a

10:21:52conditional based workflow. Now I think

10:21:54you got it. What is the difference

10:21:55between this conditional workflows and

10:21:58the parallel workflows. Okay. And to

10:22:00implement this workflows guys I need a

10:22:02state. So I already prepared the state.

10:22:03As you can see I named it as moderation

10:22:06state and I inherited with the type dict

10:22:08and here I have taken some of the

10:22:10variable. So the first one I have taken

10:22:12for the post content that means whatever

10:22:14text user will pass I'll try to save it

10:22:17here. post content and this should be a

10:22:18string type data. Then uh user

10:22:21reputation. This is also userable pass.

10:22:24User reputation means either user is a

10:22:26uh registered user or he's the new user.

10:22:29Okay. Let's say if user reputation is

10:22:31equal to is equal to let's say um let's

10:22:34say the user is uh the user is let's say

10:22:38trusted user. Okay. Trusted user means

10:22:40this is uh this user is already

10:22:42registered user. Okay. So that time I'll

10:22:45uh not send this post for the review.

10:22:47Okay, this post uh won't be going for

10:22:50the review because the review I I will

10:22:52only learn uh I mean I will only execute

10:22:54whenever the user is completely new to

10:22:56my platform. Okay, so this this uh

10:22:59statement will uh store here and this is

10:23:01going to be also string type data. Then

10:23:03formatted post. So whatever content user

10:23:06will give give us first of all we'll try

10:23:08to format that particular post. Format

10:23:10means I will give a message. Let's say

10:23:13um let's say user says this is the post.

10:23:17Okay, that that kind of like uh I'm

10:23:19going to just give a message then

10:23:22content flag. Content flag means u here

10:23:25is the content flag. Basically all of

10:23:26the condition whether this should be

10:23:28approved or whether this should be

10:23:31rejected or whether this should be uh

10:23:34flagged for the human review. Okay. So

10:23:36these kinds of condition I'll try to

10:23:39save inside content flag and this is

10:23:40also going to be a string because here

10:23:42I'm going to store uh either approved

10:23:44either review either reject post okay

10:23:46that's why it's going to uh it's going

10:23:48to be string then result the final

10:23:50result okay final result means whether

10:23:52the post has been approved uh that mean

10:23:55uh it will give a message right let's

10:23:56say post automatically approved or post

10:23:59flagged for the human review or post or

10:24:01already rejected okay these kinds of

10:24:03methods I want to show at the last

10:24:04that's why I have taken another variable

10:24:06called result and this is also going to

10:24:07be a string. Okay, I hope you got it

10:24:09guys. Now let's try to code inside lang

10:24:12graph how we can uh create this graph

10:24:14how we can create this workflow. So I

10:24:16think you already get it. First of all I

10:24:18have to create some of the nodes. Okay,

10:24:20this node, this node, this node, this

10:24:22node, this node. Okay, then I'll try to

10:24:23do the edge connection and I will show

10:24:25you how we can uh handle this kinds of

10:24:27conditional workflow as well with the

10:24:29help of this

10:24:31um this langraph. Okay, this can be also

10:24:34um discussed in this particular video.

10:24:36Now, let me create a file first of all

10:24:38here. So, I'm going to create a file.

10:24:45I'm going to create a new file. I'm

10:24:47going to name it as

10:24:49six content moderation workflow. PY NB.

10:24:54Okay, this is a notebook file. So, I'll

10:24:57take a code cell and here also I'll take

10:24:58the kernel H.

10:25:01So the first thing guys I have to import

10:25:03the necessary library and I I think you

10:25:05know that uh what are the library we

10:25:08need right so let's import so I need

10:25:12this uh uh state graph start end from

10:25:14lang graph graph and type date let's

10:25:17import them then after that we have to

10:25:20create this state right so the same

10:25:22state I'm going to create here

10:25:26so this is the state

10:25:28I have taken the post contain user

10:25:30reputation

10:25:31Then uh formatted post content flag and

10:25:33result.

10:25:37So first of all now I'm going to uh

10:25:41create the graph. Okay. Then after

10:25:42creating the graph we'll try to add all

10:25:44of the nodes. Now let's create the

10:25:45graph.

10:25:49So graph is equal to state graph. Then I

10:25:50have given my state moderation state.

10:25:53Then after that we'll just try to add

10:25:55the nodes.

10:25:57add the nodes.

10:26:01Okay, first of all, I'm going to add my

10:26:04first nodes which is uh this one format

10:26:07post. Let's add that

10:26:12format post and this function I have to

10:26:14write. Okay, this format post Python

10:26:16function I have to write separately.

10:26:18Then the next uh nodes I have to write

10:26:22this uh analyze content.

10:26:25Analyze content. Okay. I have give given

10:26:28the same name. Then the next node I have

10:26:32to create approve post.

10:26:37Then next node I have to create flag for

10:26:40review.

10:26:44Then next po uh node I have to create

10:26:46this reject post.

10:26:50Okay. Now let me check whether I have

10:26:52any node or not. No, it's completely

10:26:54fine. I have created all the nodes. Now

10:26:56we have to create all of these node one

10:26:58by one. So first of all let's create the

10:27:00format post.

10:27:03Uh see inside formatted post I'm not

10:27:07going to do anything. This is the nonLM

10:27:09based workflow. So I'm going to just

10:27:11write a simple Python code here. So

10:27:13basically whatever um let's say user is

10:27:15passing input user is passing. Let's say

10:27:17user is passing post content and user

10:27:19reputation. So I just created a

10:27:21formatted string here. So here I told

10:27:24user uh reputation. Okay that means

10:27:26let's say user is trusted user. So here

10:27:28trusted user will come. That means user

10:27:30trusted user says post content. That

10:27:33means whatever post he's giving this

10:27:35particular post it will show here. Let's

10:27:36say user has given uh one post uh check

10:27:39out this amazing new product and buy

10:27:41now. Okay. So this will show here inside

10:27:43a uh this f string. Okay. Then after

10:27:46that we are just returning this

10:27:48particular formatted post. Okay.

10:27:50Formatted because we created this

10:27:52formatted post and whatever formatted

10:27:53output we are generating right we'll

10:27:55just try to store in the formatted post

10:27:57string. Okay we are storing uh storing

10:27:59here and we're returning it. And why we

10:28:01are not returning the enter state guys?

10:28:04Because in my previous uh previous video

10:28:07I already told you about right I

10:28:09whenever I created the parallel workflow

10:28:10that time I told you uh if you are

10:28:13having this kinds of scenario um that

10:28:16time don't use the entire state uh

10:28:19returning concept instead of that uh

10:28:21whatever state you are changing only

10:28:22just try to return those state okay this

10:28:24is a good practice okay instead of

10:28:26returning the whole one because here you

10:28:29are not changing inside that okay after

10:28:31the execution node execution you are not

10:28:33changing inside this particular variable

10:28:36you are only changing inside that right

10:28:37that's why don't return the entire state

10:28:39instead of whatever state you are uh

10:28:42changing only just try to return that

10:28:44okay I hope you got it so this is our

10:28:45first node we have created now let's

10:28:47create the next one called uh this

10:28:51analyze content okay now analyze content

10:28:53would be very simple uh see here I just

10:28:57written a simple condition so see here

10:29:01I'm giving my state And whatever post

10:29:04content we are having first of all we're

10:29:06doing the lower operation. Okay

10:29:10lower operation then after that we are

10:29:14checking the condition. So as you can

10:29:16see if spam in the content or buy now in

10:29:19the content. See here we are only

10:29:20considering uh this particular post

10:29:23would be rejected based on some like

10:29:25parameter whether it should be a spam

10:29:27whether it should be buy now. If user is

10:29:29giving this kinds of word in the text

10:29:31itself, I'm going to directly reject

10:29:33that particular content. Okay? Because

10:29:35this is a condition I mean non-LM based

10:29:37one. So that's why I I just taken uh

10:29:40like manual verification. But whenever

10:29:41it would be LM based that time it would

10:29:43be more robust. Okay. But just for your

10:29:45understanding I kept this particular

10:29:46easy example. So that's why I only

10:29:49considered two word. One is spam one is

10:29:51buy now. Okay. If it is present in the

10:29:53content I'm going to directly reject

10:29:55that particular content. So flag would

10:29:56be rejected. If the state reputation if

10:30:00is equal to is equal to new user that

10:30:02means I told you if user reputation is

10:30:04equal to is equal to new user that means

10:30:06he is the completely new user on my

10:30:08platform first of all I'll review this

10:30:10particular post okay I'll send it for

10:30:12the review or else I'm going to approve

10:30:15the post let's say if it it doesn't have

10:30:17any kinds of spam content or it doesn't

10:30:20need any kinds of review that means this

10:30:21content is fine I'm going to approve

10:30:23that okay that's why in the s block the

10:30:25flag is equal to approved then whatever

10:30:28uh flag we are getting based on the

10:30:29condition we are just storing inside

10:30:31content flag okay here we are storing

10:30:33that and we are returning this

10:30:34particular state okay I hope you got it

10:30:37now the next one I have to create for

10:30:39this approved post

10:30:43okay approved post so this will

10:30:44basically return this approved message

10:30:47uh result is equal to post published

10:30:49successfully to the timeline and result

10:30:51is equal to result so we are storing

10:30:53inside result okay now we'll do it for

10:30:55the same uh for the flag review and

10:30:58reject post as well. Now here also I'm

10:31:02going to just return the message for

10:31:03flag for review post sent uh to the

10:31:07human moderation uh queue okay for the

10:31:09review and we are updating the result

10:31:12okay and here you can see uh we don't

10:31:14need to store all of the like uh result

10:31:18here because this is not required

10:31:20because this is a conditional workflow.

10:31:22So either one of the node would be

10:31:24executed it it should not be executed

10:31:26all of the node right like that okay so

10:31:29previously it was executing all of the

10:31:30node and I was uh I was collecting all

10:31:33of the ratings okay and I was storing

10:31:35inside a list that's why I I uh I used

10:31:38actually reducer concept here but here

10:31:40reducer concept is not required because

10:31:42here either one of the node would be

10:31:44executed and I only need to save one

10:31:46particular result okay that's why this

10:31:48is completely uh string type okay I

10:31:51haven't taken any kinds of reducer type

10:31:54here. Okay, every time it will uh

10:31:57replace that.

10:31:59Then the next one I have for the reject

10:32:01post.

10:32:03Reject post. So as you can see uh post

10:32:06automatically deleted due to the policy

10:32:07violation and we are updating the

10:32:09result. That's it. So let's execute this

10:32:11one. Execute this one.

10:32:19And I'll execute this one also. Execute

10:32:22this one. Okay. Once it is done, now uh

10:32:26I have to

10:32:28I have to um do the age connection.

10:32:31Okay. So first of all, let's do the age

10:32:33connection. Then I will show you how we

10:32:35can uh handle the conditional scenario.

10:32:37So here let's try to do the age

10:32:39connection.

10:32:41Add

10:32:42the edges. So first of all you can see

10:32:45the age connection would be start to

10:32:47formatted post. Okay, let's try to do

10:32:49that.

10:32:51Start to formatted post.

10:32:55Okay, then the next one, formatted post

10:32:57to analyze content.

10:33:03Formatted post to analyze content. Okay.

10:33:05Then after that uh what we have

10:33:11uh we have um we have uh this

10:33:14connection. Okay. But this connection

10:33:16will build up um based on the condition

10:33:19either uh analyze content will return uh

10:33:24this particular output to the approved

10:33:26post or flag review post or rejected

10:33:27post. Okay. Now this conditional

10:33:30statement will come come into picture.

10:33:32Okay. Now this conditional statement

10:33:33will come into picture. So let's say if

10:33:35I'm not adding the condition if I'm

10:33:37directly just let's say this these nodes

10:33:39are not there. I'm directly just adding

10:33:41this um analyze content to the end.

10:33:45Analyze content to the end.

10:33:52Analyze content

10:33:55to the

10:33:58and okay. Now if I compile the graph and

10:34:02if I show you the workflow

10:34:09again not

10:34:19okay uh there should not be any

10:34:21quotation that's why it's coming the

10:34:23error now if execute this workflow is

10:34:25created now if I show you the workflow

10:34:27now see the workflow look Next lab.

10:34:31So this is the workflow right now.

10:34:34Okay. But I created the nodes already,

10:34:36right? So if I let's say um comment is

10:34:39at the node. Now if I execute,

10:34:42see

10:34:45this will look like that. So start

10:34:47formatted post then analyze content and

10:34:50end. Okay. Uh let's say these are the

10:34:53nodes are not there. Okay. But now I

10:34:55have to create this node because uh I

10:34:57have to handle the condition statement.

10:34:58Now let's uh uncomment that.

10:35:01Now here I'll just try to add the

10:35:03condition. Now I'll remove this one.

10:35:04Okay. Now here only you have to add the

10:35:06condition. Now see if you want to add a

10:35:10condition. Okay. If you want to add a

10:35:12condition, so you have to use this

10:35:14function

10:35:18add conditional age. Okay. There is a

10:35:21function inside graph called add

10:35:22conditional edge. inside that you have

10:35:25to you have to give a

10:35:28uh you have to give a function object

10:35:31okay condition function object okay

10:35:33condition function object and you have

10:35:35to provide from where to it will go to

10:35:37the conditional function let's say you

10:35:40can see condition will start after this

10:35:42analyze content okay so here I'll just

10:35:44write

10:35:46analyze content okay analyze content

10:35:52Yeah.

10:35:54Now from analyze content it will either

10:35:56go to the

10:35:58it will either go to the approved post

10:36:00flag for review or rejected post. Okay.

10:36:02Now I have to write this conditional

10:36:04function. Now separately I have to

10:36:06create another function.

10:36:09Let me show you the function. So this is

10:36:11the function guys. Okay. This is the

10:36:14function. Now we have to import this

10:36:16literal. Okay. Literal from this typing.

10:36:21Okay. Now see whenever you are writing

10:36:24any kinds of condition this code would

10:36:25be common. See I have named this

10:36:27function as check condition and it will

10:36:29also take this state okay and it will

10:36:32return

10:36:33uh it will return the nodes. Okay you

10:36:37can see we are giving the nodes name

10:36:39analyze content approved. Okay sorry

10:36:43approved post flag for review and reject

10:36:46post. That means these are the node

10:36:47approve post flag for review reject

10:36:49post. Okay, because these are my node

10:36:51name, right? So this function basically

10:36:53what happens? See this function takes

10:36:55this state and it returns either one of

10:36:57this particular node. Okay, based on the

10:36:59condition. Now let's try to see the

10:37:01condition.

10:37:02See if my state flag I already

10:37:05calculated the state flag guys here

10:37:06right if it is if it is uh let's say

10:37:09approved that means my approved post

10:37:13approved post node would be written that

10:37:15means this node would be written that

10:37:17means that time only this node would be

10:37:19executed not these are the nodes okay

10:37:21then

10:37:24if uh my content flag is equal to review

10:37:26that means only flag for review will be

10:37:28executed that means if my flag post is

10:37:32equal L2 is equal to uh let's say

10:37:35uh review that means this this

10:37:37particular node would be executed not

10:37:38these two nodes then if uh either none

10:37:43of them then rejected post post would be

10:37:45written that means if it is not approved

10:37:48post and flag for review then reject

10:37:50node would be executed okay neect node

10:37:52would be returned so this is the logic

10:37:53we have written here that's why we are

10:37:55using this literal literal means you can

10:37:58return the node object here okay you can

10:38:00return the node object Okay, that's why

10:38:02we have to give this particular syntax

10:38:04and this syntax uh basically uh

10:38:06recommended by langraph. If you check

10:38:08the langraph documentation, you will see

10:38:10that they have also uh given the same

10:38:12thing. Okay, so this is the condition

10:38:14function you have to write whenever you

10:38:16want to use this kinds of conditional

10:38:18edges. Okay, if you want to handle this

10:38:20kinds of conditional scenario that time

10:38:22you have to write this kinds of

10:38:23function. Now this function object you

10:38:25have to just provide here. Okay, after

10:38:27this analyze content, you have to

10:38:29provide this kind uh this this function

10:38:31object check condition. That's it. Okay,

10:38:34now what will happen after analyze

10:38:36content? This particular uh connection

10:38:39would be either with this particular

10:38:42node or with this particular node or

10:38:44with this particular node. Okay, but you

10:38:45don't know which one because it will

10:38:47check the condition based on the

10:38:49condition which condition will match it

10:38:51will go to that particular node. Okay,

10:38:53that's why we have written the

10:38:54condition. Okay, I hope you got it. Now

10:38:57this connection is also done. This

10:38:59connection is also done. Now it will uh

10:39:01do the connection either one of them.

10:39:03Okay, now you have to make this kinds of

10:39:05connection. That means approve post will

10:39:07be connected to the end. Flag for review

10:39:09will connect to the end and reject post

10:39:11will also connect to the end. Okay, now

10:39:13let's do uh do this connection. So here

10:39:16I will

10:39:19just do the connection. So this is the

10:39:20connection. You can see approved post is

10:39:23connected to the end. Then flag for

10:39:26review which is also connected to the

10:39:27end.

10:39:29Okay. Then uh reject post will be also

10:39:31connected to the end. Then we are

10:39:33compiling the graph. Now if I execute

10:39:36the graph uh okay check condition is not

10:39:39defined because I have to execute this

10:39:40function.

10:39:42Uh lit is not defined. Okay sorry I have

10:39:45to also import it first of all. Then I

10:39:49will execute.

10:39:51Then I will compile the graph. After

10:39:54that now let me show you the workflow.

10:39:56Now see guys this workflow and this

10:39:58workflow is same. Okay I hope you got it

10:40:01guys how we are handling this kinds of

10:40:04conditional scenario. Okay, I know I

10:40:07hope you already got it right. Only the

10:40:10change is that

10:40:12you have to use this kind use this

10:40:15function add conditional edges and this

10:40:17add conditional ages takes the uh

10:40:19previous connection. Okay, previous

10:40:21connection and it takes the condition uh

10:40:24condition function because condition

10:40:26function will decide uh after that which

10:40:29node should be connected. Okay, either

10:40:31approved post, either flag post, either

10:40:33rejected post. Okay, but it should not

10:40:35be executed all together. It would be

10:40:37only executed either one of them based

10:40:39on the condition. This is what we have

10:40:41done guys. Now let me check this

10:40:43workflow. So I'll invoke this workflow.

10:40:46First of all, let's define initial

10:40:48state.

10:40:49So this is our initial state. So first

10:40:52of all, I've given the post content.

10:40:53Check out this amazing new product and

10:40:56buy now. And then I've given the user

10:40:57reputation. Let's say this is the

10:40:59trusted user already registered user.

10:41:01Then we're invoking the workflow and

10:41:03this workflow will give me a result

10:41:08result. Okay. Now if I print this result

10:41:12now see guys this is the post user has

10:41:15given user reputation is trusted user

10:41:17and we are formatting that particular

10:41:20uh post. So you can see user trusted

10:41:22user says check this amazing product buy

10:41:25now. Content flag is rejected. Okay. Why

10:41:28it is rejected? because it is having buy

10:41:30now and we already did the condition

10:41:32check here

10:41:35uh buy now by now here. So if uh buy now

10:41:39is present in the content it would be

10:41:40rejected. Okay. So that's why

10:41:44uh you can see content flag is rejected

10:41:47and result is also post automatically

10:41:49deleted due to the policy violation.

10:41:51Okay. Now let's say here I'm not giving

10:41:53this by now. By now I will remove it.

10:41:56Now if I execute the workflow again. Now

10:41:58see uh right now it is approved because

10:42:00it doesn't have any kinds of violation.

10:42:02Uh again user is trusted user so it

10:42:04doesn't need any kinds of approval.

10:42:06Okay. Uh it doesn't need any kinds of

10:42:08review that's why directly approved and

10:42:10post published successfully. Okay. Now

10:42:12let's say user is new user.

10:42:18New user. Okay. Now see although this uh

10:42:22um I mean content is fine but still it

10:42:25will uh okay I have to execute

10:42:30then result huh so although see although

10:42:32this uh content is fine but still it is

10:42:35waiting for the review because I have to

10:42:37first of all check the user because this

10:42:39is uh he is not registered in my

10:42:41platform that's why it is uh going for

10:42:44the review and you can see post sent to

10:42:46the human moderation P okay I hope you

10:42:48got it That's how this conditional

10:42:50workflow is working. Okay, that's how

10:42:53this conditional uh conditional workflow

10:42:55is working. So whatever message you are

10:42:57giving based on that it is first of all

10:42:58checking the condition. Okay, after

10:43:00checking the condition it is executing

10:43:02either one of this particular node.

10:43:04Okay, not all the nodes altogether. I

10:43:06hope you got it guys. So this is what

10:43:08our nonLM based workflow. Now let's try

10:43:11to discuss the LM based workflow as

10:43:13well. So guys, so far we have seen the

10:43:15nonLM based workflow, conditional

10:43:18workflows and I showed you how it works,

10:43:20right? How we can handle the conditional

10:43:22scenario. Now let's try to learn the LLM

10:43:25based conditional workflows. Okay, now

10:43:27we'll be uh using large language model.

10:43:29But previously I didn't use any kinds of

10:43:31large language model here. Okay,

10:43:32everything I handled manually. So see if

10:43:35I u um first of all explain the problem

10:43:39statement we're going to uh create here.

10:43:41So this is going to be a um review reply

10:43:45system. Review reply system means let's

10:43:47say here uh user will give a review.

10:43:50Okay, user will give a review and what

10:43:53we have to do we have to uh give a reply

10:43:56to that particular review. Now review

10:43:58can be anything whether it should be a

10:44:01positive review, it should be a negative

10:44:02review. Let's say uh we are working we

10:44:06are working in a uh [clears throat] tech

10:44:07company right we are uh selling a

10:44:09product let's say we have created a

10:44:11software right so in that software uh uh

10:44:15let's say I I have uh made a

10:44:18subscription plan and some of the user

10:44:19have taken their subscription okay now

10:44:22definitely they will be using your

10:44:23product and uh based on the product

10:44:25actually they will uh give some kinds of

10:44:28uh like um I mean review right on on

10:44:30your product and uh as a let's say

10:44:34company owner what you have to do

10:44:36definitely you have to take take care

10:44:38about the um uh user review okay

10:44:40whatever user is giving the review uh

10:44:43you have to take care if they are giving

10:44:44the positive review that means it's

10:44:46completely fine your product is amazing

10:44:48okay you don't need to change inside

10:44:49your product but if they're getting some

10:44:53if they're giving some negative review

10:44:55that means if they're having some of the

10:44:56issue definitely you have to handle

10:44:57their issue right so you just think in

10:44:59that way so basically user will give a

10:45:01review. First of all, what we'll do is

10:45:03just try to check the sentiment of that

10:45:05review whether uh this is a positive

10:45:08review or whether this is a negative

10:45:10review. And whenever I want to do this

10:45:12uh sentiment uh check, right? So

10:45:14definitely I have to use a large

10:45:15language model here. So here I'm I'll be

10:45:18using a large language model. And this

10:45:20large language model either will return

10:45:22the positive,

10:45:24either it will uh return the negative.

10:45:26That means this is also a structured

10:45:28output. And if I want to get the

10:45:29structured output guys, what I have to

10:45:31do? I have to use the pientic. I already

10:45:33uh showed you in my previous lecture as

10:45:35well whenever I created that parallel

10:45:37workflow that time I also told you with

10:45:39the help of pientic uh you can uh get

10:45:42the structured output. Okay, you have to

10:45:43just create a schema and you have to

10:45:45provide the schema to the model and

10:45:46model will work in uh uh in that way and

10:45:49for this you have to learn the pyic and

10:45:51pyic video I already have in my

10:45:52playlist. Please try to check that.

10:45:54Okay. So this particular node will

10:45:57return either positive or negative based

10:45:59on the review I will be using a large

10:46:01lang based model. Large lang based model

10:46:02will uh uh like uh analyze that uh

10:46:05analyze the sentiment and based on that

10:46:08it will give me positive either

10:46:09negative. Okay. If it is positive so see

10:46:11here your condition statement is

10:46:13working. If let's say this particular

10:46:16sentiment is positive that means I'll

10:46:17generate a positive response. Okay

10:46:19positive reply to the customer. Okay.

10:46:22But if it is negative, if this review is

10:46:25negative, sentiment is negative. So

10:46:27again, I'm running another node called

10:46:29run diagnosis. Okay. So what this run

10:46:32diagnosis will do? Basically I want to

10:46:35uh analyze this particular review uh in

10:46:39little more depth because I want to

10:46:42understand what is the uh what is the

10:46:44issue they are having. Okay. What is

10:46:46their main concern? I have to analyze

10:46:48that. That's why I will be running

10:46:49another nodes called run diagnosis. So

10:46:52this run diagnosis will return three

10:46:53things. One is the issue type. First of

10:46:55all, it will return the issue type. What

10:46:56is the issue related? Whether the issue

10:46:58is coming from UI uh UX okay or whether

10:47:02it is coming from performance or whether

10:47:05it is kinds of bugs or whether they need

10:47:07any kinds of support or any other

10:47:08things. Okay. I have to understand the

10:47:10issue type. Then I have to understand

10:47:11the tone whether they're angry,

10:47:13frustrated, disappointed or calm. Okay.

10:47:15I have to understand the user. Then I

10:47:17have to understand their urgency.

10:47:19whether this urgency is low, medium or

10:47:21high. Okay, based on that definitely I

10:47:23have to uh take the actions. Okay,

10:47:26otherwise I can't sell my product

10:47:28anymore. Right then once I got these are

10:47:30the let's say issue type based on that

10:47:33okay I will be generating a reply

10:47:36negative uh like reply to that

10:47:39particular user let's say I'll tell okay

10:47:41you are getting this kinds of UI related

10:47:43problem you you you are very angry okay

10:47:46and your urgency is high so definitely

10:47:48uh we'll our team will look into that

10:47:50immediately or if it is low uh so you

10:47:53just wait for 3 to two days I will look

10:47:55into that okay so this kinds of reply

10:47:57will try to generate Okay, I hope you

10:47:58got it this workflow. Uh now you can see

10:48:01here this is the workflow. This is a

10:48:03conditional workflow but we'll be

10:48:04solving with the help of llm. Okay, so

10:48:06we will be ling l we'll be using the lm

10:48:09uh two u uh two times here. So in this

10:48:12particular nodes and here also we'll be

10:48:13using the llm to run this diagnosis I

10:48:15need another llm. Okay, with help of llm

10:48:17we'll try to generate these are the

10:48:19structure and again this should be a

10:48:21structured output. Okay. So every time

10:48:23whenever I run this nodes run diagnosis

10:48:25node LM will return three things issue

10:48:27type, tone and urgency again I have to

10:48:29use pientic for that. Okay. Pentic for

10:48:32that we'll be creating a schema and

10:48:34we'll generate this structure output.

10:48:36Okay. So this is what we'll be

10:48:37implementing guys right now. And for

10:48:38this whatever state I need I already

10:48:40created the state as you can see I named

10:48:42it as review state inherited with type

10:48:44dict. So first of all whatever review

10:48:46user will give me I will store in the

10:48:47review and this should be a string and

10:48:49our this node will try to find the

10:48:51sentiment okay sentiment of the review.

10:48:54So either it would be a positive or

10:48:56negative. You can either create it as a

10:48:58string. Either you can create it as a

10:48:59literal type. In literal type you can

10:49:01mention uh because this is a category

10:49:02right? Either it would be a positive or

10:49:04negative. It kinds of category. So

10:49:06that's why we have taken this literal

10:49:07type. You can also take a string type.

10:49:09It will also work. Okay. I have taken

10:49:10literal type. So positive and negative.

10:49:12Okay. Sentiment should be positive or

10:49:13negative. And uh diagnosis. So diagnosis

10:49:16will return three things. That means uh

10:49:19tone type, tone and angry. Okay. So this

10:49:22this should this structure should be a

10:49:24dictionary type you can see this is the

10:49:25key this is the value this is the key

10:49:26this is the value right so that's why I

10:49:28have taken this should be a dictionary

10:49:29type and the response whatever response

10:49:32I'll try to generate whether I should

10:49:33I'll generate a positive response or

10:49:35negative response it will come here and

10:49:36this again this should be a string type

10:49:38okay I hope you got it now we can start

10:49:40coding inside lang graph guys okay so

10:49:43what I'll do guys I'll create another

10:49:44file here

10:49:46let's create another file

10:49:49I'm going to name it as Seven

10:49:53uh

10:49:56review workflow

10:50:01review

10:50:06workflow

10:50:07dot ip yv

10:50:11I'll take the code cell select the

10:50:14kernel

10:50:16fine so the first thing guys what I have

10:50:18to do I have to import all the necessary

10:50:20libraries so let's port and here we'll

10:50:21be using LLM. So again I'm going to use

10:50:23my uh open AI model. I already have the

10:50:26API key inside my env. So you just also

10:50:29need to generate API key. Okay. You can

10:50:31either use any other model as well. It's

10:50:33completely fine. Uh

10:50:36yeah. Then after that uh I need uh this

10:50:39uh typing

10:50:42type dict and literal from typing. Then

10:50:45I also need to load this env. For this I

10:50:47need this load env.

10:50:50And I also need to import the pi dantic.

10:50:52Okay, because I have to generate a

10:50:53structured output. So pi dantic I need

10:50:56best model and field. So please try to

10:50:58see in my uh playlist guys this tutorial

10:51:01is already there. So here is the

10:51:03playlist guys complete aentici course

10:51:05and here is the pentic video. Please try

10:51:08to go ahead with this pyic you'll try to

10:51:09understand. Okay and previously I also

10:51:13discussed about this uh uh sequential

10:51:15workflow and parallel workflow. Okay

10:51:17that this concept you have to also

10:51:19understand. Okay, if you're

10:51:20understanding this um uh conditional

10:51:23workflow because each of the workflow is

10:51:26uh something is like connected with each

10:51:29other that means if you can understand

10:51:32uh our workflow then you can relate with

10:51:35another workflow. Okay. So that's why

10:51:37this is required and the way I have

10:51:39structured this course course right step

10:51:41by step this is interconnected between

10:51:44so if you missed out the previous

10:51:45sessions so I think it would be a little

10:51:47bit confusing okay for the current

10:51:49session so that's why I'm telling you

10:51:51just try to go ahead with the previous

10:51:52session yeah

10:51:55so yeah so after that I'll first of all

10:51:57load the environment variable

10:52:03okay now let's initialize the model LLM

10:52:06model. So here I have taken GPT photo

10:52:08mini. Yeah. Now I told you I have to

10:52:12generate this uh I have to create this

10:52:14uh structure. So yeah. So I told you

10:52:18this fine sentiment nodes will give you

10:52:21two things either positive or negative.

10:52:23Okay. For this I'll create a a

10:52:25structured output and for run diagnosis

10:52:28node I'll create a structured output.

10:52:29That means it will generate three

10:52:30things. One is issue type, tone and

10:52:32urgency. Right? So for this let's try to

10:52:35write this pyic class.

10:52:38So this is the first class I have

10:52:40written for the sentiment.

10:52:43Okay. So basically this will uh return

10:52:46two uh uh two things positive or

10:52:48negative based on the

10:52:50review. Okay. So this is going to be my

10:52:53first uh actually structured output from

10:52:55my LLM. Okay. So maybe I can show you.

10:52:58So let's create a object

10:53:01of a model.

10:53:04Yeah. So let's say structured model uh

10:53:06is equal to model dot with structured

10:53:07output I have given the sentiment

10:53:09schema. Now see if I show you the

10:53:11output.

10:53:13Let's say I have generated uh structured

10:53:15model. Now if I give any kinds of

10:53:18uh if I give any kinds of let's say

10:53:20prompt here

10:53:23let's say this is the prompt. What is

10:53:24the sentiment of the following review?

10:53:26This software is too good. Okay. Now

10:53:28I'll give it to my model. Now see here

10:53:32I'm not using the direct model. I'm

10:53:34giving my structured model. Okay. Now

10:53:36I'm doing the invok operation and I'm

10:53:38only getting the sentiment.

10:53:40Now see

10:53:43see positive it will either return

10:53:45positive or negative. Now let's say here

10:53:47I've give two bat. Now this will return

10:53:51me negative. Okay. So this is the

10:53:53structured output and if you want to get

10:53:55this kinds of output you have to use the

10:53:56py okay schema for that. So the same

10:53:59thing I'll also write for my diagnosis

10:54:03uh node.

10:54:05So this is for my diagnosis node. Okay.

10:54:08So again I'm inheriting with the base

10:54:09model of the pentic and here I have

10:54:11written the issue type tone and urgency.

10:54:14So this uh node will return this three

10:54:16thing issue type. Now here I have given

10:54:18some of the hint like I need uh issue

10:54:20type should be UIX performance bug

10:54:22support and others. Here I have given

10:54:24the field description the category of

10:54:26the issue mentioned in the review. Then

10:54:28tone, angry, frustrated, disappointed,

10:54:30clam, the emotion, tone expressed by the

10:54:32user. Urgency, low, medium, high. How

10:54:36urgent to uh or critical the issue

10:54:39appears to be. Okay. So this thing I

10:54:41have discussed in my pentic uh uh class.

10:54:44Okay. So I already talked about what is

10:54:47this um literal, what is this field,

10:54:50what is the description, each and

10:54:52everything I have already discussed.

10:54:53Okay. So this is another structured

10:54:55output we have created. Okay. Now you

10:54:57can also test for this you can create

10:54:58another uh another model. So let's say I

10:55:03have named this model as structured

10:55:05model to model uh uh with structured

10:55:08output and we are giving the diagnosis

10:55:10schema here and this is going to be my

10:55:12another object. Okay. Okay. I'm getting

10:55:14an output. Okay. I have to execute this

10:55:16one. Now I'll execute. Now see this is

10:55:19working. Now you can also give a prompt

10:55:21and you can

10:55:23uh you can uh basically uh do the

10:55:26analysis. Let's say

10:55:29uh now I'll call this model.

10:55:32Okay. Uh structured model 2. Now I'm

10:55:34giving the same prompt. Now I want to

10:55:37see the

10:55:39uh output.

10:55:42Now see uh issue type is other tone is

10:55:45disappointed. U is medium. Okay. So this

10:55:47is returning three things. Okay, I hope

10:55:49you got it. Now, uh what I'm going to

10:55:52do, I'm going to simply um

10:55:56um create the

10:55:58um state. Okay, now I have to prepare

10:56:00the state. So, let's define the state,

10:56:02the same state.

10:56:04So, this is the state review state uh

10:56:06review, sentiment, uh diagnosis and uh

10:56:09response.

10:56:11It's done. Now, I'll define the nodes.

10:56:17Okay, I have given my state here. Now

10:56:20add the nodes.

10:56:25So now see the node connection. Uh see

10:56:27the nodes how many nodes you are having.

10:56:29Find sentiment then you have positive

10:56:32response. You have brand diagnosis. You

10:56:34have negative response. Okay these are

10:56:35the nodes. Let's add one by one.

10:56:40So these are the note find sentiment

10:56:42positive response run diagnosis and

10:56:44negative response. Okay. Okay. Now I

10:56:45have to create these other function one

10:56:47by one. Okay. So let's create

10:56:51uh

10:56:53first of all I'll create find sentiment.

10:56:57So this is the function. This is the

10:56:59note find sentiment. It will take the

10:57:01state and here I have given a prompt for

10:57:03the following review. Please uh find out

10:57:06the sentiment and here we are giving the

10:57:08review. Uh review is present inside our

10:57:10state. Okay. And here we are getting the

10:57:12sentiment from the model and we are

10:57:14calling the structured model that means

10:57:15the first model and first model I think

10:57:17returns the only the sentiment whether

10:57:18positive or negative. Okay, we're

10:57:20getting the sentiment and we're updating

10:57:21the sentiment and we're returning this

10:57:23particular sentiment only. Okay, instead

10:57:24of returning the whole state then

10:57:28uh I'm going to write the next nodes

10:57:31which is uh

10:57:33positive response.

10:57:38Positive response. Okay. So again it is

10:57:40taking the state and we are preparing

10:57:42the prompt. Write a warm thank you

10:57:44message in response uh uh to this

10:57:47review. So we are giving the review also

10:57:49kindly ask user to leave feedback on our

10:57:52website. Let's see that means if uh the

10:57:54review is completely positive other time

10:57:56I want to just give a thank you message

10:57:58to the user. Okay. And I will tell also

10:58:00just please leave a feedback to the

10:58:02website. Then once it is done we are

10:58:04giving to the model and see we are not

10:58:06using any structured model here. we are

10:58:08giving the main model because why here I

10:58:11don't need any kinds of structured

10:58:12output because it will only generate

10:58:14some kinds of thank you message okay and

10:58:16I don't need any kinds of structured

10:58:17output that's why I'm giving the

10:58:19original model and whatever content it

10:58:21is returning I'm just uh saving inside

10:58:23my response okay done now next thing I

10:58:28have to create my diagnosis

10:58:33run diagnosis

10:58:35so this is the run diagnosis again it is

10:58:37taking the state and here I preparing

10:58:38the prompt diagnosis this negative

10:58:40review we are giving the review uh

10:58:42return issue type tone and urgency so we

10:58:45are executing this structure to model

10:58:49okay and basically this will return this

10:58:51three things and whenever we are getting

10:58:53we are updating my uh diagnosis you can

10:58:57see we're updating the diagnosis because

10:58:58diagnosis type is dictionary and this is

10:59:00also a dictionary type output okay we

10:59:03are doing that

10:59:06now once it is I'll do it for my next

10:59:09one. Uh negative response.

10:59:13Negative response. So we are passing the

10:59:15state. Then uh we are taking the

10:59:19diagnosis. Okay. Then we are preparing

10:59:21the prompt. You are a supportive

10:59:22assistant. You uh the user had a issue

10:59:25type then tone then urgency. Based on

10:59:30that just write a empa uh empathetic

10:59:33helpful resolution message. and we are

10:59:36involving the actual model and whatever

10:59:39response we are getting we are updating

10:59:40the response. Okay. So that's how we are

10:59:42getting all of the node one by one. Now

10:59:44my node is ready. Now what I have to do

10:59:46guys I have to

10:59:48um make the age connection. Now let's do

10:59:51the edge connection.

10:59:55So add ages with condition H. So first

10:59:59[clears throat] of all the connection

11:00:00should be start to find sentiment.

11:00:04Start to find sentiment.

11:00:06Okay, start to find sentiment then you

11:00:09have to uh take the conditional is right

11:00:12now because either it will go to the

11:00:14positive response either it will go to

11:00:15the uh run diagnosis. Okay. So here

11:00:18we'll just write the condition right

11:00:20now. Uh

11:00:24yeah so this is the conditional edges.

11:00:27So see it will uh start from fun uh find

11:00:32sentiment and either it will connect to

11:00:34the positive either it will connect to

11:00:35the negative. So that's why we have

11:00:37taken the find sentiment. Now we have to

11:00:39write the check sentiment function. I

11:00:41think previous also we have created a

11:00:43conditional function right and this

11:00:44conditional function is return uh

11:00:46returning your notes based on the

11:00:48condition either it will return this

11:00:49note, this node or this node. Okay,

11:00:51we'll write the same thing here. So

11:00:52let's write this function. Uh very

11:00:55simple function that's I told you this

11:00:57code would be common everywhere whenever

11:00:59you are using conditional based

11:01:00workflow. So see this is the function I

11:01:02have written check statement uh

11:01:05sentiment it will take the state and it

11:01:07will return the uh nodes either positive

11:01:11response node. Okay either positive

11:01:13response node either run diagnosis node

11:01:16that means this run diagnosis node.

11:01:18Okay, based on the condition now where

11:01:20I'll check the condition in the

11:01:22sentiment. If the sentiment is positive,

11:01:24I'll return the positive node, positive

11:01:26response node. Okay, that means this

11:01:27node will be return or if it is

11:01:30negative, I'll return this run diagnosis

11:01:33node. That means this node would be

11:01:34written. Okay, I hope you got it guys.

11:01:37So that's why we have to give this

11:01:39particular function here. Now this

11:01:40function will decide which node should

11:01:42be called. Okay, so once it is done, now

11:01:45let's say this connection is done. Okay,

11:01:47now this connection is done. Now I have

11:01:48to make the other connection. Now what

11:01:50will happen?

11:01:52Uh this uh positive will connect to the

11:01:55end. Then run diagnosis will connect to

11:01:58the negative response and negative

11:01:59response will connect to the end. Okay.

11:02:01We'll try to make this connection right

11:02:02now.

11:02:05So this is the connection.

11:02:08Yeah. So you can see positive response

11:02:09is connected to the end. Then run

11:02:13diagnosis will connected to the negative

11:02:15response. Okay. If let's say diagnosis

11:02:17run successfully, we got the issue type,

11:02:19tone and urgency, we'll connect to the

11:02:21negative. We'll generate the negative

11:02:23response and negative response will

11:02:24connect it to the end. It is uh

11:02:26connected to the end. Okay, I hope you

11:02:28got the connection. Now let's uh define

11:02:30the workflow. Compile the workflow.

11:02:34Compile the workflow. Now let's execute.

11:02:36Done. Now if I show you the workflow.

11:02:41So this is the workflow guys. Now this

11:02:43workflow and this workflow is same. You

11:02:45can check uh find sentiment positive,

11:02:48run diagnosis negative and okay

11:02:50completely fine. Now let's uh invoke

11:02:53this workflow.

11:02:57So what I can do

11:02:59I can give a positive

11:03:03positive uh uh positive review first of

11:03:06all.

11:03:08So I will generate from chat JP. I'll

11:03:10just tell generate a

11:03:15Write a positive

11:03:21review for a

11:03:25tech software

11:03:31in short.

11:03:36Okay. Now I'll copy this and what I'm

11:03:39going to do I'm going to add inside my

11:03:43initial state.

11:03:51So let me define my initial state.

11:04:04So in the review itself I'll try to

11:04:06write my

11:04:17Now let's invoke the workflow

11:04:25and this will give me the result.

11:04:32Now I'll print the result.

11:04:36Now see this uh this is the review and

11:04:39the sentiment is positive and response

11:04:42is also positive. Their username thank

11:04:44you for your wonderful field uh uh here

11:04:48to that our software made such a

11:04:49positive. Okay, your kinds of word means

11:04:51a lot blah blah blah and also please uh

11:04:54give a review in inside our website.

11:04:57Okay, now let's give a negative response

11:05:00as well. Now I'll generate another one.

11:05:03Now uh negative review.

11:05:16Now what I can do? I can copy the same

11:05:18code

11:05:22only. I'll just change this preview.

11:05:35So I will invoke the result uh workflow

11:05:39and print the result.

11:05:57Okay, now we are getting the negative.

11:06:00You can see this uh sentiment is

11:06:01negative and diagnosis we got. Issue

11:06:04type is performance, tone is frustrated,

LangGraph Iterative Workflows Explained

11:06:06urgency is high and this is the uh

11:06:08negative response we're writing. We are

11:06:11here to help you with the performance

11:06:12issue. Hi user blah blah blah. Okay. So

11:06:15amazing that means it's working fine.

11:06:17Okay. And I think you got how we have

11:06:19created the entire workflow with the

11:06:21help of this conditional workflow.

11:06:24Get it? So now I think you can create

11:06:26any kinds of conditional workflow either

11:06:28it is non LLM based or LM based it

11:06:30doesn't matter you can create it only

11:06:32you just need to understand this

11:06:34conditional connection okay if you

11:06:35understand this conditional connection

11:06:38then you will be able to create any

11:06:39kinds of conditional workflow. So guys

11:06:42in this video I'll be discussing about

11:06:45the last workflows uh inside langraph

11:06:48which is iterative workflows. So far I

11:06:51have discussed about uh sequential

11:06:53workflows, parallel workflows,

11:06:55conditional workflows. Okay, each and

11:06:57everything I have already covered. If

11:06:59you haven't checked those videos, uh it

11:07:01is already available inside my playlist.

11:07:03Uh I have given the link in the

11:07:05description from there you can check it

11:07:07out. So uh this is going to be a very

11:07:10important and interesting workflows guys

11:07:12inside Langraph because with the help of

11:07:14iterative workflows you can perform the

11:07:17looping operation. So let's say whenever

11:07:19you are performing any task and uh if

11:07:21you feel like uh this uh task needs some

11:07:24more improvement you can continuously

11:07:27actually perform the looping operation

11:07:29with the help of this iterative

11:07:30workflows. So we'll try to understand

11:07:32this one. So if you found my uh content

11:07:36useful guys and if you are really

11:07:38learning okay from this particular

11:07:40playlist uh I would like to request you

11:07:42please try to subscribe to my channel

11:07:44and hit the like and please try to share

11:07:46this with your friends and family. So if

11:07:48you are supporting me guys if you are

11:07:50supporting my channel I'll be getting

11:07:52more motivation to bring this kinds of

11:07:54content. So if you uh see guys uh here

11:07:58is the iterative workflows we'll be

11:08:00discussing about. So previously I

11:08:03already discussed about all the

11:08:04workflows um I told you about uh inside

11:08:08langraph like sequential workflows you

11:08:11have understood the LLM non LLM based

11:08:13okay then I have discussed about the

11:08:16parallel workflows then I discussed

11:08:18about the conditional workflows okay now

11:08:20we'll try to understand this iterative

11:08:22workflows so you can see this is the uh

11:08:26iterative workflows graph I already

11:08:28created this particular graph so guys to

11:08:30make you understand this iterative

11:08:32workflows. I'm going to take one amazing

11:08:34example. I'm going to take Facebook post

11:08:37generation example. So what happens?

11:08:40Let's say I want to post uh anything on

11:08:43my Facebook. Let's say I want to post uh

11:08:45any kinds of tech related uh content on

11:08:48my Facebook. So nowadays actually what

11:08:51will happen? I'll be definitely using

11:08:53chat GPT or any other large language

11:08:56model let's say provider and I'll try to

11:08:59generate that content. Okay. And uh what

11:09:02I will do, I will uh um copy that and I

11:09:05will post on my Facebook. Okay. But it's

11:09:08not like that. At the very first time,

11:09:11you will be getting the perfect post,

11:09:12right? Let's say you have given a prompt

11:09:15uh and it has generated something for

11:09:17the first uh time, right? It's not like

11:09:19that that should be 100% uh perfect and

11:09:22optimized for for you for your needs. So

11:09:26maybe you just need to do some little

11:09:27bit let's say change or you need some

11:09:31improvement you need some optimization.

11:09:33So again what you will do you will you

11:09:35will send it to the LLM and you will try

11:09:37to tell okay try to optimize it more.

11:09:40Okay. So once you have let's say

11:09:42optimized another one again you will try

11:09:44to review that evaluate that if it is uh

11:09:46perfect for you then you will try to

11:09:48approve and you will post it over the

11:09:50Facebook. Okay. Otherwise you will uh

11:09:51again uh do the optimization. Okay. So

11:09:54that's how let's say we usually generate

11:09:57any kinds of content from the LLM right.

11:09:59So why not we can uh create a automatic

11:10:01workflow. So this workflow will

11:10:03automatically generate u let's say u

11:10:06Facebook content u based on the topic

11:10:09you have provided. Then after that it

11:10:11will automatically evaluate that whether

11:10:13this content is perfect or not. Okay.

11:10:15Let's say after doing the evaluation it

11:10:17found okay this is uh useful this is

11:10:19fine then it will approve. then you can

11:10:22post over the Facebook otherwise it will

11:10:24send it send it to the another let's say

11:10:26nodes and that nodes will try to do the

11:10:30optimization okay optimization it will

11:10:32optimize

11:10:34like um uh it will do some improvement

11:10:37then after that um again it will try to

11:10:40send it to the evaluator okay evaluate

11:10:42will again evaluate that if found let's

11:10:44say this content is fine then it will

11:10:46approve otherwise again it will try to

11:10:48send it to the optim optimizer then

11:10:50optimizer again it will optimize the

11:10:53content and it will again send it for

11:10:54the uh evaluation. Okay, so that's how

11:10:57this kind this particular loop will

11:10:59continuously run unless and until this

11:11:01content is approved. Okay, so this is

11:11:03called actually iterative workflows. So

11:11:05to make iterative workflows guys uh we

11:11:08are using um conditional workflows as

11:11:10well as you can see because here is the

11:11:12condition if uh this content is

11:11:15completely fine after doing the

11:11:16evaluation it will approve okay

11:11:18otherwise it will send it to the

11:11:20optimizer and optimizer will u like do

11:11:22the improvement and it will again send

11:11:24it to evaluator okay so here is the

11:11:27looping concept and this looping concept

11:11:29we call it as a iterative workflows

11:11:31inside lang graph. Now we'll try to

11:11:33implement this particular workflows.

11:11:34Okay, inside lang graph and for this

11:11:36whatever uh uh state I need guys I

11:11:39already prepared the state as you can

11:11:40see this is the state I named it as post

11:11:42state and I inherited with the type

11:11:44dict. So first of all I have taken a

11:11:46variable called topic. So user will pass

11:11:49a topic. Okay for post generation let's

11:11:52say I have given a topic related uh

11:11:54let's say agentic AI. So it will

11:11:55generate some kinds of post related

11:11:57agentic AI. Okay. So that uh let's say

11:12:00I'll send it to the generate llm. Right

11:12:02here we'll be using a llm. Then this uh

11:12:06uh this uh llm or let's say this node

11:12:08will generate the post. Okay. Let's say

11:12:10this post I'm going to save inside this

11:12:12post variable. And this is also going to

11:12:13be string type data. Then after that

11:12:16we'll try to send it to the evaluator.

11:12:17Evaluator will also use a llm right

11:12:19large language model. And it will

11:12:21evaluate that particular result. And it

11:12:23will send two things. One is the

11:12:25approved another is the needs

11:12:27improvement. Okay. If it is sending uh

11:12:29returning approved that that means this

11:12:32post is completely fine we can directly

11:12:34approve that and if it is sending needs

11:12:36improvement okay that time we'll try to

11:12:37send it to the optimizer okay and it

11:12:40will also give you some kinds of

11:12:41feedback okay let's say what should be

11:12:43the improvement it will also send it to

11:12:45the optimizer this feedback will try to

11:12:47save inside this particular uh variable

11:12:50then

11:12:51uh we'll also try to see the iteration

11:12:54iteration means let's say it has given

11:12:56this uh content to to the evaluator.

11:12:58Evaluator tells okay uh this needs the

11:13:01improvement again it will send it to the

11:13:03optimizer. Optimizer will try to again

11:13:05generate a new uh or let's say optimize

11:13:08that particular post and it will again

11:13:10send it to the evaluator. That means one

11:13:12iteration is done. Then again it

11:13:14evaluator will try to check that again

11:13:16let's say it will tell it needs the

11:13:18improvement again it will try to send it

11:13:19to the optimizer. optimizer again it

11:13:21will improve that again we'll center the

11:13:23evaluator that that means iteration goes

11:13:25to that means how many loop it is

11:13:27performing we'll try to log that

11:13:29particular informations in this

11:13:30iteration variable okay and here we'll

11:13:32also set a maximum iteration let's say

11:13:36uh if you don't set this maximum

11:13:37iteration what what is the possibility

11:13:39let's say if you're using any very poor

11:13:41large language model that time let's say

11:13:43every time whatever content it will

11:13:45generate maybe your evaluator will not

11:13:48evaluate that or let's say approve

11:13:50that time this particular loop will

11:13:52continuously running. Okay, we'll not

11:13:54get any final result. That's why we'll

11:13:56set a maximum iteration let's say four

11:13:58to five. So after four or five uh let's

11:14:00say iteration this particular loop will

11:14:03break and whatever content we got after

11:14:05four or five iteration that I will try

11:14:07to make it as final post. Okay, that's

11:14:09why this maximum iteration will also

11:14:10set. Then whatever let's say post we are

11:14:13generating whatever feedback we are

11:14:16getting okay from this evaluator will

11:14:18also try to save inside this particular

11:14:20variable as a history that's why we made

11:14:22it as post history and feedback history

11:14:25that means it will continuously add okay

11:14:27it will not replace it will continuously

11:14:29add so that that's why we'll be using

11:14:30reducer concept I think you know what is

11:14:32reducer inside lang graph you can see

11:14:34we're using annotated we are we have

11:14:36taken a list uh type data structure and

11:14:39we're using operation add That means

11:14:41every time it will add the post story

11:14:43and feedback story instead of replacing

11:14:46but here we are we haven't take any

11:14:47kinds of reducer it will continuously

11:14:49replace here okay I hope you got it then

11:14:52uh let's say once this uh uh improvement

11:14:55is done evaluator will uh let's say

11:14:57found this is useful or this is

11:14:59completely fine that time this would be

11:15:01approved and this loop would be break

11:15:03okay so this is what actually iterative

11:15:04workflows now we'll try to um we'll try

11:15:07to code inside lang graph then we'll try

11:15:09to understand uh the whole concept

11:15:10script. Okay. Now for this what I'm

11:15:12going to do guys, I'm going to simply

11:15:14open up this uh iterative workflows.ipb

11:15:17file and let's select our kernel. So

11:15:20first of all we have to import the

11:15:22necessary library. So let's import.

11:15:28So I'll import all of the necessary

11:15:30library. So you can see I'm importing

11:15:32the state graph start end. Then from

11:15:34typing I'm importing type dict literal

11:15:37and annotated. Then uh I'm using chat

11:15:40openi that means I'll be using openi

11:15:42large language model. You can use any

11:15:44kinds of large language model. For this

11:15:45I have oneb file and I set my open key

11:15:48here already. Then uh I'm importing the

11:15:51system message and human message. Okay.

11:15:53Where we are importing the system

11:15:54message and human message because I want

11:15:56to give the prompt for each and every

11:15:58LLM. See you can see here we'll be using

11:16:00the LLM. Here also we'll be using the

11:16:02LLM. For optimization also we'll be

11:16:04using the LLM. Okay. And every LLM I'll

11:16:06try to set a different different prompt.

11:16:08Let's say for generation one I will set

11:16:10uh generation related prompt. For

11:16:12evaluator I'll set evaluation related

11:16:14prompt. For optimization I'll set

11:16:16optimization related prompt. Okay. So

11:16:18you can directly give the prompt as well

11:16:20but it is recommended to use this system

11:16:22message and human message function

11:16:24whenever you are giving the prompt.

11:16:25Okay. This should be more optimized one.

11:16:27Then operator I need because I want to

11:16:29perform the reducer. I have to do the

11:16:30adding operation. Then env. So let's

11:16:33import all of them.

11:16:39So as you can see execution is complete.

11:16:41Now we'll load our environment variable.

11:16:46Now uh we'll define all the large

11:16:49language model. So here you can see

11:16:54um yeah so I need uh three large

11:16:57language model. One is for generation,

11:16:59one is for evaluator, one is for

11:17:01optimization. Okay. So what I'm going to

11:17:03do I'm going to make three object

11:17:06for three large language model. Uh see

11:17:09I'm going to use the same model only but

11:17:11I'm going to create uh three object.

11:17:13Okay because here I told you we'll be

11:17:15using three no three nodes okay

11:17:17differently. So whenever you are

11:17:18creating this kinds of project uh let's

11:17:20say uh in real time actual real project

11:17:23that time you have to select this large

11:17:25language model in such a way. So let's

11:17:27say whatever model is very good for

11:17:30generation that time you can use that

11:17:32particular model. Let's say some model

11:17:34is very much good for evaluation that

11:17:36time you can take that particular model.

11:17:38Let's say some model is very much good

11:17:40for optimization you can take that

11:17:42particular model. Okay. So that's how we

11:17:43have to select in real time. But right

11:17:45now we are only understanding the

11:17:47example that's why I have taken the same

11:17:49model but I created three object. Okay.

11:17:51One is for generator, evaluator and

11:17:52optimizer. Generator, evaluator and

11:17:54optimizer. Done. Now next uh I'm going

11:17:58to

11:18:00uh I'm going to define the state. But

11:18:02before define the state I already told

11:18:04you uh here see this evaluator this

11:18:08evaluator nodes will return you two

11:18:11things. Okay one is the evaluation. Okay

11:18:14evaluation uh that means it should be

11:18:17approved or needs improvement. Okay

11:18:20these two things and another one is the

11:18:23feedback. Okay, what should be the

11:18:24feedback for the optimization, right?

11:18:26So, it will generate two things. I don't

11:18:29need anything anything else apart from

11:18:31these two two things. One is the

11:18:33evaluation and another one is the

11:18:34feedback. So, if I want to get this kind

11:18:36of structured output, what I have to do?

11:18:38I have to use the pidentic. I already

11:18:39told you previously I also uh I have

11:18:42also taken the same example. So, what

11:18:44I'm going to do guys, I'm going to just

11:18:46create a

11:18:48um pyic class. As you can see, I have

11:18:50created a pyic class. So here uh I have

11:18:53named it as post evaluation I'm

11:18:54inheriting with the pidentic based model

11:18:57and two things I have taken evaluation

11:18:59and feedback. So in evaluation you can

11:19:01see this is the literal type it should

11:19:03be approved or need needs approved okay

11:19:06needs improvement and another one is the

11:19:08feedback that means it will generate

11:19:09some kinds of feedback for Facebook post

11:19:12that means if I now pass this thing to

11:19:14the u model that means if I add this

11:19:17line uh evaluator lm with structured

11:19:21output and if I pass this class this

11:19:23model will try to generate the

11:19:24structured output now so it will only

11:19:26give you evaluation and feedback not

11:19:28anything else okay now let Let me show

11:19:30you. So let's say I have defined this

11:19:32one.

11:19:34Now here I'm going to just generate a

11:19:37Facebook post from my chart GPT.

11:19:51Facebook post

11:19:56about

11:20:03presentic AI.

11:20:11Okay, I'll copy this and uh let's say

11:20:15here

11:20:17I can take a variable post.

11:20:32Now inside that I'm going to paste this

11:20:34post.

11:20:39Okay. Now I'm going to send it to the

11:20:44the structured evaluation.

11:21:04Done. Now if I show you the result.

11:21:07See this is giving you two things. One

11:21:08is the evaluation. You can also extract

11:21:11evaluation

11:21:13approved and the feedback.

11:21:19See this is the feedback for this

11:21:21particular post. Okay. So that's how

11:21:22every time we'll be getting this

11:21:24structured output from this uh large

11:21:27language model. Okay. The evaluated

11:21:29large language model because we have

11:21:30used pyic um um uh data evaluation for

11:21:34that. Now what I'm going to do guys next

11:21:37I'm going to define the state. I'm going

11:21:39to define the same state I have taken

11:21:40here. Um

11:21:43this is my state as you can see topic

11:21:46post evaluation feedback iteration max

11:21:49iteration post history and feedback

11:21:50history. So here I have uh added the

11:21:53reducer concept. So every time I'll try

11:21:55to add this uh two information instead

11:21:57of replacing. And these are the things I

11:21:59think you already got it right. Yeah.

11:22:04H and why I've taken literal here

11:22:06because evaluation will only return two

11:22:07things approved or need needs

11:22:09approvement. Okay, these two category

11:22:10that's why I've taken literal type

11:22:12instead of string.

11:22:15So now I will um I will um add my nodes.

11:22:20Let's define the graph and add the

11:22:22nodes.

11:22:26Yeah. So I have already defined the

11:22:28graph. You can see state graph. I have

11:22:30given this post state here. Now I'll add

11:22:32the node.

11:22:35Add

11:22:37node.

11:22:39So how many nodes we are having? 1 2 3.

11:22:44Okay. Three nodes we are having. We'll

11:22:46add this three node all together.

11:22:50Yeah. So these are three nodes. Generate

11:22:53post, evaluate post and optimize post.

11:22:57Okay. Generate, evaluate and optimize.

11:22:59Now we'll write this function one by

11:23:01one. So first of all we'll just try to

11:23:04write this generate post function note.

11:23:12So this is the function guys I've

11:23:14already written as you can see uh

11:23:16generate post it will take the state and

11:23:18here is the prompt I have prepared. It's

11:23:20a detail prompt I created with the help

11:23:22of chart GPT and here we are using the

11:23:24system message and human message

11:23:26function whatever I have imported from

11:23:28here. Okay. So as you can see this is

11:23:30the prompt. So system message I've given

11:23:32you are a funny and clever Facebook in

11:23:35influencer and human message write a

11:23:38short original and hilarious Facebook

11:23:40post on the topic whatever topic user

11:23:43will give and here I have assigned some

11:23:45rules do not use a question answer

11:23:47format maximum

11:23:49500 characters okay and blah blah blah

11:23:51these are the things I have added now

11:23:53after that I'm just uh invoking my

11:23:55generator lm and whatever content I'm

11:23:57getting I'm just updating the response

11:23:59inside the post and post history I am

11:24:02also updating because simultaneously

11:24:04update two things one is the post and

11:24:06this is the post history both I will

11:24:07update right so here it will replace

11:24:09every time here it will add every time

11:24:11because here we're using reducer concept

11:24:13and we are returning this particular

11:24:14state okay instead of returning whole

11:24:16state we are only returning the state we

11:24:18are changing so this is our uh generate

11:24:21post um nodes we have created that means

11:24:23this node is complete now let's try to

11:24:25add the evaluator one

11:24:28generate is done now we'll try to create

11:24:29the evaluator one.

11:24:33So this is the evaluator one guys. Again

11:24:35um I named it as evaluate post and

11:24:38sending this state. And here is the

11:24:39prompt guys I have prepared. Again I

11:24:41have given a sim uh system prompt. So

11:24:43this is the system prompt I have given.

11:24:45Okay. Now this is the human prompt.

11:24:47Evaluate the following Facebook post. Uh

11:24:49we have given the post from the state

11:24:51and here are some criteria I have given.

11:24:54Based on that it will try to evaluate

11:24:55and it will return two things. One is

11:24:57the evaluation approved or need

11:24:58improvements. Another one is the

11:25:00feedback. Then we are uh invoking our

11:25:03structured evaluator LLM that means this

11:25:05one. Okay, this one we are invoking this

11:25:08one instead of uh this one because here

11:25:12we have added the pentic class for the

11:25:13structured output.

11:25:17See and whatever evaluation result we

11:25:18are getting we are sending uh saving to

11:25:20the evaluator state evaluation state and

11:25:23feedback also uh I'm saving inside

11:25:26feedback and I'm also saving the

11:25:27feedback history because feedback

11:25:29history should be also updated. Okay.

11:25:32Yeah. So once it is done uh we are also

11:25:35returning the state. Now let's

11:25:38execute.

11:25:40Done. Now we'll try to create the last

11:25:42one which is optimize post.

11:25:48So this is for the optimize post. Again

11:25:50we are passing the state and here is the

11:25:52prompt you are a punch uh a Facebook

11:25:55post or virality and humor based on the

11:25:59given feedback. Then here is the human

11:26:02prompt I have given improve the Facebook

11:26:03post based on this feedback. We are

11:26:06giving the feedback. We're giving the

11:26:07topic as well as the original post. it

11:26:10uh my model has generated okay so based

11:26:13on the original post based on the

11:26:14feedback based on the topic it will

11:26:16optimize that uh post okay and it will

11:26:20rewrite that particular post and it will

11:26:21give it to you for this I'm hitting this

11:26:24uh optimizer lm and getting the response

11:26:27and we are updating the iteration here

11:26:29see here here we are updating the

11:26:30iteration like how many iteration it has

11:26:33to perform to give the final or let's

11:26:36say uh optimized version of the post

11:26:38okay every time this loop loop will

11:26:40execute and once let's say it found okay

11:26:43now this post is completely fine that

11:26:45time it will approve otherwise this loop

11:26:47would be continuously um running and how

11:26:50many times it will run for this we are

11:26:52just logging this iteration we are just

11:26:54adding one okay so this iteration value

11:26:57I'll give initially one okay u whenever

11:27:00I'll create the initial state and every

11:27:02time it will add the one how many time

11:27:03it will execute okay after that we are

11:27:06just returning the uh response okay that

11:27:09means the final post

11:27:11then the iteration okay then we are also

11:27:15uh saving this inside the post history

11:27:17and we are returning the state done guys

11:27:20okay now all of the nodes we have

11:27:23created successfully now we have to

11:27:25define the edge connection now let's do

11:27:27that so here I'll just try to comment

11:27:30add edges so first of all here we have

11:27:32to add the edges for

11:27:36this um

11:27:38start to generate

11:27:40Let's define

11:27:44start to generate.

11:27:46Then we have to define generate to

11:27:48evaluate.

11:27:53Generate to evaluate. Okay. Now here

11:27:56conditional ages will come because

11:27:58evaluate either it will send it to the

11:28:01approved. Okay. It will directly uh to

11:28:04the approved otherwise it will send it

11:28:06to the optimizer. Right? optimization.

11:28:08So here we'll be using using the

11:28:10conditional edges. So let's use the

11:28:13conditional edges here.

11:28:16So here we're using conditional edges.

11:28:18So it will start from evaluate and

11:28:20evaluate will decide where to send

11:28:22whether it will approved or send it to

11:28:24the optimize. For this we have to write

11:28:26a conditional function. I think remember

11:28:29for conditional statement we write a

11:28:30conditional function separately. So this

11:28:33is the conditional function. So it will

11:28:36take the state and here we are checking

11:28:37the condition if my evaluation okay that

11:28:40means I already saved this evaluation

11:28:42inside my state right you remember right

11:28:44evaluation and what is the evaluation

11:28:46approved or needs improvement okay so

11:28:49here we are checking if this state is

11:28:51equal to uh state evaluation is equal to

11:28:52is equal to approved or state iteration

11:28:55is greater than equal state max

11:28:57iteration that means if let's say it has

11:28:59performed maximum iteration let's say we

11:29:01have given maximum iteration is equal to

11:29:02four let's say four time it has done the

11:29:05iteration and uh uh whenever it is

11:29:08running for the five time that time I

11:29:11think our condition is matching right

11:29:13because my highest uh highest iteration

11:29:16is maximum iteration is four but

11:29:17whenever it is going for five that means

11:29:19this particular loop will break right so

11:29:21that's how we are checking another

11:29:22condition if this iteration is equal to

11:29:25it is greater greater than equal to

11:29:26maximum iteration that time just return

11:29:28approved okay otherwise return needs

11:29:31approved so this will basically redirect

11:29:34take this particular route whether it

11:29:35will send it to the optimizer or for the

11:29:38approver.

11:29:39Now we'll try to define this uh method

11:29:41here

11:29:43route evaluation.

11:29:45Route evaluation we'll write it here

11:29:48route evaluation. Okay

11:29:51H now here we'll be adding the

11:29:55iteration. Okay this that means the

11:29:56iterative workflows right now. Now now

11:29:58what will happen? See, let's say this

11:30:01evaluator returns approved. That means

11:30:04this particular workflow will exit here

11:30:06because I got my final post. But if it

11:30:09doesn't got the approved, let's say it

11:30:12it sends needs improvement that time

11:30:14what will happen? It will send it to the

11:30:17optimizer. Okay, it will send it to the

11:30:19optimizer node and optimizer will

11:30:20optimize then again it will send it to

11:30:22the evaluation. So these kinds of things

11:30:23if you want to write you have to give

11:30:25this statement inside conditional

11:30:27workflow only you have to write this you

11:30:30have to write this additional line see

11:30:33okay double comma I have given yeah now

11:30:35I think you can get see once this route

11:30:39evaluation returns approved okay that

11:30:42means it will end that particular

11:30:44workflow but if it return needs

11:30:46improvement that time it will execute

11:30:49the optimize node

11:30:51this optimize node

11:30:53Okay, optimize node. See, it is

11:30:55redirecting from here. If it needs

11:30:57improvement, it will hit the optimize

11:30:59node. Otherwise, it will hit the end

11:31:01note. See that? That is what we are

11:31:02doing. And this is called actually your

11:31:04iterative workflows. So, here we are

11:31:06adding the iteration. Okay, this is

11:31:08called actually iteration. I hope you

11:31:10got it guys. You don't need to take any

11:31:12kinds of separate function for this.

11:31:13Inside conditional is only you have to

11:31:15only write this statement. Okay, that

11:31:17means this route evaluation if it is

11:31:19returned the approved it will go to the

11:31:21end otherwise if it returns needs

11:31:24improvement it will um execute my

11:31:26optimize node and how many time it will

11:31:29perform unless and until we're not

11:31:31getting approved okay approved from my

11:31:34evaluator or this maximum iteration ends

11:31:37okay I hope you got it now our age

11:31:40connection is also done now simply what

11:31:42I'm going to do I'm going to

11:31:44um see this connection is

11:31:47this connection and uh this connection

11:31:49is done. Uh optimize to

11:31:54uh evaluate. Huh. So this connection is

11:31:56done. Now we'll try to make this

11:31:58connection. Optimize to evaluate. So

11:32:00let's say once it is in the optimize. So

11:32:04optimize will try to connect to the

11:32:05evaluator. That means optimize will send

11:32:07this optimization result to the

11:32:09evaluator. So this connection will try

11:32:10to add. So this is the connection.

11:32:17This is the connection. Okay. Optimize

11:32:18to evaluator.

11:32:20Now we'll try to compile.

11:32:26Okay. Now we'll try we'll show you the

11:32:28workflow.

11:32:30So see this is the workflow. Now this

11:32:32workflow and this workflow is exactly

11:32:34same. You can check it here. Okay. Now

11:32:36we'll try to execute this workflow. For

11:32:39this let's u define uh

11:32:44state

11:32:50let's say I have given the topic

11:32:53agentic AI let's say this is our topic

11:32:57and iteration initially I have sent it I

11:32:59have set it to the one because after

11:33:01that it will every time update um it

11:33:04will every time update one okay so uh

11:33:07whenever it needs any kinds of

11:33:09improvement optimization it will add

11:33:10one. Okay, that means the iteration

11:33:13update and this is our maximum

11:33:15iteration. I want to uh perform this

11:33:18iteration maximum five time. Okay, if it

11:33:21is not found in five time that means

11:33:23this loop will execute. Then we are

11:33:25giving this uh initial state to my

11:33:27workflow and we are getting the result.

11:33:29Now let me execute.

11:33:40Done. Now if I show you my result.

11:33:44So see this is the result we are

11:33:45getting. Uh as you can see

11:33:49uh this is the topic and this is the

11:33:51post it has generated. Evaluation is uh

11:33:54okay evaluation return approved. See at

11:33:57the first iteration it it got approved.

11:33:59Okay. Then feedback. This is the

11:34:01feedback and uh you can see iteration is

11:34:05one. That means it didn't updated any

11:34:07iteration. That means at the first time

11:34:08only it has approved. This is our

11:34:11maximum iteration and this is the post

11:34:13history and this is the feedback

11:34:14history. Okay. Now maybe you can change

11:34:17to another topic. Let's say I'll give uh

11:34:20LLM.

11:34:21See here we are using openm right?

11:34:23That's why this LLM is very powerful. Uh

11:34:26at the very first time it is generating

11:34:27good post. Okay. That's why it is

11:34:29getting approved. Okay. In the first

11:34:30iteration only. Now let me give any

11:34:32other topic or random topic and see the

11:34:35output. So maybe okay

11:34:46I'll give any random topic and let's see

11:34:55still uh at the first time only it is uh

11:34:58approving okay it's completely fine you

11:35:00can maybe try with different different

11:35:02topic okay and you will able to see that

11:35:04whenever it needs any kinds of improve

11:35:06improvement. Okay. Um it will run this

11:35:09iteration and it will update. Okay. And

11:35:12again it will send it to the optimizer.

11:35:14The reason uh it is giving you one short

11:35:17uh approval because we're using this

11:35:19open AAI uh GPTO mini and this is uh

11:35:22like good model. Maybe you can use any

11:35:25weaker model. Okay. Like more weaker

11:35:26model, more poor model. That time I

11:35:28think this uh loop will uh run. Okay.

11:35:31Iteration will run because we're using

11:35:33good model. That's why we are getting

11:35:34the result at the very first time. Okay.

11:35:36Okay, I hope you got it. Now, if you

11:35:37want to see the post history separately,

11:35:39you can also just write a loop and uh

11:35:43from the result you can extract the post

11:35:45history and you can see all of the post

11:35:46history you are getting. Okay, you can

11:35:49also see the feedback history. This is

11:35:50also possible. Okay, anything you can

Build Your First Agentic Chatbot with LangGraph

11:35:52extract because you are getting all the

11:35:54object here. Okay, so yes guys, that's

11:35:57how we can write this uh iterative

11:35:59workflows inside Langraph and this is

11:36:01super useful. Trust me whenever you will

11:36:03be implementing uh actual AI agents so

11:36:05this concept you need okay without that

11:36:08uh you can't perform this continuous u

11:36:11looping operation and you need uh to

11:36:13create a workflow I need this kinds of

11:36:14looping I need this kinds of conditional

11:36:16statement parallel statement okay each

11:36:18and everything is required now we have

11:36:20understood the last workflows inside

11:36:22langraph now uh in the next video onward

11:36:25guys we'll try to start working on the

11:36:27project so guys as you know I have

11:36:29started a complete agenti playlist on my

11:36:32YouTube channel and so far we have

11:36:34completed um uh so many important topic

11:36:37uh in this playlist. So if I show you my

11:36:40playlist guys, as you can see I started

11:36:43from introduction. I have already

11:36:45discussed about the uh evaluation from

11:36:48LLM to uh aentki how aentki came. We

11:36:52already understood about the entire

11:36:54aentki concept how agentic system works.

11:36:57Then I told you about asynchronous

11:36:59programming pentic. Okay. We also saw

11:37:02how we can implement AI agents with the

11:37:04help of langen. Okay. Then we started

11:37:06our first orchestration uh framework for

11:37:09AI agents implementation which is

11:37:11langraph. Uh even we also understood

11:37:13this langraph u um each and every

11:37:16component in detail with the code

11:37:18implementation as well. Now what I'm

11:37:21planning for guys I'm planning for the

11:37:23uh practical development of uh project.

11:37:26So what I'm going to do uh I'm going to

11:37:28start implementing a agentic uh chatbot

11:37:31from this video onward. So first of all

11:37:33let's try to understand uh each and

11:37:35every component in detail. Um we'll try

11:37:38to explain the things in detail because

11:37:40if you want to uh create a aentic

11:37:42chatbot so for this you need lots of

11:37:44component like you need uh tools, you

11:37:47need memory, you need persistence, you

11:37:49need streaming, you need user interface.

11:37:51Okay, there are so many things you have

11:37:53to implement uh independently then you

11:37:55will be combining them all together then

11:37:58one agentic chatbot would be ready.

11:38:00Okay. And if you found my content useful

11:38:02guys, please try to subscribe to my

11:38:04channel and hit the like and please try

11:38:05to share it with your friends and

11:38:07family. So, uh first of all, let's try

11:38:09to understand uh in this agentic chatbot

11:38:12whatever component we're going to

11:38:13implement. So, guys, first of all, let's

11:38:16discuss our plan like how we'll be

11:38:18implementing this entire agentic

11:38:20chatbot. So, the entire agentic chatbot

11:38:23I'll be implementing with the help of

11:38:26langraph.

11:38:28Okay, we'll be using Langraph

11:38:31orchestration framework to implement the

11:38:32entire agentic chatbot because uh this

11:38:36project is the part of our langraph uh

11:38:38orchestration framework in our playlist.

11:38:42So in this video first of all I'm going

11:38:44to create a simple

11:38:48simple chatbot

11:38:51workflow.

11:38:53Okay, we'll try to create a simple

11:38:55chatbot workflow.

11:38:57uh then we'll try to um make this

11:39:00agentic chatbot like more advanced. Uh

11:39:04we'll try to add some more advanced

11:39:06component in this particular agentic

11:39:07chatbot and with the help of that we'll

11:39:10be learning all of the langraph core

11:39:14component. Okay. So whenever let's say

11:39:16you want to implement this kinds of

11:39:18project whatever component you need from

11:39:21the langraph you will be understanding

11:39:23each and every component. Okay. So

11:39:25that's why I made this particular

11:39:27implementation like a series okay series

11:39:29of video. So next in the next video I'm

11:39:32going to show you the persistence

11:39:35concept

11:39:37like what is persistent

11:39:39okay persistence

11:39:42and uh why it is required why uh

11:39:44persistence uh we have to add inside our

11:39:47agentic chatbot we'll try to understand.

11:39:50So persistence in line graph.

11:39:54Okay. Then we'll try to understand

11:39:58um how to

11:40:02how to add

11:40:05streaming feature.

11:40:08Okay. Streaming feature to our chatbot.

11:40:12Then we'll try to understand the concept

11:40:16of

11:40:17um resume chat.

11:40:22Okay. How we can resume any kinds of

11:40:24chat inside our chatbot. Then we'll try

11:40:28to see the database integration.

11:40:33Okay.

11:40:34Integration

11:40:37in our chatbot.

11:40:39Then we'll try to see how we can

11:40:42implement

11:40:44uh user interface. Okay, let's say

11:40:48chatbot

11:40:51UI. Okay, we'll try to also implement

11:40:53this. Then uh after that I will also

11:40:56show you

11:40:58how to

11:41:00add the tools.

11:41:05Okay tools inline graph

11:41:12then we'll try to understand um the

11:41:15observability okay observability

11:41:23uh so in observability we'll try to see

11:41:25how we can integrate lang

11:41:28okay langmith to our agent so I think

11:41:32you have already heard of about lang

11:41:34langismith is observability tool. Uh

11:41:37with the help of that we can monitor the

11:41:39entire application. Okay. Uh what is the

11:41:41flow of the application? Uh when it is

11:41:43executing uh what component each and

11:41:46everything we can track okay in this

11:41:47particular lang lang smmith we'll also

11:41:49try to see how we can use the langismith

11:41:51here. Then after that we'll see the

11:41:55um RG concept okay how we can integrate

11:41:59the rag features inside our agentic

11:42:01chatbot because uh if you have already

11:42:03used this kinds of agentic uh system you

11:42:06know that it will also work with your

11:42:08documents let's say you can upload your

11:42:09documents and you can uh do the chat

11:42:12operation on on top of your entire

11:42:13documents okay this is called RG concept

11:42:15so the rag means retrieval augmented

11:42:17generation so we'll also try to

11:42:19understand this thing then we'll

11:42:21understand this uh

11:42:24hi TL that means human in loop concept

11:42:28then we'll also understand the

11:42:30short-term

11:42:32okay short-term and

11:42:36long-term memory concept as well

11:42:40okay memory so yes uh this is the entire

11:42:43plan guys so in this video first of all

11:42:45let's try to uh implement the simple

11:42:48chatbot workflow with the help of lang

11:42:50graph

11:42:51uh then from the next video onward I'm

11:42:53going to discuss these are the concept

11:42:54as well. So guys uh let's try to

11:42:57implement our chatbot workflow. So if

11:43:00you want to implement any kinds of uh

11:43:03agentic chatbot uh first of all you have

11:43:05to implement the uh chatbot workflow and

11:43:09how chat uh chatbot workflow works I

11:43:11think you already know that um so let's

11:43:14say if I want to uh implement with the

11:43:16help of lang graph. So how many node I

11:43:18have to take I have to take only one

11:43:20node which would be chat node. So here

11:43:22user will pass some message okay any

11:43:25kinds of message and uh it will go to

11:43:27the chat node and chat node will try to

11:43:29return something okay so this is a

11:43:31simple chat operations we'll be doing

11:43:33here and to run this particular uh graph

11:43:36actually we need a state and uh for this

11:43:39particular chatbot what would be the

11:43:40important state important state would be

11:43:42the message okay uh let's say the

11:43:44message user is passing let's say hi my

11:43:46name is BP so this message should be

11:43:48saved right and uh let's say your bot

11:43:52has replied uh welcome bi okay and how I

11:43:55can help you today. So these kinds of

11:43:57message would be also saved uh inside

11:43:59this particular state right. So for this

11:44:01uh what I have done guys, I have taken

11:44:03this um uh this particular state and

11:44:07here we are using the reducer concept.

11:44:09Okay, here we'll be using the reducer

11:44:10concept otherwise what will happen every

11:44:13time uh this uh state would be replaced

11:44:16with the new message. So I don't want

11:44:18that. I want to save all of the

11:44:20conversation story inside this

11:44:22particular state. Okay. And uh now you

11:44:24can ask me why we haven't taken string

11:44:27type data here because messages string

11:44:29type data. uh because I already told you

11:44:31here this is a conversational story and

11:44:34uh in langraph actually this is

11:44:36recommended whenever you are creating

11:44:37this kinds of uh chatbot you have to

11:44:40take this function this is a u uh like

11:44:42langraph function we have to import from

11:44:44the langraph called add messages in uh

11:44:48uh basically this add messages will try

11:44:49to handle this kinds of scenario it will

11:44:52take all of the conversation story the

11:44:53user message as well as the replied

11:44:56message and it will stored in this

11:44:57particular state okay and this state

11:44:59will go to the chat node. I hope you

11:45:01clear. Okay. So once we have built this

11:45:03uh uh workflow, the simple chatbot

11:45:06workflow, then we'll try to make it more

11:45:08advanced. We'll try to make this

11:45:11particular workflow uh as agentic

11:45:14chatbot workflow. Okay. So for this what

11:45:16we'll try to add guys uh we'll try to

11:45:18add uh see as of now in this particular

11:45:20workflow you can perform the simple chat

11:45:23operation.

11:45:25In this workflow you can perform simple

11:45:29chat operation. Okay. After that we'll

11:45:31try to add the rag functionality. That

11:45:34means even you can also upload any kinds

11:45:37of documents and you can perform the

11:45:38chat operation on top of that. Okay. You

11:45:40can add extra knowledge base on this

11:45:42particular chatbot. Right? Then we'll

11:45:44add the tools. Okay. Realtime tools

11:45:47we'll try to add so that uh if you are

11:45:49asking any kinds of question and if it

11:45:51needs any kinds of tool it will try to

11:45:53use that. Okay. And uh that time

11:45:56actually it will become agentic chatbot

11:45:58that means it doesn't only have the um

11:46:01like uh I mean um the existing knowledge

11:46:04base it has also connection with lots of

11:46:06tools okay so that whenever you are

11:46:09asking something it will real time fetch

11:46:11those informations and it will give it

11:46:12to you then um I will also add the user

11:46:15interface

11:46:17uh because user needs a user interface

11:46:19to use this particular chatbot. So

11:46:21definitely we try to create the UI and

11:46:23for UI implementation as of now I'll be

11:46:25using a streamlit package. It's a Python

11:46:28package and here you don't need to write

11:46:29any kinds of HTML and CSS code but later

11:46:32on I'm also going to show you how we can

11:46:34use HTML and CSS code how we can use the

11:46:37fast API okay with the help of that

11:46:39we'll try to create the entire asentic

11:46:41chatbot but as of now we are learning

11:46:43okay this is our first project so that's

11:46:45why I'll be using streaml so that

11:46:47everyone can implement with me okay then

11:46:50we'll also try to add the observability

11:46:52tool which is lang

11:46:56okay lang hangmith will try to add. So

11:46:58with the help of that we'll try to

11:47:00monitor the entire chatbot. Okay. Uh

11:47:02like how it is performing which

11:47:03particular component is triggering each

11:47:05and everything. We'll try to log in the

11:47:07lang speed dashboard. Then we'll also

11:47:09learn some advanced topic as well. Some

11:47:12advanced topic as well.

11:47:14Okay. Inside advanc topic we'll be

11:47:16learning memory concept. Okay.

11:47:19Short-term and long-term memory concept

11:47:21we'll try to learn. Um um okay I missed

11:47:24out one thing which is uh persistence.

11:47:27Okay here we'll also try to learn this

11:47:30persistence.

11:47:33Okay we'll also try to add the

11:47:35persistence in the chatbot. Then we'll

11:47:37be learning the memory the advanced

11:47:38topic. Then we'll also try to learn this

11:47:42hit human in the loop. Okay. Uh then

11:47:45here also we'll try to learn the retry

11:47:47functionality like how we can perform

11:47:49the retry functionality and all. So

11:47:50these are the thing we'll try to cover

11:47:52that means by this particular project

11:47:54itself we'll try to master okay all of

11:47:57these langraph concept in detail okay

11:48:00that's why I made this particular

11:48:02implementation as a series so that each

11:48:04of the video will cover uh each of these

11:48:06concept in a detailed way okay so yes

11:48:09guys uh this is the uh plan I think you

11:48:11got it now uh we already have the graph

11:48:14okay we already have the workflow uh

11:48:17architecture now based on this

11:48:18architecture now let's try to implement

11:48:20ment our uh chatbot. Okay, first of all,

11:48:22we'll try to create this simple chatbot

11:48:25workflow in this particular video. Then

11:48:27from the next video onward, I'm going to

11:48:29discuss one by one all of this advanced

11:48:31component. So first of all, let's try to

11:48:34create a Jupyter notebook file. Uh

11:48:36because initially I want to show you

11:48:38this workflow in the Jupyter notebook.

11:48:40Then I'm going to just uh write

11:48:43everything in the py file. Okay, Python

11:48:45scripting file because Jupyter notebook

11:48:47file we won't be using whenever we'll be

11:48:49creating the project. Okay. But for

11:48:50experiment purpose, we'll be using this

11:48:52Jupyter notebook. So here, let's try to

11:48:55create a file ipv.

11:49:03Yeah. So previously I had my environment

11:49:05which is uh this langraph test. I'll try

11:49:08to select this one. And here we'll try

11:49:11to import all the necessary library we

11:49:13need. And this import would be common

11:49:15guys. I think you know that what is this

11:49:16import? Let's import everything.

11:49:21So these are the import we need. Uh we

11:49:24are importing this state graph start

11:49:26end. Then from typing we are importing

11:49:28uh type dict annotated. Then we are also

11:49:31importing this base message and human

11:49:33message. And uh we will be using openi

11:49:36large language model. That's why from

11:49:38langen we are importing chat openai. You

11:49:40can also use any other uh large language

11:49:42model provider like grock. You can also

11:49:44use open router, gemini. Okay. anything

11:49:48you can use only you just need to check

11:49:49the lang chain documentation how to

11:49:51import that okay even you can also copy

11:49:53this code and if you give to the chat

11:49:55JPT this will replace with another model

11:49:58but I have my open API key that's why

11:50:00I'll be using open AI model here so

11:50:02let's import all of the package okay

11:50:04it's done now the next thing guys what

11:50:06you have to do you have to get this open

11:50:08API key so quickly I'm going to move my

11:50:11env file from my previous uh previous

11:50:15code.

11:50:17So guys, as you can see, this is myb

11:50:19file. And inside that, I'm going to

11:50:22simply copy my

11:50:26um open environment v uh open API key.

11:50:32So this is my open API key. I already

11:50:34collected.

11:50:37Now let's try to

11:50:40uh write the further code. Yeah. So now

11:50:43what I'm going to do guys uh first of

11:50:45all here I'm going to

11:50:48um I'm going to initialize the LM.

11:50:53So here I'm initializing the LLM. Okay.

11:50:56So we'll be taking the default large

11:50:58language model. Okay. Here I'm getting

11:50:59an error because uh I have to load this

11:51:02environment variable right. So let's

11:51:04load it. So from env

11:51:12import load env

11:51:15we'll try to load this environment

11:51:16variable.

11:51:20Then now this code will work. Yeah. Now

11:51:23we are able to load our lm. Now first of

11:51:26all you have to define the state. Uh so

11:51:28let's try to define the state.

11:51:31Um this is the state guys.

11:51:34And I already told you if you are uh

11:51:37storing conversational story that time

11:51:40you can use this function add messages

11:51:42from langraph graph message. Okay. So

11:51:44here uh we are using the reducer

11:51:46concept. Um um I think you know what is

11:51:49the reducer function um like um

11:51:52operation add previously we used but

11:51:55right now uh this is a conversational

11:51:57story. So we'll be using this add

11:51:58message and by default actually it will

11:52:00perform this uh adding operation instead

11:52:02of replacing. Okay. And uh here I given

11:52:06the base message.

11:52:08Base message means uh see inside base

11:52:10message what happens? We are telling

11:52:12this is a uh like u uh chat history.

11:52:15Chat history means uh there will be uh

11:52:17user message as well and there would be

11:52:19um like uh AI reply as well. Okay. So if

11:52:22you combine all of them together, this

11:52:24will become a base message. Okay. So

11:52:26this is why we are using the base

11:52:28message here. So this is going to be my

11:52:31state. Now let's try to define the

11:52:32state. So after that we'll try to create

11:52:34the uh graph. Now let's create the

11:52:37graph.

11:52:40So this is our graph guys uh state graph

11:52:42and we have given the state to the

11:52:44graph. Now after that we'll try to add

11:52:46the nodes. So let's comment here

11:52:52add

11:52:55nodes. So if you see we only have one

11:52:59nodes which is chat nodes. Okay, let's

11:53:01try to add that.

11:53:04So, graph dot add

11:53:08graph dot add uh chat node and uh this

11:53:11function we have to write separately. Uh

11:53:14so, let's try to write this function.

11:53:17I'm going to create a function def chat

11:53:19node and this will take this state

11:53:24but I'm not going to return all of this

11:53:25state all together. Instead of that

11:53:28simply

11:53:30um I'm going to only return the update

11:53:33message. Okay.

11:53:35So first of all here we'll be taking the

11:53:37user query

11:53:39from this state.

11:53:41Okay. Take the user query from the

11:53:44state.

11:53:46Yeah. So user will give the message

11:53:48right? User will give the message. So

11:53:49this message I'll be uh uh basically

11:53:52this will start store as a message.

11:53:54Okay. So this message I'm extracting.

11:53:57Then after that we'll try to send it to

11:53:59the llm.

11:54:02Okay. Send it to the llm. You can see

11:54:04llm.inbox. We are giving the message and

11:54:06we are getting the response. Okay. Now

11:54:08this response

11:54:10I'm going to store in the message again.

11:54:12Okay. Uh response stored in the state.

11:54:16Uh that means in the message keyword

11:54:18because this is a list type. Okay. And

11:54:19every time it will uh store your user

11:54:22message as well as the um response.

11:54:24Okay, altogether it will store and we

11:54:27are returning the state. So this is

11:54:28going to be my chat note. As you can see

11:54:30this is going going to be my chat node.

11:54:32So once this chat note is prepared. Now

11:54:35let's try to add the edges. Okay. Now if

11:54:37you see the edge connection first of all

11:54:39start will be connected to the chat

11:54:41node. So let's try to add the edges.

11:54:47Add edges.

11:54:49So start would be connected to the chat

11:54:51node and chat node would be connected to

11:54:54the end.

11:54:56Chat node would be connected to the end.

11:54:58Okay. So this is the simple um like edge

11:55:00connection. After that we'll try to

11:55:02compile the graph.

11:55:08Let's compile the graph.

11:55:11We have com uh here we'll be compiling a

11:55:14graph. Okay. Now let's compile. Yeah.

11:55:16Done. Now if you want to see the

11:55:17workflow.

11:55:21So this is the chatbot workflow. Okay.

11:55:23This is the simple chatbot workflow we

11:55:25have created like that. Okay. Now here

11:55:28you can perform this simple chat

11:55:30operation. So this simple chat operation

11:55:32you can perform as of now. Now let me

11:55:34show you how we can perform the chat

11:55:35operation. Now let's give the initial

11:55:37state. So this is our initial state

11:55:39guys. As you can see, we are using human

11:55:41message because this is a human prompt

11:55:43and for this we have already imported

11:55:45this human message. It's good to uh use

11:55:48this function whenever using uh whenever

11:55:50you are implementing this kinds of

11:55:51chatbot. So as you can see message uh

11:55:55this should be a dictionary we are

11:55:56giving the message and uh you can see it

11:56:00takes u as a list okay as you can see it

11:56:04takes as a list okay input.

11:56:07So that's why we are giving as a list.

11:56:11Now we are giving the human message and

11:56:13this is the content what is the object

11:56:15oriented programming. So this thing I

11:56:16will try to pass to my

11:56:19uh chatbot. Okay. So chatbot do invoke

11:56:22we are giving the initial state and this

11:56:24will return you. Let me show you if I

11:56:26don't give this line.

11:56:32Yeah. So this will give you this kinds

11:56:34of response. So maybe I can store inside

11:56:36a variable response is equal to

11:56:37chatbot.invoke.

11:56:41Now if I show you the response. So this

11:56:44is the response. Inside this response

11:56:45you have two things.

11:56:50Uh here one you have the message. Okay

11:56:53the human message and another one is the

11:56:56AI message. Okay. Now I have to extract

11:56:59this AI message for this uh uh this is a

11:57:03dictionary. First of all, I have to

11:57:05extract the message. Okay, message

11:57:06keyword.

11:57:08This message uh message key I have to

11:57:10extract. Once we got the extract, now

11:57:13this is a list. And here we have two

11:57:14items. Okay, one is the human message

11:57:16and one is the AI message. And that's

11:57:17how this uh um add message stores your

11:57:21data right inside this list. Now I need

11:57:24the last one. So for this I give minus

11:57:26one.

11:57:27Okay, the last index AI message. Now I

11:57:30only need the content. So here simply

11:57:32I'll just give dot content.

11:57:34Okay, if you do it now you will be able

11:57:36to get this content guys. Very simple.

11:57:39Okay. So that's how guys you can perform

11:57:41any kinds of chat operation right now

11:57:43with this particular workflow. Now let's

11:57:44say I will ask another question. What is

11:57:46uh let's say

11:57:48object- oriented programming in Python.

11:57:56Now see object oriented programming in

11:57:58Python blah blah blah. Okay, it's

11:58:00working perfectly. Okay, so guys, now

11:58:03what I'm going to do, I'm going to just

11:58:05make a loop so that user can

11:58:07continuously give the uh input and uh

11:58:11this chatbot will be working. Okay, uh

11:58:14it will provide the output u because

11:58:16right now every time I have to change

11:58:18the um message here and I have to

11:58:20re-execute the cell but I don't want

11:58:22that. I want a loop. Okay. So for this

11:58:25uh what I can do guys, I can just make a

11:58:28while loop.

11:58:30So this is our while loop.

11:58:33Okay. So here we are taking a input from

11:58:35the user. Uh I'm just telling type here

11:58:38some message. Then we are printing this

11:58:41uh uh user message. Then I'm checking if

11:58:45user messagees uh uh let's say if it is

11:58:48uh if they write like say Z, exit, quite

11:58:51and by. So that time I'm going to break

11:58:53the loop. Okay. Otherwise I'm going to

11:58:56simply invoke my

11:58:59LM.

11:59:02So let's do that.

11:59:06So we'll be invoking our LM here. That

11:59:09means the workflow. So as you can see we

11:59:12are doing the same thing. We are just

11:59:13hitting this chatbot invoke. We are

11:59:16giving the message human message. Right

11:59:19now the content should be equal to the

11:59:20user message. Okay. because previously I

11:59:23hardcoded this message but right now I'm

11:59:25taking as a variable input variable once

11:59:28it is done I'm going to print this

11:59:29response in the terminal okay we'll be

11:59:32printing this message in the terminal

11:59:33that's it now let's execute okay now

11:59:36let's execute this while loop now here I

11:59:38can give the message hi

11:59:42now see user given hi and it's telling

11:59:45hello how I can assist you today I'll

11:59:47tell my name is puppy

11:59:52Okay. Hello By, nice to meet you. How I

11:59:54can assist you? I'll tell

11:59:57what is

12:00:01Python.

12:00:07See, it's working fine. Okay. But one

12:00:10issue I want to show you in this

12:00:11particular chatbot. Let's say now if I

12:00:14ask what is my

12:00:18name?

12:00:22Now it will tell you I'm sorry I'm not

12:00:24able to access the personal information

12:00:26about the user. But although if you see

12:00:29every time we are saving this

12:00:32information to this state and we are

12:00:34passing this state to the uh to this

12:00:36node okay if I open my

12:00:39um diagram I think you see that. So

12:00:42every time what is happening whatever

12:00:44message user is giving I'm storing in

12:00:46this uh state and whatever uh response

12:00:49also I'm getting I'm also storing in

12:00:51this particular state and we are passing

12:00:53the state to the chat node. So chat node

12:00:55should have the informations okay about

12:00:58the older conversation because we are

12:01:00storing the conversation story but still

12:01:03why it is not able to give you the

12:01:05answer. Okay still why it is not able to

12:01:07give you the answer? This is a question

12:01:09to you just try to think about and uh

12:01:12please reply in the comment if you uh

12:01:14can you can pause the video and you can

12:01:16reply in the comment okay why uh it is

12:01:18happening like that see if I tell you um

12:01:21uh see what is happening if you're using

12:01:24the state concept right if you're using

12:01:26the state concept so what will happen

12:01:28first of all let's say it will start

12:01:30this node then the input will go to the

12:01:32chat nodes okay then chat node will

12:01:35return some kinds of response then it

12:01:37will go to the end okay so once Once it

12:01:39is reaching to the end, right? Once it

12:01:41is reaching to the end, that time this

12:01:44execution is um this execution is

12:01:47ending. Okay, this execution is ending

12:01:49that means whatever you have in the chat

12:01:52state. Okay, that means in the state

12:01:54this particular data would be erased.

12:01:57Okay, this particular data would be

12:01:59erased. So that time whenever you are

12:02:01running this loop, right? You are

12:02:03running this loop. So every time what

12:02:06you are doing you are invoking the

12:02:07chatbot you are invoking the workflow

12:02:09and whenever you are invoking the

12:02:11workflow that means what is happening

12:02:13you are re-executing from from here okay

12:02:16you are reexecuting from here that means

12:02:18again it will go to the chat node to the

12:02:21end again this data would be erased okay

12:02:23so every time this particular list will

12:02:26be erased okay it is not able to like uh

12:02:28let's say uh store the older

12:02:32conversation it will only store in this

12:02:34particular particular session only only

12:02:36one session let's say right now this

12:02:38loop is running right in this particular

12:02:40session this information is available

12:02:42but whenever we are again executing this

12:02:44loop is again executing from here that

12:02:47time this information is getting erased

12:02:51this is the problem okay now how we can

12:02:54handle this kinds of scenario we can

12:02:56handle this kinds of scenario with help

12:02:57of persistence okay I I think I already

12:02:59told you about persistence right now

12:03:01we'll be using persistence concept it

12:03:04and uh we can uh we can actually handle

12:03:07this kinds of scenario that means

12:03:09whatever conversation story we are let's

12:03:11say having okay so we [snorts] can store

12:03:15somewhere this conversation story

12:03:17because right now this is only storing

12:03:19inside the variable and once it is

12:03:21getting initialized again this variable

12:03:23is getting cleared okay this is the main

12:03:25problem so that's why langraph uh

12:03:28supports actually persistence concept so

12:03:30inside persistence either you can save

12:03:33these informations in the memory saber

12:03:34that means inside your RAM either you

12:03:37can save this particular informations in

12:03:38the database and you can load load

12:03:41anytime okay these kinds of things you

12:03:43can perform now let's try to see how we

12:03:45can do this kinds of persistence uh

12:03:47operation

12:03:48so for this I'm going to open up my code

12:03:50again

12:03:52okay so here simply I can exit my bot so

12:03:56for this you have to give this exit

12:03:57message

12:04:00sorry

12:04:02this exit message only

12:04:05done now see it has exited now see uh

12:04:08persistence concept I'm going to explain

12:04:10in detail in the next video so only I'm

12:04:13just going to add this persistence uh

12:04:16let's say um uh implementation here how

12:04:19we can add the persistence so inside

12:04:21persistence uh basically we just try to

12:04:25add a memory here okay we just try to

12:04:27add a checkpoint memory so what happens

12:04:31let's say the entire state we we are

12:04:32having right this entire state we are

12:04:34having so this entire state we can save

12:04:37inside a memory either you can save

12:04:38inside your RAM okay this memory you can

12:04:41say uh this state you can save inside

12:04:42your RAM either you can save inside the

12:04:45database okay but right now this

12:04:47particular state is not getting saved

12:04:48anywhere this is only storing the data

12:04:51in the variable and you know whenever

12:04:53code will re-execute this variable would

12:04:55be clean clear that time right we

12:04:58already know that if you understand the

12:04:59Python concept you already know that so

12:05:01Somehow we have we have to store this

12:05:04state inside a storage uh storage

12:05:07actually um let's say service either you

12:05:10can uh use your RAM because you know

12:05:12that RAM would be the temporary storage

12:05:15it's completely fine but if you want a

12:05:17permanent storage that time you can use

12:05:20any kinds of database this database part

12:05:22I will also show you in future but I

12:05:24told you I'll be going uh step by step

12:05:26so that I can explain each and every

12:05:28concept in detail. So initially we'll

12:05:30try to see how we can save this

12:05:31information in the RAM. So whenever

12:05:33we'll save inside the RAM so what will

12:05:35happen this uh this particular uh data

12:05:39would be saved unless and until I don't

12:05:41restart my kernel. Okay if I restart my

12:05:44kernel that time this information would

12:05:46be clean up otherwise this information

12:05:48will remain same inside my RAM. Okay. So

12:05:50this kinds of concept we'll try to add

12:05:51right now. So here

12:05:54uh for this I'm going to import a

12:05:56function from lang graph. So inside lang

12:05:59graph there is a function called

12:06:02um memory saver. Let me import that.

12:06:06So this is the function langraph.

12:06:08Checkpoint [snorts] domemory import

12:06:10memory saver. Okay. So this memory saver

12:06:12stores your state inside the memory

12:06:14inside the RAM. You can also use any

12:06:17kinds of database. That part I will also

12:06:19show you later on. Okay. First of all

12:06:20let's try to see the memory server one.

12:06:22Now let me import.

12:06:24Okay. So once it is done now simply

12:06:28here whenever you are defining the

12:06:31graph. So before the graph

12:06:34initialization you have to define a

12:06:36checkpoint. This checkpoint should be

12:06:39the memory server. Okay. So this is

12:06:41going to be this is going to become your

12:06:43memory server object. Okay. Checkpoint.

12:06:45Now whenever you are compiling your

12:06:48entire graph that time you have to

12:06:49mention I have a checkpointer. Okay I

12:06:52have a checkpo pointer. So this

12:06:54checkpointer will basically store your

12:06:57state in the RAM. Okay you can see

12:07:00checkpo pointer is equal to checkpoint

12:07:01and here we are using memory server.

12:07:03Memory server means the RAM that means

12:07:05whatever state it is getting right the

12:07:07chat state that means the entire state

12:07:08it is getting and every time it is

12:07:11updating right with the user message and

12:07:13the reply of the AI message right every

12:07:15time it is getting update so this

12:07:17information will save in the RAM right

12:07:19now okay because we are using the

12:07:20checkpoint uh checkpointter right now

12:07:22okay now let's try to compile the graph

12:07:25so one compilation is done now let me

12:07:29show you h now let's Okay. Uh I don't

12:07:34need to execute this code. I will

12:07:35directly execute my while loop. Okay.

12:07:38Yeah. But before executing the while

12:07:40loop

12:07:42here, I will pass one thing. Uh here you

12:07:45can specify the trade. Okay. Trade means

12:07:50um

12:07:52it should be like kinds of unique uh

12:07:55unique ID for each of the user. Let's

12:07:57say this chatbot can use many people,

12:08:01right? This chatbot can use by me then

12:08:05this chatbot can be used by any other

12:08:07person. So all of the people can chat

12:08:10together here right and if they're

12:08:12chatting together it's not like that

12:08:14let's say I will let the people to chat

12:08:17with my chat history right so instead of

12:08:20that what uh it should have it should

12:08:22have a different trade ID okay different

12:08:25trade ID different trade ID means let's

12:08:26say if this trade ID is equal to one I

12:08:29have set let's say trade is equal to one

12:08:31that means this is my trade ID so

12:08:33whatever chat I will perform

12:08:35it will store all of the information in

12:08:38this particular trade right in this

12:08:40particular let's say whenever it will

12:08:41store inside the memory right because I

12:08:43used the memory server so in the memory

12:08:45it will create a separate section for

12:08:48one okay and all of the information all

12:08:50of the chat history it will save inside

12:08:52this particular trade okay now if I

12:08:54change it to two right that time uh

12:08:57another user will come and he will

12:08:59perform the chat operation that means

12:09:01what is happening in the memory there

12:09:03are different block is getting created

12:09:04let's say this is trade one this is

12:09:07trade two okay whatever chat I'm

12:09:10performing in the trade one uh trade two

12:09:13person won't be able to see that okay he

12:09:15won't be able to access this information

12:09:17and whatever let's say uh chat trade two

12:09:20is doing trade one won't be able to see

12:09:22or get this particular information okay

12:09:25like the chart GPT like chart GP is

12:09:26having different trade right whenever

12:09:29let's say you uh you just create a new

12:09:32chart right uh in the chart GP whenever

12:09:34you create a new chart let me show you

12:09:37so here

12:09:40so this is my chat GPT so let's say here

12:09:43you can create a new chart right you can

12:09:45create a new chat and you can perform

12:09:47some chat operation here

12:09:50right so this is this becomes a trade

12:09:52right then whenever you takes another

12:09:54new chart that means the complete new

12:09:57trade will be getting here and you can

12:09:58perform the another chart operation here

12:10:01okay so that means you won't be able to

12:10:03get the previous uh let's Okay. Uh

12:10:07previous let's say trade uh information

12:10:09in this particular trade but you can

12:10:11switch to the trade. Okay. Let's say you

12:10:12can uh switch to the trades anytime. You

12:10:14can go to the previous trade. You can uh

12:10:16go to the current trade. Okay. That's

12:10:18how we can switch. So these kinds of

12:10:20things also we can perform with the help

12:10:21of this persistence. Okay. We can make

12:10:23different different trades here. Now

12:10:25let's try to do that. Let me show you. I

12:10:27think after seeing the practical

12:10:28implementation you will be able to

12:10:30understand. Now let's say I'll make it

12:10:31as trade ID. Initially I'll give it as

12:10:33one. And uh whenever you are um using

12:10:37this persistence concept that time you

12:10:39have to define a configuration.

12:10:42So this is the configuration before

12:10:44response maybe I can create it.

12:10:47So this is the configuration config is

12:10:49equal to configurable and here you have

12:10:51to pass this trade ID is equal to trade

12:10:53ID. So your trade ID okay then this

12:10:54should be a dictionary. Okay dictionary

12:10:56object and this config you have to pass

12:11:00whenever you are invoking the workflow.

12:11:02So here at the last you have to give

12:11:04this uh config.

12:11:09You have to give this config. Config is

12:11:10equal to config. Okay. Now what will

12:11:13happen? Every time uh this uh this uh uh

12:11:17persistence what it will do it will try

12:11:19to uh load the information load the

12:11:22state from the memory and it will try to

12:11:25pass to the um it will try to pass to

12:11:28the

12:11:30um invoke function. Inbox function means

12:11:32you are giving the user message as well

12:11:34as the older history. Okay, user message

12:11:37as well as the older history. That means

12:11:38whatever older history you are having,

12:11:40whatever chat state you are having, you

12:11:42are entirely passing the chat history as

12:11:46well as the new message user is giving.

12:11:48Okay, right now it won't be replacing

12:11:51because we are storing in the memory and

12:11:53every time we are loading it and passing

12:11:55it to the invoke function. Now see if I

12:11:57execute the code.

12:12:00Now let's say here I'll tell my name is

12:12:04BP.

12:12:10Okay. Now let's say I'll give another

12:12:12message. What is Python?

12:12:19Done. Now if I ask let's say what is my

12:12:24name.

12:12:26Now see your name is BYI. It is able to

12:12:29remember right now. Okay, it has some

12:12:31kinds of memory right now and this

12:12:33information is saving inside my RAM

12:12:36because we are using memory saver here.

12:12:38And this is called persistence. Okay,

12:12:40this is called persistence. Now if I

12:12:42let's say give another trait. Okay,

12:12:45let's see if I give another trade. Let's

12:12:46see if I do exit right now. Um one thing

12:12:49I want to show you uh if I run it inside

12:12:51my while loop. So if I exit my while

12:12:53loop so that time your entire session

12:12:55will be um like restarted. So instead of

12:12:58that maybe I can use this code. I'll

12:13:01copy this trade ID here

12:13:06trade ID and uh I will also copy this

12:13:11config

12:13:15and we'll pass this config to this

12:13:24Whenever we're doing the invoke

12:13:25operation here, I'll try to pass the

12:13:26config. Okay. Now let's execute. So

12:13:29let's say I'll type what is

12:13:33or I'll pass my name is puppy.

12:13:44Now see uh nice to meet you BP. Now if I

12:13:47ask um

12:13:50what is my name?

12:13:58What is my name?

12:14:05It's giving your name is BP. Okay. Now

12:14:08let's see if I give another trade here.

12:14:10Okay. Let's say trade two. Now if I ask

12:14:13what is my name?

12:14:16Now see it is telling I'm sorry I do not

12:14:18know what is your name is an uh is uh as

12:14:23I am a AI assistant and I do not do not

12:14:25uh have access to the personal

12:14:27informations. Okay because this is a

12:14:29completely new trade right now. Okay.

12:14:31Now let's say in this particular trade I

12:14:33will give let's say my name is

12:14:37my name is Alex.

12:14:42Now it is telling nice to meet you Alex.

12:14:44Okay. Now if I ask what is my name?

12:14:55Now it will tell your name is Alex.

12:14:57Okay. Now if I switch to my trade one.

12:15:00Okay. Now if I again ask what is my

12:15:02name? You will see that it will tell you

12:15:04your name is BP. See your name is BP.

12:15:06Okay. Now if I go to my trade two,

12:15:11trade two that time uh your name is

12:15:15Alex. Okay, I hope you got it this

12:15:17concept. Okay, this trading concept that

12:15:19means we can separate out the chat

12:15:22session. Okay, chat session for each and

12:15:24every user. This is possible, right? And

12:15:28uh here you can also see the u state.

12:15:33Uh so for this you can use this code

12:15:37so chatbot dot get state and you have to

12:15:40pass the config and you will be able to

12:15:43see like uh how many trades you are

12:15:46having okay all of the history you will

12:15:48be able to see the entire state that

12:15:50means the entire state you will be able

12:15:51to see the state is saved in the memory

12:15:53so this is the snapshot object as you

12:15:55can see whatever question you have asked

12:15:58like what is my name some other metadata

12:16:01the AI response okay So each and

12:16:03everything is visible here

12:16:07the input token output token

12:16:10and you will be able to see the trade ID

12:16:11as well. So what is the trade ID?

12:16:14Yeah. So this is the trade ID 2 and

12:16:16trade ID one is also there

12:16:20somewhere. Okay. So that means the

12:16:21entire U state snapshot you will be able

12:16:24to see here. So this entire step

12:16:26snapshot you will be able to see here.

12:16:28If you're using this persistence concept

12:16:31and there is a function called get state

12:16:33inside that you have to only pass the

12:16:35configuration the configuration you are

12:16:36preparing you'll be able to see the

12:16:38entire state. Okay. Uh it is saved in

12:16:41the memory. So yes uh this is the

12:16:43concept uh of this persistence. Okay we

12:16:45have learned this persistence concept.

12:16:48So here I already told you persistence

12:16:51we can add inside langraph. This is also

12:16:53possible. And don't worry I'm also going

12:16:55to um take another I'm also going to

12:16:57record another video on top of this

12:16:58persistent in detail. We'll try to

12:17:00understand each and every uh concept

12:17:02okay of this particular persistence. Now

12:17:05uh this thing is working fine. Now what

12:17:07I can do I can quickly

12:17:10uh I can quickly convert it to the um py

12:17:14file. So let's create a file here. I'm

12:17:16going to name it as

12:17:20aentic

12:17:25chatbot.py

12:17:29pipe

12:17:31and whatever code I have written here

12:17:34I'll just try to copy here

12:17:41or let's name it as aic chatbot back end

12:17:46back end okay now I'm going to copy here

12:17:49so first of all let's import all the

12:17:50necessary library.

12:18:01Select my environment.

12:18:05Then I'll load the environment variable.

12:18:13Then

12:18:16initialize the model.

12:18:19Define the state.

12:18:38So this is my state. Now I'll copy my

12:18:42node.

12:18:45After

12:18:49node I will copy my

12:18:53enter graph.

12:18:57Okay. Uh so this is going to be my uh

12:19:00final.

12:19:03Yeah. So this is going to be my final uh

12:19:06workflow object. Okay. Chatbot object.

12:19:07Now we can use this chatbot object

12:19:09anywhere to run this particular

12:19:11workflow. Now what I'm going to do guys

12:19:14um I'm going to show you whether it is

12:19:16working or not. So maybe I can create

12:19:18another file here called let's say

12:19:21app.py.

12:19:24Inside app.py let me first of all import

12:19:27this chatbot object. So from

12:19:31aentic

12:19:33chatbot back end import chatbot.

12:19:38Okay chatbot. Now I'll just write

12:19:41response is equal to chatbox.invoke

12:19:45and here we have to pass the human

12:19:46message. Okay. And for human message we

12:19:48have to import this library.

12:19:50This one

12:19:57so here I'll give let's say what is um

12:20:03python

12:20:05and whatever response I'll get I'll just

12:20:07try to print the response. Okay. Now

12:20:09let's see whether it's working or not.

12:20:11So I'll open up my terminal.

12:20:15Then I will activate my environment. So

12:20:17cond activate

12:20:22uh lang graph test

12:20:24h. After that we'll try to execute then

12:20:27app.py. So python app.py.

12:20:35Okay. Here

12:20:37uh okay. Uh sorry actually I have to

12:20:39give this uh I have to give this um uh

12:20:42trade ID right trade ID I haven't given

12:20:44because here uh initially we pass the

12:20:47trade right we are giving the checkp

12:20:49pointer so here I have to get the uh

12:20:50pass this trade

12:20:53so here I will copy this trade

12:21:05and also copy this configuration

12:21:13Then we'll pass this config. Now I think

12:21:16this will work.

12:21:26See it's working. Python is a high level

12:21:29um widely used programming language blah

12:21:31blah blah. Okay. But here uh actually I

12:21:34can't left this kinds of application to

12:21:36the user because user don't know how to

12:21:39code right and how to execute this uh

12:21:41app.py from the terminal. So definitely

12:21:43I have to add the user interface. Okay.

12:21:46Now let's try to add a user interface

12:21:47with the help of streaml here. So guys

12:21:50now we'll try to add the user interface

12:21:53uh for this uh chatbot with the help of

12:21:55streamlit. So streamlit is a python uh

12:21:58package and here you can uh create any

12:22:01kinds of user interface without using

12:22:02any HTML and CSS code. Right? So for

12:22:05this uh uh we have to install this

12:22:07streaml. So what I'm going to do in the

12:22:10same requirement file uh I think you

12:22:11know this requirement file I am using uh

12:22:15so far okay inside my langraph u

12:22:17tutorial. So here I'm going to add

12:22:20another package. I'm going to name it as

12:22:22stream.

12:22:25Okay, streamlit. You can uh specify any

12:22:28kinds of version if you want to install.

12:22:30So let's say I want to install this uh

12:22:32specific version. Then I will open up my

12:22:34terminal and I'll just write pip

12:22:36installer

12:22:43requirement.txt.

12:22:45Oh, sorry. Install spelling is not

12:22:47correct.

12:22:55Okay, as you can see installation is

12:22:57complete. Now, uh I'll come back to my

12:23:00app.py.

12:23:01Uh I'll close these other are the file.

12:23:04Now let's [clears throat] uh start

12:23:05implementing the UI. See uh your back

12:23:08end code will remain same. You don't

12:23:10need to change anything. Uh you only

12:23:12need this chatbot uh let's say uh object

12:23:16here. So which we have already imported.

12:23:18Okay. from agentic chatbot back end. We

12:23:21have already imported the chatbot. Now

12:23:24I'll just remove these are the code as

12:23:27of now. Okay. So see first of all here I

12:23:30need a streaml uh server right. Uh in

12:23:33that particular server uh I'm going to

12:23:36just add my UI functionality and uh this

12:23:39server should be run on my local host

12:23:42right and if you're using a streaml it's

12:23:44super easy to launch the server only you

12:23:46just need to import the streaml. So from

12:23:49or import

12:23:51streamllet

12:23:57as st. Okay. If you only import that and

12:24:01let's say here I will give a title only

12:24:04st. title. Let's say I'll give uh

12:24:07agentic chatbot with langraph. I have

12:24:10given this title. Now you have to

12:24:12execute this file only. Okay. Now if you

12:24:14want to execute this file uh if you just

12:24:17uh let's say write python app.py it

12:24:19won't be running that time for this you

12:24:20have to use streaml command streaml

12:24:24run

12:24:26app.py Pi. So basically you are

12:24:28launching the streaml server. Okay. Now

12:24:30if I execute

12:24:32and now see streaml server will be

12:24:34running.

12:24:38See this is the streaml server guys. And

12:24:40this is running on local host port

12:24:42number 85.

12:24:44Okay. Uh port number 8501. So by default

12:24:47streamllet runs on port number 8501 on

12:24:50the local host. See one thing you have

12:24:52observed here without writing any kinds

12:24:54of HTML and CSS. uh we got this kinds of

12:24:57user interface. Okay. So this is the

12:24:59work of streamllet and uh here you you

12:25:02can also change the settings. You can go

12:25:04to the settings. You can also um change

12:25:07the appearances. If I let's say active

12:25:10this wid mode uh this u title will be uh

12:25:15moving to the left side and let's say if

12:25:17I change the color let's say I want a

12:25:19light color. I want a dark color. Okay.

12:25:22Everything is [snorts] possible here.

12:25:24But here we'll try to uh customize uh in

12:25:26the code whatever things we need we'll

12:25:28only just try to add it. Okay, you can

12:25:30make it more beautiful for this. You can

12:25:32go to the streaml documentation and you

12:25:34can check it out. There are so many

12:25:36functionality you can use. But uh this

12:25:38front end is not like our concern. Okay.

12:25:41Uh there would be other front- end

12:25:43developer. Okay. They will take care

12:25:45about the front end and everything. uh

12:25:47but uh as a agent engineer we have to

12:25:51know the actual concept actual back end

12:25:53engineering I think this is more than

12:25:55enough okay so for this particular

12:25:57project uh whatever uh let's say uh UI

12:26:00interface we need we'll only just try to

12:26:02focus on that part see uh we already

12:26:05launched this uh streaml server and we

12:26:08set the title now here uh I need a user

12:26:11input box okay that means the chat box

12:26:13so here user will be able to pass any

12:26:16kinds of messages Okay, for this uh we

12:26:18can take this uh

12:26:21chat input.

12:26:24So if you want to get the chat input

12:26:28uh you can write this code st. chat

12:26:30input okay and you can give any kinds of

12:26:32message um because if you go to the chat

12:26:34GPT right so here you will see by

12:26:37default ask anything. So if you want to

12:26:39give this kinds of message, display

12:26:40message, you can write it here. And

12:26:42whatever message we will provide, it

12:26:44will store in the user input variable.

12:26:47Okay. So once we got the user input

12:26:49variable, if I show you, so if I let's

12:26:51say refresh now, see here, I got a chat

12:26:53chat input box. Okay. Now, whatever uh

12:26:56input you will give here, you will try

12:26:57to send it here. It would be stored

12:27:00here. Okay. Now I can also print and

12:27:02show you our S3.print

12:27:09ST

12:27:12uh dot

12:27:14text

12:27:18or let's say write

12:27:22I think there's a function called write

12:27:27now let me show you refresh

12:27:31user return none so if I let's say give

12:27:33hi now see here hi will come okay Okay,

12:27:36that's how you can take any kinds of

12:27:38user input. So after taking the user

12:27:40input guys, what I will check? I'll

12:27:42check first of all user has given any

12:27:43input or not. If uh user has given the

12:27:46input that means if user input is equal

12:27:48to is equal to true. Okay, that time

12:27:52I'll just try to

12:27:58um

12:28:00I'll just try to give a uh display

12:28:03display um actually icon. Okay. of the

12:28:06user

12:28:08and uh from this icon I'm going to take

12:28:11the user message

12:28:15H user input whatever user input we'll

12:28:17pass we'll try to pass it here. Now see

12:28:20what will happen if I refresh

12:28:22now say if I pass any text here. Now see

12:28:26uh this icon is coming because of this

12:28:29particular line chat message and this is

12:28:33user. Okay, this is the user icon and

12:28:35user has passed hi. So if you see any

12:28:37kinds of chatbot guys, you will be able

12:28:38to see people are using this kinds of

12:28:40icon to identify the human message as

12:28:42well as the AI message. Okay, that's why

12:28:44we have given this line and by default

12:28:45in streamllet it is available.

12:28:48So once I got the user input now what I

12:28:52have to do guys, I have to uh invoke the

12:28:55message to my chatbot. Okay, the chatbot

12:28:57object we have created. But before that

12:28:59we have to configure the

12:29:03uh trade right. So maybe what I can do

12:29:06here only I can prepare my trade.

12:29:11So config is equal to configurable trade

12:29:14ID. So here I have given let's say trade

12:29:17one. Okay. Trade one. You can also give

12:29:201 2 3 4. It's completely up to you.

12:29:22Okay. Even you can also write like that.

12:29:24Okay. You can also write like that. It's

12:29:26completely fine. But in in just one line

12:29:29I have added like that. Now let's try to

12:29:33invoke the message.

12:29:38Yeah. So here we'll try to invoke the

12:29:40message. Yeah. Chatbot dot invoke and

12:29:43message is equal to we are giving the

12:29:44human message. Content is equal to right

12:29:46now the user input and we're giving the

12:29:48config. Now whatever response I'm

12:29:50getting guys I will also show this

12:29:52response. So first of all I will extract

12:29:54the content from this response. So AI

12:29:57message is equal to response message

12:29:59minus one content. Okay, that means we

12:30:00are we are doing this operation. We are

12:30:03only extracting the AI message.

12:30:05And this AI message I will try to uh

12:30:08show in the console.

12:30:11For this I'm going to create another

12:30:12icon assistant icon and this message

12:30:15would be showing the assistant icon.

12:30:16Okay. Now let me show you if I refresh.

12:30:20Done. Now let's say if I give hi send.

12:30:24Now see assistant is giving hello. how I

12:30:26can assist you today. Now this is the

12:30:28assistant icon. This is the user icon.

12:30:29Okay, that's why we have given this chat

12:30:32message is uh inside that I have

12:30:34mentioned assistant. Whenever you will

12:30:36get give assistant automatically it will

12:30:37take the assistant icon and whenever you

12:30:40will give us user that time

12:30:41automatically it will take user icon.

12:30:43Okay. So that's how streamly it works

12:30:45guys. By default internally they are

12:30:46handling each and every scenario. Uh and

12:30:49uh they have given some highle

12:30:50functionality. We can use that and we

12:30:52can create our chatbot. Okay, it's

12:30:55working fine. But one issue uh in this

12:30:58particular chatbot would be let's say if

12:30:59I give another message I am bp

12:31:04now see previous message is getting

12:31:06replaced okay previous message is

12:31:08getting replaced now it is giving you

12:31:10the new one but I can't see my previous

12:31:12conversation but in chat GPT so let's

12:31:15say if I give I am buffy so I will be

12:31:19able to see my previous message as well

12:31:21okay so this kinds of thing uh if you

12:31:23want to do it that time you have to use

12:31:25something called session. Okay, session

12:31:27state inside streamllet. So streamllet

12:31:30also works in that way. U by default if

12:31:33you're not using session state what is

12:31:35happening? So every time it is

12:31:37reexecuting re-executing code from here

12:31:39and whenever it is re re-executing code

12:31:41from the beginning that time this

12:31:43message is getting erased. Okay, it is

12:31:45getting cleaned and new message is

12:31:47getting replaced here. But if you're

12:31:48using session state, session state will

12:31:50store this informations

12:31:53in memory and every time whenever it

12:31:56will execute from the beginning, it will

12:31:58not erase. Okay, still uh this

12:32:00information will be available inside

12:32:01memory and from memory it will uh able

12:32:03to load that. Okay, the same concept

12:32:05like um uh trading. Okay, we have

12:32:08learned before, right? Yeah. Now let's

12:32:11try to add this uh uh session state.

12:32:16First of all, we'll create a session

12:32:17state here.

12:32:21First of all, we'll try to create a

12:32:22session state. I'll check if message

12:32:24history is not in session state, then

12:32:26I'll try to create this message. Okay,

12:32:28it will uh create like a dictionary

12:32:31kinds of thing uh by default inside um

12:32:34this uh streamllet and this dictionary

12:32:37um it's a different type of dictionary.

12:32:39Basically, this dictionary will store

12:32:41the informations in the memory. It will

12:32:43not erase. Okay, if you execute the code

12:32:46from the beginning, still this

12:32:48dictionary data would be remaining same.

12:32:50Okay, then after that we'll load the

12:32:56conversation from the dictionary. So

12:32:58this is the code I have written loading

12:33:00the conversation story. So for message

12:33:02in state uh session state message and if

12:33:05it founds this message so it will

12:33:08basically load the role and the content.

12:33:11So role means uh whether it is the

12:33:14message for the user or AI. Okay, this

12:33:17particular role and the content.

12:33:21Now

12:33:22um here you have to write some line of

12:33:25code. Let's say whenever user is giving

12:33:27any kinds of input, this input should be

12:33:29stored in the message story. So this

12:33:32additional line you have to write here.

12:33:41This is the additional line. First add

12:33:43the message to the message story. So

12:33:44state session state message story we are

12:33:46appending it. Okay. Ro user content the

12:33:51user input. Okay. We are storing in this

12:33:53particular

12:33:55list. Once it is done now I will also do

12:33:59the same thing whenever I got the AI

12:34:00response. So after getting the AI

12:34:03response, we'll also

12:34:07save this in the message story.

12:34:11So you can see ST dos session state

12:34:13message append role. Now this role

12:34:15should be assistant. Okay, because this

12:34:16is the response from the assistant

12:34:18content is equal to AI message. Okay,

12:34:20done. Now if I come back here, refresh.

12:34:23Now if I give the message, let's say,

12:34:25hi.

12:34:27Hello. Hi. Can I assist you? My name is

12:34:31BPI.

12:34:35Um, nice to meet you. How I can assist

12:34:37you today? Okay. But this agentic

12:34:39chatbot with langraph is coming here.

12:34:42Let me see why. Okay, because you have

12:34:45to assign it at the beginning. Okay,

12:34:48because after load conversation story,

12:34:50we have assigned it. That's why it's

12:34:51coming here. So maybe at the top I will

12:34:53try to assign this one. Okay, now I

12:34:55think this will work fine. Refresh. Now

12:34:57I'll give hi.

12:35:00Fine. My name is

12:35:05BP.

12:35:07Now see nice to meet you BP. What is

12:35:10Python?

12:35:13Now see okay it's working perfectly and

12:35:16I am able to see my older message story

12:35:18as well. Okay. So yes guys we are able

12:35:21to create our um uh we are able to

12:35:25create our uh first uh chatbot workflow

12:35:29okay with the user interface even we

12:35:30have also added the uh this uh

12:35:33persistence concept that means the

12:35:34trading concept and don't worry I'm

12:35:36going to explain this trading course uh

12:35:38persistence concept in more detail in

12:35:39the next video but this is the first

12:35:41video guys I wanted to show you how we

12:35:43can create the skeleton of the agentic

12:35:45chatbot now the chatbot skeleton is

12:35:47ready okay now we have to add these are

12:35:50the functionality one by one. Okay, we

12:35:52have to add these are the functionality

12:35:53one by one. Now next I'm going to show

12:35:55you maybe the persistence concept in

12:35:58detail. Okay. After uh next uh I will

12:36:00discuss about the rag concept. How we

12:36:03can add the rag functionality. How we

12:36:04can add the tool functionality. Okay. UI

12:36:06I have already I have already shown you.

12:36:08Okay. UI um I'm not going to show you

12:36:10again. Maybe I'm going to update

12:36:12continuously update the UI as per my

12:36:14need. Then I'm also going to show you

12:36:15how we can uh add the observability tool

12:36:18like lang memory okay HITL okay each and

12:36:22everything we'll be discussing one by

12:36:23one guys okay so yeah this is the part

12:36:26one uh for this implementation guys of

12:36:28this agentic chatbot and we are able to

12:36:31build our first interface of the chatbot

12:36:34but right now it doesn't have any kinds

12:36:37of tool it doesn't have any kinds of

12:36:38rack capacity uh we'll try to add one by

12:36:41one okay uh through the entire series of

12:36:43the video and I'm going to share all of

12:36:46this code in my video description. From

12:36:48there you can get and you can execute

12:36:49inside your system guys. Okay. Now I can

12:36:52test one more thing which is the

12:36:53persistence. That means whether it is

12:36:55able to remember my name or not. So I'll

12:36:57ask what is

12:37:02my name?

12:37:07Your name is BPI as you mentioned

12:37:09earlier. Okay perfect it is able to

12:37:11remember. So guys here one more update

12:37:13we have to do inside this uh chatbot um

12:37:17which is let's say if I ask anything um

12:37:22let's say if I tell generate

12:37:26uh blog

12:37:29about

12:37:32um about let's say python now see if I

12:37:36give this uh prompt to my chatbot

12:37:40it will take some time Right? It is

12:37:42taking some time to generate this

12:37:44particular block and user has to wait uh

12:37:47till the execution. Right? But if you go

12:37:50to the chat GPT, if you give the same

12:37:52prompt, right? If you give the same

12:37:54prompt

12:37:56and if you send this message, so

12:37:59instantly you'll be able to see it will

12:38:02start generating one by one. So this is

12:38:04called streaming response. See it is

12:38:07still generating streaming response. But

12:38:10the chatbot we have created it is

12:38:12generating in one shot. Okay, we have to

12:38:14wait for the execution. Once execution

12:38:16is complete, once my generation is

12:38:18complete from the chatbot, then you will

12:38:20be able to see the content. Okay, so

12:38:22let's say if you are generating a big

12:38:24blog or any kinds of big content from

12:38:26the chatbot, that time you have to wait

12:38:28and this is not a good user experience,

12:38:30right? But in chat GPT, this is a good

12:38:32experience. Uh if you give any kinds of

12:38:34prompt, whether it is a big content, it

12:38:37doesn't matter. it will generate this

12:38:40content okay token by token uh and user

12:38:43will read it okay instantly user will be

12:38:45able to read it so this is called

12:38:47streaming response so if you want to

12:38:49implement this kinds of streaming

12:38:50response inside your chatbot as well you

12:38:53can also do it because I already told

12:38:54you I will also show you this streaming

12:38:56response as well okay uh streaming yeah

12:38:59how to add the streaming uh inside

12:39:01langraph in langraph also you can uh add

12:39:04this streaming concept now let's try to

12:39:05add it I will open up my

12:39:08So in this app.py only you have to add

12:39:12this line. So there is a like a very

12:39:16minor change you have to do. See uh

12:39:18whenever you are getting this um

12:39:22you are getting this

12:39:25uh assistant message right

12:39:28we we are invoking the response

12:39:32and after invoking the response we are

12:39:35getting the AI message. So basically

12:39:37here what is happening first of all you

12:39:39are invoking the message and you are

12:39:42waiting for the response once you got

12:39:44the response then you are showing this

12:39:46response to the streamly user interface.

12:39:49So we have to replace this code with

12:39:51this code.

12:39:55So this is the code guys

12:39:58you have to use. See here instead of

12:40:01inboxing at the very first time first of

12:40:03all what we are doing see we are

12:40:05preparing this assistant icon. After

12:40:07that there is a function inside streaml

12:40:10called write stream. Okay we are using

12:40:12this write stream function. Inside that

12:40:15uh we are using the chatbot object.

12:40:18Okay. Now instead of invoking we'll be

12:40:20using stream. Inside that you have to

12:40:22pass the uh message user input and you

12:40:26have to give the configuration. Okay. We

12:40:28already have the configuration. I need

12:40:29to pass the config only. So config is

12:40:33equal to config. Yeah. And stream mode

12:40:36is equal to message. You have to provide

12:40:37this particular uh configuration. And

12:40:41you have to run a for loop uh for

12:40:44message chunk and metadata. So whatever

12:40:46message chunk you will be getting you

12:40:48will only take the content and this

12:40:50message chunk

12:40:52uh continuously it will be showing in

12:40:55the streaml cons uh streaml user

12:40:57interface because we are using write

12:40:58stream that means every time whenever

12:41:01using chart gpt and you are generating

12:41:02something okay let's say you are

12:41:05generating something let's I'll tell

12:41:07more about it

12:41:10it is giving you the response token by

12:41:12token as you can see token by token okay

12:41:15so this kinds of token by token output

12:41:17you will be getting and you will be

12:41:19writing in the streamlit user interface.

12:41:21So this will feel like uh this is a

12:41:23streaming response that time. Okay. Then

12:41:25once everything is done then we will try

12:41:27to store this uh AI message to the

12:41:31history message we are appending like a

12:41:35same uh previously we did okay as

12:41:37assistant we are appending in the

12:41:38session state. Now let me show you. So

12:41:40if I get back if I refresh fine now

12:41:44let's say I'll give hi

12:41:49stream has no attribute right stream

12:41:55why this error is coming let me check

12:42:02maybe the version we are using it

12:42:04doesn't have this right stream so what I

12:42:06can do I can install the latest on.

12:42:22Now if I give the message again. Okay,

12:42:25still the same issue. Let me check guys.

12:42:31Okay, I have given this error to the

12:42:33chart GPT and CH GP is telling you still

12:42:35you need to upgrade this streaml. So let

12:42:37me execute this command.

12:42:42p install upgrade streamllet.

12:42:47H. So basically this will download the

12:42:49upgraded version.

12:42:55Then now we can try again.

12:43:08Now I'll give message hi.

12:43:14Now see we are getting the response. Now

12:43:16if I ask let's say generate

12:43:20uh blog

12:43:22about python.

12:43:25Now see it is streaming response like

12:43:27chatgity right now. Okay. And this is

12:43:30more interesting and more

12:43:33uh good experience to the user. Okay. So

12:43:36that uh this kinds of scenario you also

12:43:38you also need to take care whenever you

12:43:40are creating this kinds of uh agentic

12:43:43system. Okay. Or any kinds of simple

12:43:44chatbot whatever you are creating this

12:43:46kinds of thing you have to take care and

Why Persistence is Required in LangGraph

12:43:49a lang uh graph is having this kinds of

12:43:52concept integrated. Okay. You can easily

12:43:54implement this thing in the lang graph.

12:43:57Okay. Okay. So we have also se seen how

12:43:59we can add the streaming response inside

12:44:02our application. Okay. Now this

12:44:04application looks more cool. Now in the

12:44:06next video guys I'm going to discuss

12:44:08about this uh persistence concept in

12:44:10more detail. We'll try to see uh what is

12:44:14this persistence is all about. We have

12:44:16already understood in this video as a

12:44:18high level but uh in detail I'll try to

12:44:20discuss in the next video. So yeah guys

12:44:22this is all about from this uh first

12:44:24part of this implementation. So guys as

12:44:27you can see this is the definition of

12:44:29persistence and uh in my previous uh

12:44:31video that means in the part one maybe I

12:44:34already given you the highle overview on

12:44:36top of this persistence like what is

12:44:38persistence and how we can integrate

12:44:40with our chatbot I already told you

12:44:42about but let's try to understand the

12:44:44detailed definition of persistence as

12:44:46you can see persistence in langraph is a

12:44:48built-in layer that automatically saves

12:44:50and restores the state of your agent or

12:44:54graph workflow over time. Okay. It works

12:44:58by uh using a checkpointer to

12:45:00automatically capture snapshot of the

12:45:02graphs state at every step organizing

12:45:06them into unique and retrievable traits.

12:45:10Okay. So I think uh by the definition

12:45:12itself you can understand uh what I'm

12:45:14trying to say here because if you have

12:45:16already completed the part one uh of

12:45:18this uh uh chatbot implementation I

12:45:20think you know that uh see persistence

12:45:23why it is required. First of all, let's

12:45:25try to understand from the beginning.

12:45:28Um, I think you know uh inside aentic

12:45:31application first of all we'll have a

12:45:33goal, right? So let's say yeah let me

12:45:35write down.

12:45:38Yeah. So see in any kinds of agentic

12:45:41application first of all definitely

12:45:42we'll have a goal. Let's say you have a

12:45:46problem statement right? You want to

12:45:47let's say here we are creating a aentic

12:45:49chatbot. So definitely this is our goal.

12:45:51Now this goal should be divided into

12:45:53multiple tasks. So first of all what

12:45:55we'll do guys we'll try to divide this

12:45:57goal to the multiple task. Let's say

12:45:59this is task one. Okay this is task two

12:46:05and so on. That's how we'll be breaking

12:46:07down different different task and

12:46:09whenever we'll be using lang graph right

12:46:11whenever we'll be using lang graph

12:46:15because so far we are learning about

12:46:16lang graph. So in lang graph to define

12:46:19this particular task we use something

12:46:21called nodes right each of the task will

12:46:23become a nodes let's say this is our

12:46:25first nodes this is our second nodes

12:46:27okay and so on so that means first of

12:46:30all we'll be having a goal and we'll

12:46:33define a task from this particular goal

12:46:35like u step-by-step task and this

12:46:38particular task would be our nodes okay

12:46:40inside the graph because this is the

12:46:42entire graph as you can see this is the

12:46:44entire graph

12:46:48entire graph in line graph, right? This

12:46:50is the entire graph in line graph and

12:46:52these are the nodes. Okay. And you can

12:46:53see this is the age connection.

12:46:56Uh this is the age connection and this

12:46:58start node is nothing but this is the

12:47:00input. So here we pass our initial state

12:47:04initial input right and this input will

12:47:06go through this edges. This edge is

12:47:09nothing but it's a connection. This edge

12:47:11defines basically after which node what

12:47:14node should be executed. Okay, because

12:47:16of this particular arrow symbol. As you

12:47:19can see this arrow symbol defines okay

12:47:20after start nodes node one would be

12:47:23executed. After node one node two would

12:47:25be executed like that right. So this is

12:47:27called ages. This is called ages and

12:47:30this is called nodes. We already know

12:47:32about this is called nodes right.

12:47:35Okay. Then this particular task will go

12:47:38through all of the nodes. Then at the

12:47:40last we use a end nodes. What this end

12:47:43nodes will do it will first uh basically

12:47:45uh stop the graph execution. Okay. Let's

12:47:47say whenever we'll give any kinds of

12:47:49input and whenever it will reach to this

12:47:52particular end it will stop the graph

12:47:55execution and you will be able to see

12:47:56the final okay final result here. Final

12:48:01result here and we have already seen

12:48:02this particular things in the practical

12:48:04implementation as well. I think this is

12:48:06pretty much clear to you right now. See

12:48:09the main things we have to understand uh

12:48:12whenever we are defining any kinds of

12:48:14graph right whenever we are defining any

12:48:16kinds of graph and if I want to execute

12:48:18this graph in lang graph we have to

12:48:20provide something called state right we

12:48:22have to provide something called state I

12:48:24think you know that without state we

12:48:25can't execute any kinds of graph and

12:48:27what is state is nothing but it's kinds

12:48:30of uh it's kinds of variable we are

12:48:32passing right it's kind of some of the

12:48:34data we are passing to the graph okay

12:48:37let's say in this particular chatbot

12:48:39what is should what should be the state

12:48:41state should be the message let's say

12:48:43the message user is giving okay and our

12:48:46AI bot is replying so this is the

12:48:48message this is the information so every

12:48:49time what will happen this state will go

12:48:51to the every nodes okay every nodes and

12:48:54this nodes whatever uh output will

12:48:56return it will basically update in this

12:48:57particular variable okay this is called

12:48:59state but what happens if we are giving

12:49:02this particular state to the um graph so

12:49:05let's say we are passing the state to

12:49:07the start node right Then start node

12:49:09will pass to the node one then node two

12:49:11then n then end. So whenever it will go

12:49:13to the end that means this graph

12:49:16execution is getting over and whatever

12:49:19state whatever state data you are having

12:49:21here it will be basically erased that

12:49:23time. Okay it will be basically erased

12:49:25that time. Then whenever you will be

12:49:27running second time you won't be able to

12:49:29get the previous information whatever uh

12:49:32you got in the first execution right

12:49:34inside the state. So this is the main

12:49:35problem. Then what we introduce we

12:49:37introduce something called persistence

12:49:39right we introduce something called

12:49:42persistence. So in persistence what we

12:49:45usually do here we basically save the

12:49:49entire state okay inside a storage

12:49:51service either you can use your uh RAM

12:49:54okay we call it as a memory saver either

12:49:56you can use any kinds of database that

12:49:58means two kinds of storage service you

12:50:00can use either you can use your RAM that

12:50:03means memory

12:50:05okay your computer memory either you can

12:50:08use any kinds of database here okay

12:50:11database is the permanent one. Okay,

12:50:14perma

12:50:16net one and this is the temporary one.

12:50:20Temporary one. Okay, temporary means if

12:50:22you restart your application that time

12:50:24this data would be erased. But in

12:50:26database if you restart your application

12:50:28okay it doesn't matter you if you

12:50:30restart if if your uh uh let's say

12:50:33system crashes it doesn't matter your

12:50:35data will be permanent okay you can load

12:50:37anytime this kinds of data that okay

12:50:40[snorts] that means uh inside persistent

12:50:43whatever state snapshot we are having

12:50:45okay we try to store inside a storage

12:50:47service that's why in in the definition

12:50:49itself you can see persistence in lang

12:50:51graph is a built-in layer that

12:50:52automatically save okay and restore That

12:50:55means you can restore this particular uh

12:50:57state anytime okay from the storage

12:50:59service the state of your agents okay

12:51:02the state of your agents or graph

12:51:04workflow over time okay over time means

12:51:07because it is every every time it is

12:51:09capturing your snapshot it is um let's

12:51:12say this persistence every time it will

12:51:14save the informations in the u uh

12:51:17storage service let's say after start

12:51:18whatever uh state uh update you got

12:51:21right this particular information would

12:51:23be saved after node one execution

12:51:25Whatever uh state would be saved, it

12:51:27will be basically saved in the database

12:51:29or your local storage. Okay, that's how

12:51:31every step okay every step it will be

12:51:35saving the information of your state.

12:51:37That's why we call it as a overtime here

12:51:39and it works by using a checkpointer to

12:51:42automatically capture the snapshot of

12:51:44the graph state at the every step. Okay,

12:51:46I already told you and in my previous

12:51:48implementation I used something called

12:51:49checkpo pointer. I think you know that

12:51:51again I will give you the idea. Okay,

12:51:52how checkpoint pointer works and uh each

12:51:54and everything I'll give you. Then one

12:51:56uh another thing we learned this

12:51:57organizing them into unique and uh

12:51:59retrievable trades. Okay, we'll be also

12:52:01learning about the trades. Trade means

12:52:03you can create multiple trades. Let's

12:52:05say uh trade one you can do some kinds

12:52:08of conversation in trade two you can do

12:52:10another uh kinds of conversation. Okay.

12:52:12So both conversation would be different

12:52:14and you can't use trade one information

12:52:16in trade two and trade two information

12:52:19in trade one. Okay. we can also make

12:52:21this particular difference. Okay, I hope

12:52:22you got it guys. Now that's how your

12:52:25persistence comes into picture and this

12:52:27is very much important whenever you are

12:52:28creating this kinds of agentic AI

12:52:30application otherwise what will happen

12:52:32your application may not get this state

12:52:35uh data okay over time whenever you are

12:52:39creating this kinds of uh agentic

12:52:41chatbot or any other let's say advanced

12:52:44application uh which is required your

12:52:46older data as well okay just try to

12:52:48think about whenever we are creating

12:52:49this agentic chatbot definitely I need

12:52:51my previous response let's say I have

12:52:53given the input my name is BP right and

12:52:56second time if I'm asking what is my

12:52:58name so definitely it should remember

12:52:59that particular informations right

12:53:01whatever it has updated uh in the state

12:53:04okay but if it is getting end right and

12:53:06if the final result is getting erased

12:53:09okay of this state that time definitely

12:53:11your uh definitely your agent won't be

12:53:14able to give you the response but if

12:53:15you're using the persistence concept and

12:53:18if you're capturing this state okay

12:53:19inside a memory okay if you're saving

12:53:21this inside a memory so anytime time we

12:53:23can load this and we can pass again to

12:53:26the graph and graph will be able to

12:53:27recall the previous information and that

12:53:29that will be able to give me the result.

12:53:31Let's see your name is BP. So this is

12:53:33the main fun here. Okay, I hope you

12:53:35clear guys. So guys now let's try to

12:53:37understand the specialtity of

12:53:39persistence. Uh see persistence

12:53:42uh is having some kinds of specialtity.

12:53:45Um see I told you uh whenever we define

12:53:49any kinds of state right and uh uh

12:53:52whenever we execute a graph so this

12:53:54state will go to the every nodes right

12:53:56every nodes it will go and uh all the

12:53:59nodes will be uh updating something in

12:54:02the state okay and we'll be getting a

12:54:04final result from here so it doesn't

12:54:07mean this persistence will only capture

12:54:09the final updated state information

12:54:12instead of that it will be able able to

12:54:16uh store your intermediate uh let's say

12:54:19data intermediate data means see what

12:54:22happens whenever we define any kinds of

12:54:24state right let's try to take example

12:54:27let's say state so let's say here I have

12:54:30taken a state um the state name is let's

12:54:32say I will take name I want to only save

12:54:35the name information here okay name

12:54:38let's say I have only taken one variable

12:54:40so what will happen this state will go

12:54:42to the every node first of all it will

12:54:44go to the start node. Okay. After going

12:54:47to the start node, uh this uh uh uh your

12:54:51graph would be initialized, your graph

12:54:53would be executed. So through this

12:54:55edges, it will reach to the node one.

12:54:57Okay. Let's say in node one, we are

12:54:59doing some kinds of update. That means

12:55:00node one is updating this name.

12:55:04Let's say initially it was uh let's say

12:55:06initially I have given a let me take

12:55:09this color. Initially let's say the name

12:55:11was A. Okay. Now what will do? This node

12:55:14one will try to update this particular

12:55:16name. Let's say it will be uh updating

12:55:20B. Okay. It will update B. But whenever

12:55:23we pass this state okay initially it was

12:55:26name A. Okay. But whenever we pass

12:55:29through this node one uh this uh was

12:55:32changed to to the B. Right. So the

12:55:35execution you can see here node uh start

12:55:37to node one uh that means through this

12:55:40execution okay this is called super

12:55:44super step okay this is called super

12:55:47step so what is super step basically to

12:55:49execute the entire nodes okay to execute

12:55:52the entire graph uh whatever super step

12:55:55we perform okay let's say if I want to

12:55:58execute the entire graph definitely I

12:56:00have to execute node one node two okay

12:56:02then it will go to uh go to this end

12:56:04then your entire graph would be

12:56:06executed. Then you can see multiple age

12:56:08connection is there and each of the age

12:56:10connection is a super step here. Okay,

12:56:12that means in every super step there

12:56:14would be some kinds of update in the

12:56:16state and your persistence would be able

12:56:18to capture this informations in the uh

12:56:21stories. Okay, that means let's say

12:56:24after node one it will go to the node

12:56:26two let's say node two will try to

12:56:28replace this uh B to this C. Okay. And

12:56:32whenever it will reach to the end and

12:56:34here you will get the final name MC.

12:56:37Right. But it's not like that. It is

12:56:39replacing all of the previous

12:56:41information. Still the previous

12:56:42information is available. Okay. Still

12:56:44the previous information is available.

12:56:46Okay. So this information I we call it

12:56:48as a intermediate

12:56:51intermediate.

12:56:55Okay. Intermediate state.

12:56:58Okay. We call it as intermediate state.

12:57:00And this is called final

12:57:03state. Okay, final state. That means the

12:57:06specialty of persistence is it will

12:57:08capture your intermediate state. State

12:57:10state as well and the final state as

12:57:12well. Okay, it's not like that. Every

12:57:13time you'll get the final state

12:57:15definitely intermediate state would be

12:57:17available uh after each and every super

12:57:20step execution. Okay. Let's say in

12:57:23future uh your application will crash

12:57:25here. Let's say node one it will crash

12:57:27or let's say node two it will crash.

12:57:29Okay, that time it's not necessary.

12:57:32Whenever you will restart your

12:57:33application, it will execute from the

12:57:35beginning. Okay, it's not like that

12:57:36because it has the intermediate state

12:57:38and it has already has the information.

12:57:41Okay, so what it will do? It will re

12:57:44able to resume. Okay, it will able to

12:57:45resume your application from node one or

12:57:48node two because it has captured the

12:57:50intermediate state. Okay, so this is

12:57:52called actually fault tolerance. I

12:57:54already told you about this, right?

12:57:56fault tolerance in my introductory

12:58:00session I already told you about fault

12:58:02tolerance right that means whenever your

12:58:04application get crashes it not it's not

12:58:07necessary to re-execute application from

12:58:09the beginning okay you can execute your

12:58:11application wherever your application

12:58:13got crashes let's say this is crash

12:58:15point okay or let's say this is crash

12:58:17point wherever your crash point happens

12:58:20it will resume the application from here

12:58:22itself okay I hope you get it so this is

12:58:25the specialty of This persistence uh if

12:58:28you see these kinds of question in the

12:58:30interview what is the specialty of

12:58:32persistence that time you can tell it

12:58:34can also save the information uh of the

12:58:37intermediate state along with the final

12:58:39state okay I hope you get it and if you

12:58:42go to the uh uh real time let's say

12:58:44application let's say if I go to the

12:58:45chart GPT okay chart GPT also using this

12:58:48kinds of persistence concept so in chat

12:58:50GPT what you can do you can either

12:58:52create a new conversation okay new chat

12:58:55either you can continue with your old

12:58:57chat, right? Either you can continue

12:58:58with your old chat. Let's say if I want

12:59:00to continue some kinds of old chat, I

12:59:03can continue here. Let's say this is my

12:59:05old chat as you can see, right? I can

12:59:08continue here. So, let's say what is

12:59:13the final

12:59:15code?

12:59:17See, it will basically uh reusing my

12:59:21older state.

12:59:23See and it is continuing the

12:59:26conversation. Okay. And even I can also

12:59:29start a new conversation here. Okay. If

12:59:31I start a new conversation that means my

12:59:33new state would be created and one by

12:59:36one this uh super step will be executed

12:59:39and each and every okay step this

12:59:42snapshot would be captured. It will be

12:59:43updated in the state. Okay. So without

12:59:46this state you can't create this kinds

12:59:48of application. Definitely uh for this

12:59:51kinds of advanced agentic chatbot you

12:59:53need this state and this state is

12:59:55already sorry um uh you need this kinds

12:59:58of persistence concept and this

12:59:59persistence is already okay integrated

13:00:02inside lang graph. Okay and with the

13:00:04help of that you can handle this kinds

13:00:06of fall tolerance in a very easiest

13:00:07manner. Okay, I hope you got it guys.

13:00:10I've given you the example with the real

13:00:12world example as well like chart GPT. So

13:00:14charge GPS are also using this kinds of

13:00:18persistence in the back end. So in

13:00:20charge GPT what is happening whatever

13:00:22conversation you are doing okay whatever

13:00:25conversation you are doing uh this kinds

13:00:27of information is getting saved uh okay

13:00:31uh in the state and they're using

13:00:33persistence concept here definitely and

13:00:36they're storing this kinds of

13:00:37information um in a database okay

13:00:39they're not using any kinds of local uh

13:00:42storage service instead of that they're

13:00:43using some kinds of database and from

13:00:45the database itself this information is

13:00:47getting okay fetched okay Whenever you

13:00:50are opening any kinds of old

13:00:51conversation, you will be able to see

13:00:53whatever uh message you have done here.

13:00:55So the this information is coming from

13:00:57the database. Okay, I hope you clear

13:00:59guys. Now guys, this definition would be

13:01:02pretty much clear uh like uh what is

13:01:04happening inside persistence. Uh now

13:01:07let's try to understand another uh

13:01:09concept here. As you can see, it works

13:01:10by using a checkp pointer to

13:01:12automatically capture the snapshot of

13:01:14the uh graph states. Okay, at every

13:01:17step. Now let's try to understand what

13:01:19is this uh checkpointer exactly. So here

13:01:22I have taken another example guys. As

13:01:23you can see checkpointer is uh in inside

13:01:26of persistence.

13:01:28See checkpointer is nothing but uh you

13:01:32can consider this checkpointer is kinds

13:01:34of uh it's kinds of tracking uh tracking

13:01:38functionality. Tracking functionality

13:01:39means each and every super step whenever

13:01:42it is executing and whatever update we

13:01:45are making inside the state that time

13:01:47checkpointer will be able to capture

13:01:50those informations in the uh state right

13:01:53in the state means it will be able to

13:01:55capture those information and it will

13:01:56save inside the uh persistence memory

13:01:59okay so let's try to understand this

13:02:01concept in detail so what I'm going to

13:02:03do I'm going to open up my blackboard

13:02:04and here let me make you understand see

13:02:07what I told Okay. Uh whenever we uh give

13:02:10any kinds of state to a graph. Okay. Uh

13:02:14so what will happen? It will execute the

13:02:15nodes one by one. As you can see we are

13:02:18having lots of nodes here. And uh you

13:02:21can see the age connection. This is the

13:02:22age connection. And whenever you are

13:02:24doing this kinds of age uh age

13:02:26connection uh and age execution that

13:02:28means after start to uh sorry um from

13:02:31start to node one here we are get doing

13:02:34a execution and this execution we call

13:02:36it as a super step right I already told

13:02:38you about super step

13:02:41right. So when whenever you are having

13:02:43this kinds of super step okay whenever

13:02:46you are having this kinds of super state

13:02:48uh after that you will basically set a

13:02:51checkpoint okay set a checkpoint that

13:02:53means whenever we are passing a initial

13:02:55state to the start that time one

13:02:57checkpoint would be available here

13:02:59checkpoint

13:03:01uh checkpoint one okay let's say this is

13:03:03our checkpoint one then [snorts]

13:03:06u after doing this uh superstep

13:03:08execution there would be again a update

13:03:10so there would be another Checkpoint

13:03:13let's say this is checkpoint two and you

13:03:16here you are having multiple nodes okay

13:03:18as parallel so this is one execution

13:03:21this is another execution this is

13:03:22another execution we combine all of the

13:03:24execution and we will be calling as a

13:03:26another super step another

13:03:29super step

13:03:37right and uh after this super step there

13:03:40would be another checkpoint and

13:03:44checkpoint three. Okay. And at the last

13:03:48uh because here we are doing another

13:03:49superstep execution and I'm getting the

13:03:51final response. Okay. Here also another

13:03:53checkpoint would be available.

13:03:55Checkpoint let's say four. Okay. And

13:03:57every checkpoint will capture the

13:03:59updated state. Let's say after this

13:04:01start to node one whatever update will

13:04:03be happening in this state this

13:04:05checkpointer will capture that

13:04:06information. It will save in the

13:04:08persistence memory.

13:04:11Okay, persistence

13:04:13memory it will save either you are using

13:04:15local local storage that means your RAM

13:04:18either you you are using any kinds of

13:04:20database okay database it will store

13:04:24there okay whenever it is uh storing

13:04:28that means it is not replacing the value

13:04:30instead of that it is merging that means

13:04:32it is adding the information

13:04:34adding the information and we call it as

13:04:36a reducer concept I think you know that

13:04:39reducer That means whenever we are using

13:04:41this kinds of persistence concept

13:04:43definitely we have to use the reducer

13:04:45okay reducer concept we'll be

13:04:47continuously adding the informations

13:04:49instead of replacing the old one okay I

13:04:51hope you get it guys okay then uh this

13:04:54kinds of uh checkpoint we have in every

13:04:58uh super step and whenever any kinds of

13:05:00update would be happen in the state it

13:05:02will capture the information and you'll

13:05:04be getting a final snapshot final let's

13:05:06say state at the last checkpoint and

13:05:08this will like store at the last. Okay,

13:05:10but you will be able to see the previous

13:05:12update as well in the state. Okay, this

13:05:15is how this particular checkp pointer is

13:05:17working.

13:05:19I hope you got it right. To get the like

13:05:23updated data in the state, we use this

13:05:25kinds of checkpointter and the

13:05:26checkpointer work is to capture this

13:05:28information in the storage service. This

13:05:30is the work of a checkpointer. That's

13:05:32why in the definition itself I think you

13:05:34see the definition in the definition

13:05:36itself it is telling it works by using a

13:05:38checkpoint to automatically capture

13:05:40snapshot of a graph state at every step.

13:05:42Okay. Because we're using every step

13:05:44execution here. I hope you get it guys.

13:05:47Okay. Now let's try to understand this

13:05:49checkpointer concept through an example.

13:05:51Let's say I'll take the same graph

13:05:53execution here. So let's say here I will

13:05:56define a state.

13:05:58Let's say

13:06:01I'll define a state here. Uh the state

13:06:04variable I'll take number.

13:06:07Okay. Number. So this number will be a

13:06:11list of integer.

13:06:13List of

13:06:15integer. Okay. And here we are using add

13:06:21operation. Why we are using add

13:06:22operation? Because we are using reducer

13:06:24concept. I think you know that. Okay.

13:06:26And uh this uh this number would be a

13:06:29list list of numbers and all of the

13:06:31number would be integer. Okay. So let's

13:06:34say initially whenever I will pass this

13:06:36number

13:06:38pass this number to the uh graph

13:06:41initially let's say the value is one.

13:06:43Okay. The value is one. So I told you

13:06:47each and every

13:06:49uh super step will be having a checkp

13:06:51pointer. Let's say I can define all of

13:06:54the checkpointer definitely uh at the

13:06:57first node there would be a

13:06:58checkpointter let's say CP1

13:07:02then here also we'll be having a

13:07:03checkpointer CP2 here also we'll be

13:07:06having a checkpointer CP 3 and here we

13:07:09are having let's say CP 4 we are having

13:07:13all the checkp pointer so what will

13:07:15happen

13:07:17uh yeah so whenever it will execute it

13:07:21will go to the node one. Okay, let's say

13:07:23node one update um update this value.

13:07:27Let's say this number, it will update uh

13:07:30let's say two.

13:07:32Okay, two. It will return two. So what

13:07:35will happen? Um now the number will

13:07:37become like that.

13:07:40So in this list

13:07:44list so initially the number was I'll

13:07:47denote with n. N means number. Initially

13:07:50it was one right one and now it has

13:07:53updated uh two. So instead of replacing

13:07:56the previous one it will add the number

13:07:58at the last. Okay this is the concept of

13:08:01the reducer. Okay and this is called

13:08:03your intermediate state. Now we got the

13:08:06intermediate state. Now it will go to

13:08:08the next node execution and here also

13:08:11you are having a check pointer. Now

13:08:13let's say this generates uh single

13:08:15number. Let's say it will generate

13:08:17three. This will generate four and this

13:08:19will generate five. So what will happen

13:08:21again? The number should be like that 1

13:08:252 then this uh three will come four will

13:08:29come and five will come. So three

13:08:33four and five. Okay. Then it will save

13:08:36this information to the memory. Okay.

13:08:40Every time it will save this information

13:08:41to the memory because checkp pointer is

13:08:43saving the information to the memory.

13:08:45either you are using local memory or any

13:08:46kinds of database. Okay, it will try to

13:08:48save that particular state. Then it will

13:08:50go to the last one that mean checkp

13:08:52pointer um checkpo pointer four uh let's

13:08:56say uh this returns the final result and

13:08:58here you haven't done any kinds of

13:09:01update. So what would be the final okay

13:09:03final number final number should be 1 2

13:09:073 4 and five then this final state would

13:09:11be also saved okay in the database.

13:09:13Okay, that's how we are not only getting

13:09:16the updated state and instead of that we

13:09:18are also getting the intermediate state.

13:09:20How? Because of the checkp pointer.

13:09:22Okay, now I think this part is clear to

13:09:24all of you guys. So guys, we have

13:09:26understood about this uh persistence. Uh

13:09:29we have understood the persistence then

13:09:31then we have also understood what is

13:09:33checkpointer and how it works. Okay. Now

13:09:36let's try to understand another

13:09:37important concept as you can see

13:09:39organizing them into unique and uh

13:09:42retrievable traits. Okay. Now let's try

13:09:44to understand what is this trades. Okay.

13:09:46Trades is also a concept of persistence.

13:09:49So in my previous uh uh part guys that

13:09:52mean in the part one I already told you

13:09:54about the trades right? We added the

13:09:56trades uh with the help of trades

13:09:58actually we can separate out each and

13:10:00every let's say chat. Now let's say if

13:10:04you are doing um chat in trade one that

13:10:08means in trade two you won't be able to

13:10:10see that particular chat or in trade

13:10:13whatever uh chat you are doing in trade

13:10:15one you won't be able to see in inside

13:10:17trade two. So this kinds of thing I

13:10:19think I already showed you if you

13:10:20haven't checked that please try to check

13:10:21check my previous part guys. So here

13:10:24let's try to understand this trading

13:10:26concept as you can see trades in part

13:10:27persistence we have already taken an

13:10:29example here. So I'm going to open it

13:10:31up. So see here what is happening let's

13:10:35say here we have taken two trades let's

13:10:38say this is trade

13:10:41this is trade one and this is trade

13:10:45sorry this would be trade

13:10:51trade one and this is

13:10:54trade two okay now in trade one as you

13:10:57can see I have um I have updated some

13:11:01kinds of state okay so here would be one

13:11:03actually I missed out. Yeah. So you can

13:11:05see um let's say here we got one then

13:11:07after node two execution we got one two

13:11:09okay and so on like I already showed you

13:11:12this example before right yeah now I

13:11:15have taken the same example but I

13:11:17updated let's say another state number

13:11:20let's say here I started from six then

13:11:22node after node one execution I got 6 7

13:11:26then 6 7 8 9 10 okay then 6 7 8 9 10

13:11:29this is the final number so see what is

13:11:31happening here although I am executing

13:11:34ing this graph two time okay two times

13:11:37but in a different trades so for the

13:11:40first time I have given a separate

13:11:42number and for the second time I have

13:11:45given another number so it is not

13:11:48replacing the previous information as

13:11:50you can see previous information is

13:11:51remaining same because it is running in

13:11:53a different trade and here trade ID is

13:11:55different it is also running the same

13:11:58graph but it is running in the another

13:12:00trade okay I hope you got this concept

13:12:03so if I uh give give you one real time

13:12:05demo guys if I go to the chart GPT. So

13:12:07in charge GPT also I think you

13:12:09understand let's say whenever we do

13:12:12chart operation right uh it will

13:12:14basically creates a trades let's say

13:12:16this is a trades this is another trades

13:12:18okay that's why we are having different

13:12:19different trades

13:12:21okay let's say if I show you let's say

13:12:24this is the different different trades

13:12:25let's say this is another trades

13:12:27okay this is another traits

13:12:31that means this information you won't be

13:12:34able to see in this particular trades

13:12:37Right? And whatever information you are

13:12:39having, you won't be able to see in this

13:12:41particular trades. Right? These two

13:12:44trades are completely different. And

13:12:46whenever you are creating this kinds of

13:12:48real time agentic chatbot or agentic

13:12:51application definitely you have to take

13:12:53care this particular traits otherwise

13:12:55what will happen it will be getting the

13:12:58previous context as well. Okay. and I

13:13:01will be able to separate out my chat

13:13:04whenever let's say this inform uh this

13:13:07application uh is using by multiple

13:13:09person or let's say by me only I won't

13:13:12be able to uh separate out my chat

13:13:15informations okay everything will be

13:13:18combining in one particular trades and

13:13:19this is not good right so that's why we

13:13:22create this particular trades and now we

13:13:24can also create another trades by click

13:13:26on new chart now if you do any kinds of

13:13:28conversation see it will create another

13:13:30trades automatically here. See, new

13:13:33chart has created and this is another

13:13:34traits. Okay. So, we'll also able to see

13:13:38uh how we can add this kinds of uh

13:13:41trading uh how we can add this kinds of

13:13:43let's say uh realtime trading inside our

13:13:46chatbot also. Although I have shown you

13:13:48the trades but I hardcoded the trade one

13:13:50and trade two right u in my previous

13:13:53demo but I will show you okay whenever

13:13:55you are creating this kinds of chatbot

13:13:56uh in a user interface also how we can

13:13:59add uh like chart GPT okay these kinds

13:14:01of trading I will also able to show you

13:14:03so now I think you understood about the

13:14:05trades guys what is trades exactly

13:14:07trades is basically uh it stores the

13:14:11informations with a trade ID let's say

13:14:13whenever you are using any kinds of

13:14:14database or your local storage it

13:14:17doesn't matter let's say whenever you

13:14:18are using local storage that means your

13:14:20RAM that time what is happening in the

13:14:22RAM only it is creating a separate ID

13:14:26trade ID okay that means it is taking a

13:14:28separate space inside a RAM and for

13:14:32trade two it is taking another separate

13:14:34space in the RAM although it is

13:14:35executing the same graph but it is

13:14:37executing in a two different place but

13:14:39in database what is happening I know you

13:14:41know that in database we create a table

13:14:43right inside a table we can create a

13:14:47another column called uh trade id okay

13:14:50trade ID let's say if trade ID one all

13:14:53of the information would be saved about

13:14:55the trade ID in this particular row

13:14:57itself let's see if trade is equal to

13:14:58two all of this information would be

13:15:00saved related trade two here so whenever

13:15:02I need trade one I will try to fetch the

13:15:04trade one whenever I need trade two I

13:15:06will fetch the trade two okay that's how

13:15:08the things work actually basically it

13:15:09saves the same information but in a

13:15:11different different threads to separate

13:15:13out my each of the that's a state or

13:15:15each of the charts. Okay, I hope you get

13:15:17it guys. So guys, we have understood the

13:15:20theoretical concept of persistence in

13:15:23line graph. Now let's try to see the

13:15:25code example. Okay, for this I will

13:15:28create a simple sequential workflow

13:15:30here. So this is the graph I have taken.

13:15:32As you can see this is the this is our

13:15:33workflow. So here basically we'll try to

13:15:36um see um um see example. In this

13:15:40example, first of all, we'll try to

13:15:42generate a joke of a topic. Let's say

13:15:46here we'll pass a topic. Let's say we

13:15:47will pass any kinds of topic. Let's say

13:15:50I passed football. So, first of all,

13:15:51what will happen? Uh here we'll create a

13:15:54node and this node will try to generate

13:15:56a joke on top of that topic. Let's say

13:15:58it will generate a joke on football.

13:16:00Then after that, we'll pass this uh joke

13:16:02to another nodes called gen um uh exp.

13:16:07Basically uh this will uh generate the

13:16:10explanation of that particular joke.

13:16:12Let's say the joke we have generated we

13:16:14want to generate the explanation of that

13:16:16particular joke. Then this um workflow

13:16:18will be end. And to make this uh graph

13:16:20guys we need a state. So I already

13:16:22prepared the state. As you can see we

13:16:23named it a joke state. We are inheriting

13:16:26with the type dict and uh we have taken

13:16:28the state. First of all we need a topic.

13:16:31Then whatever joke it will generate joke

13:16:33would be there. Then explanation. Okay

13:16:35that means the three variable we have

13:16:36taken. I think this is pretty much

13:16:37clear. So I have already written the

13:16:40code. As you can see this is the code.

13:16:42So first of all let's import all of the

13:16:43necessary library. We are importing

13:16:46state graph start type d chat openi load

13:16:49env only the new things. I have imported

13:16:51this inmemory saber from lang graph

13:16:54checkpoint dot memory in memory saber.

13:16:56Okay. So this is what your uh

13:16:58persistence uh like uh persistence

13:17:02memory that means the checkp pointer

13:17:04like where you want to save this state.

13:17:06So here we're using inmemory. Inmemory

13:17:08means it will save the information

13:17:09inside your RAM. You can also use any

13:17:11kinds of database. We'll also see

13:17:12database in future but as of now just to

13:17:14show you the demo, we'll be using our

13:17:16RAM. So let's import all of the

13:17:18necessary library. Okay. Then we'll try

13:17:20to load the environment variable because

13:17:22there I have my open API key. I already

13:17:24set my open API key here. Then after

13:17:26that we'll try to define a large

13:17:28language model. Then we'll define the

13:17:30state. The same state I showed you here.

13:17:33We are defining the state. Then we'll be

13:17:35writing the nodes. Okay. So first of all

13:17:38we have created the graph as you can

13:17:40see. Then we are adding the nodes. First

13:17:42node is generate joke. Second node is uh

13:17:45generate explanation. So generate nodes

13:17:47sorry generate jokes and generate

13:17:49explanation. So these two function I

13:17:50have to write separately because this is

13:17:52going to be my node. So this is the

13:17:54generate joke uh nodes. As you can see

13:17:56it will take this state and it will

13:17:58generate the joke and it will update

13:18:00that joke state and this particular uh

13:18:03nodes will try to generate the

13:18:04explanation. Here we have given the

13:18:06prompt. So it will take the joke from

13:18:07this state and it will generate the

13:18:09explanation and it will update the

13:18:10explanation. Okay. So let's try to

13:18:12define all of them.

13:18:14H so after that we are uh defining the

13:18:17graph. So as you can see we are adding

13:18:19the nodes. After that we have to do the

13:18:21edge connection. As you can see as

13:18:22connection start to gen start to

13:18:25generate joke then generate joke to

13:18:27generate explanation generate joke to

13:18:29generate explanation then generate

13:18:31explanation to end generate explanation

13:18:33to end. This is the connection. Now if

13:18:35you're using this persistence concept

13:18:37you have to define a checkpointer. So

13:18:39here we are defining the checkpoint and

13:18:40we are defining the inmemory server and

13:18:43if you're using any kinds of database

13:18:44you have to define the database uh class

13:18:46here. This will become my checkpointter.

13:18:48Now we'll whenever we'll try to compile

13:18:50the graph we'll pass this particular

13:18:52checkp pointer okay uh in this

13:18:55particular parameter. Now basically by

13:18:57this code you are telling your line

13:18:59graph um graph to use this persistence

13:19:02concept that means whatever state you

13:19:05are having okay whatever state update it

13:19:07will do whether it's intermediate or

13:19:09final it will try to save all of the

13:19:12information in this particular memory

13:19:14okay I hope you get it now let's try to

13:19:16compile the graph done now let me show

13:19:19you uh how we can execute this workflow

13:19:21to execute this workflow you need to

13:19:24define a configuration okay you need to

13:19:26define a configuration and in the

13:19:28configuration you have to define the

13:19:29trades. I already told you okay trades

13:19:31is important whenever you are using

13:19:32persistent concept definitely you have

13:19:34to pass the trade and each and every

13:19:37trade will store your informations in a

13:19:40separate uh separate space in the memory

13:19:42okay if you're using a memory it will

13:19:44use a separate space if you're using a

13:19:45database it will use this particular

13:19:47trade ID to store those information

13:19:49basically in trade one whatever

13:19:51conversation you are doing you won't be

13:19:53able to see in trade two or in trade two

13:19:55whatever conversation you are doing you

13:19:57won't be able to see in trade one okay

13:19:59that's how you can create as much as

13:20:00trade you can like the chat GPT we saw

13:20:03the example right so we are preparing

13:20:05the configuration there is a parameter

13:20:07called configurable you have to define

13:20:08as a dictionary then you have to define

13:20:10the trade ID so let's say we have given

13:20:12one then we are invoking the workflow we

13:20:14are passing let's say topic is equal to

13:20:15football let's say uh here the topic

13:20:18should be the football and it will

13:20:19generate a joke on top of the football

13:20:21okay then we are passing the

13:20:22configuration here now let's execute

13:20:32Okay guys, so here I'm getting an error

13:20:34rate remit uh limit error. I think my

13:20:37openi credits is over. Uh so what I can

13:20:40do? Maybe I can use um other model. So

13:20:42let's use uh another model. Maybe I can

13:20:44use Gemini. Gemini maybe I can use uh

13:20:47this model uh freely. Okay, for some

13:20:49request. So what I'm going to do guys uh

13:20:52quickly

13:20:53um

13:20:55You can simply go to the chart GPT

13:20:59I have already done. Let me show you

13:21:03see. So I go to the chat GPT then I

13:21:06given my code let's say this is the code

13:21:08I'm using and can you change the model

13:21:10to Gemini uh uh model to Gemini open a

13:21:14credit is over. Now it has suggested

13:21:17okay that's how you have to use the

13:21:18Gemini model. First of all you have to

13:21:19install this library langen uh Google

13:21:22geni. So let's try to add inside our

13:21:24requirement.

13:21:26So I've already added inside my

13:21:28requirement. Now let me install that. So

13:21:30pip install

13:21:32r requirement.txt.

13:21:41Yeah, that's how you can use any model.

13:21:42Okay, model doesn't matter either you

13:21:44can use open model, gemini model, open

13:21:46router provider, anything you can use.

13:21:48Once it is done then I'll try to simply

13:21:52uh see the next step. I have to collect

13:21:54my Google API key. So and we have to add

13:21:57inside the environment variable. So

13:21:58let's try to do that. So this is my

13:22:01environment variable.

13:22:04So here I'll try to add my Google API

13:22:07key. And where you will get the API key?

13:22:09You have to go to the Google uh AI

13:22:12studio.

13:22:15Google AI Studio.

13:22:24So left hand side you will be able to

13:22:25see the API key option.

13:22:28Now let's try to generate the API key.

13:22:31I already have some API key here. Maybe

13:22:33I can delete.

13:22:40Okay. You want to create a new one.

13:22:42Click on create API key. Gemini API key.

13:22:44You can select your project if you have

13:22:46any project. Let's I'll select my

13:22:47project and create the API key.

13:22:55Once done, let's copy this API key and

13:22:57I'll try to paste it here.

13:23:02Done.

13:23:06Okay. Now let's try to Yeah. Now let let

13:23:10me check. So if you want to do that

13:23:12first of all you have to import this

13:23:13line

13:23:17instead of open AI you will import this

13:23:20lang chain Google geni import chat

13:23:23Google generative

13:23:25let's import

13:23:27load the environment variable then you

13:23:29have to uh replace this

13:23:36okay replace this uh model definition

13:23:39with uh uh Here I'm using Gemini 1.5

13:23:42flash. I think this is the free model,

13:23:43free to use model and this is the

13:23:44temperature parameter. Now let's define.

13:23:47Okay, now I think it's fine. Now

13:23:49everything is good. Now I'll come here

13:23:52or let's try to uh execute all the

13:23:56cell again otherwise I think I might get

13:23:59some issue. I'll define the graph. Now

13:24:02let's invoke this workflow. Okay, here

13:24:05I'm getting a client error. Uh okay.

13:24:09This model not found

13:24:14is uh during the task with name joke ID.

13:24:19Okay, let me check this model not found.

13:24:31I can try with this pro model.

13:24:50Okay, this is also not found. Maybe I

13:24:52can try with this

13:24:552.5 plus.

13:25:03I think this should work.

13:25:05Yeah, 1.5 I think it is deprecated from

13:25:07the uh API. You have to use 2.5.

13:25:16Now see we are getting the output that

13:25:18means 2.5 is working. Okay. You have to

13:25:20use this 2.5 flash. Okay. Now see here

13:25:23is the topic we have given and this is

13:25:24the joke I got and this is the

13:25:26explanation. Okay. We are getting from

13:25:28this particular joke. It's working fine.

13:25:31Okay. Now if you want to see this state

13:25:33right? If you want to see your state uh

13:25:35because this state got saved in the

13:25:37memory you have to call this function

13:25:39get state and you have to pass the

13:25:41configuration that means our trade ID

13:25:43configuration trade one configuration.

13:25:45Now if execute now see this is the

13:25:47snapshot this is your state you can see

13:25:49the topic you can see the joke you can

13:25:52see the explanation and some other

13:25:54metadata informations are available

13:25:56here. Okay. Now if you want to see the

13:25:58entire uh like uh intermediate state as

13:26:01well as the final state you have to

13:26:03execute this function get state history

13:26:04story and again you have to pass the

13:26:06configuration that means trade one. Now

13:26:08if I execute this now see guys you are

13:26:10getting all of the intermediate state as

13:26:12well as the final state. Okay. Now the

13:26:16last one you can see this is the last

13:26:18last uh like that means the final state

13:26:21and the first one this is the first uh

13:26:23state first intermediate state. Now if I

13:26:25show you this graph guys. So how many um

13:26:29checkpoint you have here. See you have

13:26:31one checkpoint 2 3 and four. So that

13:26:34means four output we are getting. So

13:26:36this is the first checkpoint output. So

13:26:38initially whenever we pass the topic we

13:26:41didn't have any kinds of joke. Uh then

13:26:44uh uh explanation. Okay we didn't have

13:26:47anything. You can see initially this was

13:26:50only running the uh start node and there

13:26:53is nothing. Okay. Then we executed the

13:26:56second node that means the second

13:26:57checkpoint. In second checkpoint we

13:26:59passed the we only passed the topic.

13:27:02Okay. And that time we didn't have any

13:27:04kinds of joke. You can see we didn't

13:27:06have any kinds of joke or uh this

13:27:09explanation. Okay. You can see this was

13:27:11nothing. Then at the third third uh you

13:27:15can see checkpoint it was uh it has

13:27:18generated the joke. Okay. Uh that time

13:27:21explanation was not available. Okay. You

13:27:23can see uh topic was there, joke was

13:27:26also there. Okay, joke was also there

13:27:28but explanation was not there. You can

13:27:31you can see explanation is completely

13:27:33empty. It it was not there. Right? Then

13:27:36whenever we executed the last node that

13:27:39means we uh got the checkpoint for that

13:27:42time explanation was available. You can

13:27:44see topics is available, joke is

13:27:46available, explanation is also

13:27:48available. Okay, that's how you will be

13:27:50able to see the final snapshot as well

13:27:52as the intermediate snapshot of this

13:27:54state. Okay, this is amazing, right? And

13:27:57that's how your persistence is working.

13:27:59And this is super important guys. Just

13:28:01trust me, this is super important

13:28:03concept whenever you are implementing

13:28:05any kinds of agentic AI application.

13:28:07That's why uh in my first part the

13:28:10application I started guys agentic

13:28:11chatbot. So there I use this particular

13:28:13concept this persistence concept. So

13:28:16there also we created this checkpoint. I

13:28:18think you remember we created a

13:28:19checkpoint but here I used this memory

13:28:21saber. I was saving everything in my RAM

13:28:24but later on I will also show you how we

13:28:26can add the database as well. Okay.

13:28:28Because I told you we'll be going step

13:28:30by step so that I can teach you each and

13:28:31everything. Okay. I hope you clear. So

13:28:35now I'll get back to my code. Yeah. Now

13:28:37let's uh let me show you one thing this

13:28:39uh uh trading concept. Let's say if I

13:28:42right now give this trade ID is equal to

13:28:44two. Right. That means uh completely one

13:28:47another trade would be created another

13:28:48block would be created in the memory and

13:28:50in that particular memory it will save

13:28:52all the informations. Now see we are

13:28:54invoking with another topic called

13:28:56cricket. Now it will generate uh

13:28:58generate the joke on top of the cricket

13:29:00but in a different rate.

13:29:02Let me show you.

13:29:12Okay. If you're using free model it

13:29:14might take some time. Now you can see

13:29:15this is the topic and this is the joke

13:29:17and this is the explanation we are

13:29:18getting on top of cricket. If you want

13:29:19to see the state final state final

13:29:21snapshot this is the final snapshot. And

13:29:23if you want to see the all the

13:29:24intermediate state as well as the final

13:29:26state you have to execute this line. Now

13:29:28you can see this is for football. Okay.

13:29:30Now the best part is that if I change

13:29:32this configuration anytime let's say I

13:29:34want to get my uh I want to get my um uh

13:29:38football. Sorry not football. Okay this

13:29:41is configuration one pass. Sorry, I have

13:29:42to give configuration two. Now if I give

13:29:45configuration two, now see this is for

13:29:46cricket here also I have to pass the

13:29:48configuration two because this is my uh

13:29:52uh trade two right now if I give

13:29:54configuration one.

13:29:56So this is my trade one that means

13:29:57cricket sorry football. Now if I give

13:30:00you trade two now this is cricket. Okay

13:30:02see all of the state is different right

13:30:05now because it is saving inside

13:30:07different different trade. Okay I hope

13:30:09you get it guys. So from this

13:30:11persistence guys we got some benefit

13:30:13definitely. So let's try to define the

13:30:15benefit

13:30:19benefit of

13:30:21persistence.

13:30:26So the first benefit we got the

13:30:28short-term

13:30:33memory.

13:30:36I think you already saw the short-term

13:30:38memory, right?

13:30:40uh we have implemented because it is

13:30:43saving the information in this state

13:30:45okay in a database and in my previous

13:30:49code example also the chatbot I created

13:30:51this was also able to remember my

13:30:53informations okay this is called

13:30:54short-term memory we can implement okay

13:30:56with the help of this persistence now

13:30:59the second one

13:31:01um benefit you will be getting called

13:31:03this fault tolerance

13:31:05fault

13:31:07tolerance

13:31:10Okay, I already told you about this

13:31:12fault tolerance. Fault tolerant means I

13:31:14think here I showed you somewhere. Yeah.

13:31:16So let's say um if uh your application

13:31:20got crashes um um from any any

13:31:23particular nodes instead of executing

13:31:26your application from the beginning you

13:31:27can resume the application uh from the

13:31:30same uh same crash point um itself.

13:31:33Okay, let's say node one your

13:31:35application got crashes. From node one

13:31:36itself you can execute your application.

13:31:38Okay, for this I will show you a

13:31:40practical demo. I think after that you

13:31:42will be able to um understand. Then uh

13:31:46this persistent helps us to implement

13:31:48this hl that means human in the loop

13:31:51concept. Then there is another one

13:31:53called time travel.

13:31:57Okay time travel we'll also see the

13:31:58example itself. Now uh we have al

13:32:01already seen the shortterm memory

13:32:03example. Uh even going forward also I'll

13:32:06use this concept in my application.

13:32:08Okay. Uh you already understood this

13:32:10concept. Now let's try to understand

13:32:12this fault tolerance like how we can

13:32:13resume the application whenever it got

13:32:16crashes. Okay. So let's see the fault uh

13:32:19tolerance uh example. Um like I will

13:32:22show you a code example how it works.

13:32:24For this here I have taken uh this

13:32:26particular workflow. uh it's a like very

13:32:30uh basic dummy workflow I have taken I

13:32:32generated from uh this uh workflow

13:32:36uh from chart GPT. So here uh what I

13:32:38have done guys I have um uh taken

13:32:42actually three step one step two step

13:32:44three. So what is fault tolerance? I

13:32:46told you fall tolerance means uh let's

13:32:48say uh at step two let's say you got

13:32:51crash okay crash your application. So

13:32:56instead of uh instead of running from

13:32:59the beginning whenever you you are

13:33:00resumeuming your application instead of

13:33:02starting from beginning so what you can

13:33:04do you can start from step two itself

13:33:06okay because I have all of the

13:33:08intermediate state data okay till uh

13:33:12step one so I don't need to execute from

13:33:14step uh uh sorry uh step uh from the

13:33:17first step again I will execute from

13:33:19step two okay so this is called fault

13:33:21tolerance

13:33:22so this example we'll try to see in a

13:33:24code example So here what I have done

13:33:26guys here uh manually just I have uh

13:33:30taken up uh like time I am using time

13:33:33module in Python and here I will wait

13:33:35for 30 seconds okay and in 30 seconds

13:33:37what I'm going to do I'm going to just

13:33:39do a manual keyboard interruption and I

13:33:42will just crash my application here okay

13:33:44and I'll show you how we can resume your

13:33:46application from step to itself okay

13:33:48that means wherever your application

13:33:50will get crashed from here itself it

13:33:52will try to uh from here itself it will

13:33:54try restart the application. Okay, this

13:33:56part I'll show you for this. What I have

13:33:58done guys, I have written a code u in

13:34:01Google Collab. So why I'm writing in

13:34:03Google Collab? Because in my VS code uh

13:34:06I was not able to uh I was not able to

13:34:09interrupt this uh sale. Okay, it was

13:34:11taking lots of time that's why I have uh

13:34:13copied this code on my Google Collab. So

13:34:15I already connected the notebook and I

13:34:17will share this notebook with you guys.

13:34:18So here what I'm going to do guys I'm

13:34:20going to import all of the necessary

13:34:23library then here for this particular um

13:34:27um graph I have defined all of the state

13:34:29I need like I need input step one step

13:34:32two okay and I uh inherited with the

13:34:35type D then here I have defined all of

13:34:37the step one step two step three you can

13:34:40see all of the step I have defined step

13:34:41one step two step three only in step two

13:34:43guys here I am uh just taking this time

13:34:46dots sleep I will wait for 30 seconds.

13:34:49Okay. And here I'm only just doing the

13:34:50print statement. I'm just doing like a

13:34:52step one executed and return the step.

13:34:54Okay. And update the state. And step two

13:34:56only I'm just doing this uh waiting

13:34:58operation. 30 secondond will wait. And

13:35:00in between I'll just try to crash my um

13:35:02the cell. And step three also I'm just

13:35:04only doing the print statement. Okay.

13:35:06This is a dummy code I generated from CH

13:35:07GPT. Now let's execute this cell also.

13:35:11Now here we are building the graph. As

13:35:12you can see we are taking the graph and

13:35:14we are adding all of the node one by

13:35:15one. Then we are doing the edge

13:35:16connection. Okay, then we are taking the

13:35:19checkp pointer in memory saber. Then we

13:35:21are just compiling the graph and we're

13:35:23giving the check pointer.

13:35:26Done. Now here guys, uh in the t set

13:35:28block I am invoking my um you can see

13:35:31graph and I am just doing some print

13:35:33statement. Okay. So you can see I'm

13:35:35giving um uh input is equal to start

13:35:37because here I told you we are only

13:35:39doing uh by very basic workflow

13:35:42execution. That's why I have just given

13:35:44some dummy value here. And here we are

13:35:46giving the trade also that means the

13:35:47configuration. I think you know in

13:35:49persistence you have to give that. Then

13:35:51in exception we are uh also printing

13:35:53kernel manually interrupt crash

13:35:55simulated. Okay. Now let's execute. Now

13:35:57see it will wait for 30 second. In

13:35:59between I'll just try to um stop the

13:36:02kernel. Okay. Now see kernel stop that

13:36:04means my application got crashed. Now if

13:36:06I show you my state as you can see uh

13:36:10step one done. Okay. Step one executed

13:36:13perfectly. Uh perfectly it's done. Now

13:36:16whenever it was running a step two right

13:36:18there is nothing. You can see step two

13:36:20didn't completed because here it got

13:36:22crashed. Now I will rerun this

13:36:26particular workflow again and you will

13:36:29see that instead of running from the

13:36:30beginning step one it will run from step

13:36:32two. So again what I'm doing guys I'm

13:36:34invoking the graph and as of now the

13:36:36input I'm only giving this none. Okay.

13:36:39Why I'm giving the none? Because uh if

13:36:41you're uh uh doing the fault tolerance

13:36:43instead of see previously I was giving

13:36:45my input but right now I want I don't

13:36:48want to start from the beginning. I want

13:36:50to start where it got crashed. That's

13:36:51why I have to pass the none. Okay then

13:36:54we are giving the trade again and we are

13:36:56giving the same trade. Now let's

13:36:58execute. Now you'll see that it is

13:37:00running from the step two. As you can

13:37:01see it is not running from the step one.

13:37:03It is running from the step two. And

13:37:05after waiting for 30 seconds you will be

13:37:06able to see the final output. Let me

13:37:08show you.

13:37:2830 second you have to wait. Now see

13:37:30execution is done. Now we're getting the

13:37:32final step. You can see step two is also

13:37:34done. Now if you want to see the state

13:37:36as you can see step one is done. Step

13:37:38two is also done. Okay. So that's how

13:37:40guys fault tolerance works with the help

13:37:42of this persistence. I hope you get it

13:37:44guys. That's how you can resume. Okay,

13:37:46you can resume your any kinds of

13:37:47workflow whenever it got crashes in

13:37:49production. Okay, I hope you clear guys.

13:37:52Now let's try to understand this hit

13:37:55that means human in the loop. Uh like

13:37:57how persistent helps us to implement

13:37:59this human in the loop. See uh for this

13:38:01u let's take a simple example and try to

13:38:04understand this one because I'm not

13:38:05going to show you as a code example for

13:38:07this human in the loop. I'm going to

13:38:09create a dedicated video. See let's say

13:38:11I want to generate a LinkedIn post okay

13:38:14or let's say Facebook post first of all

13:38:15I have to take a topic okay topic name

13:38:17from the user then it will go to the

13:38:20next um nodes it will basically generate

13:38:22let's say this

13:38:24uh Facebook

13:38:28post okay once it generated the Facebook

13:38:32posts then uh I want actually uh it will

13:38:35wait for the human verification let's

13:38:37say it will wait for the human

13:38:38verification let's say if I verify by

13:38:41post is completely fine. That time I'll

13:38:43give the permission just try to post

13:38:45this particular uh post to the Facebook

13:38:48platform. For this maybe we can use a

13:38:50API provider Facebook API provider and

13:38:52we can basically post this uh sorry here

13:38:56I will yeah uh basically here we we we

13:38:58can post this particular post on the

13:39:00Facebook. So maybe I can draw it

13:39:04uh perfectly.

13:39:06So topic

13:39:09then Facebook

13:39:13post

13:39:15then here it will wait

13:39:19H I T L human in the loop then it will

13:39:23post this uh post this uh let's say post

13:39:29to the Facebook platform. Okay. Now you

13:39:32can see here uh whenever we'll try to

13:39:34build this workflow right whenever we

13:39:35try to build this workflow so that time

13:39:37user will give a topic name it's

13:39:39completely fine from the topic itself

13:39:41your Facebook post would be generated

13:39:43then here itself it will wait for the

13:39:45human verification okay here it will

13:39:47wait for the human verification so that

13:39:49time uh human can give this particular

13:39:52verification in 1 minute 30 seconds 1

13:39:55day 2 day okay it doesn't matter or

13:39:56after 1 month also okay based on the

13:39:58user let's say uh choice user

13:40:01preferences Okay. So it's not like that

13:40:03your entire workflow should be running.

13:40:05Let's say user want to give this uh uh

13:40:08permission after 2 days. It's not like

13:40:09that you have to run your entire

13:40:11workflow 2 days. Okay. And you have to

13:40:13wait for the user verification.

13:40:15Otherwise what will happen if you are

13:40:16continuously running uh you are ending

13:40:18up with like your hosting cost right? I

13:40:21don't want that computation cost. I

13:40:23don't want that. So what will happen

13:40:24this uh fault uh sorry this persistence

13:40:27that means uh you have learned about

13:40:30this fault tolerance right so here

13:40:32basically fault tolerance concept would

13:40:34be applied that time automatically this

13:40:36particular uh execution would be

13:40:38interrupt okay

13:40:41interrupt it this execution would be

13:40:43interrupt interrupt would be it would be

13:40:44stopped okay then human will come and

13:40:48give the let's say feedback let's say he

13:40:51has accepted this particular post that

13:40:53time this workflow will again re-execute

13:40:56and instead of running from the

13:40:57beginning okay instead of running from

13:40:59the beginning what it will do it will

13:41:01start from here only that means the post

13:41:03is accepted now it will run the next

13:41:05workflow which is post okay the next

13:41:07note which is post instead of running

13:41:09from the beginning okay and how it is

13:41:11remembering because it has the

13:41:13persistence concept because all the

13:41:15intermediate data it has also saved okay

13:41:17so whenever it will get the new data

13:41:19that time from here only it will start

13:41:22the example I showed you right now fall

13:41:24tolerance it will work in the same way.

13:41:26Okay, I hope you got it guys. That's why

13:41:28this percentage is also required

13:41:30whenever you are using whenever you are

13:41:32imple implementing this hit concept that

13:41:34is human in the loop concept. Okay, I

13:41:36hope you cleared. Now guys let's try to

13:41:38understand the last benefit uh which is

13:41:40time table. Okay. Uh the concept looks

13:41:44interesting uh even this is also

13:41:46interesting inside this um uh langraph

13:41:49uh inside the persistence. Let's try to

13:41:51understand what is time table exactly.

13:41:53Okay. So see here I have already taken

13:41:55the code example. Uh I will just show

13:41:57you okay how things are working. So I

13:41:59think remember we just created this um

13:42:03this um um joke generator generator

13:42:07actually workflow right we created this

13:42:08joke generator workflow. So in tribe

13:42:11table actually what you can do uh you

13:42:13can actually uh go to the each and every

13:42:16um nodes and you can see their

13:42:18execution. Okay. So here see let's say

13:42:21this is our workflow we created

13:42:22previously right now uh here I showed

13:42:26you all of the execution all of the

13:42:28snapshot all of the like state update

13:42:30right all of the intermediate and final

13:42:32now let's say I want to go to a

13:42:34particular um particular let's say

13:42:37checkpoint let's say I want to go in

13:42:39this particular checkpoint

13:42:41okay where I only pass the uh where I

13:42:44only pass the let's say topic is equal

13:42:45to cricket so what I will do I'll just

13:42:47do workflow get state And here you have

13:42:50to pass the configure configuration. So

13:42:52here this is was my uh trade two right

13:42:55that means configuration two. I'm

13:42:56passing my configuration two. That's why

13:42:57you're giving the trade two here because

13:42:59in configuration I was giving the trade

13:43:01two. Then here you have something called

13:43:03checkpoint ID. So here you have to give

13:43:04the checkpoint ID. Now you can see every

13:43:06snapshot is having a checkpoint ID. So

13:43:08here if you just go right side here you

13:43:10can see the checkpoint ID. You just need

13:43:12to copy this checkpoint ID and you have

13:43:14to provide it here. Okay. Once you do

13:43:16that now if you execute this okay you

13:43:18will be able to see that it will only

13:43:19return you that particular snapshot uh

13:43:21let's say output that particular state

13:43:23only okay now you can ask me why it is

13:43:26required and uh how it is helpful see

13:43:28whenever you are creating any kinds of

13:43:30complex workflow and you want to do the

13:43:31debugging operation that time this

13:43:33concept is required okay this thing you

13:43:35won't be using frequently whenever you

13:43:37want to perform some kinds of debugging

13:43:39you want to see each and every node

13:43:40execution that time this time travel you

13:43:43can use okay now you can see the exact

13:43:45same thing you are getting here. Now

13:43:47let's say I want to see the after that

13:43:49uh let's say this this uh snapshot.

13:43:52Okay. So I'll give this particular ID.

13:43:54So if I go to the right side you will

13:43:56have the checkpoint ID. You just need to

13:43:58copy that and here I have already passed

13:44:00that. Okay. Now I already executed. You

13:44:02can see here I'm getting topic is equal

13:44:04to cricket and this is the joke and uh

13:44:07here I got the explanation. Okay. Now if

13:44:10I show you the entire uh get uh state

13:44:13story. Now see initially it was four.

13:44:15Now two more uh snapshot is created

13:44:17because I did the time table. Okay. So

13:44:19this is the first one. There I only got

13:44:22the uh topic and here is the second one.

13:44:25Okay. Now let's try to see another

13:44:29concept which is update state. Okay. U

13:44:31like let's say here I'm having this

13:44:34particular node right and each and every

13:44:36node is updating some kinds of state

13:44:39right? Now if you want you can also

13:44:41manually update your state. Let's say

13:44:44your workflow has generated some state

13:44:46state. Okay. But you want to update

13:44:48let's say initially I have g given

13:44:50cricket topic is equal to cricket but

13:44:52right now I want to let's say debug with

13:44:54uh tennis. Okay. So what I will do I'll

13:44:57just write uh workflow update state and

13:44:59here also you need to pass the

13:45:01configuration that means your trade ID

13:45:03and you have to give the checkpoint ID.

13:45:04Now let's say uh at the very first

13:45:06checkpoint this was the checkpoint right

13:45:08there I give it the cricket topic is

13:45:10equal to cricket. So I'll copy this uh

13:45:12checkpoint ID. Okay, I'll copy the

13:45:14checkpoint ID and you have to provide

13:45:15the checkpoint ID here. Okay, after that

13:45:17here you have to pass the topic. Topic

13:45:19is equal to tennis I have given. Okay,

13:45:21this is a dictionary. Now if you

13:45:22execute, you will see that this

13:45:24particular uh state would be updated.

13:45:26Now if you again execute the workflow,

13:45:27now you'll see that another state would

13:45:29be created. Now here topic is equal to

13:45:30tennis. Okay, so that's how you can do

13:45:33the debugging operation. If you want you

13:45:35can update your state even you can do

13:45:36the time travel through your entire

13:45:38state. Okay, this is also possible. And

13:45:40here I already updated your fall

13:45:41tolerance code in the same notebook

13:45:43itself. Okay. So that you can copy paste

13:45:45in the Google collab guys. So yes guys

13:45:48this is the concept uh we have

13:45:50understood inside persistence and by

13:45:52this video itself you have now enough

13:45:54informations like how much persistence

13:45:57important uh importance uh is like

13:46:00whenever we are creating this kinds of

13:46:02agent application and how persistence is

13:46:05helping us without persistence actually

13:46:07what will happen. Okay, we have

13:46:08understood each and everything. Now I

13:46:10think you don't have any kinds of

13:46:11question. Okay, that's why um in my

13:46:13first part guys, I added this

13:46:15persistence concept. I added this

13:46:17checkpointter concept. Okay, now I think

13:46:18this part is pretty much clear guys.

13:46:20Okay, so that's how guys we'll be

13:46:22implementing the chatbot um in detail. I

13:46:25will try to make this particular chatbot

13:46:27more advanced. Okay, aentic chatbot more

13:46:29advanced. I'll try to add all of the

13:46:31concept one by one by explaining this

13:46:33kinds of concept separately. Okay. So we

13:46:36have created our basic uh skeleton basic

13:46:39uh agentic chatbot workflow. So here you

13:46:41can perform any kinds of chat operation

13:46:44right now. So let's see if I uh give a

13:46:46message u

13:46:49generate a

13:46:51blog about

13:46:55let's say python.

13:47:00So if I send this prompt now see it is

13:47:03able to generate the block. Okay. So we

13:47:06have already created this kinds of uh

13:47:08skeleton this kinds of workflow like

13:47:10chat workflow and everything is working

13:47:12fine. Now in this video guys I'm going

13:47:14to um just deep dive into this streaming

13:47:18like what this streaming is and why it

13:47:20is required and we'll also try to

13:47:21understand if we don't use this kinds of

13:47:23streaming features inside our agentic

13:47:25chatbot or any other agentic application

13:47:27you are creating. So what should be the

13:47:29issue? Okay. So guys uh we'll try to

13:47:32continue with our discussion of the

13:47:34streaming features inside uh agentic

13:47:37chatbot and if you are using langraph

13:47:40guys uh by default inside langraph the

13:47:42streaming features is available. Okay uh

13:47:44with the help of that you can easily

13:47:46create the streaming features. So for

13:47:48this you can go to the documentation of

13:47:49this langraph. So there they have given

13:47:51some code example. Okay. But let me

13:47:53first of all show you my code example.

13:47:56Okay. Okay. Then after that you can go

13:47:57through the entire documentation. Okay.

13:47:59And you can understand about the

13:48:00streaming. Okay. Yeah. So guys see if I

13:48:04not using the streaming features. So how

13:48:06my chatbot will look like? First of all

13:48:08let me show you. So guys as you can see

13:48:10this is the code we have already written

13:48:12uh for this uh agentic chatbot. And this

13:48:15is our uh first initial workflow we have

13:48:18created. Okay. Uh this is the chatbot

13:48:21workflow we have created. And here if

13:48:23you just go to the last part. So here I

13:48:26already discussed about the streaming.

13:48:28Okay, how to add the streaming features

13:48:30but yeah I think in the first part you

13:48:33might have uh some kinds of confusion

13:48:35like how we have added this particular

13:48:37stream uh stream features here. So in

13:48:39this particular video I'm going to

13:48:41clarify each and everything then I think

13:48:43this would be more clear. Okay. So here

13:48:46what I'm going to do guys uh let me show

13:48:48you the non-streaming um like features

13:48:50first of all. So I think this code is

13:48:52also common. Initially I also created

13:48:54this code and you remember there I'm not

13:48:56using any kinds of streaming features.

13:48:58Okay. So what I'm doing I'm just

13:49:00generating the response after that I was

13:49:02um like uh waiting for the entire

13:49:05response. Once I got the response I was

13:49:08just showing on the streamlit user

13:49:10interface. So if I execute this

13:49:12particular file let me show you. So I'll

13:49:15stop my app.py and I will execute this

13:49:18nonstream.py.

13:49:20So I'll just write streamlit.

13:49:23Okay, streamlit run non stream.pfy. Now

13:49:29if I hit enter, so this will load my

13:49:31application. Now here let's see if I

13:49:33give the same prompt generate a blog

13:49:38about

13:49:41okay about let's say

13:49:44I'll give um machine learning

13:49:51now see if I give this prompt now see

13:49:55here we have to wait right we have to

13:49:58wait uh till the execution now see so

13:50:00here I think you have observed uh we had

13:50:02to wait uh unless and until this output

13:50:05got generated here. Uh so let's say if

13:50:07you're generating uh some more uh let's

13:50:10say content here some more big content

13:50:13that time it will take some time maybe

13:50:15it can take let's say 30 seconds 60

13:50:18seconds okay it depends upon your uh

13:50:20output or the prompt you are giving

13:50:22let's say you are running an agent and

13:50:24that that agent is taking time it is

13:50:26using some kinds of tool okay so uh in

13:50:29between actually it will do lots of work

13:50:31and you have to wait for the execution

13:50:33so this is not good right uh this is not

13:50:35good uh user experience. So if I open

13:50:37chart GPT okay if I open chart GPT in

13:50:40chart GPT if you give any kinds of

13:50:43prompt let's say I will give the same

13:50:44prompt in the chart GPT okay you'll see

13:50:47that chart GPT also will give you some

13:50:49kinds of streaming response see this is

13:50:51giving you streaming response one by one

13:50:53right and this is more interactive right

13:50:56this is more interactive because we

13:50:57don't need to wait for the entire

13:50:59execution to be completed okay whether

Streaming Responses in Agentic Chatbot with LangGraph

13:51:01it is using any kinds of tool whether it

13:51:03is uh doing the reasoning operation it

13:51:05doesn't matter But I'm able to see my

13:51:07output token by token. Okay. So this is

13:51:10good user experience here. But inside

13:51:12this particular application this is not

13:51:14good experience. So if I uh give this

13:51:16kinds of prompt so what is happening? It

13:51:18is taking some time. Right. That's I'll

13:51:20give right now deep learning.

13:51:23See it's taking lots of time. So this is

13:51:25not a good experience. Okay. So that's

13:51:27why streaming features is required.

13:51:29Okay. Streaming features is required.

13:51:31Now let's try to understand what is

13:51:33streaming exactly and why it is

13:51:35important inside our application

13:51:36development. So guys first of all let's

13:51:38try to understand uh what is streaming.

13:51:41So here I have already written a

13:51:42definition in LLM. Streaming means the

13:51:45model start sending tokens uh that means

13:51:48word as soon as they they are generated

13:51:51instead of waiting for the entire

13:51:53response to be ready before returning

13:51:56it. Okay. See what happens whenever we

13:51:58are using any kinds of large language

13:52:00model, it generates the output as token

13:52:04by token or word by word. Okay. So

13:52:07whenever let's say we invoke any kinds

13:52:09of large language model, let's say this

13:52:10is our LLM and we are giving some kinds

13:52:14of prompt here and we get a response

13:52:16here. Okay. So what you can do either

13:52:20you can get this response in one shot

13:52:22that means you have to wait uh for the

13:52:25entire output to be generated. Okay for

13:52:28this we use something called invoke

13:52:30function. Okay invok function I think

13:52:32you already know that we are using okay

13:52:34so far. So inbox what it does it will

13:52:37wait for the entire output to be

13:52:40generated but llm will try to generate

13:52:42the output as token by token. Let's say

13:52:44it is generating something. So first of

13:52:46all uh one token will come then another

13:52:48token will come another token will come

13:52:50okay that's how it will complete the

13:52:52entire execution okay that that's how it

13:52:54will complete the entire execution then

13:52:56you will be able to see the response but

13:52:59in streaming actually what we do we use

13:53:01something called stream function instead

13:53:03of uh invoke we use dot stream function

13:53:07uh this is already default inside lang

13:53:09graph whenever we are defining any kinds

13:53:12of graph object right and uh you

13:53:14remember we we are doing the invoking

13:53:15operations. So instead of invoking

13:53:17operation we have to perform dot stream

13:53:19operation. So if you do dot stream

13:53:21operation so what will happen that time

13:53:23you will be getting this particular

13:53:24output as a token by token or word by

13:53:26word as soon as they are generated.

13:53:28Okay. Instead of waiting for the entire

13:53:31response to be ready before returning

13:53:33it. Okay. So this is what actually your

13:53:34streaming is. I think you already saw

13:53:36inside chart GPT. Okay. Chart GPT it was

13:53:39generating token by token. Let me show

13:53:41you again. So maybe I can give another

13:53:44prompt. So I'll give let's say generate

13:53:47a blog about deep learning. Now see it

13:53:50will generate the output token by token.

13:53:52You can see token by token it is

13:53:54generating. Okay. Now I think this uh

13:53:56definition is pretty much clear. Now

13:53:58let's try to understand uh why this uh

13:54:01streaming is required. Okay. You can see

13:54:04the first point faster response time and

13:54:06low drop off rates. Okay. I think by

13:54:09this uh point itself you can understand

13:54:12what I'm trying to say uh faster time

13:54:15time uh uh response time is let's say

13:54:17whenever I'm using any kinds of chatbot

13:54:19let's say I'm using chat GPT okay I'm

13:54:22using chart GPT or any other thing u so

13:54:25there I definitely need a faster

13:54:27response so if it is not giving faster

13:54:29response that time like uh I won't be

13:54:32getting interest right to use this

13:54:34particular application because nowadays

13:54:36time is expensive Okay, time is

13:54:38expensive and and nowadays people don't

13:54:41have that much of time so that they will

13:54:42wait for the entire execution. Okay,

13:54:45that is taking 1 minute to run. So they

13:54:47don't have that much of time. They will

13:54:48wait and they will get the uh let's say

13:54:51entire output. Okay, so they need a

13:54:53faster response. So definitely faster

13:54:55response is required whenever you are

13:54:57creating any kinds of application

13:54:58whether you are creating chatbot whether

13:55:00you are creating AI agents okay anything

13:55:02you are creating faster response is

13:55:04required otherwise what will happen

13:55:07there would be a drop off rates okay

13:55:09drop up rate means people will leave

13:55:11your application okay let's say if it is

13:55:13taking 1 minute to run so definitely

13:55:15I'll leave your application okay I'll

13:55:17leave your application I will look for

13:55:19some other application which can give me

13:55:20faster response so that's why uh if it

13:55:23is faster response time that means low

13:55:25drop off rates. Okay, low drop of rate

13:55:27means people will not leave your

13:55:29application. They will be continuously

13:55:30using like chart GPT people are using

13:55:32Delhi, right? Because it is having the

13:55:34faster response because of the streaming

13:55:36features. Okay, we know that LLM takes

13:55:39some time to generate the entire output.

13:55:41But we have to handle it smartly instead

13:55:44of waiting for the entire let's say

13:55:45output to be generated. Whatever token

13:55:48it is generating okay one by one we'll

13:55:50show to the user so that they will see

13:55:52something in the screen. Okay, this is

13:55:54what we have understood in the first

13:55:56point. Now the second point you can

13:55:57understand guys mimics the human-like

13:55:59conversation, build trust, feel alive

13:56:02and keep the user engaged. Okay, see

13:56:06whenever you are doing any kinds of

13:56:07conversation with any kinds of agent or

13:56:10chatbot or whatever you are doing the

13:56:12conversation. So definitely uh there

13:56:15some kinds of engagement should be

13:56:17there. Let's say if this application is

13:56:19taking 1 minute to run, right? and you

13:56:22have to wait for the execution. So

13:56:24definitely I can't tell this is like a

13:56:25human-like conversation. Let's say you

13:56:28are talking with someone. Let's say this

13:56:30is you. Okay, this is you and this is

13:56:32someone. You are talking with someone,

13:56:34right? And if you're asking something

13:56:36and let's say this person is taking 1

13:56:39minute to give you the response. So

13:56:41definitely you will not feel like uh

13:56:43interest, you will not feel engaged.

13:56:45Okay, you will uh you will not be able

13:56:47to build a trust with that particular

13:56:49person. Okay. Uh I can give you another

13:56:51example. Let's say I think you know uh

13:56:53nowadays people are using lots of uh uh

13:56:56hardware assistant right hardware

13:56:58assistant means like Amazon Alexa.

13:57:01Amazon Alexa then Google Home Mini. Okay

13:57:04Google Home many people are using that

13:57:06right? So this is kinds of personal

13:57:08assistant system and what we do we use

13:57:11this particular assistant system so that

13:57:12we can speak with uh them right speak

13:57:15with them and we can uh do lots of task.

13:57:17Now let's see if you are talking with

13:57:19your uh personal assistant, you are

13:57:21talking with your let's say Google Home

13:57:22Mini. Okay, you are talking with your

13:57:24Google Home Mini and let's say it is

13:57:25giving you the response after 1 minute.

13:57:28So definitely you will not feel engaged,

13:57:30you will not u feel alive, you will not

13:57:32feel uh like uh you are not going to

13:57:34build a trust okay with that particular

13:57:36device. So that's why mimic human like

13:57:38conversation it is required. So whenever

13:57:40I will talk with uh my let's say bot or

13:57:44let's say agents so I'll feel like okay

13:57:46I'm talking with the human okay

13:57:47instantly I'm getting the response and

13:57:49the response is engaging as well okay

13:57:51like chat GPT if you u if you're using

13:57:54chat GPT I think you know that this um

13:57:57engagement then alive trust is super

13:58:00important right and we we found inside

13:58:02that particular chatbot right that's why

13:58:04we are using continuously so that's why

13:58:05this is super important then important

13:58:07for multimodel UIs okay so Whenever you

13:58:10are using multimodel and you are

13:58:12creating a user interface so this is

13:58:14also required there. Okay. Sometimes you

13:58:16will be generating some kinds of image

13:58:18and whenever you are generating the

13:58:20image that time you can show like we

13:58:23okay we are generating the image we are

13:58:24taking this particular let's say color

13:58:27or there should be a image window

13:58:30continuously it will tell okay we are

13:58:32generating something. That's why you

13:58:33have to show something. Streaming means

13:58:35you have to show something on the

13:58:36screen. Okay? Instead of uh just keep

13:58:39waiting the user here. Then better UX uh

13:58:43uh UX for long output such as code. So

13:58:45whenever you are generating any kinds of

13:58:47code, let's say you created a agent that

13:58:49generates the code. So instead of

13:58:51waiting for the entire code generation,

13:58:53you can uh show the streaming. Okay?

13:58:56Like it is uh importing, it is defining

13:58:58the model, it is creating the

13:59:00architecture. So one by one you can show

13:59:02it here. Okay. So this is another user

13:59:04experience we get. Then you can see uh

13:59:06you can uh cancel midway savings uh

13:59:09tokens. That means whenever let's say

13:59:11you are uh chatting with your agents or

13:59:14chatbot and uh you are generating a long

13:59:17form content right and let's say you

13:59:19found uh some kinds of content useful

13:59:22and you don't need uh um like uh the

13:59:25remaining content. So what you can do

13:59:26you can stop you can cancel the midway

13:59:29execution uh to save the token because

13:59:31what happens whenever LLM generates the

13:59:34output it generates as a token right and

13:59:37whenever you're using any kinds of

13:59:39provider let's say open AI or Gemini it

13:59:41charge based on the tokens like how much

13:59:43token you are giving as an input and how

13:59:46much token your model is returning as an

13:59:48output okay to based on the token count

13:59:51it will charge you so let's say I don't

13:59:53need uh some unnecessary information So

13:59:55definitely I can uh stop the execution

13:59:57and I can save my tokens. Okay, this is

13:59:59only possible whenever you are adding

14:00:01these kinds of streaming features. So if

14:00:03you are adding like one short oneshot

14:00:05output that time this is not possible.

14:00:07Okay, then you can inter uh interl UI

14:00:10updates uh uh example show thinking show

14:00:14tool result okay etc. So whenever we'll

14:00:16be creating any kinds of agents so

14:00:18definitely it will be using tools right

14:00:20and whenever it is using tools that mean

14:00:22uh that execution will take some time.

14:00:24First of all tool will be executed and

14:00:26this will fetch the uh informations then

14:00:29it will pass to the LLM. So it's taking

14:00:31some time right that time instead of

14:00:33waiting I can show something in the user

14:00:35interface. Let's say it is right now

14:00:37using this particular tool and uh this

14:00:40tool is uh facing this kinds of

14:00:42information. Okay I can just show this

14:00:44kinds of output to the user so that user

14:00:45feels like okay now my uh application

14:00:48are using some kinds of tools uh so that

14:00:51it will generate the final outputs. user

14:00:53will wait but if it is if you are not

14:00:55showing that so what will happen user

14:00:57will think like okay my application got

14:00:59hang so definitely they will leave your

14:01:01application okay so that's why this

14:01:03streaming is super important and we need

14:01:05the streaming whenever we are getting

14:01:07this kinds of agentic system guys now we

14:01:09have already understood this uh

14:01:11streaming now let's try to understand

14:01:13through the code although I have showed

14:01:14you the code uh implementation before so

14:01:17let me show you so this is the code

14:01:18implementation I showed you but in this

14:01:20video let me show you how things are

14:01:22working. Okay, how we are adding this

14:01:24kinds of streaming features. So for this

14:01:26uh I think you know we have already

14:01:27written this um aentic chatbot back end.

14:01:31So in the back end I already created the

14:01:33entire workflow. So this is our workflow

14:01:35we created and this is our chatbot

14:01:37object we created. Okay, this is the

14:01:38graph. So what I can do maybe I can uh

14:01:41show you

14:01:43uh I will create another file. Let's say

14:01:46I'm going to name it as test.py.

14:01:49So inside that I'm going to first of all

14:01:51import my

14:01:53uh import my chatbot from agentic back

14:01:56end. So from agentic chatbot back end we

14:01:59are importing chatbot. Now see if I'm

14:02:01not using this uh uh if I'm not using u

14:02:06like uh streaming that time I was using

14:02:08inboke. I think you remember I was using

14:02:10inboke and we also need to import this

14:02:13library as well.

14:02:17Yeah.

14:02:22Human message and base message we have

14:02:23to also import

14:02:26H.

14:02:27So let me check again.

14:02:34Then I I need to also pass the

14:02:35configuration as well. So let me copy

14:02:37the configuration.

14:02:40Config should be also passed here. So

14:02:42I'll also import the define the

14:02:44configuration

14:02:46because we're using persistence here.

14:02:48Okay, we have to pass the trade and

14:02:49everything. I think you know that. Now

14:02:51we'll try to replace with that. Yeah.

14:02:55Now this is the code guys. So basically

14:02:57we are using inboke here and if you're

14:02:59using inboke so that means you have to

14:03:00wait for the entire execution to be

14:03:02completed. Let me show you now. Let's

14:03:04say if I stop the execution.

14:03:08Python test.py

14:03:17Now see uh we have to wait for the

14:03:19execution. Maybe I can show you with

14:03:20another question. Generate a blog

14:03:28about Python programming. Now you'll be

14:03:32able to observe.

14:03:39Now see okay you have to wait for the

14:03:41entire execution. So this is not good.

14:03:44Okay now we have to add the streaming

14:03:45features here. So here instead of using

14:03:48invoke uh we'll be using dot stream. So

14:03:52you can write like that chatbot

14:03:57dot stream. Okay

14:04:01stream.

14:04:04Now stream uh takes some argument. uh

14:04:07first of all you have to provide

14:04:10uh the message

14:04:13okay I'll try to provide the message

14:04:20yeah I'll try to provide the message uh

14:04:23now let's say I'll give the same message

14:04:26generate

14:04:31uh block

14:04:35line graph or let's say

14:04:39machine learning.

14:04:41Okay, this is the message. Now the

14:04:43second parameter you have to provide the

14:04:45configuration. Okay, and the third uh

14:04:50parameter you have to provide uh the

14:04:52stream mode. Okay. Now there are

14:04:54multiple stream mode are available. If I

14:04:55go to the documentation as you can see

14:04:58we have update values messes. Okay,

14:05:00custom. Uh so here I want to print the

14:05:02message only. So that's why I'll be

14:05:04using stream mode is equal to message.

14:05:05Okay, because I want to show show my

14:05:07message streaming. Okay, whatever um

14:05:09output I'm getting from my lm, I want to

14:05:12show show this. Okay, that's why we're

14:05:14using this. Now, once it is done, now if

14:05:16I let's say um show you the result. See

14:05:21this stream will return two things. One

14:05:23is the

14:05:25message chunk.

14:05:27Okay, message

14:05:31chunk

14:05:34that means the token. Okay, token output

14:05:37and it will also give you some kinds of

14:05:40metadata.

14:05:42Okay, metadata. But I don't need the

14:05:43metadata. I only need the message chunk

14:05:46and metadata. Okay, so basically this

14:05:49returns a generator object. Let me show

14:05:51you. So I'll give you

14:05:54example response.

14:05:57Now if I print the response.

14:06:05Now if I execute this code

14:06:08python test.py.

14:06:11So this will give you a generator object

14:06:12as you can see. Okay. Stream generator

14:06:15object. And you already studied inside

14:06:17Python. If we are getting the generator

14:06:19object, I can use any kinds of iterator

14:06:21to get the output. And what is the

14:06:23iterator? We can use for loop here.

14:06:25Okay. Uh for loop will try to iterate

14:06:28the output one by one here. Okay.

14:06:30Instead of getting everything in one

14:06:33shot, it will take one by one. So for

14:06:35this I will just write a for loop. So

14:06:37now I can write like that. Instead of uh

14:06:40going through the response, maybe I can

14:06:42write the for loop here only. I think

14:06:44that would be amazing. So for uh it will

14:06:48return two things I told you. One is the

14:06:49message chunk

14:06:55and it will return the metadata.

14:07:00Okay. In chatbot stream okay now I'll

14:07:05give this one H.

14:07:12Yeah. Now here I'll just write a

14:07:14condition

14:07:16if uh let's say message

14:07:20message chunk

14:07:26message chunk

14:07:28um dot content okay I will extract the

14:07:31content only okay if there is a content

14:07:34sorry content

14:07:37content I'll just try to print this

14:07:39content so print

14:07:43message chunk dot content. Okay. And

14:07:45here I will give some other parameter

14:07:47like end is equal to this empty string

14:07:50and uh

14:07:53and I will give this splash is equal to

14:07:54true.

14:07:56Okay, these two things you have to give.

14:07:58If you check the documentation, they

14:07:59have written the same thing. Okay, now

14:08:01let me show you how this output would be

14:08:03generated. Now I again I'll execute my

14:08:05test.py.

14:08:08Now see it is giving you token by token

14:08:10as a streaming output. Okay, I think you

14:08:12saw the difference and that's how we can

14:08:15um implement the streaming features

14:08:17inside lang graph. Okay, I hope you

14:08:20cleared. Now the same thing uh you have

14:08:22to also do in the user interface because

14:08:25user interface uh we created this should

14:08:28also show as a streaming output and how

14:08:31we have done guys uh I think I already

14:08:33written the code. Let me show you. See

14:08:35it is available in the app.py. So here

14:08:37is the code guys. Okay, we written

14:08:39already. Now we are using something

14:08:41called

14:08:43um this one write stream here from

14:08:46streamllet we're using write stream. So

14:08:48if you go to the streaml documentation

14:08:50as you can see stream it has having a

14:08:52chat element. So it is having multiple

14:08:54chat element like chat input chat

14:08:55message start container and there is

14:08:58another one called write stream. Okay.

14:09:00If you see the right stream so they have

14:09:01already written like how to um actually

14:09:04write this particular use this

14:09:05particular right stream. Okay. So we are

14:09:08using this write stream here. Let me

14:09:10show you. We're using this write stream.

14:09:12So inside that we have written the same

14:09:13code. We are um instead of doing the

14:09:15invoking operation, we're doing the

14:09:17streaming operation. We're giving the

14:09:18input config and stream. And we are

14:09:21running the for loop. It is returning

14:09:23two things. Message chunks and metadata.

14:09:25We are only taking the message chunks.

14:09:27Okay. And once we got the message trans

14:09:30what we doing guys we are just writing

14:09:33the stream on the uh streaml streaml

14:09:36user interface and once everything is

14:09:38done we are updating inside this uh

14:09:41message story inside uh streaml session

14:09:43state. Okay this is a simple code we

14:09:45have written now I think this code is

14:09:47clear guys. Okay how I have written. So

14:09:49I think many people has the confusion

14:09:50how these things are working. Now I

14:09:52think this is clear. Now let me show you

14:09:54the final execution. I will clear I'll

14:09:57run my app.py. So streaml run app.py.

How to Add Chat Threading in Agentic Chatbot using LangGraph

14:10:06So this is our app. Now I'll give

14:10:09generate

14:10:12generate let's say

14:10:14code

14:10:16for image classification

14:10:21in Python.

14:10:25Now see

14:10:27okay see streaming output we are

14:10:29getting. So yes guys uh this is all

14:10:31about from this video. I hope you got

14:10:33it. Uh what is the streaming and why it

14:10:35is required and why we have implemented

14:10:37inside our chatbot. So if you check my

14:10:41uh agentic chatbot guys so far we

14:10:43implemented u till here. So here we can

14:10:46perform any kinds of chat operation

14:10:47right now. Okay. And uh you can see it's

14:10:50working and it is also giving you some

14:10:52kinds of streaming response like charge

14:10:54GPT right. So in charge GPT what happens

14:10:56guys? Uh in charge GPT you can resume

14:10:58your conversation with your old trades.

14:11:01Let's say I did some kinds of

14:11:03conversation previously. I can continue

14:11:05anytime. These are the conversations. So

14:11:07let's say this was my previous trades

14:11:09right? So if I open this particular

14:11:11trades I'll be able to see all of my

14:11:13conversation story. Okay. And I can uh

14:11:16resume my chat from here only. Okay. I

14:11:18can resume my chat from here only

14:11:21right now like that I can go to any

14:11:24another trades let's say I will go to

14:11:25this uh

14:11:27the this trades okay so from here only I

14:11:30can do my conversation so this is called

14:11:33trading okay with the help of this

14:11:34trading we can separate out uh each and

14:11:37every topic let's say message okay let's

14:11:40say right now I want to do a

14:11:42conversation related uh uh let's say

14:11:45deep learning let's say I need another

14:11:47uh new session for another topic. Let's

14:11:50say I want to do the conversation

14:11:51regarding let's say NLP. It's like that.

14:11:54Okay. Instead of doing all of the

14:11:56conversation in a single trade in a

14:11:58single session, you can create multiple

14:12:01trades. Okay. And you can do the

14:12:03conversation anytime. You can come here,

14:12:05you can see the older conversation as

14:12:07well with a different different trades.

14:12:09But this kinds of feature is not

14:12:11available inside our agentic chatbot. So

14:12:14in this video what I'm going to do guys

14:12:15I'm going to implement this particular

14:12:17features so that uh you can also get

14:12:20your older trades uh and you can also

14:12:22see all of the uh old trades

14:12:25conversation as well and anytime you can

14:12:27continue your conversation from there

14:12:29only. Okay. So these kinds of features

14:12:31we'll try to add in this particular

14:12:33agentic chatbot in this video. So make

14:12:35sure guys you watch this video till the

14:12:37end. don't miss anything and if you

14:12:39found this content useful please try to

14:12:41subscribe to my channel and hit the like

14:12:43and please try to share it with your

14:12:44friends and family. So instead of

14:12:47talking too much guys let's start the

14:12:48implementation and I'm going to show you

14:12:50how we can add this trading features

14:12:52inside this agentic chatbot. So guys

14:12:55before starting the development first of

14:12:57all I want to show you the final result

14:13:00final demo uh like what are the uh

14:13:03features we are going to add in this

14:13:05particular agentic chatbot. So as you

14:13:07can see we already added this uh trading

14:13:09features inside our aentic chatbot.

14:13:11Previously uh it was a simple chatbot

14:13:14only. Okay there we didn't have any

14:13:16kinds of uh trading features like uh I

14:13:19can't see my older trades right uh it

14:13:22was not there but in the new update as

14:13:24you can see here we have added a

14:13:26separate section. So from here only you

14:13:28can go to your previous conversation. So

14:13:30let's say here I'm doing a conversation.

14:13:33Let's say I'm asking what is Python,

14:13:36right?

14:13:38Uh let's say I will ask

14:13:41my name

14:13:44is Buppy

14:13:50and I'll tell what is Python.

14:13:54Now you can see Python is a highle

14:13:57programming language and blah blah blah.

14:13:58Now if I ask what is my name?

14:14:05Now it is telling your name is BP. Okay.

14:14:07So this is a conversation we have done

14:14:11in this particular trades. As you can

14:14:12see we are using uh unique uh uh ID

14:14:16right to save this particular uh

14:14:18conversation story in this particular

14:14:19trades. Now what you can do like the

14:14:21chart GPT you can start a new

14:14:23conversation here. So I will click on

14:14:24new chart. Now see it will give me a

14:14:27completely new traits here. Now here if

14:14:29I ask what is my

14:14:34name?

14:14:37Okay what is my name? You'll see that

14:14:39I'm sorry I'm a assistant. I do not have

14:14:42access your personal information. Now if

14:14:44I ask my name is Alex.

14:14:50what is

14:14:54ML?

14:14:57Now see it is giving you the response.

14:14:59Now if I ask what is my name?

14:15:06Now it will tell your name is Alex.

14:15:07Okay. Now see this this particular

14:15:09conversation is completely separate from

14:15:10your previous conversation. Now I can go

14:15:12to the previous conversation anytime.

14:15:14Okay. Where I did like my name is By

14:15:17what is Python? Now here I can continue

14:15:19the conversation. Let's say now I'll

14:15:21tell I want to see

14:15:26hello world

14:15:31program.

14:15:34Now see it is giving you the hello world

14:15:36program because we did the conversation

14:15:38related Python. Okay. And here we are

14:15:40doing the conversation

14:15:42uh with the uh help of Buppy. Okay. So

14:15:45here Buppy is doing the conversation.

14:15:47Now even I can go to my previous

14:15:49conversation as well. So this is my

14:15:52previous conversation. This one my

14:15:53previous conversation. Now here you can

14:15:55anytime uh resume the conversation.

14:15:57Let's say um how it helps in

14:16:04AI.

14:16:07See how machine learning helps in AI. It

14:16:10is uh telling you each and everything.

14:16:12Okay. So that's how you can create

14:16:14different different trades and you can

14:16:16see your older conversation as well like

14:16:18chart GPT. So chart GPT does the same

14:16:21thing. It also using trading concept and

14:16:24every time whenever you are doing the

14:16:26chatting operation it is continuously

14:16:28saving your conversation history in a

14:16:30one particular trades and you can uh

14:16:32start new conversation anytime but the

14:16:35older conversation will remain same.

14:16:37Okay. So this kinds of thing guys we

14:16:39have added inside this particular

14:16:41agentic chatbot. Now throughout the

14:16:43entire video I'm going to show you the

14:16:44implementation part. So guys uh this was

14:16:47our uh previous code we have already

14:16:49written. So as you can see this was our

14:16:51previous app and it doesn't have any

14:16:53kinds of uh uh trading related uh uh

14:16:57code although I added the trading as you

14:17:00can see I added the trading but it was

14:17:01hardcoded. So only I was using trade one

14:17:04for all the conversation. Okay that's

14:17:07why this application was simple. Now I'm

14:17:09going to use the same code and we'll be

14:17:12writing the trading features inside this

14:17:14agentic chatbot. So what I can do

14:17:17instead of uh giving the name to app.py

14:17:20maybe I can give another name just for

14:17:22your reference. So let's say u um

14:17:26whenever you want to refer this

14:17:27particular simple code only that time

14:17:29you will be able to get this code from

14:17:31here. Okay. So I can also replace the

14:17:33code in my uh app.py pi but uh uh I

14:17:36think you won't be able to get the

14:17:38previous uh code that time. So that's

14:17:39why I'm going to create a new file. So

14:17:42first of all, let me rename it. So this

14:17:44is let's say

14:17:46simple app.

14:17:48Okay, this is simple app we created. Now

14:17:50I'm going to create another file. I'm

14:17:52going to name name it as app

14:17:55uh trade.

14:18:00Okay, that means uh this uh code has the

14:18:04trading uh trading code. Okay, trading

14:18:06related code, trading related features.

14:18:08Now what I can do, I can copy the same

14:18:10code as it is

14:18:15here. Okay. Yeah. And here this back end

14:18:19code will remain same. The back end code

14:18:21we have written this code will remain

14:18:23same here. You don't need to change

14:18:24anything. The change would be applied in

14:18:26the front end part only. Okay? because

14:18:28in the back end we are only returning

14:18:30the chatbot uh this uh graph object.

14:18:33Okay. So here what I'm going to do guys

14:18:36first of all I need some more library.

14:18:38So let me import. So I need u so here I

14:18:42need u u id. So with the help of this u

14:18:45u id I'll try to generate unique ID so

14:18:48that I can separate out my each and

14:18:50every trades. Okay instead of doing the

14:18:52hard coding. So every time I will

14:18:53generate a unique ID and I'm going to

14:18:55create my trades. Okay. uh first I'm

14:18:58going to create uh one function that

14:19:00will generate unique uh unique uh ID

14:19:04okay unique user ID because every time I

14:19:07need this unique user ID for this

14:19:09particular trading right I already

14:19:11showed you that part so for this let's

14:19:13create a function

14:19:15so this is the function guys I have

14:19:18already created

14:19:19yeah so this function what it does it u

14:19:22generates unique ID uh unique user ID

14:19:26every

14:19:27uh whenever you will execute this

14:19:28function it will give you unique user

14:19:30ID.

14:19:32So after getting this unique user ID uh

14:19:35what I want to do guys I want to

14:19:38um I want to add this uh unique ID

14:19:42inside my trades. Okay. So for this u I

14:19:45can create another function

14:19:51um called add trades. So what this add

14:19:53trades will do uh basically it will add

14:19:56a new trades ID to the conversation

14:19:59list. Okay. So basically this will get

14:20:01the trade ID and where you will get the

14:20:03trade ID we will get from this

14:20:04particular function. First of all it

14:20:06will check this trade ID it is available

14:20:09in the session state or not. Okay that

14:20:11means uh stream session state or not. Uh

14:20:14we'll try to save uh with the help of

14:20:15this chat traits um like key. So if it

14:20:19is not there it will uh try to set my uh

14:20:23trade ID the trade ID it will generate.

14:20:25Okay. So this is a simple function we

14:20:27have created because whenever you will

14:20:29try to initialize your application for

14:20:31the first time there it won't be having

14:20:34any kinds of chat trades right so that

14:20:37time one new trades should be created

14:20:39completely new trades should be created

14:20:42and it will try to append there and with

14:20:44that particular trades only we'll do the

14:20:46conversation then later on if user wants

14:20:48they can create the trades okay as per

14:20:50their requirement now you can see this

14:20:53uh chat trades is not available uh So we

14:20:56have to also create that. So if you just

14:20:58go below. So I think remember we created

14:21:02um message story previously. So here

14:21:04only I'll try to add another one.

14:21:07So after message so we'll just try to

14:21:10write this uh chat threads. Okay. As you

14:21:13can see if chat traits not in session

14:21:16state it will create a empty chat

14:21:18traits. Okay. And this will become a

14:21:21list.

14:21:23And right now we'll be able to we'll be

14:21:26able to um append that particular trades

14:21:29because now this chat trades session is

14:21:32created. Okay. Here only I will also try

14:21:34to add the comments in my previous code

14:21:37as well. So that later on whenever you

14:21:40are uh revising this code I think it

14:21:42would it will be helpful for you. Okay.

14:21:46By seeing the comments only you can

14:21:47understand what this code is doing.

14:21:49Okay. You can see this uh this code

14:21:51actually creates the message story when

14:21:53the app runs for the first time. Okay, I

14:21:55already created previously I think you

14:21:57remember. So once it is done now let me

14:22:01uh add uh the user interface because if

14:22:05you go to the chat GP left hand side you

14:22:07will be able to see all of your uh

14:22:09conversation okay all of the threads. So

14:22:10we'll try to create the same thing here.

14:22:13So for this let me just create a sidebar

14:22:15first of all. So here I'll just try to

14:22:19add a sidebar

14:22:21with the help of streamllet. So I

14:22:23already commented out this is that uh

14:22:26sidebar trading features display the

14:22:28sidebar title. So stidebar.title

14:22:32I just name it as my conversations.

14:22:35Now if I execute my code

14:22:38okay if I execute my code you will be

14:22:40able to see that. system streamllet run

14:22:44uh app

14:22:47trade.py.

14:22:49Okay, this file we are executing. Now if

14:22:52I show you my code, so as you can see

14:22:55guys, this is our uh sidebar we created.

14:22:57So anytime you can open and close it uh

14:23:00like the chart GPT chart GPT also has

14:23:02the same thing. Okay, this is the

14:23:04sidebar. Now here only we'll be adding

14:23:06our trading. Okay. So for this uh let me

14:23:10just uh show you my updated code what I

14:23:13have done. Um

14:23:16I can show you step by step. I think

14:23:18that would be uh best. So what I can do

14:23:21I can just uh quickly show you.

14:23:29So I'll just uh remove these are the

14:23:31code. Okay. My old code and I'm going to

14:23:33show you my updated code. I think that

14:23:34would be amazing.

14:23:40I'll just try to remove all of the code.

14:23:43[clears throat]

14:23:44So, first uh we'll be adding some

14:23:45utility functions. First of all,

14:23:48generate uh trade ID. I already told you

14:23:50it will generate the trade ID every

14:23:51time. And another function I have

14:23:53written uh this will basically add the

14:23:55trade ID where to the session state.

14:23:58Okay. But we have to create the session

14:24:00state. So, let's create all the session

14:24:03state. I'll just try to add all of the

14:24:05session state.

14:24:11So this is my message story session uh

14:24:14session state and this is for my

14:24:20chat uh session state. Okay, chat

14:24:23traits. Okay, that mean this this one.

14:24:26and um

14:24:29um I'm going to

14:24:32create a sidebar here.

14:24:38Sidebar here. Okay. So, this is my

14:24:40sidebar. Now, if I go to my application

14:24:43again, if I refresh

14:24:46now, see it looks like that. Okay. Don't

14:24:48worry about this chat input feature. I'm

14:24:50going to add it. Uh just let me update

14:24:52my uh this code first of all, then I'm

14:24:54going to add. Okay, that that will

14:24:55remain same like we did the previously.

14:24:57Right now, what I'm going to do guys,

14:25:00I'm going to add a new button here. So,

14:25:02I think you remember chat GP also has a

14:25:05button. If you click on this new chat

14:25:07button, it will start a new conversation

14:25:09for you and you will be able to see the

14:25:11old uh trades as well. So, these kinds

14:25:13of features we'll try to add here. So,

14:25:16this is the code. I'm going to tell you

14:25:19about this reset chat what this reset

14:25:21chat will do. But let's try to

14:25:23understand. Uh see this uh creates a

14:25:25button for starting a new conversation.

14:25:27So there would be a button stidebar dot

14:25:30button new chart. And if you click on

14:25:32new chart, see what will happen in chart

14:25:34GPT. Let's say uh let's say I'm inside a

14:25:37trades. Let's say I'm inside this

14:25:38particular trades. Okay, I'm inside this

14:25:40particular trades. Now once I click on

14:25:43new chart, you'll see that one new

14:25:45window will come and all of the previous

14:25:47chart history will be clean up. Right?

14:25:50So for this kind uh this reason I'm also

14:25:52going to write a function called recent

14:25:54reset chat. So whenever user will take

14:25:55the new chat all of the previous

14:25:57conversation would be removed. So for

14:25:59this let's create another function here.

14:26:02I'm going to name it as

14:26:05um

14:26:07reset chat. So after this function maybe

14:26:10I can add

14:26:13okay reset chat. So what it it is doing

14:26:16you can see uh first of all it will u

14:26:18basically generate a new trade id with

14:26:22the help of this function

14:26:24and it will store in the trade ID. The

14:26:26trade ID uh we created

14:26:30uh session state I think session state

14:26:32trade ID is not created. So let me

14:26:33create it quickly.

14:26:38So this is my

14:26:41trade ID. Okay. If trade ID not in

14:26:43session state uh it will create a trade

14:26:45ID and it will take a trade ID from this

14:26:47particular function. Okay, unique trade

14:26:49ID. Now it is resetting and uh what it

14:26:52is doing it is uh setting a new trade

14:26:55ID. Then after that all of the message

14:26:58would be empty. We you can see we are

14:26:59giving empty list. Then after that we

14:27:02are adding this particular trade ID in

14:27:04my session state. Okay, you can see we

14:27:06are using this add trade function and we

14:27:08are adding this trade ID the current

14:27:10trade ID in the session state because

14:27:13whenever I'm inside this particular

14:27:15trade okay I'm inside this this

14:27:16particular trade so all of the

14:27:18conversation should be saved in this

14:27:20particular trades only that's why this

14:27:23thing we are doing so every time we have

14:27:24to track this trade trade ID all right

14:27:27now uh let's say if I go to my

14:27:32application if I refresh now you'll be

14:27:34able to the uh see this new chat. Okay.

14:27:37Now, if I click on this new chat, so it

14:27:39will basically

14:27:41run this code. It will basically run

14:27:43this code and all of the recent uh uh I

14:27:46mean recent conversation would be

14:27:48removed. Okay. And uh uh we have to

14:27:52write this st. If you are doing the

14:27:54reset chat operation, this is

14:27:55recommended. So basically this this will

14:27:57uh return the streaml app to update uh

14:28:00update the interface. Okay. So basically

14:28:02what is happening uh whenever you are

14:28:04doing this uh new chat operation it is

14:28:06resetting after getting the resetting

14:28:08operation it is giving you the new

14:28:09window. Okay. So whenever you are

14:28:12getting the new window st. Return. Okay.

14:28:15This is recommended. If you check the

14:28:17documentation, you'll be able to see

14:28:19that. Okay. Now let's try to add the

14:28:21chat feature. Uh I'll just try to add

14:28:23the updated chat feature. So I already

14:28:26written the code guys. Let me show you.

14:28:29So this is the code

14:28:35and this is the same code guys. Uh only

14:28:37just few update I have done. So here

14:28:39we're taking a chat input from the user.

14:28:42Okay. And whenever user is giving their

14:28:44input, first of all we are appending to

14:28:46the message story. The same thing we did

14:28:48our uh previous code as well. So message

14:28:51story. Uh after that uh we are setting

14:28:55this is a user conversation and content

14:28:57is user input. Okay. And why we are

14:28:59doing this? Because I want to save my

14:29:02conversation story and this is the

14:29:04format to save the conversation story.

14:29:06First of all, you have to define uh what

14:29:08is the role of this conversation. This

14:29:10is user and what is the content of that.

14:29:12Okay. After this, we are showing this

14:29:15conversation in the streamlit user

14:29:16interface. For this, we're taking a chat

14:29:18message. I think remember there would be

14:29:20a um there would be a icon. Okay. User

14:29:23icon. So, we are setting that this is a

14:29:25user icon and this is the user

14:29:26conversation. Okay. And here guys, we

14:29:28are defining the configuration right

14:29:30now. Okay. This is the persistence

14:29:33configuration. This is the trading

14:29:34configuration. Config is equal to

14:29:36configurable. Now trade ID is equal to

14:29:38ST dot session state trade ID. Now we

14:29:41are not taking the hardcoded trade ID.

14:29:43Instead of that see previously we are

14:29:44taking the hardcoded trade ID. We are

14:29:46only giving trade one. But right now

14:29:48there would be a multiple trade. User

14:29:50can create the trades right. So we are

14:29:52taking it from the session state and

14:29:53already session state we have created

14:29:55here. The session state it is already

14:29:57created.

14:29:59Uh session state

14:30:02uh what is that? Yeah, s state trade ID.

14:30:05Now I think trade ID it is available.

14:30:07Yeah, you can see trade ID is available.

14:30:09And how we are getting the trade ID? It

14:30:11is generating by the UI ID. Okay, from

14:30:13here only it is getting generated. Okay,

14:30:15I hope you get it now. Yeah, from here

14:30:20actually we are showing the user uh

14:30:22sorry assistant message. As you can see

14:30:24we are taking this S3 uh chat message.

14:30:28Uh we are taking this is assistant

14:30:30reply. After that we are uh taking the

14:30:33write stream function. I told you in my

14:30:35previous video how stream it streaming

14:30:38works right how we can show the

14:30:39streaming response. So inside that we

14:30:42are generating the responses from our

14:30:44chatbot object. The chatbot we have

14:30:46imported from the back end. Okay as you

14:30:48can see this is the same code guys there

14:30:50is no chance we are using after that

14:30:53whatever message chunk we are getting we

14:30:55are continuously

14:30:57uh writing with the help of write stream

14:30:59function. Okay. And here we're passing

14:31:01the configuration and we are giving

14:31:04stream mode is equal to masses. Okay.

14:31:06And here we're getting one u suggestion.

14:31:08I have to import this AI message. So

14:31:10let's import it quickly.

14:31:16I'll just try to import this AI message

14:31:20after human message AI message. Okay.

14:31:22Because this streaming response should

14:31:23be AI message here. Okay. That's why I'm

14:31:26telling if is instance message chunk if

14:31:29it is like message chunk that means we

14:31:32are getting AI AI reply right so that's

14:31:34why telling this should be IM message so

14:31:36this will only uh show the IM message

14:31:38here then we are saving the complete

14:31:42assistant response in this stream

14:31:43session state in the message story so

14:31:45this code is common I think you already

14:31:46know that yeah this is pretty much clear

14:31:49so after uh this uh part is done guys

14:31:52now what I'm going to do I'm going to

14:31:54simply

14:31:56execute my app. Refresh.

14:32:00Now see guys, you are getting this

14:32:02window. Now if I do the chat operation,

14:32:04let's say hi.

14:32:09See, I'm getting the response. Now I'll

14:32:11tell my name

14:32:14is puppy.

14:32:16Now see previous uh message is getting

14:32:19replaced because I haven't added this

14:32:22code here. I think remember previously

14:32:23also I added this code and this uh

14:32:26loading the conversation history. Okay,

14:32:28we have to load the conversation story

14:32:29every time. So let's load that before

14:32:32the user input. So every time it will

14:32:34load the conversation story message and

14:32:37it will uh write in the stream that user

14:32:40interface as a uh human role and

14:32:42assistant role. Okay, because we are

14:32:45running a for loops every time it will

14:32:47looping through the role. First of all

14:32:50user role will come then assistant role

14:32:52then user role then assistant role and

14:32:53their content. Now let me refresh and

14:32:57again try. So hello

14:33:05my name is

14:33:09Buffy.

14:33:12Okay. Now nice to meet you Buffy. Now

14:33:14see we are able to see the previous

14:33:15conversation but right now what I have

14:33:18to do so let's say if I click on a new

14:33:20chart okay new chart will is coming okay

14:33:23it's completely fine but I am not able

14:33:25to see my older chart that means older

14:33:28trades so now we'll be adding the code

14:33:30related older trades so you can also see

14:33:32the older trades so what I can do guys u

14:33:36I can show you my updated code I already

14:33:37created for this

14:33:40here I can write

14:33:45So this is the code guys I have written

14:33:47display all the conversation trades in

14:33:48reverse order and why I have to uh show

14:33:52in the reverse order. See every time

14:33:53what is happening if you create new

14:33:55trades right? If you create new trades

14:33:58so your

14:34:00uh your u new trades is coming

14:34:04uh new trait is coming at the last.

14:34:06Okay. Because by default Python will add

14:34:09this new traits at the last. Okay. But

14:34:12if you see if I click on new trades

14:34:14every time this new trade should be

14:34:16coming at the recent chart okay at the

14:34:18first uh first uh let's say order. So

14:34:21that's why we are reversing the order.

14:34:23So if my new chart is getting added at

14:34:25the last if I do the reverse operation

14:34:28that means from the last it will come at

14:34:29the first. Okay I think you understood

14:34:31that's why we're doing the reverse order

14:34:33operation. So this is a list we are just

14:34:35doing the reverse order operation

14:34:36because in this session state we have

14:34:38the chat traits. Okay, in this session

14:34:40state we have the chat trades and this

14:34:41is a list and it will continuously add

14:34:44at the last. Okay, let's see if you

14:34:45click on the add new. So new chat will

14:34:48add here. New chat will add here, right?

14:34:52And this has your old chat also.

14:34:55But this will show at at the last but I

14:34:57don't want to see at the last because

14:34:59whenever I'm doing the new conversation

14:35:01I want to see in the recent chat

14:35:03operation that means it will come at the

14:35:05first. Okay, that's why we have to do

14:35:06the reverse operation. So if you perform

14:35:08the reverse operation what will happen

14:35:10this new chat will come here right now

14:35:12okay before the old chat and with the

14:35:15help of that I will be able to make it

14:35:17in the recent conversation. So this is

14:35:19why we are doing this one

14:35:25just a minute let me

14:35:28so this is why we are adding this

14:35:30particular code. So it is going through

14:35:32the entire uh chat trades and uh here we

14:35:36are giving a button because this should

14:35:38be also a clickable object. If I click

14:35:40on this particular traits, it will be

14:35:42able to show my conversation. Okay,

14:35:45that's why we are making it as a button.

14:35:48ST dot sidebar button. So button uh name

14:35:51should be trade ID only.

14:35:54Even you can also uh you can also uh

14:35:57give any message name if you want. Okay,

14:36:00if you want you can also add any message

14:36:02name and uh the key should be trade ID.

14:36:05So once uh button creation is done, we

14:36:08are again saving this trade ID in our

14:36:11current trade because this is the

14:36:12current trade user will do the

14:36:14conversation

14:36:15and we'll load all of the conversation

14:36:18in this particular traits because if you

14:36:20click here see if I click here it is

14:36:22loading all of the conversation I did

14:36:24previously okay from my memory. So I

14:36:27will write a function for this called

14:36:29load conversation.

14:36:31So basically this will load all the

14:36:32previous conversation here.

14:36:36So after this uh reset chat maybe I can

14:36:43write this function. So load

14:36:45conversation this will take the trade ID

14:36:47and I think you remember uh from the uh

14:36:50langraph graph we get the state. Okay.

14:36:52If you call this get state function, it

14:36:54will give you all of the all of the

14:36:57previous conversation. If you want to

14:36:59understand this guys, you have to go

14:37:01through this particular session because

14:37:02here I already explained each and

14:37:04everything. So that's why I'm not going

14:37:05to repeat it again. So this get state

14:37:07function will return you all of the

14:37:08previous conversation. So we are taking

14:37:10all of the conversation and we are only

14:37:12getting the messages. Okay, from the

14:37:14value itself, we're only getting the

14:37:15messages.

14:37:16Okay, so this particular messages will

14:37:20show here. Then we are taking a empty

14:37:23list here. Then we are going through the

14:37:25messages one by one. Then we are trying

14:37:27to separate out the u user conversation

14:37:30as well as the assistant conversation.

14:37:32Okay. So we we are using is instance uh

14:37:36function for this. If you pass any

14:37:38message uh it will automatically tell

14:37:40you whether it is human message or let's

14:37:44say AI message. If it is human message

14:37:46role should be set to the user otherwise

14:37:49role should be set to the assistant.

14:37:51Then after that we are adding inside my

14:37:53temporary message list all of the

14:37:55conversation as a role and content. Then

14:37:58after that we are just updating in my

14:38:00session state and it is uh showing you

14:38:03in the user interface. Okay. Then again

14:38:05we are doing the return operation. Now

14:38:07let me show you. So if I let's say come

14:38:09here refresh.

14:38:12Now see uh if I do any kinds of

14:38:15conversation

14:38:19if I take a new chat now see guys new

14:38:22new chat is getting created and I can

14:38:25see my previous conversation as well.

14:38:26Now let's see if I do another

14:38:28conversation. Hi

14:38:32done. Now I can go to my previous

14:38:33conversation.

14:38:43See I can go to my previous

14:38:44conversation. This is the new

14:38:46conversation. This is previous

14:38:47conversation. Okay. So we have added

14:38:49this particular code. And I'm also able

14:38:51to see my conversation history. Let's

14:38:53see if I've done any kinds of previous

14:38:54conversation. I can see the history

14:38:56because of this code. Okay. This is

14:38:58continuously

14:39:00uh where is that this function load

14:39:02conversation. this loop conversation is

14:39:04continuously fetching the informations

14:39:07because we're running a for uh running a

14:39:09for loop here. Okay. So every time uh

14:39:11this uh message is getting fetched

14:39:18and one more update we have to do

14:39:22uh every time we have to set the current

14:39:24trade to the conversation list. Okay,

14:39:27for this we'll try to add this

14:39:28particular code. Okay, now I think my

14:39:30application is ready. This is a simple

14:39:33uh code we have written only. We're just

14:39:36playing with the trade. Okay, trade ID

14:39:38and for this we're using UI ID. We can

14:39:41also make it as a u readable title like

14:39:44chart JP. Chat GPT actually generates

14:39:46readable title uh uh title. So if you

14:39:48are asking any kinds of question, it

14:39:50will generate title instead of giving a

14:39:52trade ID. We can also do do this

14:39:53particular update. It is also possible.

14:39:56Now let me refresh my app.

14:39:59Okay. So this is the app. My name

14:40:06is BBY.

14:40:11Okay. So basically this conversation is

14:40:13getting saved inside this particular

14:40:14trade. Okay. In this particular trade it

14:40:16is saving. Now I love cricket.

14:40:24Okay. Now if I take new conversation now

14:40:27it is coming as a new uh new session

14:40:30again and this particular session is

14:40:32coming at the first and previous was a

14:40:35previous one it is going at the last

14:40:36because we are doing the reverse

14:40:37operation. Now here I'll tell my

14:40:42name is Alex.

14:40:46I love football.

14:40:54Okay. Now I go I can go to my previous

14:40:56conversation

14:40:58and here I can resume the conversation.

14:41:00What is my

14:41:04uh what is my favorite

14:41:10sport.

14:41:15Okay you can see cricket is the favorite

14:41:17sport. Now I can go to my current trade

14:41:20and here also I can ask what is my name?

14:41:25Your name is Alex. Okay. So that's how

14:41:27you can create as much as trade as you

14:41:29can. What is

14:41:32transformers?

14:41:38Okay.

14:41:39So this is uh telling you about the

14:41:42movie but I can ask what is transformers

14:41:45in AI?

14:41:48Okay, now it is telling you what is

14:41:50transformers in AI. Okay, so that's how

14:41:52guys uh like chart JPT we created the

14:41:54trades. Now we can switch to different

14:41:56different trades and I can resume the

14:41:58conversation. So yes guys, that's how we

14:42:00can add this trading features uh like

Build Permanent Chat Persistence Memory with LangGraph and Database

14:42:02chart JPT. Now if you want you can also

14:42:04change this name to the actual let's say

14:42:07chat title. If you want you can also add

14:42:09inside this code. So I'll try to u give

14:42:12this part uh as an assignment to you.

14:42:14Maybe you can uh add this functionality

14:42:16in this code. Okay, simply you can go to

14:42:18the chat GPT and you can ask uh I want

14:42:21this particular features how should I

14:42:23add? You'll be getting the suggestion.

14:42:25Okay, so just try to add uh this update

14:42:28instead of showing you this uh you uh uh

14:42:32unique user ID maybe you can show chat

14:42:34title like chat GPT the way chat GPT

14:42:37shows okay you can also add this

14:42:38particular things. So we have already

14:42:40integrated this uh chat trading. Uh now

14:42:43we are able to uh continue the

14:42:46conversation uh with our previous chat

14:42:49as well. That means right now I can

14:42:51separate out my uh chat trades. I can

14:42:54create a new conversation. I can

14:42:56continue with my old conversation like

14:42:58chat GPT. So yeah we have already added

14:43:01this uh trading features. So what will

14:43:04happen right now? Let's say if I

14:43:06continue any kinds of conversation.

14:43:07Let's see here I will give hi my name is

14:43:12BP. Okay.

14:43:14So as you can see it is giving you

14:43:16response uh nice to meet you BP how I

14:43:18can assist you today. Now let's say I

14:43:20want to create a new chat like chat GPT.

14:43:22So what I will do I'll just click on new

14:43:24chat and you can see one new trade has

14:43:27created. Okay, new um conversation has

14:43:30created. Now here I will tell hi my name

14:43:34is Alex.

14:43:38See hello Alex how I can assist you

14:43:40today now I can go to my previous

14:43:43conversation where I told my name is BPI

14:43:46even I can continue with my um the

14:43:49current conversation I did right so

14:43:51that's how you can create as much as

14:43:53session you can okay but I think you

14:43:56have observed one thing uh which is if I

14:43:59refresh the application okay let's say

14:44:01if I refresh the application so see my

14:44:04previous conversation is getting erased.

14:44:06Okay, previous conversation is getting

14:44:08removed. So whenever you are refreshing,

14:44:10okay, whenever you are refreshing, that

14:44:12means your RAM is getting cleared. Okay,

14:44:14and all of the conversation is getting

14:44:16erased. And if you close your

14:44:18application as well, let's say if I

14:44:19disconnect from my terminal, so what

14:44:21will happen uh from the RAM itself, it

14:44:23will be removed and again you will be

14:44:25able to see the new chat here. You won't

14:44:27be able to see the older conversation.

14:44:29This is the problem. So yeah uh today in

14:44:31this particular video guys we'll try to

14:44:33understand how we can add the database

14:44:35features inside the agentic chatbot uh

14:44:37so that uh whenever you are refreshing

14:44:39right your agentic chatbot uh you will

14:44:41be able to see the old conversation

14:44:43right now this is the problem. So right

14:44:45now if you perform conversation with

14:44:47your chatbot and uh if you are creating

14:44:50different different let's say chat

14:44:52traits so if you refresh your

14:44:53application or if you close your

14:44:55application it will be removed from the

14:44:56RAM right so these kinds of things we

14:44:58have to fix. So that's how guys we'll

14:45:00try to add uh uh new features inside

14:45:03this agentic chatbot and we'll try to

14:45:05make this agentic chatbot more advanced

14:45:07and uh we'll be learning this particular

14:45:09project. Okay. So if you found my

14:45:11content useful guys please try to

14:45:13subscribe to my channel and please share

14:45:14it with your friends and family and

14:45:17please support me guys. Uh if you

14:45:18support me so definitely I will be

14:45:20bringing this kinds of content more okay

14:45:22on my channel. So uh instead of talking

14:45:25too much guys, let's start with the

14:45:26implementation and uh here uh in this

14:45:29video guys, I'm going to show you how we

14:45:31can integrate database functionality in

14:45:33the persistence memory. So guys, I have

14:45:36already shared the source code with you.

14:45:38It is already available in the video

14:45:40description. So if you open up my

14:45:42previous code guys, I have already

14:45:44written this code as you remember. So

14:45:46there I uh tried to uh uh integrate this

14:45:49trading features inside our agentic

14:45:51chatbot and this is the code we have

14:45:53written right. So this is the entire

14:45:55code and uh the change we have done in

14:45:58the front end uh because you can see

14:45:59this is the front end uh uh front end

14:46:02file and we had another file which is

14:46:04the back end. Okay, in the back end

14:46:05itself I had my um like let's say uh

14:46:09aentic chatbot back end. So here I

14:46:11created the chat node then the uh graph

14:46:14and ages. Okay, each and everything I

14:46:16initialized it here and I was returning

14:46:18as a checkpoint uh sorry chatbot uh

14:46:20graph object. So here uh if you see in

14:46:23this particular backend file here I was

14:46:26using this memory saver okay from the uh

14:46:29checkpoint check checkpo pointer lang

14:46:31graph checkpo pointer so I was importing

14:46:33lang graph dot checkpoint dot memory

14:46:36import in memory saver so if you're

14:46:38using this uh memory saver that means

14:46:40what is happening uh you are storing all

14:46:42of the conversation in the RAM and

14:46:44whenever you are refreshing or closing

14:46:46your terminal it is getting erased okay

14:46:48because RAM is a temporary memory now we

14:46:50have to make it as permanent okay For

14:46:52this we have to use some kinds of

14:46:53database. Now if you visit this lang

14:46:55graph documentation lang graph

14:46:57documentation um uh you will be u you'll

14:47:00be finding like uh uh some database they

14:47:04are suggesting whenever you are creating

14:47:06uh this kinds of persistence memory. So

14:47:09uh if you check the langraph

14:47:10documentation there you will be getting

14:47:12some kinds of database like SQLite

14:47:14database they are suggesting. So

14:47:15skillite database when you can use

14:47:17whenever you are creating the prototype

14:47:18right as of now we are learning uh we

14:47:21are trying to implement this agentic

14:47:23chatbot. So we are in the learning phase

14:47:25maybe we can utilize the SQLite database

14:47:27because this is completely free to use

14:47:29and SQLite database actually basically

14:47:32it will create the instance inside your

14:47:34local storage. Okay. But uh you can also

14:47:37utilize any production uh grade database

14:47:40like postgress is there then um some

14:47:43other database are also there. Okay, you

14:47:45can also utilize that. So going forward

14:47:47whenever we'll try to create production

14:47:49grade actually agentic uh chatbot uh

14:47:51that time I'll try to use these are the

14:47:53database but right now we are in the

14:47:55learning phase. So we'll try to use some

14:47:57kinds of prototype based database. Okay,

14:47:59I can utilize SQLite database because

14:48:01this is this would be lightweight for me

14:48:03and I don't need to take uh any kinds of

14:48:05subscription plan for that. Right? So

14:48:07that's why I'll continue with the SQLite

14:48:09database. So if you uh go to the SQLite

14:48:11documentation SQLite documentation

14:48:16um

14:48:18so this is the SQLite documentation

14:48:20guys. So this is uh basically a

14:48:23database. Uh this is a database actually

14:48:25you can utilize uh with the help of

14:48:27python and uh if you're using this

14:48:30langraph guys lang graph also has the

14:48:32connection with SQLite. Okay for this

14:48:35you have to install one library uh this

14:48:37library uh langraph checkpoint SQLite.

14:48:40Okay. So you have to install this

14:48:42particular library. If you install this

14:48:43library you will be able to use this

14:48:45SQLite uh with your langraph. You can

14:48:48also separately install this SQL light

14:48:50if you are only using Python programming

14:48:52that time separately you can utilize but

14:48:54here we want to utilize with the help of

14:48:56this langraph okay that's why lang graph

14:48:58connection is also there langraph SDK is

14:49:00also there someone I think has created

14:49:02this and published on the pi and we are

14:49:04able to use this um package inside our

14:49:07development okay if you check the

14:49:10langraph documentation guys uh here in

14:49:12the memory section as you can see add

14:49:14short-term memory that means this is the

14:49:16persistence memory as you can see

14:49:17short-term memory

14:49:18trade level persistence. Okay. So here

14:49:20as of now we use this memory saber uh

14:49:23database uh sorry memory saber actually

14:49:26stories uh basically this stores your uh

14:49:28conversation in the RAM and uh you can

14:49:31see uh they are also suggesting for the

14:49:33production. So for production use either

14:49:35you can use postgrace

14:49:37a postgrace it is also production grade

14:49:40database and you can create a postgrace

14:49:42server either you can create a local uh

14:49:45server local host server either you can

14:49:46create a cloud-based servers okay so um

14:49:49any kinds of cloud you can set up this

14:49:51postgrace either you can use um like

14:49:53render either you can use uh AWS GCP

14:49:57anywhere you can set up this uh uh

14:49:59postgra server and you can connect with

14:50:01your langraph okay this is possible so

14:50:03uh That's how you can also use MongoDB.

14:50:05Uh you can also connect with MongoDB.

14:50:07You can also connect with radius. You

14:50:09can also connect with Oracle. Okay,

14:50:10that's how it is having different

14:50:11different database connection. But

14:50:13whenever we are creating prototype, uh I

14:50:15think this SQL light is fine for us

14:50:17because we can u set up inside our um

14:50:20local storage only. Okay, I don't need

14:50:22to take any kinds of separate server for

14:50:24that. Okay, that's why I'm using this

14:50:26SQLite. Uh so uh database doesn't

14:50:29matter. You can use any kinds of

14:50:30database. Uh anything will work. But

14:50:32only you just need to know the um like

14:50:35connection. Okay, integration how we can

14:50:36integrate the database. Okay, right now

14:50:38I'm integrating the SQLite. Maybe you

14:50:41can also integrate any other database.

14:50:43Only you just need to get this

14:50:44connection string. Okay, let's see if

14:50:46you're uh setting up this database in a

14:50:48server. You just need to get this

14:50:50connection string. Okay, if you get this

14:50:51connection string, you can check the

14:50:52documentation and you can copy this code

14:50:54and you can change it any time. Okay,

14:50:56it's up to you. So here the main change

14:50:59guys I have to do in the back end file

14:51:01because in the back end file I am using

14:51:03this memory saber and instead of memory

14:51:05saber I have to use my uh this one uh I

14:51:09have to use my um um database. Okay so

14:51:12for this uh I have to first of all

14:51:14install this library uh where is that

14:51:18uh yeah the install this library. So

14:51:19I'll copy this command or I can copy the

14:51:24name

14:51:26and I will add inside my requirements.

14:51:30Now let's install it here

14:51:36install

14:51:38at requirement.txt.

14:51:41So for me it is already satisfied

14:51:42because I installed it previously but

14:51:44for you it may take some time. So once

14:51:47installation is complete guys

14:51:50uh I'll open up my

14:51:53backend file and in the back end itself

14:51:56I'll try to change that change that. So

14:51:59here what I'm going to do um

14:52:04I'm going to

14:52:08um should I change in the same file or

14:52:10should I create a new file. uh if I

14:52:12change in the same file then you will be

14:52:14able to uh you won't be able to get the

14:52:16older code. So what I can do maybe I

14:52:18can't um

14:52:21I can create another file. Okay.

14:52:26So I'll create a same file. I'll just

14:52:28rename it aentic chatbot

14:52:33um back end

14:52:38here. I'll just try to add DB back end.

14:52:43Okay, DB back end means uh it has the

14:52:45database integration. Okay. Uh that's

14:52:48how you will be able to see the previous

14:52:49code as well. Okay. Yeah, I think this

14:52:51is fine. Now here uh instead of this

14:52:54memory saber, we have to import this uh

14:52:57SQLite saber. So from lang graph

14:53:00checkpoint here you have a uh class

14:53:03called SQLite. Okay. And instead of

14:53:07memory server, we have to import SQLite.

14:53:10SQLite saber.

14:53:15Okay, SQLite saber. So you have to

14:53:17import that. So once it is done now,

14:53:20I'll just go below and uh here you can

14:53:22see I created a checkpoint object and I

14:53:24use this memory saber. Instead of memory

14:53:26saber, I will use my SQLite saber.

14:53:30SQLite saber. Okay, this class. Now this

14:53:34SQLite saber takes a connection object.

14:53:36Now you have to initialize the

14:53:37connection object. Database connection

14:53:38object. Basically you will be connecting

14:53:40with the SQLite uh database. So for this

14:53:43uh you have to import this SQLite

14:53:46library. import

14:53:49SQLite 3. Okay. SQLite 3. So this is

14:53:53already available inside Python. Then

14:53:56after that here I will create a

14:53:58connection object. So to create the

14:54:00connection object guys uh you just need

14:54:02to initialize this SQLite 3. Then there

14:54:06is a function you have to call called

14:54:08connect. Okay connect and inside that

14:54:12you have to give a first parameter which

14:54:15is database. You have to initialize the

14:54:17database. Okay. So here basically this

14:54:20SQLite creates the database object

14:54:22inside your local storage only. That

14:54:24means inside your project folder only it

14:54:26will create a database. Okay. Uh it will

14:54:27create a DB file. So you have to give

14:54:29the DB file name. So here I'm going to

14:54:31name this file as chatbot DB. Okay. And

14:54:35uh here you have to give another

14:54:37parameter which is check same trade is

14:54:39equal to false. Okay. Why we have to

14:54:40give this particular parameter? Because

14:54:42I think you remember we are using the

14:54:44trading concept, right? Tra uh chat

14:54:46trading concept. So every time uh user

14:54:50uh is creating separate trades and they

14:54:52are doing the conversation and uh by

14:54:54default actually scaleite doesn't

14:54:56support uh actually multi-rading that

14:54:58means you can't uh apply the trading uh

14:55:01you can't create a different trades in

14:55:03this Qite once you have created one

14:55:05particular session you have to continue

14:55:07uh the uh the same execution in that

14:55:09particular session only okay by default

14:55:11this parameter basically it's true right

14:55:13but if you make it as false then SQLite

14:55:15will try to give you the access for the

14:55:17trading concept. That means you can do

14:55:20the multiple trading chart. Okay, that

14:55:22means you can store uh your checkpoint

14:55:24in a multiple trades. Okay, this will uh

14:55:26basically allow that particular option.

14:55:28That's why we have given uh check uh

14:55:30same trades is equal to false. Okay, I

14:55:33hope you cleared. So this is basically

14:55:34here you will be getting a connection

14:55:36object. So I'm going to store inside a

14:55:37variable. Let's say this is connection

14:55:38object. Now this connection object you

14:55:40have to pass inside this SQL lightsaber.

14:55:43Okay, you have to pass inside this SQ

14:55:44lightsaber. So once you have done that

14:55:46uh now you will be getting the

14:55:48checkpoint. Okay. Now this checkpoint is

14:55:50not a simple checkpoint. It will not

14:55:52store your conversation. It will not

14:55:53store your checkpoint inside the RAM.

14:55:56Okay. Instead of that it will save the

14:55:57conversation or checkpoint inside a

14:56:00storage service inside a database

14:56:02storage which is chatbot DB. Although

14:56:05this storage service will create inside

14:56:06your uh computer storage only. But this

14:56:10is not storing inside a RAM. Okay. it

14:56:12will store as a file and we know that

14:56:14unless and until we are not uh deleting

14:56:16the file this file will be available

14:56:17inside my computer. If I turn off my

14:56:20computer as well this file will remain

14:56:21same. Okay, this is the main benefit

14:56:23here. So once we have done that guys uh

14:56:25the same code you have to write here. Uh

14:56:27no need to change anything. Now let me

14:56:29show you whether it's working or not. So

14:56:32here uh maybe I can test this file. So

14:56:35for this let's do the invoke operation.

14:56:38uh so here uh what I'm going to do guys

14:56:40I'm going to just uh

14:56:42do the invoke operation so response is

14:56:45equal to yeah so I have uh written like

14:56:48that so I just created a config because

14:56:50you know that we're using persistence

14:56:52memory and we have to pass the config

14:56:53whenever we're doing the invoke

14:56:54operation so here uh by default I have

14:56:57taken this default rate I have just done

14:56:59hard coding operation and we are

14:57:02invoking and we're giving the message

14:57:04hello how are you or let's say I'll just

14:57:06give uh

14:57:08my name is BP.

14:57:12Okay. And we're passing the

14:57:14configuration and this will give you the

14:57:15response. We'll try to print that as

14:57:17well. Okay. Now see if I execute what

14:57:19will happen. Uh you'll be able to see

14:57:21one chatbot. DB file would be created

14:57:23here. So Python

14:57:26um agentic chatbot

14:57:29DB backend, right? DB backend.py. If I

14:57:31execute,

14:57:34see chatbot. DV has created and we are

14:57:38getting the response as you can see I

14:57:39given my name is BP and my AI message

14:57:43that means my uh agent has replied hello

14:57:45BP how I can assist you today and some

14:57:48other let's say metadata informations we

14:57:50are getting okay now you can see one uh

14:57:52chatbot uh DB has created you can also

14:57:56visualize that okay it is also possible

14:57:58for this you have to install one

14:57:59extension called SQite

14:58:03viewer

14:58:05SQLite VR. Okay, I have already

14:58:07installed this uh extension inside my VS

14:58:09code. Uh if you don't have just try to

14:58:11uh install that and you can see this is

14:58:13the um this is the publisher Florian uh

14:58:16clam clamper. Uh make sure you install

14:58:19the same version. Okay, once you have

14:58:21done that uh you just need to double

14:58:23click on this uh chatbot DB and you will

14:58:26be able to see this

14:58:29uh checkpoint. It has saved in the

14:58:30memory as you can see uh sorry not

14:58:32memory in the database as you can see.

14:58:34Okay. Now you can see it has uh stored

14:58:37my trade uh checkpoint and this is the

14:58:39trade ID. Okay. We have given default

14:58:41trade as you remember we have given uh

14:58:43what is that chatbot back end. Okay. Not

14:58:46this one. Yeah this one we have given

14:58:48the default trade. Okay. Now you can see

14:58:49default rate. Now you can ask me why

14:58:51this uh three three time it is coming

14:58:53because as per our workflow guys the

14:58:56workflow we have created it has three

14:58:58checkpoint uh uh one checkpoint at the

14:59:00start uh start position uh second

14:59:03checkpoint in the uh chat node position

14:59:06and other one is the end position okay I

14:59:08think I already told you about this

14:59:09right uh in my uh this video uh

14:59:12persistence video I already told you

14:59:13about that right so please go through

14:59:15the persistence video if you don't

14:59:16understand the checkpointer concept like

14:59:18how many checkpointer uh would be

14:59:21available uh in which node it would be

14:59:23available each and everything I have

14:59:24discussed here. So here we are having uh

14:59:26three layer okay three layer inside uh

14:59:30this uh uh sorry three three node inside

14:59:33our uh agentic chatbot that's why three

14:59:36time this uh um checkpoint is getting

14:59:38created and all of the checkpoint ID as

14:59:41well as the checkpoint uh some meta

14:59:44information is also available okay and

14:59:46if you want to see the checkpoint guys

14:59:47directly you can click here so if I

14:59:49click here you'll be able to see the

14:59:51data now this data uh it stores

14:59:54basically in a binary format it's not

14:59:56readable properly but I think some of

14:59:58the message you can still able to

15:00:00understand like my name is BP okay I

15:00:02have given uh now let me show you

15:00:04whether it is able to uh store my

15:00:07checkpoint inside my database or not so

15:00:10let's say if I re-execute my um back end

15:00:14uh whether I will be able to see my old

15:00:16uh old conversation or not let's say I

15:00:18given my name is BP okay so this uh uh

15:00:21this checkpoint would be available or

15:00:23not okay so For this maybe I can just

15:00:26give a separate name here. Let's say

15:00:28Alex I will give. And uh what you can do

15:00:31you can also change the trade ID if you

15:00:32want. Let's say I will give default

15:00:34trade one. Okay. Now if I reexecute my

15:00:40back end.

15:00:43Okay. Now if I open my database um I

15:00:46have to refresh

15:00:48this.

15:00:50Okay. Now see another trade got created

15:00:52and still my previous trade is available

15:00:55here. Okay, previous trade is available

15:00:57and in the response also you can see my

15:01:00name is Alex and this is a separate

15:01:02trade it is coming. Okay, so that's how

15:01:04guys we have seen it is able to store my

15:01:08checkpoints. It is able to store my

15:01:11conversation inside my database. Okay,

15:01:14amazing. Now uh this is ready. Now we

15:01:17have to add uh we have to integrate this

15:01:19thing inside our front end app. Uh

15:01:21because right now we tested inside the

15:01:23back end file only but I have to add

15:01:25inside my front end. So what I'm going

15:01:27to do guys I will open up my front end.

15:01:29So this is the front end uh app trade or

15:01:32maybe I can create another same file.

15:01:35I'll just try to copy and paste

15:01:39and I'll just rename it app

15:01:43uh

15:01:46DB.

15:01:50Okay. So with the help of that you can

15:01:52understand um like this is uh this is

15:01:55actually database, this is trading, this

15:01:57is simple app. Okay. You can understand.

15:01:58So DB means this this has the uh

15:02:01database uh actually update. Now see

15:02:03here you don't need to change uh uh I

15:02:05mean um uh in in all the code only just

15:02:09change you have to do uh here in the

15:02:11chat uh uh chat traits okay so whenever

15:02:14I was uh actually creating this uh

15:02:17session state in the uh streaml right

15:02:20there I was uh using simple list only

15:02:23okay and whenever you are using simple

15:02:25list that time what is happening if I am

15:02:27refreshing my application and it is

15:02:30re-executing from the beginning and this

15:02:32particular ular uh list is getting

15:02:34created again and all of the data we had

15:02:37inside the list it was getting erased.

15:02:39Okay, this is this was the problem. So

15:02:41instead of uh taking this uh simple list

15:02:44here. So here I have to uh connect my

15:02:48database. Connect my database means in

15:02:50the back end I am already storing my

15:02:53checkpoint inside my database inside my

15:02:55SQLite database. So what I'm going to do

15:02:58uh instead of uh instead of actually uh

15:03:01u instead of actually giving a simple

15:03:03list here I'll try to load my uh all of

15:03:06the trades okay from my database only

15:03:09and I will just try to provide a list

15:03:11here. Okay. So for this uh in my backend

15:03:14code I'll just try to do a simple uh

15:03:17simple modification. I'll remove this

15:03:20code. It's not required. So here I'll

15:03:22just do a simple modification.

15:03:25Uh let me show you the modification.

15:03:28Yeah. So here I'll just try to write a

15:03:30function here.

15:03:33I'm going to name it as uh get

15:03:38uh all trades.

15:03:43Okay. Get all trades.

15:03:48So here uh I'll just try to um first of

15:03:51all show you this one.

15:03:53uh see uh first of all I will write a

15:03:56script then I'll just try to convert to

15:03:58a function otherwise I think you might

15:03:59get some difficulties so here uh first

15:04:02of all I'll write my checkpoint

15:04:08h checkpoint now in see checkpoint

15:04:11object is nothing but it's a database

15:04:13object right now we are using SQL

15:04:14lightsaber so it has a function the

15:04:17function name is list okay list so if

15:04:19you give uh give this function call this

15:04:21function list And uh if you execute so

15:04:24what will happen basically it will

15:04:26return you uh how many trades right now

15:04:28you are having inside the database but

15:04:31inside this list param uh list function

15:04:34you have to provide a parameter either

15:04:36you can tell okay I need uh I need let's

15:04:38say information about my default trades

15:04:40one so you have to give this name here

15:04:42okay you have to give this name here why

15:04:44is that uh here you have to give this

15:04:47name here you can give the trade name

15:04:49here but I don't want to give the trade

15:04:51name any specific trade trade name I

15:04:52want to get all of the trade right for

15:04:54this you have to provide none here so

15:04:56basically we're telling I don't need any

15:04:58specific trade I need all of the trade

15:05:00informations okay now see this will

15:05:02return you uh this will return you the

15:05:04trades

15:05:08trades okay

15:05:11uh I'll give equal sign now if I print

15:05:14that

15:05:19okay okay print that print all of my

15:05:21trades

15:05:23Now let's execute this file again.

15:05:28Okay. So this is uh giving you a

15:05:30generator object and you know that if

15:05:32you're getting a generator object so

15:05:33what you can do you can run a for loop

15:05:35on top of that. So for uh checkpoint

15:05:42in checkpoint

15:05:45or let's say trade

15:05:52or let's say I'll just write right trade

15:05:56in trades. Okay.

15:05:59uh once you have done that or you can

15:06:01directly write uh uh write like that

15:06:03let's say instead of writing two line I

15:06:06can directly run a for loop for

15:06:13for checkpoint in checkpointer

15:06:16I think this is also checkpoint right

15:06:20yeah checkpoint in checkpoint list okay

15:06:24then after that um

15:06:27uh what I'm going to do I'm going to

15:06:28just uh print my checkpoint

15:06:40both name is same. Okay. So what I can

15:06:42do I can maybe

15:06:45write like that security. Okay. That

15:06:47means checkpoint.

15:06:50Now if I

15:06:53reexecute

15:06:55now see guys uh here we are getting all

15:06:57of the trade right now it is available

15:06:58inside my uh inside my

15:07:02database as you can see and uh here we

15:07:05are getting lots of trades because if I

15:07:06open my chatbot we are getting uh six

15:07:09trades right now and why six six trades

15:07:11because every time if you execute the um

15:07:14execute the graph it will generate three

15:07:16three checkpoint why I told you because

15:07:19our uh How would actually workflow

15:07:21having three checkpoints? So in every

15:07:23conversation, every execution three

15:07:25checkpoint would be available. Okay,

15:07:27three checkpoint would be available. So

15:07:28this was the first trade and this was

15:07:30the second trade. We executed two times

15:07:31that six six times is available. Okay,

15:07:33so all of the six trades you are getting

15:07:35here. Okay, but uh here I uh whenever I

15:07:39will extract that so this would be a

15:07:41kinds of duplicates to us. I I will only

15:07:45track the unique trades here. Okay,

15:07:46let's say here I how many unique trades

15:07:48I'm having. uh default trade one and

15:07:50default trade only two units okay

15:07:52otherwise everything is repetitive one

15:07:53so I'll also try to handle this part as

15:07:55well so once we are getting all of these

15:07:58uh this uh this actually checkpoints now

15:08:01uh from the checkpoint only I only need

15:08:03this um

15:08:05config

15:08:08config

15:08:11now if I reexecute my terminal

15:08:16now I'm getting the config only okay now

15:08:18from the config I I need this trade ID

15:08:20only. First of all, I need to go to the

15:08:22configurable.

15:08:24So this is a uh this is actually

15:08:26dictionary right dictionary. So I will

15:08:28give the key

15:08:32configurable.

15:08:36Now again we are getting another

15:08:37dictionary and here we have the trade

15:08:39ID. So I only need to extract the trade

15:08:40ID.

15:08:48Now see I'm getting all of the trade but

15:08:51uh I'm getting repetitive trades. Okay,

15:08:53same uh same actually name again and

15:08:55again but I only need the unique one. So

15:08:57for this I think you know um set right?

15:09:00Set inside Python. So what what set does

15:09:03sets basically um will give you the

15:09:06unique uh unique actually name. So here

15:09:09I'll take a set. I'll just try to create

15:09:12empty sets and I'm going to name it as

15:09:15all trades.

15:09:17Okay. And whenever I'm getting my

15:09:20trades, I'll just try to add inside my

15:09:22trades.

15:09:25Sorry. Uh I'm going to add inside my

15:09:30um set.

15:09:33So there is a add function we can use

15:09:34for this. H

15:09:38then uh I'll just try to print my

15:09:42alls right now.

15:09:47Now if I execute

15:09:51now see I'm only getting trade one and

15:09:54my trades. Okay. Uh that means the

15:09:56unique one. Now I have to provide as a

15:09:59list. Okay. I have to uh give as a list

15:10:02here because here um uh the session

15:10:04state we created it it it takes a list

15:10:07right but here I'm getting a dictionary.

15:10:09As you can see here I'm getting a

15:10:10dictionary. I'm uh returning as a

15:10:12dictionary. So what I can do I can

15:10:13convert it to the list. So instead of uh

15:10:17printing um this I will just try do the

15:10:20type type conversion operation

15:10:24just try to convert to the list. Now if

15:10:27I execute

15:10:29now see it is a list right now. Okay.

15:10:32Now simply I'll just I'll just try to

15:10:34write inside a function. So I'm going to

15:10:37uh name this function as def get

15:10:42all traits.

15:10:44Okay. And all of the code I'm going to

15:10:46write inside that.

15:10:52Okay. Instead of printing, I'll just uh

15:10:54do the return operation.

15:11:00So everything is fine. Now this function

15:11:03basically will return you uh all the

15:11:05threads okay from the database itself.

15:11:08So now uh here uh in the app DB

15:11:13whenever you are importing this chatbot

15:11:14right uh so right now we have to import

15:11:17from the agentic chatbot DB back end.

15:11:19Okay instead of the simple uh aentic

15:11:23chatbot back end because we are using DB

15:11:25DB back end right now we have to import

15:11:27chatbot as well as the get all trades.

15:11:31Okay, this function we have to import.

15:11:33Now, simply you just need to call this

15:11:36function here. Whenever you are uh

15:11:39initializing this uh chat threads,

15:11:41instead of giving the simple uh list

15:11:43empty list, you will give this function

15:11:46name. Okay. So, what this function will

15:11:47do, it will get all of the trades and it

15:11:50will store in line inside my chat

15:11:51threads. Okay. So, this particular um

15:11:54code is uh sorry, this particular uh

15:11:56data is coming from my back end from my

15:11:59database. Okay, that's how. So if you

15:12:01restart your application as well, it

15:12:03will not uh effect on my app because

15:12:06every time this function is getting

15:12:08executed from my back end and it has the

15:12:10connection with my checkpointer and

15:12:12checkpointer is connected with my

15:12:14database, right? Chatbot db. So every

15:12:16time it will open the chatbot db and it

15:12:18will get how many trades you are having

15:12:20only this part will return here. Okay,

15:12:22this part will return here and after

15:12:24that we are just passing it here. That

15:12:25means if I'm refreshing my page, if I'm

15:12:28closing the application, it doesn't

15:12:29matter. Every time I'm extracting my

15:12:31trades, I'm getting my trades, I'm

15:12:32facing my trades from my database only.

15:12:34But previously, I was doing inside my

15:12:36memory because I was using simple list.

15:12:39And simple list only creates the

15:12:40instance inside the RAM. Okay. And if

15:12:43you refresh your RAM would be getting

15:12:45cleared. I hope you got the concept

15:12:47guys. Okay. Now let's try to execute and

15:12:49see whether it's working or not. So here

15:12:51I'll open up my terminal.

15:12:53Clear. Then I'll just try to run my app.

15:12:56So streaml

15:12:59run

15:13:00app

15:13:02db.py.

15:13:07Now see guys uh you you can already see

15:13:10uh I already created some trades right

15:13:13here. Uh manually I created some trades

15:13:15and these trades is also getting uh load

15:13:18here. You can see I did some

15:13:19conversation like Alex then my name is

15:13:21BP and this is the current trade right

15:13:24now. So what I can do maybe I can delete

15:13:25my database and do start a new

15:13:27conversation. I'll just try to delete

15:13:30it.

15:13:32Okay, it will not getting delete because

15:13:34it is running in the app right now. I

15:13:36can try

15:13:41delete

15:13:45some temporary file also came. I'll just

15:13:47try to delete. Okay, now I'll freshly

15:13:49execute my app.

15:13:54H. Now let's do the conversation.

15:13:57Hi, my name is By

15:14:05a

15:14:06teacher.

15:14:11Okay, great. Now I'll create a new chat.

15:14:15I'll tell, hi, my name is

15:14:19Alex.

15:14:21I am a learner.

15:14:30Okay, done. Now if I uh click my

15:14:32previous uh conversation, now you can

15:14:34see this is my previous conversation and

15:14:35this is my current conversation. Now the

15:14:37best part is that if I refresh my app,

15:14:39right? See, still this conversation

15:14:42remains same. Okay. Now if you also

15:14:44close your app, let's say I will close

15:14:45my app from my terminal. See it's

15:14:47closed. Okay. And I closed my

15:14:49application. Okay. Okay, I close my

15:14:50application. Now if I restart my

15:14:52application, see if I restart my

15:14:54application. Now, still it will be able

15:14:56to load my previous conversation. And

15:14:59anytime I can continue the conversation,

15:15:01let's say here, I'll just try to

15:15:03continue the conversation. Who am I?

15:15:10See, it is uh giving you you are Alex, a

15:15:13learner who is seeking knowledge and

15:15:14growth blah blah blah. Okay. Now I can

15:15:16also do the conversation here only. Who

15:15:21am I?

15:15:24See, you are BYP, you are a teacher, you

15:15:26are you enjoy helping students learn and

15:15:28grow in their knowledge and skills.

15:15:30Okay. So yes guys uh that's how actually

15:15:33we can add the permanent persistence

15:15:35memory uh right now inside our agentic

15:15:38chatbot and now this is like more

15:15:40powerful uh actually it will not erase

15:15:43your conversation. It will not erase

15:15:44your checkpoint if you restart your

15:15:46application like chat GP like if I open

15:15:48my chat GPT right anytime and I can

15:15:51anytime I can see my previous chat

15:15:53previous trades as well okay if I close

15:15:56the app also if I turn off my computer

15:15:57also if I disconnect my internet

15:15:59connection also still these are the

15:16:01things would be common these are the

15:16:03things would be available because

15:16:04they're using p permanent persistence

15:16:06memory okay they're using some kinds of

15:16:08database whether they're using postgrace

15:16:11whether they're using MongoDB doesn't

15:16:13matter But they're using some kinds of

15:16:14database because of that this thing is

15:16:16permanent like our application. Okay, I

15:16:19hope you are getting it guys. Okay. So

15:16:21yes guys, that's how we can uh slowly

15:16:23slowly make this particular chatbot more

15:16:26advanced and uh in my next video uh I'm

15:16:30going to show you some more uh advanced

Monitor Your Agentic Chatbot with LangSmith & LangGraph

15:16:32features guys. Uh we uh will be adding

15:16:34inside this aentic chatbot and we'll try

15:16:36to make it more powerful. Okay. And for

15:16:39this guys please try to complete all of

15:16:41this video uh if you want to uh uh

15:16:43implement this kinds of project because

15:16:45going forward I have lots of plan I will

15:16:47be bringing lots of project here. Okay.

15:16:50So for this definitely you have to

15:16:51understand all of this concept. Okay. So

15:16:53yes guys this is all about from this

15:16:55video. I hope you liked it and you have

15:16:57understood the entire implementation. If

15:16:59you found my content useful please try

15:17:01to subscribe to my channel, hit the like

15:17:03and please share it with your friends

15:17:04and family. And all of the code I will

15:17:06share in my description from there you

15:17:07can download. So guys in this video

15:17:09we'll be learning one very important and

15:17:12interesting concept uh called

15:17:14observability.

15:17:15So I think you have already heard of

15:17:17these kinds of word like observability

15:17:20monitoring tracing okay of agentic

15:17:22application or any kinds of GNI powered

15:17:25application. See we use this

15:17:27observability monitoring tracing not

15:17:29only in agentic application uh but also

15:17:32we use this kinds of concept in any

15:17:35kinds of LM powered application. So

15:17:37whenever you are implementing any kinds

15:17:39of LLM powered application with the help

15:17:40of lang chain or lang graph or any kinds

15:17:44of framework this observability

15:17:46monitoring tracing is super important

15:17:48there okay without that you can't

15:17:51actually debug monitor and evaluate your

15:17:53application this is not possible so for

15:17:56this observability guys we can use one

15:18:00uh very interesting and powerful tool

15:18:02called lang okay so what is this

15:18:05langismith langismith is a uh

15:18:07observability monitoring uh tool uh it

15:18:10is created by langin and uh with the

15:18:12help of that actually we can monitor any

15:18:14kinds of lm powered application whether

15:18:16it's agenti whether it's any kinds of

15:18:18rack system okay any kinds of

15:18:20application we can monitor here real

15:18:23time we can monitor here okay so first

15:18:25of all let me give you the idea what is

15:18:27this langismith is and why it is

15:18:29required then um we'll try to see the

15:18:31practical demo how we can observe how we

15:18:34can monitor our entire agentic chatbot

15:18:36with the help of this languid. Okay,

15:18:38each and every integration [snorts] I'm

15:18:40going to show you guys and trust me guys

15:18:42uh if you learn this concept I think uh

15:18:45uh it would be very helpful for you

15:18:47whenever you are creating production

15:18:48grade uh uh agent application because in

15:18:52productions uh whenever you are creating

15:18:54this kinds of system there would be lots

15:18:55of bugs there would be lots of issues

15:18:58and uh you can trace everything in a

15:19:01single platform with the help of this

15:19:02lang this is super important guys so as

15:19:05you can see guys uh langismith is a

15:19:06debugging monitoring and uh evaluation

15:19:09platform for application uh builts with

15:19:12LLM and AI agents. It is made by

15:19:15Langchen team but it can also work with

15:19:18application that do not use langen.

15:19:20Okay. So I already told you this

15:19:22langismith is uh let's say it is

15:19:24developed by Langchen but if you are not

15:19:26using any uh lang let's say framework

15:19:28inside your application development

15:19:30still you can use this lang with other

15:19:32framework integration as well. Okay it

15:19:34has all kinds of integration. So let's

15:19:36try to understand why this is useful. So

15:19:39whenever uh you are creating any kinds

15:19:41of chatbot or any kinds of let's say

15:19:43agentic powered application or any kinds

15:19:46of LM powered application there you

15:19:48perform some kinds of step some kinds of

15:19:50operation right let's say user can sends

15:19:53the questions then in between you can um

15:19:56construct the prompt then you can

15:19:58perform the LM call if you're

15:19:59implementing any kinds of agents that

15:20:01will use any kinds of tool or database

15:20:03okay then it can also use memory and

15:20:05checkpointer for the retriever then it

15:20:07can give you the final responses. So

15:20:09that means in between there are some

15:20:11hidden operations are happening but this

15:20:13is not visible to you. Okay. If you're

15:20:15writing only the code if you're not

15:20:18monitoring the entire uh if you're not

15:20:20let's say tracing the entire application

15:20:22this part is invisible to you.

15:20:25Okay. So that's why you can see lang is

15:20:28a debugging monitoring and evaluation

15:20:29platform for application building built

15:20:32with large language model or AI agents.

15:20:34Okay. because inside all of this

15:20:36application this hidden operation

15:20:38happens. Okay, this hidden operation

15:20:40happens. So if you're using Langismith

15:20:42so what will happen? Um Langismith uh

15:20:46records this complete execution as a

15:20:48trace. That means whatever execution you

15:20:50are doing here. Okay, Langismith records

15:20:53this complete execution as a trace.

15:20:55Okay, it will u u record all of the

15:20:57execution as a trace allowing you to

15:20:59inspect every step including inputs,

15:21:02outputs, error, execution time, token

15:21:04uses, tool calls and model behavior.

15:21:06Okay, this is super important guys. Uh I

15:21:08think by the definition itself you can

15:21:10understand whatever hidden operation you

15:21:12are executing okay whatever things are

15:21:14happening in between everything l speed

15:21:17can record as a trace okay in that

15:21:19platform itself okay so that anytime you

15:21:22can see the input output errors

15:21:24execution time token uses tool call

15:21:26model behavior each and everything

15:21:28should be visible to you in a single

15:21:29platform okay now as you can see for

15:21:32your langraph agentic chatbot langismith

15:21:35can help you that means the application

15:21:36we are developing right now. So here uh

15:21:39this langismith

15:21:41can help us for uh finding why an agent

15:21:44selected the wrong tool. Let's say uh

15:21:47you are running your agents and it has

15:21:49selected a wrong tool. It is giving you

15:21:51some kinds of other responses but you

15:21:53don't know why okay why it is uh giving

15:21:55you this kinds of output why it is

15:21:57selecting the wrong tool. If you want to

15:21:59see the step-by-step execution like

15:22:01after user query prompt construction lm

15:22:03call which tool it has selected okay

15:22:05based on the prompt or lm call. Okay, if

15:22:07you want to understand these things, you

15:22:09have to first of all monitor, trace your

15:22:11entire application. Okay, monitoring is

15:22:13important. Any kinds of application

15:22:14whether creating MLDDL, CB, whatever

15:22:17project you are creating, monitoring,

15:22:19monitoring is super important. If you

15:22:20cannot monitor your application, that

15:22:23means in production you will be finding

15:22:24difficulties for sure. Okay, that's why

15:22:26application monitoring is super

15:22:28important and for this Langmith is a

15:22:30very powerful tools we'll be using.

15:22:32Okay. So that's why find uh why an agent

15:22:36selected the wrong tool. Uh we can

15:22:37easily understand with the help of

15:22:39Langismith. Then inspect the exact

15:22:41prompt sent to the uh model. That means

15:22:44uh you can see like whether this palm

15:22:46con prompt construction is happening in

15:22:48a good way or not. That prompt you are

15:22:50constructing um whether it is right or

15:22:52not. It is going to the LM or not. Okay.

15:22:54Each and everything you can inspect

15:22:56here. Then debug failed nodes in a

15:22:58langraph workflow. That means if any of

15:23:00the nodes uh let's say failed during the

15:23:03execution you can easily monitor inside

15:23:05the langismith dashboard. Then measures

15:23:08responses latency and token cost. So

15:23:10that means if u some of the model is

15:23:13taking much time you can uh see like how

15:23:16much time it is taking why it is taking

15:23:18the time and how much token token

15:23:20actually it is uh spending okay to give

15:23:23you the response each and everything you

15:23:24can monitor. Then review conversations

15:23:26and multi-trren trades. That means you

15:23:29can uh review the construction uh sorry

15:23:31conversation uh review conversation and

15:23:33multi uh trend trades. That means you

15:23:35can see the entire conversation even you

15:23:38can see the trades conversation. Trade

15:23:40conversation means I think you know we

15:23:41have integrated the trades inside our

15:23:43aentic chatbot. Now user can create

15:23:45different different trades. User can

15:23:47create different different charts right.

15:23:49So you can see the trades as well. Not

15:23:51only the single conversation, you can

15:23:53also see the trades wise. Okay, this is

15:23:55also possible. I will also show you this

15:23:56part. Then compare different prompts or

15:23:59model versions. You can also compare

15:24:01different prompts or model versions.

15:24:03Then you can evaluate chatbot uh quality

15:24:06before and after the deployment. Okay,

15:24:08that means all of these uh things you

15:24:11will be getting u inside this lang and

15:24:14it will help you uh for this kinds of

15:24:17work. Okay, if you are using this uh

15:24:18this inside your application

15:24:20development. So I think um apart from

15:24:22this there is nothing uh you can monitor

15:24:24inside your application. If you can

15:24:26monitor these are the thing I think u

15:24:28your uh application should be production

15:24:30ready and you won't be having any kinds

15:24:32of problem okay going forward. So now

15:24:34we'll try to see guys this language

15:24:36speed in practical that means the

15:24:38application we have created uh this code

15:24:40is already available in my description

15:24:41from there you can get uh get the code

15:24:43guys I think you remember we created a

15:24:45uh agentic uh chatbot okay and uh in my

15:24:49last video I showed you how we can

15:24:50integrate database features okay so that

15:24:52it can uh it can have the permanent

15:24:54persistence memory okay so first of all

15:24:56let me show you the application guys we

15:24:58have developed so guys uh this is our

15:25:00agentic chatbot we have developed so far

15:25:02and uh we can perform any kinds of chat

15:25:05operation. Let's say if I give a prompt

15:25:07uh give me a

15:25:10road map to learn okay ML.

15:25:19So see this is giving you the detailed

15:25:21road map and uh you can see the previous

15:25:24trades as well. You can also continue

15:25:26the conversation with the previous

15:25:27trades you had here and this is your

15:25:29current trades. Okay. And if you refresh

15:25:30your application still this uh uh

15:25:33previous conversation will remain same

15:25:35because we have added the permanent

15:25:37memory here with the help of database.

15:25:38Okay. So in this particular video I

15:25:40already explained this concept. If you

15:25:42haven't checked that guys please try to

15:25:43go through this recording. So see guys

15:25:45uh here we have performed a

15:25:47conversation. It's completely fine. But

15:25:49uh this application doesn't have any

15:25:51kinds of observability or monitoring uh

15:25:54connection. Okay. So I can't monitor

15:25:56this application like in the back end.

15:25:58What is happening? Let's say uh if I

15:26:00deploy this application in production

15:26:02server so I don't have any kinds of

15:26:05platform there I can continuously

15:26:06monitor my application what is happening

15:26:09how much token it is uh taking okay or

15:26:11let's say any of the nodes is giving you

15:26:13any kinds of errors so I can't see these

15:26:15kinds of let's say uh issues right so

15:26:18for this we can utilize this langismith

15:26:21platform so you have to visit uh

15:26:23smith.langchen.com langchen.com. So if

15:26:25you visit this website guys, this is the

15:26:27langid platform. So first of all here

15:26:29what you have to do, you have to create

15:26:31an account. Okay. So here you just need

15:26:33to create an account guys. You can use

15:26:35your Google, GitHub, discord, anything

15:26:36you can uh use and you can create an

15:26:38account. So I already have an account

15:26:40guys. I will just try to login.

15:26:46So once you log guys, you will be able

15:26:48to see this kinds of dashboard. So this

15:26:49is your language dashboard. And

15:26:51previously I uh already created some of

15:26:54the project here. I already uh traced

15:26:56some of my project that's why it's

15:26:57coming here. But if you are using for

15:27:00the first time, you won't be able to see

15:27:01this kinds of uh like project name here

15:27:03or tracing name here. Okay. So first of

15:27:06all guys, if you want to use this uh

15:27:07langismith inside your uh application,

15:27:10you just need to collect a API key.

15:27:12Okay. And this is super easy to use. You

15:27:15don't need to write uh like uh any kinds

15:27:17of code if you want to use this lang

15:27:19guys. Only you just need to add some of

15:27:22the environment variables and

15:27:24automatically this langismith will start

15:27:26tracing your application. Okay, I'll

15:27:28show you this part. So if you want to

15:27:30get the u um API key, so what you have

15:27:33to do, you just need to uh go to the API

15:27:35section. So I think API is available in

15:27:38the settings and uh here is the API key

15:27:40guys. Okay. Now previously I already

15:27:42created some API key. What I will do? I

15:27:43just try to remove some of the API key

15:27:45so that I can create a new one.

15:27:49H So I'll create a new API key. So you

15:27:52can give the name. So let's say I'll

15:27:54give the name of u

15:27:57uh agentic

15:28:01chatbot.

15:28:05So everything just keep it as it as it

15:28:07is. Okay. Don't need to change anything.

15:28:09Now just create the API key.

15:28:11So once you have created the API key

15:28:13just try to copy and you have to add

15:28:16this API key in the environment

15:28:18variable. Okay. So let's say this is our

15:28:20app. Uh so this application we have

15:28:22created guys. This is the code I think

15:28:23you remember in my previous uh video

15:28:26previous part. So now you just need to

15:28:28open this env file.

15:28:30Um after that here you have to add uh

15:28:34some of the environment variable. Let me

15:28:36show you. So these things you have to

15:28:39add here. Yeah. So see these things will

15:28:43common for all the project you will be

15:28:44creating going forward. Only you just

15:28:46need to change the project name. So see

15:28:48first of all you have to provide languid

15:28:50tracing

15:28:52uh this parameter is equal to true. Okay

15:28:53that means you are uh allowing your as

15:28:56uh allowing your langis to trace your

15:28:58entire application. Whenever you are

15:29:00executing your application lang will

15:29:02automatically start tracing your

15:29:04application. It will automatically start

15:29:06monitoring your application. That's why

15:29:07this parameter you have to give as true.

15:29:09Then you are telling what should be the

15:29:11endpoint that means after tracing it the

15:29:14data it will get okay the let's say

15:29:17information it will get where it will

15:29:19save those information okay it needs an

15:29:21endpoint so endpoint is langismith

15:29:24platform I'm giving you have to save

15:29:26everything in the langismith platform

15:29:27that means inside this particular

15:29:29platform this is the dashboard right so

15:29:31this is what actually we're doing then

15:29:32you have to pass the API key now to

15:29:35authenticate with your dashboard you

15:29:36need a API key so what I will do I'll

15:29:38just copy this API

15:29:39And here you have to provide the API key

15:29:41and make sure you don't share this API

15:29:43key with anyone otherwise they will be

15:29:44able to uh use your platform. Okay. Then

15:29:47you have to provide the langismith

15:29:49project name. Okay. Because every time

15:29:52whenever you will execute for the first

15:29:54time it will create a project. Right?

15:29:56Inside the project it will start tracing

15:29:59all of the execution. So project is

15:30:01important. So here I'm giving agentic

15:30:02chatbot project. Okay. If you're

15:30:04creating any other project you can

15:30:05change the name as per your requirement.

15:30:07Once it is done, you just need to save

15:30:09this file and no need to change

15:30:11anywhere. Okay, no need to change

15:30:12anywhere. I can uh re-execute my app

15:30:15again. So I'll stop the execution. Clear

15:30:18and let's re-execute my app. Streamlitly

15:30:20run my app.py. Okay. So once you have

15:30:23done now what I will do uh here I

15:30:25already saved this uh API key. H so it's

15:30:28done. Now I'll go to the uh homepage.

15:30:32Yeah. Now let's execute my app. See my

15:30:35application is running right now.

15:30:37Now here again I will give the prompt.

15:30:38Let's say I'll give hi my name

15:30:43is

15:30:46By

15:30:52plan to learn AI.

15:30:56I'll send it

15:30:59now. See it is giving you some kinds of

15:31:01response. Okay. Now once I go to my

15:31:05platform. Okay. Once I go to my platform

15:31:07and if I refresh here.

15:31:13So see this agentic chatbot project is

15:31:16created few seconds ago. See

15:31:17automatically it has created. I didn't

15:31:19uh change anything inside my code. Okay.

15:31:21Now if I go inside that now inside the

15:31:24project guys you will be able to see

15:31:25your trace. Okay. So this is our first

15:31:27trace. That means we have executed uh

15:31:30only one time. We have gi a single

15:31:32prompt. That's why that's why one trace

15:31:34came and by default this trace name will

15:31:36be taken as lang graph because we are

15:31:38using lang graph and now if I click on

15:31:40the uh this trace our first trace so

15:31:42whatever message you have given as an

15:31:44input you will be able to see and

15:31:46whatever uh output you got from your AI

15:31:49even you will be also able to see okay

15:31:51and this is also coming as a chatbot

15:31:52interface okay this is like very

15:31:54interesting then there is a option

15:31:56called details so you have to click on

15:31:58details okay if you click on details you

15:32:00will be able to see all of the details

15:32:01that means you have executed your

15:32:03langraph and it has a chat node. I think

15:32:06you remember uh we are using a chat node

15:32:07if you can see uh our entire application

15:32:11workflow. So this is the chat node

15:32:12inside chat node we are using u lm right

15:32:16we are using a large language model uh

15:32:17openi model and we are using gpt 3.5

15:32:20turbo model because I used a default

15:32:22model there okay and by default GP3.5

15:32:26turbo would be available now everything

15:32:28you can see which model which node you

15:32:30are executing okay each and everything

15:32:32is visible now you can see the input and

15:32:34output you got here you can even see the

15:32:37attribute okay all of the attribute

15:32:39metadata version everything is visible

15:32:41here. And if you hover on each and every

15:32:44let's say step here, you you will be

15:32:46able to see the um uh let's say

15:32:49estimated token cost. You can see token

15:32:51cost and uh how many how much token

15:32:54actually it used. Okay, how much token

15:32:56it used for input, output, total. Okay,

15:32:59each and everything you would be able to

15:33:00see that. Okay, that's how you can see

15:33:02the each and every execution of your

15:33:05application. If you're using multiple LM

15:33:08calls, you'll be able to see the

15:33:09multiple LM. You can see the prompt.

15:33:10Okay. Each and everything should be

15:33:12available here. Okay. Now let's say if I

15:33:14do for the second time what I will do

15:33:17let's say I will give another message.

15:33:20Um let's say how much

15:33:25time it will take.

15:33:32Now I got a response. Now if I again go

15:33:34to my um dashboard. Now see another

15:33:37trace has created. Okay. because this is

15:33:39my second run. Now if I go to this trace

15:33:42and you'll be able to again see the uh

15:33:44conversation okay so how much time it

15:33:47will take based on that you got the

15:33:49entire output then you'll be able to

15:33:51also see the uh token okay like input

15:33:54token output token okay total token each

15:33:56and everything would be available here

15:33:58now even you can also switch to your

15:34:00previous uh trans as well so if I go to

15:34:02my previous trans this is the first

15:34:03trans this is the second trans okay

15:34:06everything you can see even you can see

15:34:07the name so this is tr one and this is

15:34:09tr too. Okay. So that's how everything

15:34:12would be available and even if you zoom

15:34:14out here so you'll be able to see some

15:34:16other information right side like start

15:34:18time latency like how much time it took

15:34:20to execute then whether you are using

15:34:22any data set or not then tokens cost

15:34:25okay first tokens then metadata langmith

15:34:28endpoint okay and everything you will be

15:34:29able to see. So yes that's how you can

15:34:32utilize this uh lang platform uh only

15:34:35you just need to add those uh three to

15:34:37four things in the environment variable

15:34:39and tracing would be uh automatically uh

15:34:43happening okay inside this particular

15:34:44dashboard but one issue I think you have

15:34:46observed here which is that let's say

15:34:49here let's say if I create a new trades

15:34:51okay let's say I create a new trades and

15:34:53if I do the conversation let's say I

15:34:55will give hi I am bi let's say this is

15:35:00completely new trades. Okay. But if I go

15:35:03to my um dashboard that means language

15:35:06dashboard. So as you can see in the same

15:35:10um I mean trace only it has created my

15:35:13uh my current execution that means the

15:35:15current trace the uh execution we have

15:35:17done right now. So see uh here I given I

15:35:20uh my name is BPI and hello I can assist

15:35:22you today. Okay. So that's how actually

15:35:24it is uh uh it is not separating my

15:35:28trades instead of that it is saving

15:35:30everything inside a single trace only.

15:35:32So here if you want to separate your

15:35:34trades guys uh it is also possible

15:35:36because Langismith

15:35:38by default has this uh trading uh

15:35:40features here. So if you want to

15:35:42separate out uh each and every trades

15:35:44okay the trades you are maintaining

15:35:46here. So it is possible for this inside

15:35:48the code you have to only modifi uh

15:35:50modify one particular line. Let me show

15:35:52you. So this code only you just need to

15:35:55modify. See here uh I was uh writing the

15:35:58configuration. In the configuration I

15:36:00was only giving the trade ID. Okay. Uh

15:36:02and we are passing this configuration

15:36:04whenever we are executing the uh chatbot

15:36:06whenever we're invoking the chatbot.

15:36:08Okay. Now instead of that you have to

15:36:09write this configuration. Okay. Some

15:36:11other information you need to also pass

15:36:13this metadata and the runtime. Okay. So

15:36:15run name see every time this run name is

15:36:17coming as a lang graph by by default

15:36:19name but you can change this run name if

15:36:20you want. You can give any kinds of run

15:36:22name. Let's say I give I'll give chat

15:36:24trace. Okay, you can also give any other

15:36:25name. And if you pass this configuration

15:36:28guys, right now this uh trading would be

15:36:32uh trading would be applied. That means

15:36:34all of the trades individual trades

15:36:35would be saved in the trades. Okay, let

15:36:37me show you. So I'll remove this

15:36:39configuration right now. This is not

15:36:40required. I'll use my new one. Okay, new

15:36:43configuration.

15:36:45Yeah, so let me show you the fresh

15:36:46execution. So for this I'll remove my uh

15:36:50I'll remove my let's say project. So

15:36:53here just go to the tracing and select

15:36:55your project and just try to delete the

15:36:57project.

15:37:00Okay, done. Now I will re-execute my

15:37:03code.

15:37:11So let's say here uh I'll give a

15:37:13message. Hi,

15:37:15my

15:37:17name is Buppy.

15:37:22Okay, done. So this is uh this is the

15:37:25trade guys. Uh I just uh start the

15:37:27conversation. Now if I come here, see my

15:37:30project has created. If I go inside

15:37:32that. So first trace has created the uh

15:37:34the name of the trace is chat trace

15:37:36because we changed the name and this is

15:37:38the conversation we have done. Okay. Now

15:37:40let's say I will give another message.

15:37:42Uh I will create a new trades here and

15:37:44I'll perform another message. Let's say

15:37:47I am Alex.

15:37:54Now if I come here

15:37:57now if I go to the trades now guys you

15:38:00can see trades has created. Okay. Now

15:38:02this is the trades. This was my first

15:38:04trace. Uh there I performed. Hello my

15:38:07name is BPY. Okay. How I can assist you

15:38:09today. Now let's say if I give another

15:38:11message um

15:38:13I need

15:38:16um I need a plan

15:38:20to learn Python.

15:38:28Now if I go to my trades. So see inside

15:38:31the same trace uh inside the same trade

15:38:33there is uh two trans right now. Um now

15:38:36if I go to this uh trades as you can see

15:38:40the first I given hi my name is BP uh

15:38:42how and it it has given you hello BP how

15:38:45I can assist you today. Now in the

15:38:47second trace

15:38:49uh you can see I given I need a plan to

15:38:51learn Python and uh it has given you the

15:38:54plan. Okay that means in a single trade

15:38:56now it is storing multiple trans that

15:38:58means multiple conversation. Previously

15:39:00I also did for Alex. See Alex is also

15:39:02available here. Uh yeah, you can see the

15:39:05Alex. Uh but it takes some time guys. I

15:39:07think it takes uh 10 to 20 seconds to

15:39:10update in the trades. Okay, that's why

15:39:12initially whenever I showed you uh this

15:39:14information was not updated. Now see

15:39:16here also whenever I did let's say Alex,

15:39:19right? Uh this is the Alex Alex

15:39:22conversation.

15:39:23Uh this is Alex conversation. I'm Alex.

15:39:25I need a plan to learn Python. As you

15:39:28can see I am Alex and here I given you I

15:39:31need a plan to learn Python. Okay. So

15:39:33that's how guys every uh trades you will

15:39:36be creating all of the trades would be

15:39:37available inside the trades or whatever

15:39:39conversation you'll be doing it would be

15:39:41saving as a run. Now let me show you

15:39:43another let's execution let's say in the

15:39:45Alex only I'll tell how much

15:39:51time it will take.

15:39:55Now this is my third run. Okay.

15:39:58Now if I come here.

15:40:01So you have to wait for some time then

15:40:04this TR would be updated here.

15:40:08Now see it got updated run three. Now if

15:40:11I click here now this is the turn three

15:40:13guys and here I asked how much time it

15:40:16will take and this is the answer I got.

15:40:17Okay. So that's how guys you can

15:40:19separate out the trades uh by adding

15:40:21this line of code only. You just need to

15:40:23update your configuration and everything

How to Integrate Tools in Agentic Chatbot with LangGraph

15:40:25will remain same. Okay. So that's how

15:40:26guys with help of Langismith we can

15:40:28continuously monitor our application. we

15:40:30can continuously trace our application.

15:40:32Lots of thing we can perform with the

15:40:33help of this languid. Going forward also

15:40:36I'll be using this uh tool okay in my

15:40:38project development and I will also show

15:40:40you some other advantage we can utilize

15:40:43from this lang language speed itself.

15:40:45Okay. So all the code I'm going to uh

15:40:47upload in my GitHub and give the link in

15:40:50the description from there you can get

15:40:52and please try to practice in your

15:40:53system and do let me know if you have

15:40:55any question. So yes guys, this is all

15:40:57about it and if you found my content

15:40:59useful, please try to subscribe to my

15:41:00channel and hit the like. In this video,

15:41:02I'm going to uh explain one very

15:41:05important concept, one very important

15:41:07features inside our agentic chatbot

15:41:10which is tools. If you are implementing

15:41:12any kinds of agentic system, this tools

15:41:14is very much important. Without tools,

15:41:17an AI agent cannot perform any kinds of

15:41:19action. With the help of this tools

15:41:21integration, we can make our AI agents

15:41:24more smarter and intelligence and

15:41:26powerful.

15:41:27So far the application we have created,

15:41:29it doesn't have any kinds of tool. It

15:41:32can only use the large language model

15:41:33and give you some kinds of response. So

15:41:36if I show you my application guys, so

15:41:38this is the application guys. So far we

15:41:40have developed. Uh this is our agentic

15:41:42chatbot with lang graph we have

15:41:44developed so far and we have added lots

15:41:46of feature in this particular uh

15:41:48application. We saw how we can create

15:41:51the uh basic workflow of our agentic

15:41:53chatbot. We saw how we can add the

15:41:55streaming features. We saw how to add

15:41:57the trading features. Okay. Uh we saw

15:42:00how to add the persistence memory. Um

15:42:02even how to integrate the database with

15:42:04that. Even in my last video, I showed

15:42:06you how we can add the observability

15:42:09tool to monitor the entire application.

15:42:11And we created a dashboard. Uh this is

15:42:13the lang dashboard guys. And here

15:42:16continuously we're tracing our um like

15:42:18conversation. So this is the application

15:42:21guys. And the problem with this

15:42:22application is let's say if you are

15:42:24asking any kinds of uh question uh which

15:42:27is latest uh which is not available in

15:42:30the large language model that time this

15:42:32particular chatbot will not uh able to

15:42:34give you the response. So let's say here

15:42:36we are telling hello uh tell me

15:42:41about

15:42:43Python.

15:42:45So if I give this prompt it will be able

15:42:48to give you the response.

15:42:51So see guys it is uh able to give you

15:42:53the response and why it is able to give

15:42:55you the response about the Python

15:42:57because uh this Python information is

15:42:59already available in the LLM knowledge

15:43:01base. Okay. So the model we are using uh

15:43:04every model has a knowledge cutoff date

15:43:06and the model we are using this model

15:43:08got trained till 2022

15:43:11uh I think till December it uh this

15:43:13model got trained and that time actually

15:43:15python information was available in the

15:43:17internet that's why it is able to

15:43:19generate the response but let's say if

15:43:21you are asking anything which is latest

15:43:22information this information is not

15:43:24available in the knowledge base that

15:43:26time your chatbot will fail now let's

15:43:28ask about a latest uh information uh uh

15:43:32into my chatbot. So here I will tell u

15:43:36give me

15:43:39all the latest

15:43:41news

15:43:43for [snorts] today's

15:43:49now see it is telling I understand you

15:43:51are looking for the very latest news.

15:43:53However, uh as an AI, I don't have

15:43:56realtime access to the live news feed

15:43:59and my knowledge cutoff is a specific

15:44:01point in time typically a few month ago.

15:44:04Okay, this means I cannot provide with

15:44:06you today's uh minuteby minutes uh news

15:44:09headlines. Okay, to uh get most current

15:44:12news, I highly recommend checking reput

15:44:14uh reputable news sources directly.

15:44:17Okay, and blah blah blah. That means

15:44:19this chatbot is directly telling you

15:44:22okay I don't have the access to the

15:44:24latest data okay because this this is

15:44:27using a large language model and this

15:44:28large language model has a knowledge cut

15:44:30off date okay I think uh till uh 2022

15:44:35or 2024 I don't know but uh till the

15:44:38date actually they have trained this

15:44:39model and uh um actually in that period

15:44:43of time whatever news were available in

15:44:45the internet uh this has the information

15:44:47okay but if you are asking anything

15:44:48which is latest this model will not able

15:44:50to give you the response. Okay. So this

15:44:52is the problem right now even uh if if

15:44:55you uh want to perform like other things

15:44:58as well. Let's say if you want to let's

15:45:00say uh see the stock market analysis

15:45:03report. Okay the latest stock market

15:45:04analysis report. This model won't be

15:45:06able to give you the response. So let me

15:45:08give you another demo. So tell me

15:45:11the latest stock

15:45:15of Apple.

15:45:23So as you can see as an AI I do have

15:45:25access uh to real time live stock market

15:45:27data. Stock uh prices uh fluctu

15:45:32fluctuate uh consistently uh throughout

15:45:34the trading day. Okay. and my knowledge

15:45:37cutoff means any specific price I could

15:45:40I could uh give you would be outdated

15:45:42almost im uh immediately. Okay, that

15:45:44means it is not able to give you the

15:45:46realtime information about this stock.

15:45:48And if you're asking anything, let's say

15:45:49you are asking about the current

15:45:51weather. Okay, let's say I'm asking

15:45:52about tell me the

15:45:55tell me the current

15:45:59weather

15:46:03in let's say New York.

15:46:17So see it is telling you again I don't

15:46:19have realtime access to the live uh

15:46:21weather data. Okay. So this is the

15:46:23problem with our uh agentic chatbot we

15:46:26have created so far because it doesn't

15:46:27have any kinds of tool. Okay. So tool

15:46:30means uh it is kinds of function it is

15:46:33kinds of API okay it is kinds of let's

15:46:36say uh different different tools that my

15:46:39agent can use to get the latest

15:46:42information or perform any kinds of

15:46:43action. Okay. So let's say if I go to

15:46:45the chat GPT and if I ask the same

15:46:47question, Chad GPT will be able to give

15:46:49me the response. Okay. So let's say I

15:46:51will copy the same question. Um I'll

15:46:54copy this question and if I ask in the

15:46:56chart GPT see chart GPT will be using

15:46:59some kinds of tool in action. See see

15:47:02just try to notice here now see it is

15:47:04searching over the internet. Okay. You

15:47:06see it is searching over the internet

15:47:08and it is finding different different

15:47:10latest news and once it has collected

15:47:12all the latest news then it will refine

15:47:14that particular news and it will give me

15:47:16all of the see news for today's okay and

15:47:21the reference uh reference URL as well

15:47:23like where it got uh it referred that

15:47:25particular headline where uh it uh

15:47:28referred that news okay each and

15:47:29everything it is giving me now let's say

15:47:31if I asking

15:47:33uh this question as well tell me the

15:47:35latest stock of Apple again it will be

15:47:37using some kinds of tool

15:47:43see it is using some kinds of tool and

15:47:46after that it will give you the response

15:47:48see it is using this stock market

15:47:51analysis tool and it is giving you the

15:47:53real time Apple um stock stock stock

15:47:56data okay then you can also ask um about

15:48:00the weather information

15:48:02again it will be able to give you the

15:48:04response because it has the uh current

15:48:06weather tools as well in the back end

15:48:08with the help of that particular tool.

15:48:10It is real time searching the uh current

15:48:12weather information in New York and it

15:48:14will give you the uh weather see. Okay.

15:48:18So this is called actually tool in

15:48:19action. Okay. So whenever you are

15:48:21creating the agentic system it should

15:48:24have lots of tool. Okay. And wherever it

15:48:28needs any kinds of tool it will

15:48:29automatically decide and it will select

15:48:30that particular tool. Let's say here I

15:48:32was asking about the news right that

15:48:35time to get the latest news what what I

15:48:37have to do I have to perform the

15:48:38internet search operation I have to

15:48:39perform the Google search operation so

15:48:41here it is using some kinds of search

15:48:43tool okay with the help of the search

15:48:44tool it is giving you all kinds of

15:48:46latest information latest news then I

15:48:48asked about the latest stock of Apple

15:48:51okay now it is using the stock market uh

15:48:54actually tool with the help of this tool

15:48:57actually it is getting the real time uh

15:48:59real time actually um the uh real time

15:49:03actually stock of Apple and it is giving

15:49:05you the response. So it is using some

15:49:07kinds of stock stock price or stock

15:49:09related tools in the back end. Now again

15:49:12I asked about the weather. So here it is

15:49:14using a weather tool. Okay, with the

15:49:16help of weather tool it is hitting some

15:49:18kinds of uh API of the weather and it is

15:49:21getting real time this weather

15:49:23information. Okay, the given uh location

15:49:26we are giving. Okay, so that's how

15:49:28things are working. So that's how chart

15:49:29GPT uh has lots of tool connection.

15:49:33Okay, not only three to four tools, it

15:49:34has lots of tool connection. So you can

15:49:36ask any kinds of question whether it's a

15:49:38latest news, whether it's any kinds of

15:49:40outdated news, whether you want to

15:49:42perform any kinds of task. Okay,

15:49:44everything it can perform because it has

15:49:46the tool and without this tool it can

15:49:48perform the action. Okay, I hope you get

15:49:50it. So these kinds of things we will be

15:49:52also integrating inside our agentic

15:49:54chatbot. So whenever we are asking this

15:49:56kinds of question, my agentic chatbot

15:49:58will be also able to give you the

15:50:00response. It will be also able to use

15:50:02this kinds of tool and perform the

15:50:04action. Okay. So yeah, in this

15:50:06particular video, we'll be learning this

15:50:07concept guys. We'll try to see how we

15:50:09can integrate the tools inside our

15:50:11agentic chatbot. And trust me, this is

15:50:13very important concept. If you are

15:50:15implementing any kinds of agentic uh

15:50:17powered application, you have to use the

15:50:19tool. Okay, there are lots of tools are

15:50:21available over the internet, over the

15:50:23market. Uh as per your requirement, you

15:50:26can select the tools and you can

15:50:27integrate inside your uh chatbot or

15:50:29whatever application you are developing

15:50:31and you can even create your custom

15:50:33tools. It is also possible. I'll show

15:50:35you both of them. Okay. So guys before I

15:50:37discuss about the tools concept the

15:50:39tools uh integration uh inside our

15:50:41agentic chatbot first of all I want to

15:50:43show you the demo like after adding this

15:50:46tools how my aentic chatbot will work.

15:50:49So I already integrated the tools inside

15:50:50my aentic chatbot this is the updated

15:50:52version. First of all let me show you

15:50:54the demo. So see this is the uh updated

15:50:56application. Now if I ask uh the these

15:50:59kinds of question let's say I will give

15:51:00u give me the

15:51:05latest

15:51:06news

15:51:08in AI. Okay. Now if I send this prompt

15:51:11you will be able to see uh it it will

15:51:13use some kinds of tool. Okay.

15:51:16So see it is using tably search tool. So

15:51:18with help of tably search tool it is

15:51:20searching over the internet uh about the

15:51:23latest news in AI and this will give you

15:51:25the response. See this is giving you the

15:51:27response. See so all of the latest news

15:51:30it has given me okay from different

15:51:32different uh paper different different

15:51:34publication it has given me all the

15:51:36latest news in AI. Even you can see the

15:51:39um like tools uh tools action as you can

15:51:42see internally it is using some kinds of

15:51:44uh URL some kinds of let's say uh

15:51:48resources and it is giving you this

15:51:49kinds of information even in charge also

15:51:52you'll be able to see this uh uh uh this

15:51:54back end execution okay this is also

15:51:56possible so every like said tools

15:51:58execution you'll be able to see if you

15:52:00want you can also open it and you can

15:52:02see okay so this kinds of thing we have

15:52:04also um implemented inside our agentic

15:52:07chatbot And throughout this entire video

15:52:09guys, I'm going to show you how we can

15:52:11develop these things. Okay, how we can

15:52:12add this particular tools integration

15:52:14inside our aentic chatbot. Now let me

15:52:16ask another question. Let's say here I

15:52:17will tell um um calculate

15:52:24okay um this number. Okay. So let's say

15:52:27this is my expression. I want to do a

15:52:29mathematical calculation and inside this

15:52:32aentic chatbot I I am using a a tool

15:52:35called calculator tool. So with the help

15:52:37of this calculator tool you can

15:52:39calculate any kinds of complex let's say

15:52:41expression any kinds of complex uh let's

15:52:43say um u equation you can calculate

15:52:46here. Now if I send this now you will

15:52:49see that it will be using calculator

15:52:50tool. Okay. Now with the help of this

15:52:51calculator it is calculating the entire

15:52:54uh let's say number and it is giving you

15:52:55the response. So any kinds of complex

15:52:57math problem you can give it will be

15:52:59able to perform that. Okay. So once it

15:53:01is done let me show you another demo.

15:53:03Then I have given another prompt. Tell

15:53:05me the latest stock price of Apple.

15:53:08Again you can see it is using some kinds

15:53:10of tool. It is using stock uh price uh

15:53:12tool and it is uh able to give you the

15:53:14latest stock price of Apple. Okay. Even

15:53:17you can also ask the stock related any

15:53:19other companies let's say stock price of

15:53:22Google. So stock price of Google. Now

15:53:25see it is using get stock price uh tool

15:53:27and it is able to give you the latest

15:53:29stock price of Google is uh that much.

15:53:33Okay. So yes guys that's how our entire

15:53:35uh agentic system is working right now

15:53:38and we are we have already integrated uh

15:53:40uh some tools okay inside our agentic

15:53:42chatbot that's why it is performing like

15:53:44chart GPT but chart GPT is having lots

15:53:47of uh tools guys um if you want you can

15:53:49also integrate lots of tools inside your

15:53:50application this part I will leave it to

15:53:52you first of all let me show you the

15:53:54entire development then you can uh you

15:53:56can improve this application a lot so

15:53:58first of all uh I'll be discussing about

15:54:00the tools guys what is tools uh why

15:54:03tools is required then I'm going to show

15:54:04you the implementation. So guys first of

15:54:06all let's try to understand about the

15:54:08tools what is tools exactly and why it

15:54:11is required and how tools works. Okay.

15:54:13So as you can see uh in agentic AI tools

15:54:16are external functions APIs database or

15:54:20any kinds of service that an uh AI agent

15:54:23can use to perform actions beyond

15:54:25generating the text. Okay. So previously

15:54:28the application we created guys this

15:54:29agentic uh application the previous

15:54:31version application that means in my

15:54:33previous video uh it was only able to

15:54:35generate the text okay uh if you give

15:54:37any kinds of let's say prompt based on

15:54:39the prompt if this information is

15:54:41available in the knowledge base of the

15:54:43model it is able to generate some kinds

15:54:45of text okay but with the help of these

15:54:47tools an agent can um agent can perform

15:54:51action okay like I showed you right now

15:54:53right I uh I uh per I did different

15:54:56different prompting in my agent. I asked

15:54:59about the stock price. I uh asked about

15:55:01the latest news. Then I asked to

15:55:03calculate u some kinds of mathematical

15:55:05equation and it was performing some

15:55:07kinds of action with the help of some

15:55:09third party tools. Okay. So that's why

15:55:12our agent can perform any kinds of

15:55:14actions. Okay. Uh using the tool beyond

15:55:17the text generation. So our agent cannot

15:55:19only generate the text. Okay. It can

15:55:22also perform some kinds of action with

15:55:24the help of this tool. So this is very

15:55:25much important. So a normal LM can only

15:55:28respond based on this knowledge and the

15:55:31information in in the prompt. Okay. An

15:55:33AI agent works with tool and it can

15:55:36search, calculate, retrieve the data,

15:55:38execute code, update database or

15:55:40interact with other systems as well.

15:55:42Okay. So by this definition itself I

15:55:44think you can understand what is tools

15:55:46exactly and why these tools is super

15:55:48important. Okay. So with the help of

15:55:49tools you can perform any kinds of

15:55:51searching operation, calculate

15:55:52operation, retrieve data operation. You

15:55:54can even execute any kinds of code.

15:55:55Okay. I think inside GPT you can execute

15:55:57the code. You can debug your code. Okay.

15:55:59How it is happening? Because it is using

15:56:01some kinds of tool and that tool

15:56:03actually it is working with the Python

15:56:05interpreter. Okay. So in the Python

15:56:07interpreter or any other let's say

15:56:08program you are using it is using that

15:56:10particular interpreter. It is executing

15:56:12the code. It is reviewing your code. It

15:56:14is finding the bugs inside your code and

15:56:16it is giving you the final response.

15:56:18Okay. this is the problem inside your

15:56:19code. So everything is happening with

15:56:21the help of this particular tools. Okay.

15:56:23So they're using these kinds of tool

15:56:25external tools and they are performing

15:56:26this kinds of operation. Okay. I hope

15:56:28you get it. Now let's try to understand

15:56:30a simple example. Suppose a user asked

15:56:33what is the current weather in Texas.

15:56:35Okay. The agent does not know the live

15:56:37weather uh by itself. Now it can call a

15:56:40weather tool. Okay. Let's say you have

15:56:42uh already integrated the weather tools

15:56:44inside your agents. Now your agents will

15:56:46automatically decide which tool to call.

15:56:48Now you are asking about the weather. So

15:56:50definitely it will let's say uh hit this

15:56:53get weather tools. Okay. It will use

15:56:54this get a weather tool and you are

15:56:56asking for Texas. Okay. So that's how

15:56:58the location you are giving it will find

15:57:00the weather okay of that particular

15:57:02location. Then the tool returns the

15:57:04current weather and the agent uses that

15:57:06result to answer the user. Okay. So

15:57:08that's how the entire system works. Now

15:57:10some common tools in agenti. So you can

15:57:13see web search tools can be used a lot

15:57:16whenever you are creating this kinds of

15:57:17agentic application with the help of you

15:57:19can perform search operation over the uh

15:57:22internet and you can get the current

15:57:23information. Then calculator tool okay I

15:57:25think you saw the calculator tool you

15:57:27can perform any kinds of complex

15:57:28mathematical operation. Okay then

15:57:30database tool you can even reads and

15:57:32writes data inside your database or any

15:57:34other let's say storage service these uh

15:57:37tools can be also used inside your

15:57:38aentic chatbot. then rag retriever

15:57:41tools. Okay, searches do uh searches

15:57:42over the documents or vector database.

15:57:44We'll uh in future we'll also try to add

15:57:46this uh tools inside our aentic chart

15:57:48but we'll also add the uh functionality.

15:57:51Okay, I'll show you this part as well.

15:57:52So this is also important things like

15:57:54inside GPT you can upload any kinds of

15:57:56documents right and in the document you

15:57:58can perform the uh you can perform the

15:58:00search operation you can perform the

15:58:01query operation how it is happening

15:58:02because it has the rag retriever tool

15:58:05then you can use python tool with the

15:58:06help of python tool you can execute the

15:58:08code analyze the data okay everything is

15:58:10possible you can even use email tool

15:58:12with the help of email you can read

15:58:14email you can draft your email you can

15:58:16send the email okay so everything is

15:58:18possible even in charge GPT or Google

15:58:20Gemini you can connect your email. Okay.

15:58:23Even from there only you can send the

15:58:25email. This is also possible. And how it

15:58:27is happening? Because it is using email

15:58:28tool. Then calendar tool you can use.

15:58:30You can even access your calendar. You

15:58:32can use different different API tool

15:58:34like uh you can use weather API tool,

15:58:36finance API tool, CRM API tool, any

15:58:38kinds of payment system API tool. Any

15:58:39kinds of API you can connect with your

15:58:42aentic chatbot. Okay. Aenti system. Then

15:58:44custom businesses tool. Let's say if you

15:58:46have some custom uh businesses okay if

15:58:49you want to integrate that particular

15:58:50tool let's say you can create the

15:58:52tickets you can check the inventory you

15:58:54can generate the reports okay you can

15:58:55update the customer records everything

15:58:57is possible here so these are the common

15:58:59tool guys you can integrate inside your

15:59:00aentic system okay apart from that there

15:59:03are lots of tools are available you can

15:59:05search over the internet okay there are

15:59:06thousands of thousands tools are

15:59:08available whatever you need okay you

15:59:10just try to integrate inside your

15:59:12project itself okay very simple then How

15:59:16two calling works guys? As you can see

15:59:17the typical workflow is the user gives a

15:59:20request first of all then the agent

15:59:22understand the goal. Let's say uh

15:59:24previously I showed you some kinds of uh

15:59:27action right? I asked about the uh stock

15:59:30price of Google. So this is my user

15:59:32request. Okay. My agent understand the

15:59:34goal. What is the goal? It has to

15:59:36understand the sorry it has to get the

15:59:38latest stock of the Apple. Okay. Or

15:59:40Google. Then the agent decided whether

15:59:43uh whether a tool is required. Then our

15:59:46agent was understanding okay to give

15:59:49this particular answer whether I need to

15:59:50use any kinds of tool or not. So in this

15:59:52scenario definitely it has to use the

15:59:54tool because inside the LLM uh the

15:59:56default LLM it doesn't have this kinds

15:59:58of information. Definitely it has to use

16:00:00the tool. Okay. So the agents will

16:00:02decide okay it has to use the tool. It

16:00:03it needs the tool requirement. Okay.

16:00:05Then it selects the appropriate tool

16:00:07because inside my application there are

16:00:09multiple tools I have added. Now which

16:00:11tool to call? Okay, which tool to use?

16:00:12Because here I ask different different

16:00:14uh question, right? And uh for each and

16:00:16every question uh it uh it should use

16:00:19different different tools. Okay, it it's

16:00:21not like that for all the questions it

16:00:23will be using one specific tool. Okay,

16:00:25because question might be different,

16:00:26prompt might be different. First of all,

16:00:28it has to understand the goal based on

16:00:29the goal. It will automatically select

16:00:31the specific tool it requires. Okay,

16:00:33that's why uh it selects the appropriate

16:00:35tools. Then it generates the tool

16:00:37arguments. Okay, tool argument means

16:00:39that here we are asking about let's say

16:00:41give me the latest news in AI. So what

16:00:43will happen? Uh it will search this uh

16:00:45this particular word in the internet.

16:00:47Okay, because it is using tably search

16:00:49tool, right? And you know tably search

16:00:50tool uh uh what it does? It does the

16:00:52internet search operation. The way you

16:00:54search the Google, right? Uh it will be

16:00:56using tably search and it will perform

16:00:58the search operation. Okay? And this

16:00:59will give you the latest uh information

16:01:02of that. So that's why uh this uh uh it

16:01:05generates the tool argument. Okay. Let's

16:01:06say whenever you are giving any kinds of

16:01:09uh let's say equation let's say

16:01:10calculate

16:01:14calculate

16:01:15this number with this number

16:01:18now it will be using calculated tool

16:01:20okay see and what is the uh tool

16:01:24argument here this expression okay this

16:01:26expression is the tool argument right

16:01:27now and it is calculating that and it is

16:01:30you are able to see the response okay

16:01:32then tool execution in action that means

16:01:34tool will execute and uh this will give

16:01:36you the response and this response the

16:01:38result is return it to the agent. That

16:01:40means whatever responses you will be

16:01:41getting from the tools. Okay. Uh

16:01:43sometimes these responses won't be

16:01:45readable to the user. Okay. So that's

16:01:47why what you have to do you have to send

16:01:49this response to the large language

16:01:51model again that means your agent again

16:01:53and agent will try to refine that

16:01:54particular output and you will be able

16:01:56to see the final result. Then the last

16:01:58one the agent uh produces the final

16:02:01responses. Okay, that means once my tool

16:02:03execution is complete and whatever

16:02:05output we are getting from the tools

16:02:07we'll try to pass to the agents and

16:02:08agents will try to refine that

16:02:10particular output. Okay, and this will

16:02:12generate the final uh responses to the

16:02:14user. So that's why the agents produces

16:02:17the final responses. Okay, example you

16:02:20are asking let's say what is uh uh 25%

16:02:23of uh 8,500.

16:02:27Now agent decide u you have it has to

16:02:30use calculated tool. Okay. Now it will

16:02:32perform the tool call. Now this is the

16:02:34calculation it has to do, right? Uh this

16:02:36is the expression it has to calculate.

16:02:38So after calculating this will uh uh

16:02:40your let's say uh uh tool has generated

16:02:42this output. Uh let's say this is the

16:02:44final response. But if I show this

16:02:46response to the user, user won't be able

16:02:48to understand in a in a good way. Okay.

16:02:51So I have to generate some kinds of

16:02:53readable response. So again I will send

16:02:55this particular result to my agent. Now

16:02:58agent will try to refine this out uh

16:02:59let's say answer and it will generate a

16:03:02uh final responses. You can see now

16:03:04agent is uh generating 25% of 8,500 is

16:03:092,125.

16:03:11Okay. Now this is more readable than

16:03:13this one. Okay. So that's why this this

16:03:16step is super important and whenever you

16:03:18are using any kinds of tool whenever

16:03:19your agent is calling any kinds of tool

16:03:21so this eight step it is following.

16:03:23Okay. And we'll also follow this a step

16:03:25eight step to implement tools

16:03:27integration inside our uh AI agents.

16:03:30Okay, this is the entire idea guys. So

16:03:32now guys, I think pretty much clear how

16:03:34the tools works and what is tools

16:03:35exactly and in the chart GP also how

16:03:38chart GP works and whenever you are

16:03:39asking any kinds of realtime question

16:03:41how it is able to give you the response

16:03:43because it has the tools connection.

16:03:44Okay, lots of tools connection because

16:03:46of that you are able to see the latest

16:03:48information or any kinds of action you

16:03:50can perform here. Now let's uh start the

16:03:52implementation guys. I will show you the

16:03:54entire implementation how we can add the

16:03:55tools inside our aentic chatbot. So

16:03:58guys, first of all, let's try to

16:04:00understand the workflow. Uh after adding

16:04:02this tool node inside our workflow, how

16:04:05our workflow will look like and how it

16:04:07will work. So as you can see uh this is

16:04:10the first workflow we have created so

16:04:12far. So this workflow has only one

16:04:14particular node which is chat node. So

16:04:16basically if user is giving any kinds of

16:04:18uh input it is going it uh going to the

16:04:21chat node and chat node is giving some

16:04:23kinds of output and the right side you

16:04:26can see this is the updated workflow uh

16:04:28we'll be creating inside this video. Uh

16:04:30basically we'll be adding our tools node

16:04:33here. So as you can see this is the

16:04:36updated workflow. So here uh you if user

16:04:39gives any kinds of input uh it will go

16:04:41to the chat node and here actually we'll

16:04:44be using something called tool condition

16:04:46function. Okay, there is a function

16:04:48called tool condition function. So here

16:04:50I have already written what is this tool

16:04:52condition function. it uh function does

16:04:54it's a uh tool condition. It's a uh

16:04:56pre-built conditional age function that

16:04:59helps your graph to decide should the

16:05:02flow go to the tool node uh next or back

16:05:06to the lm. Okay, that means whatever

16:05:09input user is giving. Okay, let's say if

16:05:11user is asking tell me about Python. So

16:05:14I think you know that inside large

16:05:16language model this information is

16:05:17already available. So in this scenario

16:05:19your agent doesn't need to call the

16:05:21tool, right? It can only use this chat

16:05:24node and give the response and the

16:05:26response will go to the end directly.

16:05:28Right? But if user is asking tell me the

16:05:31latest news in AI in 2026. Okay. This

16:05:35information is not available inside the

16:05:37large language model knowledge base that

16:05:40time your tool condition okay tool

16:05:42condition function will decide okay now

16:05:44it has to use some kinds of tool that

16:05:46means this kinds of question will

16:05:47redirect to the tool nodes. Okay. So

16:05:50this is how this uh two condition works.

16:05:52That's why you can see the definition.

16:05:54So this uh two condition is a pre-built

16:05:56conditional age function. Okay, I think

16:05:58I already told you about conditional uh

16:06:00conditional workflow. Okay, how

16:06:02conditional workflow works. If you

16:06:03haven't checked that, please try to

16:06:04check my previous video. So conditional

16:06:06ages function that helps your graph to

16:06:08decide should the flow go to the tool

16:06:10nodes. Okay, or back to the lm. Okay,

16:06:13now I think you got it what will happen

16:06:15here. Okay, now here we have added this

16:06:18tool. So this tool we call it as a tool

16:06:20nodes. Okay. Inside this graph this tool

16:06:21is a call we call it as a tool nodes. So

16:06:24tool nodes is also a pre-built node

16:06:27inside langraph. Okay. So as you can see

16:06:29in lang graph tool node is a pre-built

16:06:31node type that acts as a bridge between

16:06:34your graph and external tools. Okay.

16:06:37That means inside tool nodes you can use

16:06:39any kinds of function APIs utilities

16:06:42etc. So as you can see normally in

16:06:44langraph you would write a node function

16:06:47yourself. Okay it takes a state and

16:06:50return the state. So far we have written

16:06:52like that. But a tool node is a readym

16:06:55made node that knows how to handle a

16:06:58list of lang tools. That means this tool

16:07:01nodes you don't need to write

16:07:02separately. Okay. This is already

16:07:03pre-built inside langraph. You just need

16:07:06to define that. Okay as a node and it

16:07:08will automatically okay. it will

16:07:09automatically handle uh like uh the list

16:07:12of the tools you will be adding inside

16:07:14this tool nodes. Okay. Then it uh its

16:07:17job listen for tools calls from the LLM

16:07:20like let's say user wants to search

16:07:22something on the internet about the

16:07:24latest information or let's say he or

16:07:26she wants to get the weather

16:07:27information. So automatically this uh uh

16:07:30tools node will decide which tool to use

16:07:32because it has the list of the tools.

16:07:34Okay. automatically based on the input

16:07:37user input it will decide which uh tool

16:07:38to use and automatically route the

16:07:41request to the correct tools okay that

16:07:43means if user is asking about latest

16:07:44information in AI it will be using

16:07:46search tool let's say if user is using

16:07:49uh if user wants to uh know about the

16:07:51current weather okay so that time it

16:07:54will redirect to the get weather tool

16:07:55that's how it will route the request to

16:07:58the correct tool then pass the tool's

16:07:59output back to the graph okay so that's

16:08:01how the system works okay that means

16:08:04whenever you will pass any kinds of

16:08:05input. First of all, this tools

16:08:07condition will decide whether it has to

16:08:09use the any tool or not or whether it

16:08:11has to use the default large language

16:08:13model to generate the response. Okay.

16:08:15But if it needs any kinds of let's say

16:08:17tool uh tool functionality that time it

16:08:20will automatically route to these tool

16:08:22nodes. Okay. And tool nodes will try to

16:08:24decide which tool to use for what kinds

16:08:27of uh input. Okay. Now I think you are

16:08:29pretty much clear with this particular

16:08:31workflow and this workflow we'll try to

16:08:33develop inside our system. Okay. So for

16:08:36this first of all uh I'm going to show

16:08:38you a notebook experiment guys. We'll

16:08:40try to write everything in a Jupyter

16:08:41notebook. Uh we'll try to understand the

16:08:44entire tools concept there. Then we'll

16:08:46try to um integrate inside our agentic

16:08:49chatbot we have created so far. So here

16:08:51what I have done guys as you can see

16:08:53left hand side I created a notebook

16:08:55folder and inside that I already kept my

16:08:57previous notebook. I showed you right so

16:08:59this is the previous notebook I created

16:09:01uh at the very first time right uh there

16:09:03I showed you the chatbot workflow we

16:09:05created this workflow and this was the

16:09:07simple workflow so here I created

16:09:09another notebook called tools demo now

16:09:11if I open it up so you can see this is

16:09:13the tools uh demo uh related code so

16:09:16here uh basically I'm going to explain

16:09:18this code like how we have to add these

16:09:20tools inside our workflow and how we can

16:09:24uh how we can uh practically test that

16:09:25okay so once everything is working fine

16:09:27then we'll try to integrate inside our

16:09:29development and here I already added

16:09:31that documentation the documentation I

16:09:33showed you tools documentation if I

16:09:34click here so this is the documentation

16:09:36guys I already showed you this

16:09:38documentation right so this

16:09:39documentation reference I already given

16:09:41in this particular notebook you can

16:09:42refer it here now here first of all I'm

16:09:44going to select my environment so let's

16:09:46select my environment

16:09:50so this is the environment now first of

16:09:52all we'll import all the necessary

16:09:54library so as you can see we are

16:09:55importing um state graph of start end

16:09:58from lang graph then type dict annotated

16:10:00so these are the things are common I

16:10:02think you are pretty much familiar with

16:10:04this now base model human

16:10:05[clears throat] masses and one thing

16:10:07guys I have done uh actually my openi

16:10:09API key is over okay u uh my limit is

16:10:13over that's why I am using u like u

16:10:17gemini model and if you want to use

16:10:19gemini model so that time you can import

16:10:21this library called chat google

16:10:24generative AI from lang google ji Okay.

16:10:27And for this you have to install one

16:10:29library. So this is the library guys.

16:10:31Langen Google generate. Okay. And this

16:10:33specific version I have installed in my

16:10:36uh uh in my environment. Okay. So again

16:10:38you just need to open your environment

16:10:40and just write pip install

16:10:43r requirement.txt. Okay. If you do that

16:10:46it will automatically install this uh

16:10:48library inside your environment. So I

16:10:50have already done that. So let me open

16:10:51it up. So see this is the alternative

16:10:53way to use uh any kinds of large

16:10:55language model if you don't have open

16:10:57API key or if your API key limit is over

16:11:00that time you can use these are the

16:11:01freeto use large language model okay uh

16:11:04but if you want to use open API key guys

16:11:06you can refer my previous notebook I

16:11:08think in previous notebook I used the

16:11:10open API key here I used this open AI

16:11:13model okay chat open AI model only this

16:11:15part you just need to change okay h uh

16:11:19and one more thing you have to collect

16:11:20which is uh uh like Gemini API key that

16:11:22means Google API key and how you will

16:11:24get this Google API key. So for this you

16:11:27have to go to the uh Google

16:11:31AI studio. Okay this particular website

16:11:39and here you can click on get started.

16:11:43Now left hand side you will see this API

16:11:45key option get API key. I'll just click

16:11:47on get API key. Now from here you just

16:11:49need to create an API key. Okay, I

16:11:50already created the API key. So I can

16:11:52copy and I can simply paste it here.

16:11:56Okay, so make sure you collect your own

16:11:58API key guys. I'm going to remove my API

16:12:00key after this recording. So don't use

16:12:02my API key. Try to create your own API

16:12:04key from here. Okay, once you have

16:12:05created the API key, then you will be

16:12:07able to execute this notebook. Then I'm

16:12:10importing this uh add message from graph

16:12:12itself. Then load env to load my

16:12:14involvement variable. Then uh I'm

16:12:16importing some other additional library

16:12:18as you can see from langraph pre-built.

16:12:20I'm importing this tool node. Okay, I

16:12:21think I already told you about tool

16:12:22nodes, right? So here in this demo I

16:12:25told told you about the tool nodes. So

16:12:27this tool nodes will uh basically help

16:12:29you to

16:12:31uh tool nodes will basically help you to

16:12:34uh uh so yeah I think this is the tool

16:12:36node. Yeah, tool node. So this

16:12:37particular tool node. Okay, so this tool

16:12:39node will help you to um define your

16:12:41nodes. Okay, that means tool nodes and

16:12:43you don't need to write this tool node

16:12:45separately. This is already pre-built

16:12:46inside Langraph. Okay, that's why we're

16:12:48importing from pre-built. Then there is

16:12:49another function called tool condition.

16:12:51So this function I told you. So this

16:12:53tool condition we also need to add as a

16:12:55conditional ages. So basically this

16:12:58function will decide whether it has to

16:12:59use the tool or it has to use the simple

16:13:01LM call. Okay. So this is also a

16:13:03pre-built function inside langraph.

16:13:05We'll be importing that. Then I need

16:13:07this tab search. So tabularly search is

16:13:09a internet search tool. With the help of

16:13:11that you can perform the internet search

16:13:13operation. Let's see if user is asking

16:13:14any kinds of latest informations uh like

16:13:16chat GPT I showed you. Okay. Previously

16:13:18the demo I showed you if user is asking

16:13:20about latest uh information um uh

16:13:22anything which is let's say completely

16:13:24latest and available over the internet.

16:13:26So with the help of tably search we can

16:13:28uh get this informations. Okay. And if

16:13:31you're using tably search tool guys you

16:13:33have to install uh these two library

16:13:35lang tabi and tably python. Okay. So

16:13:38these two library you have to install

16:13:40and this is the specific version I'm

16:13:42installing in this project. Now what you

16:13:44have to do you just need to simply write

16:13:47pip install hyphen

16:13:54requirement.txt.

16:13:55Okay. If you do that it will install all

16:13:58of the necessary library inside your

16:14:01okay inside your environment. Okay. So

16:14:04these two libraries required if you're

16:14:05using taberts tool then uh we'll be

16:14:08importing these tools. Okay. Right now

16:14:10we have to create the tools. Okay. And

16:14:13whenever you want to create your custom

16:14:15function okay let's say custom function

16:14:17as a tool that time this tools has uh

16:14:19has to be uh imported with the help of

16:14:21this tool we'll be creating a decorator

16:14:24and this decorator will be uh will be

16:14:26represent my function as a tool okay

16:14:28I'll show you this part how to do that

16:14:30then request and math module okay so

16:14:32these are the input you have to uh you

16:14:35have to write inside your code

16:14:38done right now first of all let me load

16:14:40the environment variable so I have

16:14:41loaded my environment variable model.

16:14:42Okay. Now here I'm initializing my uh

16:14:46model guys. So as you can see here I'm

16:14:47initializing Germany 2.5 flash model and

16:14:50this is the creativity parameter. I

16:14:51think you already know about and this is

16:14:53your LLM object. And if you want to use

16:14:55OpenAI large language model here this is

16:14:58very much simple only you just need to

16:15:00write chat open AI. Okay. And if you

16:15:02want to use Gemini model you have to use

16:15:04this particular code. Okay. And if you

16:15:07want to use any other provider as well

16:15:09simply just try to change here. You can

16:15:10go to the chat GP and you can ask okay I

16:15:12want to use grock model let's say Grock

16:15:14meta model or open uh I want to use open

16:15:17router provider and I want to this this

16:15:19model okay so this particular code will

16:15:22uh change uh and you will get this code

16:15:24from the charge or any kinds of

16:15:25documentation you can change it anytime

16:15:27here okay so this will my large language

16:15:31model this will uh this will be my large

16:15:33language model okay now we'll be

16:15:34initializing the uh tably search okay so

16:15:37tably search is a internet search tool I

16:15:40already told you about right and to use

16:15:42this tably search tool you need a API

16:15:44key okay so for this what you have to do

16:15:45you have to go to this tably website tab

16:15:48you just need to write tab API key go to

16:15:51the first website

16:15:55and just try to uh continue with your

16:15:58Google

16:16:00okay so here you will be getting your

16:16:01API key if you don't have API key try to

16:16:04create from here so you just need to

16:16:05create here give the name let's say I'll

16:16:07give demo and simply create the API key.

16:16:10Okay, once you have created just try to

16:16:11copy this API key and

16:16:15uh you have to place inside your

16:16:16environment variable. So here you just

16:16:18need to create another key called table

16:16:20API key and here you just need to paste

16:16:22your API key. That's it. Okay, I already

16:16:24have my API key. I'm not going to change

16:16:26it here.

16:16:27Uh okay, so API key is also collected.

16:16:30Now see this is our first

16:16:33uh tools actually we have defined. So

16:16:35tab is it's a like a tool inside like

16:16:38aentic AI if you are creating against ai

16:16:41project. So tab is a tool by default

16:16:44it's a tool. So you don't need to give

16:16:46this particular decorator sign. So you

16:16:48just need to create an object of tably

16:16:50search. So inside the tably search you

16:16:52just need to give maximum result like

16:16:54how many uh result you need whenever it

16:16:57will search uh do the search operation.

16:16:58Let's say it has searched for uh latest

16:17:01AI news. Okay. in 2026 it will search

16:17:05maximum in five website. Okay, five

16:17:07website and it will give you the

16:17:08response. Okay, I think previously I

16:17:11showed you this part. I think I created

16:17:12lang chain agent right there I showed

16:17:14you how to use the tab search right. Uh

16:17:17then topic topic basically I want to

16:17:19search the general uh topic related

16:17:21search operation and search depth

16:17:23advance. Okay, so this kinds of

16:17:25parameter you have to pass inside table

16:17:27search and this will give you a search

16:17:28tool object. Okay, and then you have to

16:17:30create this object. So this will become

16:17:32your first tool. Then the next tool guys

16:17:35I have created here called calculator

16:17:36tool. So you can see I have written a

16:17:38custom function. So just try to ignore

16:17:40this part. Let's say as of now I haven't

16:17:42added this decorator. So let's say I'll

16:17:44remove this decorator. First of all you

16:17:46have to write a custom function. So see

16:17:47this is the custom function I have

16:17:48written. So here I'm using math module

16:17:51and here I if you are passing any kinds

16:17:53of expression right any kinds of

16:17:54mathematical expression. So this

16:17:56function will be able to calculate uh

16:17:58that expression and it will give you the

16:18:00result and if any exception is occurring

16:18:02it will raise the exception. Now let's

16:18:03if you want to uh create any kinds of

16:18:06custom function as a tool only you just

16:18:08need to give this particular decorator

16:18:10this decorator add the red tool and this

16:18:12tool we have already imported here as

16:18:13you can see from langen course tools

16:18:16tools. Okay now this will become a

16:18:18tools. Okay now this will become a tool

16:18:20object. Now you can use this tool inside

16:18:22your agents. So this is super simple

16:18:24guys. Okay. And this is very much

16:18:26interesting. You can create any kinds of

16:18:28uh like Python custom function and you

16:18:30can convert it as a tool and you can use

16:18:32it inside your AI agent. It's not like

16:18:34that. Always you have to use the

16:18:35predefined tools. Okay. It's not like

16:18:37that because I I can write any kinds of

16:18:40custom function okay for my work and

16:18:42that has to be my tools. Okay. That has

16:18:44to work with uh work work like my tools.

16:18:47So I can do that. This kinds of

16:18:48customization is also available inside

16:18:50line graph. Now as you can see this is

16:18:52my second tool calculator tool. Now the

16:18:55third tool I created get stock price. So

16:18:58let's say if you if user is asking about

16:19:00any kind of stock price about Apple,

16:19:02Tesla or Google whatever. So this uh

16:19:05tool will be working that time and it

16:19:07will give me real time stock data. Okay.

16:19:10So as you can see again I written a

16:19:11custom function. So this will basically

16:19:13take any kinds of company name uh

16:19:15example Apple, Tesla or whatever. And

16:19:18here I'm using a website. As you can see

16:19:20this is the website alphavantage.co.

16:19:24Okay, this is the website. So in this

16:19:26website basically uh this is the uh API

16:19:30endpoint of this website and to hit this

16:19:32API endpoint I you need a API key. Okay,

16:19:34so let me show you this website first of

16:19:36all. So this is the website guys. So

16:19:39this website has all of the stock

16:19:41related realtime data. Okay. Restock

16:19:43market data uh stock market data API for

16:19:46LM uh and u LLM and any other let's say

16:19:52uh uh application you are implementing.

16:19:54Okay. So here basically you just need to

16:19:56collect an API key. So to collect the

16:19:58API key so there is a option get free

16:20:00API key. I'll click here.

16:20:03Now you just need to give your

16:20:04organization name. Let's say I'll give

16:20:05DS with BP. And you just need to also

16:20:07pass your email. Let's say I'll pass my

16:20:09email. And once it is done just try to

16:20:11click on get free API key. Okay. So this

16:20:13is your API key. Just try to copy that

16:20:18and don't share this API key guys and

16:20:21try to use your API key on API key.

16:20:23Okay. And here you just need to paste

16:20:24this API key. Okay. Now this will become

16:20:27your this will become your

16:20:30um

16:20:33API endpoint.

16:20:37See now here you just need to pass a

16:20:39symbol only. Let's say I'll give

16:20:47apple.

16:20:49Um okay u

16:20:56I'll pass like that.

16:21:04See now this is giving you this stock

16:21:07data related apple okay real time you

16:21:09are getting a JSON response so that's

16:21:11how we are using this uh uh website guys

16:21:13that's how we are using this API and to

16:21:16hit this API endpoint I'm using request

16:21:18module inside Python we are passing this

16:21:20URL and it is giving you the result some

16:21:22response and we are returning that okay

16:21:24to the LLM so this is our next tool I

16:21:27have used here so in this uh like demo

16:21:30Now guys, I only use three tools. You

16:21:32can add uh like more tools here if you

16:21:34want. You can add like get current

16:21:36weather informations. You can add uh

16:21:38let's say um emailing tool. You can add

16:21:41let's say Google drive tool. Any kinds

16:21:43of tool you can add. All you just need

16:21:44to go to the chart GPT and ask like okay

16:21:46I need to use this tool. Uh how to write

16:21:49that particular function? This is a

16:21:50simple Python function you need to

16:21:51write. Okay. So just for uh just to show

16:21:54you guys I used only three tools in this

16:21:56particular project. uh but you can add

16:21:59you can feel free to add more tools here

16:22:01okay anytime let's say uh let me show

16:22:03you another example let's say if I go to

16:22:04the chart GPT and if I let's say ask I

16:22:08want to

16:22:13add a tool in

16:22:17my agent

16:22:19that will

16:22:22fetch

16:22:24weather

16:22:29or given location

16:22:34real time.

16:22:38Give me a Python

16:22:42function.

16:22:50So see this is the get current weather

16:22:52tool.

16:22:59Okay. Now simply you just need to copy

16:23:01this code

16:23:04and here it is telling what to install

16:23:06here. Okay. And uh it is telling uh this

16:23:09uh API key you also need because it is

16:23:11using open weather API I think. So let

16:23:14me copy this function as it is uh just

16:23:17I'm I'm showing you okay how to add uh

16:23:19different different tools. Okay. You can

16:23:20take the help from chart GPT anytime and

16:23:23you can create this kinds of custom

16:23:24function. So let's say here I'm going to

16:23:26add another tool.

16:23:28This is my tool.

16:23:33Okay. Get current weather tool. It will

16:23:35take a location and based on the

16:23:37location actually it will u uh give you

16:23:40the realtime information. So here I need

16:23:42to import this operating system library

16:23:46import OS

16:23:54H. So and it needs an API key. Okay,

16:23:58open weather API key. So how you will

16:24:00get this open weather API key? You can

16:24:03copy this key and search on Google. So

16:24:06this is the weather API.

16:24:10Get API key. So this is the website guys

16:24:12it is using get API key.

16:24:15Now you just need to first of all sign

16:24:17in I think

16:24:28first of all I'll create an account.

16:24:30Okay. I think I don't have any account.

16:24:49I'll give the password.

16:25:01I'll confirm all of these

16:25:04things and let's create the account.

16:25:11Okay, email is already taken. Uh okay,

16:25:13previously I think I already used this

16:25:15email. So let me sign in and see whether

16:25:18it's working or not.

16:25:30Okay guys, let me login. I think I don't

16:25:32I am having some issue. First of all,

16:25:34let me login with this website.

16:25:37So guys, as you can see, I have

16:25:39successfully signed up uh in this

16:25:41website. Uh basically, I I forget my

16:25:44password. Okay. And now I changed my

16:25:46password and now I'm able to uh visit

16:25:48this website. Okay. First of all, you

16:25:49just need to create an account here.

16:25:51Then once you have done uh here you will

16:25:53see one option called API key and here

16:25:55is your API key. Okay. So you just need

16:25:58to

16:26:00um create an API key. Let's create an

16:26:03API key. I'll give the name let's say

16:26:05agent

16:26:07generate.

16:26:10Uh this is your API key. Let's copy

16:26:12that.

16:26:16And uh here you have to write it inside

16:26:19your environment variable

16:26:27and this should be the key name.

16:26:36Okay, open weather API. So that's how

16:26:38you can collect the API and now it will

16:26:40work.

16:26:42So I will re-execute from the beginning.

16:26:52So here I have added another function

16:26:54that will basically fetch the real-time

16:26:56weather information.

16:27:04Then uh here what you have to do guys

16:27:07you have to make a tool list. So here

16:27:09you just need to pass all of the object

16:27:11one by one. First of all, uh I created

16:27:14search tool, right?

16:27:16So I'll give the search tool.

16:27:19Then I created calculator.

16:27:25Okay, calculator.

16:27:28Then I created get stock price. Then

16:27:31uh I created this uh current weather.

16:27:40this function I'll pass here.

16:27:43Okay. So that's how uh let's say

16:27:46whatever tools you are creating you you

16:27:47just need to make a tools list. Okay.

16:27:49You have to give one by one. All the

16:27:51tool list you have to give one by one.

16:27:52Okay. Just try to remember. Let's say

16:27:54you are creating 10 different tools you

16:27:55have to give 10 different list here.

16:27:57Once it is done you have to uh do the

16:28:01bind operation with your LM. That means

16:28:03you just need to uh tell your LM. Okay.

16:28:05Now you have the tool. So that's why I'm

16:28:08not going to use the simple LM right

16:28:09now. Uh so the LLM object we have

16:28:11created this completely fine.

16:28:14This is completely fine. Okay. Now we

16:28:16just need to bind this tool with the

16:28:18LLM. So here there is a function called

16:28:20bind tools and inside that you have to

16:28:22pass all of the list of the tools. And

16:28:24now you'll be using this object lm with

16:28:26tools. Okay. Now let's bind that tool.

16:28:28Then now we are defining the state. I

16:28:30think the same state you remember we

16:28:32created previously this state. No

16:28:34change. Let's define that. Now this is

16:28:37our chat node guys. I think you remember

16:28:38we created this chat node. And here we

16:28:41need to create another additional node

16:28:43called tool nodes. Okay, I told you

16:28:45about this tool nodes right in this my

16:28:48uh excalator file. You can see this is

16:28:49the node. Additionally, we are adding

16:28:51this particular node and this is a

16:28:52predefined node. Okay, you don't need to

16:28:54separately write that. So here we are

16:28:56using this tool node function. I think

16:28:58we have imported this tool node and

16:29:01inside that we are passing the tool.

16:29:04Okay, tools list of the tools we have

16:29:06and this will become your tool nodes.

16:29:07Let's define both of the nodes. Now,

16:29:10once it is done guys, now we'll try to

16:29:12create the graph. Now we are using uh

16:29:14state graph and we are passing the

16:29:15state. Now we are adding the nodes. The

16:29:17first node we are adding which is chat

16:29:19node. Okay, we are adding the chat node

16:29:21as you can see. Then the second node we

16:29:23are adding the tool node. You can see

16:29:25the tool node. Okay, we are adding this

16:29:26tool node. So both node we have added.

16:29:29Now we have to the age connection. Now

16:29:31how my age connection will look like.

16:29:34As you can see first of all start to

16:29:36chat node. So start to chat node then

16:29:40chat node itself will have a conditional

16:29:42edges with the tool condition. I think

16:29:44okay I think I told you about this one

16:29:46chat node will have a two condition.

16:29:48Okay edge connection. Basically this

16:29:50tool condition will decide whether it

16:29:52has to call the tool or whe whether it

16:29:54has to use the default large language

16:29:55model. So that's why this connection

16:29:57would like uh will look like that. So

16:29:59you will be using add additional

16:30:00conditional edges and from chat node to

16:30:03tool condition. Okay. Now this tool

16:30:05condition will decide whether it has to

16:30:06use any kinds of tools or not. Okay.

16:30:08Then here you just need to write another

16:30:10age connection tools to chat node. Okay.

16:30:12Why you have to write this one? Let me

16:30:14show you. If I let's say don't give this

16:30:16line. Let's say I'll comment this line.

16:30:19So what will happen? Let's try to see.

16:30:21Let's say I have uh added my chat node

16:30:25and tool condition. Now if I show you

16:30:28compile and show you my graph. So that's

16:30:30how my graph looks like. Okay. And this

16:30:32is similar to this particular graph.

16:30:33Okay. And one thing I think you have

16:30:35observed here I'm not using the simple

16:30:37LLM. Okay. Right now I'm using LLM with

16:30:40tools. So that means this object because

16:30:42here I did the bind operation with my

16:30:44tools. Okay. So make sure you add this

16:30:46line otherwise it will not work. Okay.

16:30:48So many people uh do this mistake. So

16:30:50basically they use the simple LLM and uh

16:30:53they they feel like okay it is not using

16:30:56the tool. So that's why this object has

16:30:57to be called here. Now let me show you

16:31:00my execution.

16:31:02So now uh here we are giving a message.

16:31:04So first of all I'm giving hello and you

16:31:07know like uh uh for the hello actually

16:31:09it doesn't need any kinds of tool right.

16:31:11So this will my regular chat.

16:31:14So it is telling hello how I can uh help

16:31:16you today. Now here I'm asking another

16:31:19question. Let's say what is uh uh this

16:31:21particular expression. Okay. uh what

16:31:23would be the result of this expression

16:31:25mathematical expression and now it will

16:31:27use the tool okay because it has the

16:31:29calculator tool I think you know so

16:31:31previously we created the calculator

16:31:32tool so this is the calculator tool

16:31:36right it will uh use that particular

16:31:38tool let's execute

16:31:44see this is the result it has given me

16:31:47okay now here I will ask another

16:31:49question what is the new movie released

16:31:50in 2026 now again it will use the tool

16:31:59see new movie released in 2026

16:32:03and all of the URL it has also given it

16:32:05has referred see this is the different

16:32:07different website uh my tool has

16:32:09referred that means I'm using tably

16:32:12search tool right and it has so my tably

16:32:15tool uh did the internet search

16:32:16operation and it found the latest movies

16:32:18okay as you can see and it has given me

16:32:21all of the title of the latest movies as

16:32:23you can see. Okay. See, but here the

16:32:26output we are seeing. See this output is

16:32:28not properly readable. Uh this output

16:32:31has also some metadata information.

16:32:33Okay. So if I give this kinds of output

16:32:35to the user, so user will confuse okay

16:32:37what to read. So that's why uh I have to

16:32:40pass this output to the agent again.

16:32:43That's why I told you in my file itself.

16:32:49Okay. So you can see uh our tools listen

16:32:53for the uh uh tool calls okay and once

16:32:56let's say it perform any kinds of tool

16:32:57calls uh then it automatically route to

16:33:00that particular correct tool then pass

16:33:02the tools output back to the graph okay

16:33:04why it has to pass this output back to

16:33:06the graph because of that because this

16:33:08output is not readable so again what I

16:33:10will do this output I'll try to pass to

16:33:12the the output we are getting see right

16:33:14now this is our architecture so whatever

16:33:17output we are getting from the tools it

16:33:18is getting ended Okay, now we have to

16:33:21again give this output output to the

16:33:23chat node. Okay, if I pass this output

16:33:25to the chat node, chat node will try to

16:33:27refine this output and it will generate

16:33:29a readable output for me. Okay, so

16:33:31that's why I have to do little

16:33:32modification inside my architecture. So

16:33:34let me show you. So here uh I'll just

16:33:38try to add this line. Okay, basically

16:33:40the tools output you are getting okay,

16:33:43you are again sending to the chat node.

16:33:45Okay, this is the modification you only

16:33:47only just need to do. Now let me again

16:33:49execute. Uh okay. So I have to execute

16:33:53from the beginning.

16:34:00Now that's how your structure will look

16:34:02like. See right now we are not returning

16:34:05the tools output. Instead of that the

16:34:07tools output we are getting we are again

16:34:08sending to the chat node. Okay. And chat

16:34:11node will refine the output and it will

16:34:12go to the end node. Now let me show you

16:34:14my output.

16:34:18Now see again uh this will this is using

16:34:20tool

16:34:29see now see the result guys okay see the

16:34:33uh response previously it was only

16:34:35giving this number but right now this

16:34:37giving the result of this equation is

16:34:39this this is more readable right because

16:34:42right now the output we are getting from

16:34:43the tools we again passing to the chat

16:34:45node and chat node is doing the

16:34:47refinement. Now here I'm asking what is

16:34:49the new movies released in 2026. Okay.

16:34:51Now if I send this prompt

16:34:57so this is the response I'm getting.

16:34:58Here are some new movies release

16:35:00scheduled uh for this date. Okay. And

16:35:02you can see all of the movie it has

16:35:04given me. Uh again this is a list. Okay.

16:35:06Uh so what I can do I can get the

16:35:11um

16:35:14get the output.

16:35:19Now I just need to get this text.

16:35:25Now see that's how you can extract the

16:35:28final result. Now see this is more

16:35:29readable. Okay this is more readable.

16:35:33I hope you get it guys. Okay. Now let me

16:35:34show you another question. Uh first find

16:35:37out the stock price of Apple using get

16:35:39stock price tool. Then uh use the

16:35:41calculator tool to find how much it will

16:35:44take to purchase

16:35:46uh 50 shares. Okay. Now these kinds of

16:35:48question I'm asking. Let's see whether

16:35:49it is able to use my tool or not.

16:35:54Now see again I'm getting the result and

16:35:58if you want to get the text you can

16:36:01extract from here.

16:36:04Okay, the stock price of AF is that much

16:36:06and to purchase 50 uh 50 shares it would

16:36:09cost around that that much of money. So,

16:36:13okay, now I think you saw it is able to

16:36:15use the tools right now and this is not

16:36:17a simple chatbot. Okay, this has the

16:36:19tool connection. It can perform any

16:36:20kinds of action. Even you can also ask

16:36:23about the realtime uh weather

16:36:24information. Let me also ask

16:36:32what is the current weather in let's say

16:36:35New York.

16:36:43The kind of weather in New York. Uh New

16:36:45York is moderate rain with the

16:36:47temperature that uh this is the

16:36:50temperature and feeling like uh uh see

16:36:53this is the temperature uh humidity and

16:36:56the pressure. Okay. Each and everything

16:36:59it is giving you. Okay. So yeah guys our

16:37:03uh system is working perfectly.

16:37:05Now we'll be um integrating inside our

16:37:08agentic chatbot. This is the complete

16:37:09notebook experiment I showed you and you

16:37:12have already understood the concept.

16:37:13Okay. Uh how to add the tools and uh I

16:37:16mean how to add the tools and how we can

16:37:18write our custom tools as well. Each and

16:37:20everything I showed you. So guys, now

16:37:22we'll try to add inside our project. So

16:37:24here what I can do uh I can simply

16:37:28create a separate file so that you can

16:37:31refer all of the previous code as well.

16:37:33So I'm going to create a

16:37:37file here.

16:37:45I'm going to name it as let's say

16:37:52this name

16:37:54agentic chatbot

16:37:56tool back end.py

16:38:01file.

16:38:05Okay.

16:38:06And inside that I'm going to copy all of

16:38:08my backend code I had.

16:38:11Okay. The same code you just need to

16:38:13copy paste here. Same code.

16:38:19H. And here I'll do the modification.

16:38:22And again uh I just uh uh finished my

16:38:25open API key limit. That's why I'm using

16:38:28this uh Gemini model. Okay. But if you

16:38:31have your open API key, you can

16:38:32uncomment this line and comment this

16:38:33line. Okay. So, alternative approach I

16:38:35showed you here. So now here I'm going

16:38:38to first of all import all of the

16:38:39necessary library from my notebook.

16:38:45Just import all of this necessary

16:38:47library.

16:38:50Okay. After that we are loading the

16:38:53environment variable. It's completely

16:38:54fine. Then if you have open AP you can

16:38:57unccomment this. that I don't have. I'll

16:38:59be using Gemini model. So once uh model

16:39:02uh initialization is done. So let me

16:39:04comment also so that

16:39:07it would be easy for you to remember. So

16:39:09this is the LLM definition. Now we'll

16:39:11try to define the tools. Okay. So here

16:39:13we'll try to define all of the tool. The

16:39:15tools we have created here. Okay. All of

16:39:17the tools we'll try to define here. So

16:39:19let's copy all of the tools.

16:39:25So here I copy pasted all of the tools.

16:39:27So first tools I had my search tool tab

16:39:29search tool. Second tool I had my

16:39:31calculated tool. Third tool I had my

16:39:33stock price and the fourth tool I

16:39:35created this weather.

16:39:38I'll also copy this one.

16:39:48Copy and

16:39:52paste it here.

16:40:05Okay, some error is coming.

16:40:10Uh, okay. Now it is solved. Uh, the

16:40:13problem was that I just copied till

16:40:14here. Okay. Uh, the last part was uh not

16:40:17copied. Uh, now I think this is fine.

16:40:20Okay, now this is fine. But here I have

16:40:22to import another uh things which is

16:40:24this

16:40:27any. Okay. So any and ways

16:40:35import

16:40:50now from typing I will import this any.

16:40:57So in the tools also I have to do the

16:41:00same thing.

16:41:04Fine. Now uh I think everything is good.

16:41:06Uh this is my calculator. This is my get

16:41:09stock. This is my current weather tool.

16:41:14And this is my chart state.

16:41:17This is my chat state. So here let me

16:41:19comment.

16:41:23This is my chat state. Now I'll define

16:41:25my nodes.

16:41:28same notes only. Okay, one more thing I

16:41:31just forget to do. I just need to do the

16:41:34tool bind operation. I think you

16:41:36remember

16:41:38here. We just need to bind this tool.

16:41:39Let's do that.

16:41:45So before initializing the state, I will

16:41:47just bind this tool. Let me comment

16:41:49here. Bind tools to lm. Now the state

16:41:54definition is also done. Now I'll define

16:41:56my chat nodes.

16:41:58So this is the chat node and the change

16:42:01I have done instead of calling the uh

16:42:04simple llm I'm calling llm with tools.

16:42:07Okay, this object

16:42:09now I'll define my second node which is

16:42:11tool node.

16:42:14Okay, tool node. So I think remember

16:42:16here also I did the same thing

16:42:20tool nodes. Okay.

16:42:22Now uh this this is my uh connector that

16:42:25means my checkp pointer for the

16:42:27persistence memory checkp pointer.

16:42:32Uh this part I already taught you. Okay.

16:42:33Um this is common for all. Now we'll try

16:42:36to define the graph.

16:42:44Okay. We'll try to define the graph. So

16:42:46as you can see this is our graph. If we

16:42:48are adding the nodes where this is the

16:42:49edge connection we are using the tools

16:42:51condition and at the last we are just

16:42:54doing this uh this uh edge connection as

16:42:56well that means whatever tool output

16:42:58we'll be getting we'll try to send it to

16:42:59the chat node that means in the same

16:43:01tools demo.ip IP 1B file I showed you

16:43:03the same thing okay I just copy pasted

16:43:05the code only okay nothing change the

16:43:07same code I copy pasted that's it once

16:43:09it is done I think this function you

16:43:11remember this is the helper function for

16:43:13this streamlend

16:43:15we used okay uh this that means uh with

16:43:18this function we are getting the traits

16:43:19okay for this streaml we created I think

16:43:21in my previous video I think remember so

16:43:23yes guys this is the modification we

16:43:24have to do in the back endpy

16:43:28now uh everything is fine I think let me

16:43:31check

16:43:33H everything is fine now we are ready to

16:43:36uh test inside our front end as well so

16:43:38now I'll just write another front end

16:43:40file

16:43:42so here I'll copy this file as it is

16:43:46and the last file was the DB right

16:43:52yeah last file was the DB so I'll just

16:43:55copy and paste it

16:43:58and I'll just rename it

16:44:05app tool.py.

16:44:12Okay. So, it has the DB with tools uh

16:44:15tools code as well. Okay. Now, here the

16:44:18change you just need to do which is um

16:44:25yeah if you don't change it's completely

16:44:27fine. You can use it as it is. Okay. uh

16:44:29there won't be any kinds of problem but

16:44:31one uh I think UI update you won't be

16:44:33able to see I think at uh whenever I

16:44:36show you my application for the first

16:44:38time right as a demo that time you saw

16:44:40whenever I was executing my agent it was

16:44:42showing it is using some kinds of tool

16:44:44okay see right now if I uh ex execute my

16:44:47app so what will happen let me show you

16:44:48first of all okay one more uh just

16:44:51modification you have to do uh this

16:44:53import okay uh previously I'm importing

16:44:55from agentic chatbot DB back end now I

16:44:57have to import from agentic

16:45:00chatbot tool back end. Okay,

16:45:03so this update only and make sure you

16:45:07have your

16:45:08uh langismith

16:45:10uh langismith uh environment variable

16:45:12that means uh the langismith API key and

16:45:15everything because uh it will trace

16:45:17everything in the langismith. Let me

16:45:18open my langismith platform.

16:45:29And uh let me execute uh completely

16:45:33fresh. So what I can do I can delete

16:45:35this one.

16:45:40I can delete this project and let me

16:45:42execute completely fresh.

16:45:47And now I will execute my app

16:45:51my app tool.py. Okay, this file

16:46:00stream

16:46:02let run

16:46:06app

16:46:08tool.py Fine.

16:46:18Now this is our chatbot. Now let's give

16:46:22the prompt. I'll give hello.

16:46:28See it's working. Now I'll give um tell

16:46:31me the latest news in AI

16:46:44see right now you are getting the output

16:46:46like that but you didn't see it is using

16:46:49the tool okay which tool it is using but

16:46:51previously in the demo itself you saw it

16:46:53is using some kinds of tool even in the

16:46:54chart also if you're asking you will be

16:46:57able to uh see some tool calling. Okay,

16:46:59some tool calling is happening, right?

16:47:01So let's say if I ask the same question

16:47:03in

16:47:04chart JPT, you'll see some kinds of tool

16:47:08calling is happening. See here, it will

16:47:10tell like okay, I'll search for the

16:47:12internet. See searching for the

16:47:14internet. It is using some kinds of

16:47:15search tool. So I want to also see this

16:47:17kinds of uh interface. Uh whenever my

16:47:20agent is using the tool, I'll be able to

16:47:22see that okay, this is using some kinds

16:47:24of tool. Okay. So if you want to see

16:47:26that you just need to do little bit UI

16:47:28update. So in the streamllet app you

16:47:30just need to do some little bit

16:47:31modification. So here uh itself you just

16:47:35need to do the modification. Let me show

16:47:36you.

16:47:38H So here you just need [clears throat]

16:47:39to do the modification whenever you are

16:47:42uh sending the user input right and

16:47:43whenever you are uh just hitting the uh

16:47:46agent that means here here you just need

16:47:48to do the modification. So what I have

16:47:50done guys, I just given this code to the

16:47:52chart GPT and I asked I just need to see

16:47:55this uh tool progress uh tool progress

16:47:58on my user interface whenever it will

16:48:00use any kinds of tool just try to do the

16:48:02UI update. So then again chart GPT given

16:48:05me this code. Let me show you

16:48:11GPT given me this particular code.

16:48:18So from here

16:48:21um everything needs to be changed

16:48:25this part.

16:48:28So this is the update uh chat GP given

16:48:30me guys. So right now uh basically it

16:48:33will automatically understand whenever

16:48:35it will uh use any kinds of tool that

16:48:38time you will able to see in the user

16:48:39interface. Okay. So this code you don't

16:48:41need to remember guys. uh you have charg

16:48:43you have gemini anytime you can do the

16:48:45modification inside at the UI interface

16:48:47because this functionality is completely

16:48:49user interface uh let's say update okay

16:48:52so as a aenti engineer this is not your

16:48:54task there are some front- end developer

16:48:57they will take care this part okay I

16:48:59need to import one tool uh things which

16:49:01is tool messes

16:49:03uh here only tool masses okay that's it

16:49:06now this is the updated code now if I

16:49:10execute this code let me show show you

16:49:12what will happen. So I'll reexecute my

16:49:14app.

16:49:20Now if I ask the same question, tell me

16:49:24tell me

16:49:27the latest news in

16:49:32here.

16:49:34Now you will see that it will be using

16:49:37some kinds of tool.

16:49:39Now see it is using tably search tool

16:49:41and it is uh doing the realtime search

16:49:43operation and the response it is uh

16:49:46generating it is again giving to the

16:49:48chat nodes and chat node is refining the

16:49:51output. Okay, now you are able to see

16:49:53the okay uh refinement result and you

16:49:58can also see the tool execution that

16:50:00means in the behind the tool what is exe

16:50:02what the execution is happening this is

16:50:04also available okay like charg

16:50:07you can also see the uh behind execution

16:50:09process like what the website it has

16:50:11referred and everything you will be able

16:50:13to also see here okay this also possible

16:50:16now let me ask another question I'll

16:50:18tell um

16:50:22calculate

16:50:30this number.

16:50:32Now you'll see that it will use my

16:50:33calculator tool.

16:50:36See calculated tool done. Okay. Now here

16:50:39I will ask now here I will give another

16:50:41prompt. Uh what is the current weather

16:50:43in New York?

16:50:48Uh okay guys, one problem I found it is

16:50:50not able to use my uh current weather

16:50:52tools. Okay, why if I show you the code,

16:50:55see whenever I did the bind operation,

16:50:58right? So here I didn't add my uh

16:51:00current weather tool here. So this is

16:51:02the problem. So what I will do? I'll

16:51:04just try to copy that code. Uh that's

16:51:06why I'm telling why it's not working. Uh

16:51:10yeah. So I'll copy this code as it is

16:51:13and paste it here.

16:51:17Okay. Now I think it should work. Let's

16:51:18see. I'll reexecute my app.

16:51:29Now here you can ask the same question.

16:51:39What is the current weather in New York

16:51:40or any other city?

16:51:51Now see it is using get current weather

16:51:53tool and this is the current weather in

16:51:55New York right now. Okay. And you can

16:51:57also ask any other question as well.

16:51:59Tell me

16:52:04give me all the movie

16:52:08list.

16:52:15in 20 26.

16:52:26See it is using table rule and it will

16:52:29realtime search over the internet and

16:52:30this will give you the result.

16:52:38See this is the entire result. I'm

16:52:40getting all the latest movie information

16:52:42I'm getting here. Amazing. Right now my

16:52:45uh aentic chatbot is working like chart

16:52:48GPT. So chart GPT has this kinds of tool

16:52:50as well. That's why it is giving you

16:52:51realtime informations. Okay. And our

16:52:54chatbot is also working in that way. Now

16:52:56if I open up my um uh Langmith

16:53:00dashboard. So if I go to my project now

16:53:02here all of the trades has executed.

16:53:04Even you can see trade wise. Okay. Trade

16:53:07wise you can see. Now let's I will see

16:53:09this particular trades. I will open it

16:53:11up and you can see the execution. Now

16:53:14here you can see guys I have added the

16:53:15tool and automatically this tools has

16:53:18integrated inside my language dashboard

16:53:20as well. Now see this is my chat node.

16:53:26Okay. And uh whenever you given this

16:53:29message it will go to the chat node.

16:53:30Chat node will uh hit the invoke the LLM

16:53:33and LLM has the tool condition

16:53:35integrated. Okay. Now tool condition has

16:53:37decided. Okay. It has to use the get

16:53:39current weather tool because what was

16:53:41the question? The question was what is

16:53:43the current uh weather in New York. So

16:53:45it will go to the tools condition. Tool

16:53:47condition will decide okay it has to use

16:53:48the tool and which tool it will call get

16:53:51current weather tool. Okay. This tool it

16:53:53will call. Now tool condition will try

16:53:55to redirect this this thing to the tool

16:53:58nodes. Okay. And now tool nodes will uh

16:54:01select this get current weather tool and

16:54:04uh what would be the location Newark.

16:54:05And if you pass this network to the get

16:54:07weather uh get weather function, this

16:54:10will return you the current weather

16:54:11information in New York. You can see

16:54:12this is the output. Okay. And this

16:54:14output we are sending again to the chat

16:54:16node. Okay. You can see say again

Implement RAG in Agentic Chatbot with LangGraph

16:54:18sending to the chat node. Now this is

16:54:20the input as well as the user input we

16:54:23are sending it and AI is generating this

16:54:26refine output. Okay. So that's how the

16:54:28entire system is working right now.

16:54:30Okay. Now I think you can see guys what

16:54:32is the use of lang as well because in

16:54:34the lang itself you can debug everything

16:54:37after which note which node is executing

16:54:39whether it is able to select the right

16:54:40tool or not okay so that's how you can

16:54:42understand each and everything I hope it

16:54:44is clear guys okay so yes guys uh this

16:54:46is all about of our agentic chatbot now

16:54:49uh this aentic chatbot is uh not a

16:54:52simple chatbot okay this has the tool

16:54:54connection it it can perform different

16:54:56different actions now uh I can tell this

16:54:59is more advanc advanced agentic chatbot

16:55:01we have created. Now uh some other

16:55:03functionality also needs to be added in

16:55:04this agentic chatbot. We'll also try to

16:55:06add the RG functionality that is you can

16:55:08upload any kinds of document you can

16:55:09apart from the chat operation. So yes

16:55:12this is all about from this

16:55:13implementation. I hope you liked it. So

16:55:14if you like this implementation guys

16:55:16please try to subscribe to my channel

16:55:17and share this video with your friends

16:55:19friends and family. So guys uh this is

16:55:21our agentic chatbot we have developed so

16:55:23far and we have integrated lots of

16:55:25features with this agentic chatbot. Now

16:55:27this is not a simple chatbot right now.

16:55:29This has uh like um uh conversation um

16:55:33like uh trades. It has uh tool

16:55:36integrations. It has streaming features.

16:55:39Even it has the persistence memory with

16:55:41the permanent database. Okay. So this is

16:55:43not a simple chatbot right now. Now the

16:55:46functionality I have added here this RG

16:55:48functionality that means rag

16:55:49functionality. Now in this chatbot in

16:55:51this aentic chatbot you can upload any

16:55:53kinds of documents. Okay. And you can

16:55:55start uh doing the conversation on top

16:55:57of that like chat GP. Okay. So, chart

16:55:59GPT also has the same features. If I

16:56:02show you the chart GPT. So, in chart GPT

16:56:04also you can upload any kinds of

16:56:05documents and you can perform chat on

16:56:07top of that. So, first of all, let's see

16:56:09our application. Okay. So, here let's

16:56:10say I will upload a documents.

16:56:14Let's say this is the documents I will

16:56:16upload. So, this is a research paper

16:56:17actually I published um uh this research

16:56:20paper. So, as you can see this is the

16:56:21paper guys. The paper name is um

16:56:24development of multiple combined

16:56:26regression method for rainfall

16:56:28measurement. Okay. So here you can see I

16:56:31was uh I was the author. Okay. So I

16:56:33contributed in this paper. So this paper

16:56:35covers uh about the uh rainfall

16:56:39measurement. Okay. Uh by uh by using

16:56:42some regression methods. Okay. You can

16:56:44go through the paper. This is also

16:56:45available on the research gate. Okay.

16:56:48Now what I'll do I'll just upload this

16:56:49paper on my aentic chatbot. I'll select

16:56:52this paper. I will upload it.

16:56:57See it is uh getting uploaded and it is

16:56:59processing. Okay. So once it is done now

16:57:02see here you can see the successful

16:57:04message. Now I can perform the chat

16:57:06operation. Now I'll just ask what is

16:57:09rainfall

16:57:11measurement

16:57:14based on

16:57:18the uploaded PDF.

16:57:25Now see it is using my rack tool. Okay.

16:57:28So internally I created a rack tool. It

16:57:30is utilizing my rack tool and it is

16:57:33giving you some kinds of response. As

16:57:34you can see the document highlight that

16:57:36uh predicting the amount of rainfall

16:57:38recorded in millimeter uh is uh crucial.

16:57:42It it uh notes that uh conventional

16:57:46methods for forecast uh for for seeing

16:57:49rainfall using equipment based on

16:57:52climate coordinate uh coordinations like

16:57:54temperature, humidity and weights are

16:57:57not productive. Okay. Instead of uh

16:57:59instead the paper process using the

16:58:01machine learning uh pro uh procedure and

16:58:05specifically

16:58:07predictive regression analysis

16:58:08technique. Okay. So yes uh if you go

16:58:11through the paper guys you will be able

16:58:12to see the same things this paper paper

16:58:14covers actually we proposed some

16:58:16regression method for this uh rainfall

16:58:18measurement technique. Okay. Now we can

16:58:21you can also ask any other things like

16:58:23say what is the methology

16:58:30uh methodology

16:58:33of

16:58:35this paper

16:58:40in methodology.

16:58:44Okay. Now I'll send this prompt.

16:58:48Now see it is again using the rag tool

16:58:51and it is uh it is giving you the entire

16:58:54methodology uh we have written in the

16:58:56paper. You can see uh this is the entire

16:58:58methodology. So if you go through our

16:59:00paper methodology you will able to see

16:59:02the same things we are discussing there.

16:59:04Okay. So that means like chart GPT we

16:59:06are able to upload any kinds of

16:59:08documents. Okay. And we can perform the

16:59:10conversation. So in charge also you can

16:59:12try you can upload your documentation.

16:59:14Okay. And you can do the conversation on

16:59:16top of that. And we have also integrated

16:59:18the uh tracing features with our agentic

16:59:21chatbot. That means it will continuously

16:59:23monitor our agentic chatbot. Okay. And

16:59:25we are continuously tracing the

16:59:27execution on the Langismith platform

16:59:30guys. As you can see these are all of my

16:59:33trace. Okay. And you can monitor the

16:59:35entire trace entire let's say

16:59:37application uh in this Langismith

16:59:39dashboard only. Okay. So this part I

16:59:42also showed uh in my playlist uh just go

16:59:44through and check that that how we can

16:59:46add this langismith functionality inside

16:59:48our um application. Okay. So yes uh this

16:59:52is the features guys I have added uh

16:59:54inside our agentic chatbot and trust me

16:59:56this is uh very much important whenever

16:59:58you are creating aentic system. Nowadays

17:00:00all the agentic uh applications are you

17:00:03uh applications are having this kinds of

17:00:05RG functionality that means uh you not

17:00:08only you can um do the conversation with

17:00:10the tools and the um default large

17:00:13language model instead of that you can

17:00:15upload your private documents and you

17:00:17can continue the conversation on top of

17:00:19that okay everything is possible here so

17:00:22uh yes guys this is the application and

17:00:24apart from that this application uh can

17:00:26also um handle different different

17:00:28conversation let's say if I'm asking

17:00:30Tell me the latest. Okay. Latest news

17:00:37uh of FIFA.

17:00:41Okay. 2026

17:00:45did uh Brazil

17:00:48on the game.

17:00:50Now see this is the question. This is

17:00:52the latest information I'm asking and my

17:00:55agentic chatbot will be using some kinds

17:00:57of search tool and it will give me the

17:00:59response. Now see it is using tably

17:01:01search tool. I already told you about

17:01:03what is tab right and it is doing the

17:01:05internet search tool. Uh it is doing the

17:01:07internet search and it is giving you the

17:01:08realtime response as you can see. Yeah.

17:01:11So this is the answer. In the FIFA World

17:01:13Cup 2026

17:01:16a group C match which ended in a one by

17:01:18one draw. Okay. Then uh Venicius Junior

17:01:22scored Brazil in this uh simulated game.

17:01:25Okay. So this was the like match guys.

17:01:28If you have already watched that Brazil

17:01:30match, you saw like uh this was a draw

17:01:32match actually and this uh Venicius

17:01:36Junior actually scored um uh one goal

17:01:39for the Brazil. So yes guys that's how

17:01:41our agentic uh chatbot works and uh you

17:01:44can upload any kinds of documents right

17:01:46now and you can uh start the

17:01:48conversation on top of that apart from

17:01:50that whatever functionality we have

17:01:51created so far whatever tools we have

17:01:53integrated so far it will be working

17:01:55like a same right so now let's start

17:01:57implementing this uh functionality

17:01:59inside our agentic chatbot but before

17:02:01that first of all I want to give you the

17:02:03idea about uh rag what is retable

17:02:06augmented generation techniques and uh

17:02:09why it is useful. Okay. And how this

17:02:12system works. Okay. First of all, we'll

17:02:13try to understand then we'll start the

17:02:16development guys. So guys uh as you can

17:02:18see uh rag in aentic chatbot it's a very

17:02:21important features uh not only in

17:02:24agentic chatbot uh whenever you are

17:02:26working with the uh generative AI

17:02:29technology especially with the large

17:02:30language model this rag is very

17:02:33important uh like component of that. uh

17:02:35if you have already studied about JNA I

17:02:37think you already work with rag concept

17:02:40right so rag helps us actually in three

17:02:43majors uh uh actually field one is the

17:02:46outdated knowledge so I think you know

17:02:48whatever large language model you are

17:02:51using it has a knowledge cut off right

17:02:53so if I'm talking about the let's say

17:02:56GPT 4 or GPT 3.5 right uh it has a

17:03:00knowledge cut off till 2021 uh this

17:03:03model got trained

17:03:05And after that actually whatever um new

17:03:08data came in the internet this model

17:03:10doesn't have the access to that data

17:03:13right because it has a knowledge cutoff

17:03:15that means if you are asking anything

17:03:16regarding after that date this model

17:03:19won't be able to give you the response.

17:03:21So it's not like that again you have to

17:03:22fine-tune that model okay on the new

17:03:24data because finetuning at the end it's

17:03:26a costly task. uh for this you need a

17:03:29good um instance, you need good

17:03:31infrastructure, you need lots of money,

17:03:33you need you need lots of data, right?

17:03:35So that's why researcher introduced the

17:03:37rack concept and with the help of rag

17:03:39actually you can give external data to

17:03:43the large language model as a knowledge

17:03:45base and your LM will be able to

17:03:48generate the response uh you are asking

17:03:51about the latest information you have

17:03:53already given right so this is the

17:03:55concept of the rag so that's why if if

17:03:57your model has outdated knowledge that

17:04:00time rag is very important for that and

17:04:03only things you have to create a detail

17:04:05knowledge base, okay, with your custom

17:04:07data. Now, the second thing is the

17:04:09private data. Okay, so what is private

17:04:11data? Uh private data means let's say um

17:04:14uh just I showed you one example. I

17:04:16uploaded my paper, right? I uploaded my

17:04:18research paper. So this research paper

17:04:20is my private data and I want to perform

17:04:23some conversation on on top of my

17:04:25private data. I want to understand about

17:04:27my private data. Not only research

17:04:29paper, you can upload any kinds of

17:04:31private documents of yourself. You can

17:04:33upload about your life story. You can

17:04:35upload about your let's say any kinds of

17:04:38inventory list. Okay. Anything you can

17:04:39upload and you can perform the

17:04:41conversation on top of that. Okay. So

17:04:43this private data actually is not

17:04:45available in the LLM. Okay. The default

17:04:48LLM we are using. So that's why uh we

17:04:51have to create this rack technique so

17:04:52that I can upload any kinds of private

17:04:54documents and I can start uh doing the

17:04:56conversation on top of that. Okay. I can

17:04:59ask anything. I can get any kinds of

17:05:01feedback from my um like chatbot. Then

17:05:04the third is the hallucination.

17:05:05Hallucination uh happens let's say

17:05:07whenever uh you are uh asking your agent

17:05:11uh uh to do something. Let's say you are

17:05:13asking give me some um give me some

17:05:16let's say uh research topic link. Okay.

17:05:20Uh for that particular topic let's say

17:05:22this topic your u um agentic uh chatbot

17:05:26doesn't know right. uh let's say this is

17:05:28completely new topic uh this is not

17:05:30available uh in the um in the large

17:05:34language model knowledge base so that

17:05:35time what will happen uh it might

17:05:37generate some wrong URL right it might

17:05:39generate some wrong URL and if you go to

17:05:41the URL you will be able to see this URL

17:05:43is not working this research article is

17:05:45not working right so instead of what you

17:05:47can do maybe you can uh give some of the

17:05:50uh resources okay you can give some of

17:05:52the document uh to your agentic chatbot

17:05:55uh as a external knowledge and you and

17:05:58uh tell like okay now refer this uh

17:06:00actually knowledge and you can generate

17:06:02some um like research topics or let's

17:06:04say URL okay on top of that so that time

17:06:07actually your LLM will not do the

17:06:09hallucination but if you are not doing

17:06:10that uh there is a possibility your um

17:06:13chatbot will do the hallucination okay

17:06:16uh it might generate something wrong

17:06:18information for you so that's why this

17:06:20RZ technique is super important whenever

17:06:22you are creating this kinds of system

17:06:24that's why nowadays all of the

17:06:25application you have seen like charg

17:06:27GPT, Gemini. Okay. Uh these are the

17:06:29application are using this uh RA concept

17:06:32in their um application. Uh that means

17:06:34you can upload any kinds of documents.

17:06:36Okay. PDF whatever and you can perform

17:06:38the conversation on top of that. Now

17:06:41let's try to understand how this uh rag

17:06:43works. So this rag came from actually in

17:06:45context learning techniques. So in in

17:06:47context learning what happens. So this

17:06:49is the like highle diagram of this in

17:06:52context learning. So here we not only

17:06:54pass a query okay to the large lang

17:06:56based model uh with the help of with

17:06:59this query we also give some kinds of

17:07:00external context okay then we prepare a

17:07:03prompt and this prompt will try to send

17:07:05to the large language model and large

17:07:07language model will uh generate some

17:07:09kinds of response now let's try to see

17:07:11this part in action so what I'm going to

17:07:13do I'm going to give you one example

17:07:14let's say uh here you are asking about

17:07:18your um let's say paper so I uploaded

17:07:22one paper I you remember called rainfall

17:07:23measurement paper. So if I ask directly

17:07:26this question okay to my large language

17:07:29model let's say here I'm using very old

17:07:30large language model and this large

17:07:32language model trained till let's say

17:07:342019

17:07:36okay and if you see my paper guys this

17:07:39paper I published around 2021 okay so

17:07:43this paper information definitely it's

17:07:45not available inside my large language

17:07:47model so if I'm asking about this uh

17:07:49let's say paper let's say tell me about

17:07:50this rainfall measurement paper okay

17:07:53rainfall

17:07:56rainfall paper. Okay, let's say I'm

17:07:58asking my large language model. This is

17:08:01my entire prompt. I'm passing to the

17:08:03large language model. That time large

17:08:05language model will definitely not uh

17:08:07provide the response because it doesn't

17:08:09have the information. Okay. So in in

17:08:11context learning what happens instead of

17:08:13giving the direct query you can also

17:08:15pass the context. Context means here you

17:08:17can give the entire paper. Okay. You can

17:08:19pass the entire paper. Okay. you can

17:08:22extract all of the uh content or you can

17:08:24directly uh give the paper okay as a

17:08:26context and you can combine a prompt.

17:08:28Let's say uh tell me about rainfall uh

17:08:31measurement paper and here is the

17:08:37uh here is the

17:08:41paper

17:08:42content.

17:08:44Okay, content and you are already

17:08:46passing the paper here, right? You're

17:08:47already passing the paper here. That

17:08:49means you are giving the query as well.

17:08:52Okay, you are also giving the paper.

17:08:55Okay, then you are asking tell me about

17:08:56the rainfall measurement. Now your LLM

17:08:59has the context as well as the query.

17:09:01Now it can generate the response. Okay,

17:09:04you are ask uh it it can generate the

17:09:06response the question you are asking by

17:09:08using this particular context. Okay. In

17:09:10real life also let's say if I'm asking

17:09:12you anything which is completely new and

17:09:15let's say if you don't don't know that

17:09:17information if you don't know that let's

17:09:18say question that time you will directly

17:09:20say okay I don't know but if I give you

17:09:22some kinds of context let's say I will

17:09:24ask about uh tell me about um let's say

17:09:28uh Brazil team okay uh so what you will

17:09:31do um if I give you some context let's

17:09:34say if I give you list of the uh Brazil

17:09:36uh player uh uh let's say name list then

17:09:39you'll be able to uh give me okay these

17:09:41are the player players are available in

17:09:44Brazil team right it's it's like that

17:09:46that means you are not only giving the

17:09:48query but also you are providing the

17:09:50answer that means the context okay the

17:09:52entire paper now is referring that paper

17:09:55and it is generating the question you

17:09:57are asking let's say you are asking

17:09:58about rainfall measurement it will be

17:10:00able to uh understand about the rainfall

17:10:02measurement from the paper and it will

17:10:04give you some kinds of refined response

17:10:05so that's how in context learning works

17:10:07okay but the problem with in context

17:10:09learning is so let's say here the paper

17:10:11I'm uploading it might have lots of

17:10:14content right it might have lots of

17:10:15content content means if you see the

17:10:19paper all of the words you can consider

17:10:21as a token right and if you count all of

17:10:23the token uh there is a chance this

17:10:25token okay number of token um might

17:10:29increase than your uh input length of

17:10:33the model input limit

17:10:36of lm okay so every model has a input

17:10:39input limit right uh token limit if you

17:10:41open any kinds of model right uh in uh

17:10:44Google you will see that it has a input

17:10:45limit token limit let's say uh the model

17:10:48we are using this model can take uh

17:10:501,000 okay 1,000 token input at a time

17:10:54but if you're passing uh the entire

17:10:56paper let's say the paper token I have

17:10:58counted it is around 5,000 token okay

17:11:025,000 token that time definitely this

17:11:04token is um um bigger than your input

17:11:07token limit that time that would be an

17:11:09error. Okay, there would be some kinds

17:11:11of input error. That means you can't

17:11:12pass uh that many of token as an input

17:11:14to the model. Okay, so this was the

17:11:16problem with the in context learning. So

17:11:18that's why from the in context learning

17:11:21one concept has introduced the concept

17:11:23name is rag. Okay, so in rag actually

17:11:26what we do instead of giving the entire

17:11:28documents directly we perform something

17:11:30called chunking we perform something

17:11:31called splitting. Okay, we uh divide our

17:11:35entire content in a different chunk,

17:11:36different split and we pass this uh

17:11:40different chunk, okay, one by one to the

17:11:43model. So this is the like updated

17:11:44architecture as you can see. Let's say

17:11:46here I am having an entire documents.

17:11:48First of all, we'll try to uh extract

17:11:50all of the content from the document

17:11:52itself. Okay, we'll load the documents

17:11:54and we'll extract all of the content

17:11:55from the documents as you can see. Okay,

17:11:58and once it is done, we'll try to

17:11:59perform some kinds of chunking

17:12:01operation. We also call it as a speeder

17:12:03text splitter. Split means let's say

17:12:04this is my entire docs, right? This is

17:12:06my entire content and I'll just try to

17:12:09create a different different chunk. I'll

17:12:11try to divide this content okay in a

17:12:12different different part. This is called

17:12:14text splitter. Okay. Now let's say if

17:12:16your original documents it is around

17:12:195,000 token. Okay. Now after doing this

17:12:22splitter or chunking every uh every

17:12:24let's say chunk will have let's say

17:12:271,000 token. Okay. 1,000 token. That's

17:12:30how you can create five uh five actually

17:12:33chunk here or let's say four chunk here

17:12:34or six chunk here. It's completely up to

17:12:36you. Okay. But it uh this input should

17:12:39be uh less than your model input. So

17:12:42once you have created the chunk then you

17:12:45will be using some kinds of embedding

17:12:46model. I think you know about embedding

17:12:48model. What embedding model does?

17:12:49Basically embedding model we use to

17:12:51convert our text to the number because

17:12:53the large language model we are using

17:12:55right it can't take directly the English

17:12:57text as an input. Okay. Okay, internally

17:12:59because this is some kinds of

17:13:00mathematical equation. So we have to

17:13:02convert as a number, right? We'll be

17:13:04using this embedding model and we'll

17:13:05generate some kinds of vector embedding.

17:13:07This is called vector embedding, right?

17:13:09This called vector embedding. Now this

17:13:11vector embedding we have to store

17:13:12somewhere. This is called actually

17:13:14vector database and we call also call it

17:13:15as a vector store. Okay, especially in

17:13:18rag uh you will be using vector database

17:13:20not a traditional normal database. Okay,

17:13:23here you have to use vector database

17:13:24because there's a concept called

17:13:25similarity search or semantic search you

17:13:28have to perform and this is only

17:13:29possible in vector database only right

17:13:31then you'll be storing all of this

17:13:32vector in the vector database okay now

17:13:35this will become your knowledge base

17:13:36this will become your knowledge base

17:13:38guys okay now this knowledge base we

17:13:40have to connect with our large language

17:13:41model right now okay now this part

17:13:43actually we perform the retar operation

17:13:46that means if user is asking about a

17:13:48question about the let's say the paper I

17:13:50have uploaded rainfall measurement so

17:13:52First of all, this question will go to

17:13:54the knowledge base. Okay, because

17:13:56knowledge base has all of the okay all

17:13:59of the uh information about the rainfall

17:14:02measurement because I have uploaded the

17:14:03entire paper. It is available here,

17:14:04right? So then uh this retriever it will

17:14:07go here and it will perform a semantic

17:14:08source operation and it will only

17:14:10extract that part which is required for

17:14:12the query. Let's say here I'm asking

17:14:14about what is rainfall measurement. But

17:14:16if you open the paper instead of

17:14:17rainfall measurement, it it has lots of

17:14:19like uh see topic. It has the related

17:14:22works. It has the methodology. Okay.

17:14:24Then it has some comparison. It has some

17:14:26data set introduction. Okay. It has some

17:14:28diagram pre-processing section. So I

17:14:30don't need all of the information. I

17:14:32only need that part where it covers what

17:14:34is rainfall measurement exactly. Okay.

17:14:36So with the help of the similarity

17:14:37search, it will only found that

17:14:39information. Okay. Which is you are

17:14:41asking in the query and it will give you

17:14:43that particular uh relevant response. So

17:14:46here you can see this question will go

17:14:47to the knowledge base and knowledge base

17:14:49will return some relevant response based

17:14:51on the query you are asking most

17:14:52relevant chunk okay we call it as a most

17:14:54relevant chunk or context then you are

17:14:56combining the query also here you can

17:14:58see the query you are also combining

17:15:00then you are preparing the final prompt

17:15:01that means you can you are combining

17:15:03this query with the prompt let's say uh

17:15:05uh this my query is what is rainfall

17:15:07measurement and you got the rainfall

17:15:09measurement answer now we are combining

17:15:11the prompt uh what is tell me about

17:15:15rainfall measure measurement and here is

17:15:16the context then you are generating a

17:15:19entire prompt and this prompt you are

17:15:20passing to the LLM. Now LM has the query

17:15:23as well as the context. Okay, the

17:15:25question you are asking then LLM will

17:15:27try to read that it will understand and

17:15:29it will refine some kinds of uh final

17:15:32response and it will uh show you this

17:15:35particular response. Okay, so that's how

17:15:36the entire RG system works. Okay, so

17:15:39this is the better version of the in

17:15:41context learning because in context

17:15:43learning we pass the entire documents.

17:15:44Okay, and what is the problem with the

17:15:46entire documents? because it has a input

17:15:48limit. But here uh if you are giving

17:15:51let's say thousands of thousands token

17:15:53input as well, it doesn't matter because

17:15:55it perform the chunking operation. It

17:15:57perform the splitting operation and all

17:15:59of the entire documents would be

17:16:00splitted into different chunk and it

17:16:02will store in the vector database. Then

17:16:04you can perform any kinds of uh ret

17:16:06operation. Okay, similarity search

17:16:08operation and you can perform this kinds

17:16:10of question and answer on top of your

17:16:12private documents. So that's how this RG

17:16:15system works guys. Okay, I hope this

17:16:16part is clear to all of you. Now, we'll

17:16:18try to implement this system guys inside

17:16:21our aentic chatbot. But before that, I

17:16:23want to show you the notebook

17:16:24experiment. Okay, like uh let's say I

17:16:27will uh show you the step-by-step

17:16:29procedure how we can implement this.

17:16:32Okay, with our uh agentic chatbot uh

17:16:35because we are using langraph how we can

17:16:37do it with the help of langraph. I'll

17:16:38show you the entire experiment and once

17:16:40our experiment is working then I'll try

17:16:42to integrate inside our actual code. So

17:16:45guys uh as you can see this is our

17:16:47entire code and this code I have already

17:16:49uploaded in my GitHub and link is given

17:16:51in the description. So here in the

17:16:53notebook folder guys I added another

17:16:55notebook called rag demo. Okay just open

17:16:57this notebook and here I already written

17:16:59all of this code uh required to

17:17:02implement this functionality right

17:17:04instead of writing from scratch because

17:17:05it will take lots of time instead of

17:17:07that maybe I can go through my

17:17:09implementation right. So here just try

17:17:11to select your environment. After that

17:17:13uh first of all you have to import all

17:17:15the necessary libraries. Okay. So here I

17:17:17have already imported all the necessary

17:17:19libraries guys. As you can see open AI

17:17:21open embeddings. Okay. Even I have also

17:17:24um imported this uh Google generate. uh

17:17:27because uh if you don't have openi API

17:17:30key if you don't have openi let's say uh

17:17:33provider that time you can use uh

17:17:35alternative uh way uh for running this

17:17:37project you can use gemini model and

17:17:39gemini model by default you will be

17:17:41getting some free uh free access okay

17:17:43you can use that particular model so

17:17:44that's why I'm importing this uh gemini

17:17:46and if you want to use this gemini you

17:17:48have to import this chat Google generate

17:17:50functionality and I have already

17:17:52installed this in my requirement as you

17:17:54can see this uh this library I have

17:17:55already installed there apart from that

17:17:57you have to also uh import this Google

17:17:59generate API embeddings because I don't

17:18:01have uh open AAI embedding model right I

17:18:04don't have open API key that time I can

17:18:05use uh Gemini embedding model okay so

17:18:08that's why both I have imported let's

17:18:10say whichever you have you can use them

17:18:12okay then load ENB pi PDF loader see if

17:18:15you are implementing RG that time this

17:18:18thing is required if you are uploading

17:18:19the PDF document that time from langen

17:18:22community you can uh import this pi PDF

17:18:25loader this is already available in

17:18:26document loaded and for this you have to

17:18:28install some library like uh langen

17:18:31community uh then you have to install

17:18:34fire CPU fire is a vector database okay

17:18:36apart from fi actually there are some

17:18:38other vector database are available like

17:18:40uh web is there chromad is there pine

17:18:42cone is there okay maybe in future

17:18:44project we'll try to use but uh in this

17:18:46project I'm going to use fires okay fs

17:18:48vector database and fires is a in um in

17:18:51storage database that means uh it will

17:18:53create uh the database inside your uh uh

17:18:56computer. Okay, inside your computer

17:18:58computer um hard drive and uh there are

17:19:01some cloud-based uh uh vector database

17:19:03are available like web 8 is there then

17:19:05pine cone is there you can store all of

17:19:07your vectors in cloud okay this part I

17:19:08will also show you later on then pipe

17:19:10vdf you have to also install because uh

17:19:12we'll be uploading PDF documents here so

17:19:14in this project guys uh only just to

17:19:16show you I I'll be considering the PDF

17:19:18documents but if you want you can also

17:19:20upload docs format you can upload excel

17:19:22format okay this part you can go through

17:19:24the simply length documentation Okay,

17:19:26there you will try to see how to load

17:19:27the documents, how to load the Excel

17:19:29documents. Okay, each and everything

17:19:30they have given. But here I'm going to

17:19:31only consider PDF documents. Then one

17:19:34another uh library you have to install

17:19:36called langent text splitter. And this

17:19:38langent text splitter we'll be using for

17:19:40this uh for this actually chunking

17:19:42operation. Okay. Uh from the entire

17:19:44document will perform different

17:19:45different chunk right and with the help

17:19:46of this langent text splitter will be

17:19:48doing this particular part. And here I

17:19:51have already specified the version.

17:19:52These are the version you have to

17:19:53install. And how to install? Open your

17:19:55terminal and just execute pip installer

17:19:58requirement.txt. Okay, if you do that it

17:20:01will install in your system. Okay, so I

17:20:03have already installed all of the

17:20:04necessary library guys. I don't need to

17:20:06install again.

17:20:09But if you're doing it for the first

17:20:10time, you have to install these other

17:20:12library. Okay, I mean all the comment I

17:20:14have also given in my readmi.mmd file.

17:20:16So once it is done guys, let's import

17:20:18all of the necessary library. You can

17:20:19see I'm importing this uh recursive

17:20:22character text splitter from langent

17:20:24text splitter and with the help of that

17:20:26we'll be performing the chunking. Then

17:20:29uh we are also importing a vector

17:20:30database. It is also available inside

17:20:32langen community vector store. I'm

17:20:34importing fires. Okay. And fires has

17:20:36implemented by meta team. Okay. By

17:20:39Facebook uh this uh vector database has

17:20:42implemented. Then um we are importing

17:20:45tools graph then annotated type dick.

17:20:47These are the things are common add

17:20:49messages, human message based messages.

17:20:51Okay. And from lang graph we are also

17:20:53importing some pre-built uh let's say

17:20:56node like tool node and tool condition.

17:20:58So these are the things are common.

17:21:00Okay. So this is our entire import.

17:21:01Let's import them one by one.

17:21:04So see guys I have imported

17:21:06successfully. Now we have to load the

17:21:08environment variable. So as you can see

17:21:10we already have the environment variable

17:21:11here. And here I have already added all

17:21:14of my API key. Uh I used TA API key. I

17:21:18used open weather API key, Google API

17:21:21key. Okay. And this API key I collected

17:21:22from Google AI studio. If you want to

17:21:24use Gemini model. So in my previous

17:21:26video guys, I showed you showed you this

17:21:28part. Okay. How to collect all the API

17:21:30key. Uh you can go through that

17:21:31recording. Then from Langmith tracing

17:21:34guys, we have added these three uh four

17:21:36things. And here you have to pass the

17:21:38LSmith API key as well from the lang

17:21:40platform. Okay. So these are the

17:21:42credential you need. Now let's load all

17:21:44of them. Now if you're if you are

17:21:46already having this open API key you can

17:21:48uncomment this line and you can use uh

17:21:50open API model open AI model and if you

17:21:53don't have open AIP key if you have only

17:21:55Gemini key that time you can use this

17:21:57definition okay so here we are using

17:21:59Gemini model so let's load the Gemini

17:22:01model now we'll try to uh load my paper

17:22:05okay one of my documents so here I

17:22:07already kept my documents my paper that

17:22:09means this paper I already

17:22:12uh I already copied in the folder Okay,

17:22:14you can use any other documents as well.

17:22:17So this is the name of the PDF. So I

17:22:19have to load this particular PDF. Now

17:22:21for loading it, I'm using PI PDF loader

17:22:23because this is a PDF file. Now let's

17:22:25load that. Okay. So once you do the

17:22:27loaded dotload operation, you will be

17:22:29able to see the entire documents. Now

17:22:30let me show you the entire documents. So

17:22:32this is the documents. Now by default

17:22:34langen loads uh your documents into

17:22:36document format, okay, as a page by

17:22:39page. So how many page this is having? I

17:22:41think this uh PDF is having 15 pages.

17:22:44Okay. 15 pages content I have extracted.

17:22:47Okay. And you can see some metadatas are

17:22:48available but the main part is that the

17:22:50content. So let me show you uh here is

17:22:54the content page content. Okay. And in

17:22:56the past content you will have all of

17:22:57the uh text. Okay. I have in my PDF uh

17:23:01and these are some meta information. Now

17:23:04we'll try to perform this this

17:23:05operation. That means we have extracted

17:23:07the entire document. Now we have to

17:23:08perform the chunking guys. Okay. we have

17:23:10to perform the chunking. Now this part

17:23:12actually performs the chunking

17:23:13operation. We are importing recursive

17:23:15character explainer and here we are

17:23:16defining the chunk size. Okay, that

17:23:18means each of the chunk will have how

17:23:20many token. Okay, here we have defined

17:23:22each of the chunk will have 1,000 token.

17:23:25Okay, uh and there is a um another

17:23:28parameter you have to provide called

17:23:29chunk overlap. This chunk overlap

17:23:31basically uh means that uh there it has

17:23:34to add some overlapping. Okay, over

17:23:36overlappinging means let's say let's say

17:23:39it is uh it is extracting 1,000 token.

17:23:42Okay, let's say till here you have 1,000

17:23:44token. Okay. Now, next again it will

17:23:47create another chunk, right? Uh let's

17:23:48say from here it will start. But if

17:23:50there is a chunk overlap, let's say 200,

17:23:52what it will do? It will go back 200

17:23:55word. Let's say 200 word uh starts here,

17:23:57then it will create uh again uh 1,000

17:24:00tokens from here. Okay, that means from

17:24:02your previous chunk, okay, there is a

17:24:05overlap I am creating so that my model

17:24:07can understand, okay, after this token,

17:24:09after this let's say chunk, this chunk

17:24:11is starting. Okay, so that's why this

17:24:13overlapping is important. And this is

17:24:14the concept of rag. Okay, I already

17:24:16covered in my um YouTube channel. There

17:24:19is a dedicated generative playlist I'm

17:24:21having. You can go through that

17:24:22playlist. There I covered this rank

17:24:25concept in detail. Okay, you can

17:24:26understand these are the concept there.

17:24:28Then after that we are splitting the

17:24:30documents. We are passing the entire

17:24:31documents and you can see we are

17:24:33creating the chunk. Now total I got 44

17:24:37chunks here. Okay, that means I got 44

17:24:39chunks here. Okay. By divide uh by um

17:24:42doing the splitting of my entire

17:24:44content. Okay. And each of the chunk

17:24:47will have 1,000 token because our chunk

17:24:49size was 1,000 token. And this this is

17:24:52completely hyperparameter number. You

17:24:54can also change this number as per your

17:24:56requirement. Now guys, we'll be u

17:24:59defining the embedding model right now.

17:25:00And here if you have openi uh API guys,

17:25:03you can execute this code. uh this code

17:25:06actually loads the openi embedding model

17:25:08and it stores in the files uh vector

17:25:10database but if you don't have openi you

17:25:13can execute this code and this code uses

17:25:15gemini embedding model here we you can

17:25:17see I'm using this gemini importing

17:25:18model and we're storing our vectors okay

17:25:21you are storing our vectors inside my

17:25:23files vector database okay files vector

17:25:25database and for this this is the code

17:25:27files from document and you have to give

17:25:28all of the chunk and your embedding

17:25:30model as well okay now if you execute

17:25:32this code

17:25:34now See here you will be able to see um

17:25:38one uh one database but uh this is only

17:25:43visible if you write this line.

17:25:47Huh? Vector store save local. Okay. And

17:25:50here you have to give the name. Now if I

17:25:52execute

17:25:54again

17:25:58now see it has created the files

17:26:01database here. Okay. In your computer.

17:26:03Okay. Okay, that's why I told you this

17:26:04is a incomputer database. It will store

17:26:06inside your computer storage. Okay, now

17:26:09we'll uh see the vector store. So this

17:26:12is the object of the files vector store.

17:26:14Now we'll just try to create a uh

17:26:16retriever. Okay, retriever means if you

17:26:18want to perform this semantic s

17:26:20operation, you have to create a

17:26:21retriever of the entire database you

17:26:23have created because user will give a

17:26:25question and this question will first of

17:26:27all go to the vector tree. It will uh

17:26:29extract the most relevant chunk and it

17:26:31will combine your query. Then it will

17:26:33prepare a prompt. Okay, for this

17:26:34operation, you have to create this

17:26:35retriever object. How to get the

17:26:36retriever object? You just need to write

17:26:38vector store as ret. Okay, uh then here

17:26:42you have to provide the search type. And

17:26:43here we'll be using similarity search

17:26:45operation. And the search keyword is

17:26:46four. That means it will extract four

17:26:49relevant response at a time. Okay. Let's

17:26:50say if you're asking about what is

17:26:52rainfall measurement, it will go to the

17:26:53vector store and four relevant chunk it

17:26:56will try to extract. Okay. So this is

17:26:58the parameter. If you make it as five,

17:26:59it will extract five chunk. It will if

17:27:01you uh give let's say two it will only

17:27:04extract uh two chunks. Okay, that's how

17:27:05this things works. Now we'll try to

17:27:07create the retr. So once ret is created

17:27:10guys now these things we want to

17:27:13integrate inside of agentic chatbot and

17:27:15agentic chatbot if you're using rag

17:27:17concept you have to uh you have to

17:27:19actually create a tool of your entire

17:27:22rag you have created right but in simple

17:27:24rag we don't create the tool we just

17:27:26directly perform uh the question and

17:27:28answer on my retriever with my large

17:27:30language model okay but here we we have

17:27:32created agentic chatbot and aentic

17:27:34chatbot works with the tool so guys uh

17:27:36as you can see I have uh written this

17:27:38retriever functionality as a tool and

17:27:41this is the function I have created and

17:27:43I made it as a custom tool. So before uh

17:27:46showing you this one first of all I want

17:27:47to show you how retr works. Let's

17:27:49execute retr independently. So I'll copy

17:27:52this one

17:27:54uh retinvoke and here let's pass a

17:27:57query. I'll give uh what is

17:28:01rainfall

17:28:04measurement. Okay. Now see this will uh

17:28:07return you

17:28:09uh this will return you actually four

17:28:13relevant information

17:28:19see four relevant information why

17:28:21because this s keyword you have set it

17:28:23as four this k parameter is four right

17:28:25now that's why four relevant response it

17:28:27is giving you see these are my four

17:28:30relevant chunk I am getting about the

17:28:32rainfall measurement now this will go to

17:28:34the my and this will go to the my uh

17:28:38query uh that means I'll add the query

17:28:39here and we'll prepare a prompt and this

17:28:41will go to the lm now lm has the context

17:28:44as well as the question and lm will able

17:28:46to generate the final response for me

17:28:48okay so that's how this uh uh this

17:28:51system is working okay that's how this

17:28:53ret is working now have to make it as a

17:28:55tool because here we are creating a

17:28:57aentic chatbot and agentic chatbot works

17:28:59with a tool okay now here you can see I

17:29:02have written the same thing just in a

17:29:04function

17:29:04it will take the query. I'm doing the

17:29:06invoke operation. Whatever documents I'm

17:29:08getting, first of all, I'm checking if

17:29:10uh document not found. So no no relevant

17:29:13information was found and if it is found

17:29:15then I'm extracting the u documents. So

17:29:18here you can see some metadata

17:29:19information are available. So from this

17:29:21metadata I'm uh extracting the document

17:29:23sources. Okay, sources means which PDF

17:29:25it is uh referring. You can see here

17:29:28there is a section called source

17:29:32title is there, source is there. You can

17:29:33see source. Okay. So that's how I'm

17:29:35extracting. These are the meta

17:29:36information page and content. So these

17:29:38information I'm extracting and we are

17:29:41joining in this u um like um list and we

17:29:45are returning it. That's it. Okay. So

17:29:47this is the function I have written and

17:29:49we made it as a tool because this is our

17:29:51custom function and if you want to make

17:29:52it as a custom function u as a tool then

17:29:55you have to use this length and tools.

17:29:57Okay. Decorator there. Uh we have

17:29:59already learned it learned this

17:30:00previously right. So this is my tool

17:30:02right now and I named it as a rack tool.

17:30:05Now further step will be same that means

17:30:07we'll be adding the tools inside a list

17:30:10and we'll try to bind that with our

17:30:12large language model. So you can see I'm

17:30:14binding binding my large language model

17:30:16with my tools. Execute. First of all

17:30:19I'll execute this code then execute

17:30:22this. Okay. Now we have to define the

17:30:25state. Now this is our state and see

17:30:27here I haven't added other tools because

17:30:29I want to only show you the rag

17:30:31functionality that's why I'm only using

17:30:32one tool but in my actual code I have

17:30:34also some other tool like calculator web

17:30:36search tool then uh weather tool then

17:30:39stock market tool okay I think remember

17:30:41then this is our nodes so in the node

17:30:43itself I'm using my lm with the tools

17:30:46okay this particular u updated one and

17:30:49here is another node which is tool node

17:30:52now here I am defining my graph

17:30:53structure and we are adding the edges

17:30:55And I think this part you already know

17:30:57how to add the tool nodes and tool

17:30:59conditions there. Now finally this is

17:31:01our graph and this graph we also saw in

17:31:03my previous implementation.

17:31:05Now guys we'll try to invoke our uh

17:31:07chatbot. Now see this is our regular

17:31:09message here. I'm just doing um

17:31:11chatbot.invoke. I'm giving a message

17:31:13hello. And for this it doesn't need any

17:31:15kinds of rack tool. Uh it will generate

17:31:17the answer from the large language model

17:31:19only. Hello. I'm here to uh answer your

17:31:22question about the PDF document. Okay.

17:31:24Now uh here I'm uh passing my uh here

17:31:28I'm passing my prompt as you can see. So

17:31:31here I'll just try to tell um using the

17:31:34PDF u notes explain about the rainfall

17:31:38measurement technique in a conscious

17:31:39way. Okay. Now you'll see that uh it

17:31:42will use the rack tool and it will

17:31:44retrieve the information from the

17:31:45knowledge base and it is giving you the

17:31:47final response. As you can see, the

17:31:48provided documents primarily discuss

17:31:50rainfall prediction techniques using

17:31:51machine learning regression analysis

17:31:53rather than uh detailing specifically uh

17:31:56specific rainfall measurement

17:31:58techniques. Okay. And blah blah blah.

17:32:00Now if I only want to get the text, I'll

17:32:02just extract the text from here. Now see

17:32:04this is now final answer guys I'm

17:32:06getting. Okay. So that's how guys now we

17:32:08can perform any kinds of chat operation

17:32:10on my PDF I have loaded here. Okay. That

17:32:12means this architecture we have

17:32:14implemented in my notebook. Okay. I hope

17:32:17you clear guys. Now we'll try to uh add

17:32:20this functionality okay inside our app.

17:32:22So as you can see this is our app we

17:32:23created so far. Uh this was this was our

17:32:26final app. Uh final app I think last app

17:32:30we created this one app tool. Okay we

17:32:32integrated the tool. Okay. Now what I'm

17:32:34going to do guys I'm going to add this

17:32:37uh rag features with our actual

17:32:39application and we'll try to conclude

17:32:41this particular video. So guys uh we

17:32:43have seen the entire notebook experiment

17:32:45of the rag like how uh how to implement

17:32:48the rag functionality inside our aentic

17:32:50chatbot and main thing we have learned

17:32:52this tool right now we have to create

17:32:54this uh retriever as a tool and uh this

17:32:57tool we'll be using inside our aentic

17:32:59chatbot. So now guys we'll be

17:33:01integrating this features inside our

17:33:03actual agentic chatbot we have created

17:33:05so far. Now this was the last file I

17:33:07created apptools.py. Okay, this was the

17:33:09front end and the back end was uh this

17:33:12one aentic chatbot tools back end. Okay,

17:33:15this was my back end code. Now here what

17:33:18I'm going to do, I'm going to create u

17:33:22create another file. Maybe I can make a

17:33:24copy of this file.

17:33:26Copy.

17:33:29And I'm going to just paste it now. I'll

17:33:32just rename it. Okay, instead of tool

17:33:35back end, I'll give rag back end.

17:33:39Okay, I I'm keeping my old code as well

17:33:41so that you can get a reference. Okay,

17:33:42you can um you will have this code so

17:33:45that in future whenever you are

17:33:46practicing all of the code will remain

17:33:48same. Uh so agentic chatbot rag

17:33:51backend.py.

17:33:53Okay. So this is my updated code.

17:33:55Updated back end I'm going to write

17:33:56here. Okay. And in this code I'll just

17:33:59do the modification. And for front end

17:34:01also uh I'll just create another one

17:34:04this app tool. Right. Instead of app

17:34:07tool, I'll copy

17:34:09and I'll paste it first of all. Then

17:34:12let's rename it. Instead of tool, I'm

17:34:14going to give rag.py.

17:34:22Okay. Now, first of all, let's uh update

17:34:25our back end. So, I'll open my back end.

17:34:29And here update would be

17:34:32first of all we'll uh import all the

17:34:34necessary library

17:34:36whatever we have imported in my

17:34:38notebook. So this is my updated library

17:34:41guys as you can see pipdf loader

17:34:42recursive character splitter google

17:34:44generative uh yeah embedding okay files

17:34:46and all we are importing everything

17:34:48right then after that we'll be

17:34:52uh we'll be just loading our embedding

17:34:54model.

17:34:56So after large language model definition

17:34:58we'll just try to load our embedding

17:35:00model. Okay the embedding model I was

17:35:02using in my notebook. So here I think

17:35:04remember I was using this embedding

17:35:06model.

17:35:08Okay let me close some of the file. This

17:35:11file this file

17:35:13also this file.

17:35:23Now after that we'll just write a

17:35:25function. Uh this function will

17:35:28basically u take a PDF file and it will

17:35:32extract the documents. It will perform

17:35:34the chunking and after chunking it will

17:35:36store all of the chunk in my vector

17:35:38database. Okay that means this step I

17:35:40perform right this step I perform. Okay

17:35:43separately I'll just do inside a

17:35:45function. So let me show you this

17:35:47function I have already written

17:35:52after this embedding model.

17:36:00Just a minute.

17:36:08Uh here I have defined this model two

17:36:10times. Right? Okay. So I have to remove

17:36:20So what I can do I can

17:36:23remove and rewrite again. Okay, now I

17:36:25think it's fine. Now I have imported all

17:36:27the necessary library. This is my model.

17:36:29This is my embedding function. Sorry,

17:36:31this is my embedding model. Now we'll

17:36:33just write this function.

17:36:37So this is the function. I named it in

17:36:39this track document. This will take a

17:36:41file path and we are defining the

17:36:43database path that means it will create

17:36:45a folder called uh files database.

17:36:47Inside that uh all of the vector would

17:36:49be saved. Now we are loading the like

17:36:52file extracting the document performing

17:36:54the chunking operation. You can see

17:36:56chunking operation. After that we're

17:36:58storing everything in the files vector

17:36:59database and then we are saving this

17:37:01database inside our local. Okay. So this

17:37:03is the function we'll be using and this

17:37:05function we have to use from the front

17:37:06end. So whenever I'll upload any file

17:37:08from the front end that time I have to

17:37:10execute this function and this function

17:37:11will create my knowledge base. Okay.

17:37:13This knowledge base should be created.

17:37:16Okay. Now I'll just write another

17:37:17function for the retriever.

17:37:21Okay. So this function what it does

17:37:23basically it loads your uh vector

17:37:26database. Okay. That means the database

17:37:27we are creating knowledge base we are

17:37:28creating. First of all it will load with

17:37:30the help of files.load local we'll be

17:37:31loading this and we'll pass the

17:37:33embedding model. And there is another

17:37:35parameter you have to provide called

17:37:36allow dangerous dialization is equal to

17:37:38true. Then we'll create the ret again.

17:37:40So vector store as retr. We are giving

17:37:42the similarity s and this k parameter

17:37:45like that. Okay. This this part we are

17:37:47doing. Then we are creating the ret

17:37:49object. Now with the help of this retr

17:37:51object I'll be able to perform the

17:37:52inbuck operation. That means I'll be

17:37:54able to do the source operation.

17:37:56Similarity s operation. Okay. Now we'll

17:37:58just write our rag tool. React tool as a

17:38:01function.

17:38:05So this is our act to guys. As you can

17:38:06see we created the same same function.

17:38:09We copy pasted the same function from

17:38:10here. Okay this one. Now this will take

17:38:13the query. We are doing the first of all

17:38:15we're getting the ret. We're calling

17:38:16this function. Get retr. This will give

17:38:19me my ret object. I will do the invoke

17:38:21operation. Whatever document I will get

17:38:22I'll extract all of the content from

17:38:24here. Okay. Then I will return it.

17:38:26That's it.

17:38:32It's coming.

17:38:36Now after that we'll be defining all of

17:38:39our tools as it is. Okay, this will

17:38:41remain same. You don't need to change

17:38:42anything. Our search tool, our

17:38:44calculator tool, then our get stock

17:38:48price tool, then our get current uh

17:38:51current weather information tool.

17:38:53Everything will remain same. Only the

17:38:55change I have to do here.

17:39:00Okay. Here I have to add another tool

17:39:02which is my rag tool

17:39:08rag tool the function I have created

17:39:12okay this one this function I have to

17:39:15pass as a tool

17:39:18then we are doing the bind operations

17:39:20then we are defining the state and one

17:39:23more change we'll be doing inside our

17:39:25chat node uh now this is a simple chat

17:39:27node we created previously it doesn't

17:39:29have any kind of system prompt. Now

17:39:31we'll add a system prompt here. Let me

17:39:33show you my updated notes I have

17:39:35created.

17:39:38So this is my updated notes guys. Okay.

17:39:41So here I added a detail system prompt

17:39:43as you can see. Uh this is my system

17:39:45message. Um has you are a helpful

17:39:47agentic chatbot with access to several

17:39:49tools. Use tools uh you uh tool uses

17:39:52instruction. Use rack tool for a

17:39:54question about uploaded PDF or

17:39:56documents. Always retrieve relevant

17:39:58documents content before answering the

17:39:59PDF related questions. Use search tool

17:40:02for current events, recent information

17:40:04or or informations

17:40:07that requires the internet search. Use

17:40:09calculator uh tools for mathematical

17:40:11calculation. Do not calculate complex

17:40:13expression manually when calculator is

17:40:15available. Then get stock use whenever

17:40:18user asking about any kind of a stock

17:40:20price and get weather whenever user is

17:40:22asking about latest weather informations

17:40:24and answer general questions directly.

17:40:26uh when no tools is required do not

17:40:28invent informations from the uploaded

17:40:30documents. If the user ask about the PDF

17:40:33but no documents is available ask them

17:40:35to upload the PDF. Okay. After receiving

17:40:37a tool result provide a clear and

17:40:39helpful final answer. So that's how guys

17:40:41we defined a clear system message to our

17:40:44chatbot right now. Okay. So every aentic

17:40:47chatbot you will see it has a message.

17:40:49Okay. Okay, it has a prompt system uh

17:40:50system we call it as a system prompt and

17:40:52with the system prompt basically it uh

17:40:54performs all the operation that means

17:40:56whenever you are asking anything uh

17:40:58inside a chatbot okay it uh it works

17:41:01like a step by step how it works because

17:41:03it has a proper system prompt and this

17:41:05thing you have to provide okay so far we

17:41:07haven't given but now we have given a

17:41:09detailed system prompt because now we

17:41:11have made it more advanced now I want my

17:41:13chatbot to be work like a professional

17:41:15way okay that's why we have we have

17:41:17added this entire system prompt Now in

17:41:20the message you will give the system

17:41:21prompt as well as the state message user

17:41:23is giving then we are invoking it and

17:41:26whatever response we are getting just

17:41:27returning it. Okay. So this is a simple

17:41:29modification you have to do inside your

17:41:30chat node and all of the node will

17:41:32remain same your tool node then we are

17:41:34defining my checkpointter SQLite

17:41:36database. Then this is our graph. Okay.

17:41:39All the graph definition everything will

17:41:40remain same. No need to change anything.

17:41:42As well as my helper function for

17:41:44streaml front end this will also remain

17:41:45same. Okay. So this is the change guys

17:41:47you have to do in the back end file.

17:41:49Okay. So this is the change you have to

17:41:51do in the back end file. Let me check

17:41:52whether anything is required or not. I

17:41:55think everything is fine. Okay fine. Now

17:41:58I have to change my front end. Now what

17:42:00I will do? I'll just try to open my

17:42:01front end app rag.py. Now see what I

17:42:05have done guys. I just copied my

17:42:07existing front-end code to chat GPT and

17:42:10I asked I need a document uploader

17:42:13function features on my uh chatbot. So

17:42:17try to create uh streaml uh user

17:42:19interface for that. Okay. So then I got

17:42:22this code. Let me show you.

17:42:25This is the updated code I got.

17:42:31This is the updated code I got. So

17:42:33basically this has the document upload

17:42:36features. Okay. So if you don't know

17:42:37about front end design and all don't

17:42:39need to worry. So this is the work of a

17:42:40front- end developer. So I also took the

17:42:43help from charg uh created this front

17:42:46end. But only the change you have to do

17:42:48here. Okay. First of all you have to

17:42:50change this uh import operation that

17:42:53means right now we are importing from

17:42:54agentic chatbot rag back end. So from

17:42:57aentic

17:42:58chatbot rag back end. Okay, we are

17:43:01importing chatbot. Then get all threads.

17:43:06Uh

17:43:08get all threads. Okay, this one and uh

17:43:11we are also importing ingest rack

17:43:13documents. Okay, that means this

17:43:15function this function I need whenever I

17:43:16will upload any kinds of documents on my

17:43:18streaml. So this function will be

17:43:20executed and my vector store would be

17:43:22ready. Okay, that time then everything

17:43:24will remain same only the change here it

17:43:27has done. Let me show you.

17:43:29See this is the new code it has added.

17:43:31If you if you compare with your previous

17:43:34code so this part has changed. Okay. So

17:43:36here in the uploaded um section that

17:43:39mean in in the user input section it has

17:43:41added another one called uploaded file.

17:43:42So basically here it is taking a PDF

17:43:44file upload and uh we are taking this

17:43:47PDF file we saving as a temporary file.

17:43:50Then we are calling this in just drag

17:43:51documents. We are passing inside this

17:43:53function. Okay. And this function is

17:43:54creating my knowledge base. this

17:43:56knowledge base will be created. That

17:43:57means this uh uh vector store would be

17:44:00created. Once my vector store is

17:44:02created, now you'll be able to perform

17:44:04the chart operation. Again, we are uh

17:44:06taking the user input and doing the

17:44:08chart operation. Okay, that means all

17:44:09the code are common. Only that pass uh

17:44:11that part is changed. Okay, that means

17:44:13upload document part is changed. Now,

17:44:15let me show you my updated uh front end

17:44:17how it look like. So streamllet

17:44:22run

17:44:24app

17:44:26rag.py.

17:44:37So as you can see this is my updated

17:44:39front end. Now we can perform the chat

17:44:42operation. Now let's perform the simple

17:44:44chat initially. So let's say I'll give

17:44:47hello

17:44:50I am BP and this is happen happening in

17:44:53a like new trades. Okay, completely new

17:44:56trades

17:44:59and internally it is also tracing our

17:45:02application. Okay, it is also tracing

17:45:04our application with the help of

17:45:05linesmith.

17:45:07Now I'll give uh tell me about

17:45:12let's say

17:45:15Python. So this is a simple chart.

17:45:20So it is telling you about Python. Okay.

17:45:23Now here I will ask uh what is

17:45:35what is the answer of

17:45:41this equation. Let's say I'll give a

17:45:42mathematical equation.

17:45:54I'll see it will use my calculator tool.

17:45:56See calculator tool it is using and this

17:45:58is the final result I'm getting. Okay.

17:46:00Now I'll ask uh what is the

17:46:06current

17:46:09weather

17:46:13in let's say

17:46:17Dhaka.

17:46:22Now it will use my get current weather

17:46:24tool and this is the current weather in

17:46:26Dhaka right now. Okay. And now I will

17:46:28ask about the latest information. Tell

17:46:30me the

17:46:33latest

17:46:35news.

17:46:40Okay. Latest news

17:46:44of FIFA. FIFA World Cup

17:46:522026.

17:47:01Now see it is using tab search tool

17:47:05and here is the

17:47:08answer I got. Okay about the FIFA World

17:47:10Cup. Okay. Now I will ask uh I will

17:47:13upload a documents. Let's say I'll

17:47:15upload documents

17:47:17the same documents. Let's say I'll

17:47:18upload my paper.

17:47:26My paper got uploaded. Now I'll tell

17:47:29uh tell me about

17:47:33rainfall

17:47:35measurement

17:47:38uh based on

17:47:41the PDF

17:47:44loaded.

17:47:48Now see it is using rack tool and it is

17:47:51giving you the entire response about the

17:47:54rainfall measurement. Okay, this

17:47:55amazing. Now I'll tell her tell me

17:47:59about

17:48:03the

17:48:05abstract

17:48:07paper.

17:48:21Now see again it is using rag tool and

17:48:23this is giving you the inter

17:48:24abstruction. Okay. Now I'll ask uh who

17:48:28is Bier Ahmed Bi

17:48:34mentioned

17:48:37in the paper.

17:48:42Now again it is using react tool and now

17:48:45it is telling Bkt Ahmed Bi is one of the

17:48:48six author of the paper development of

17:48:50multiple combined regression method for

17:48:51reinforce measurement. And uh here is

17:48:54the address and email address. Okay.

17:48:56Amazing, right? So that's how guys our

17:48:58agentic chatbot right now it's working

17:49:00and it has it has lots of advanced

17:49:03feature right now and the current one we

17:49:05have added this rag functionality. Now

17:49:07you can upload any kinds of document and

17:49:09you can perform the conversation on top

17:49:11of that. Okay. Like chat GPT like chat

17:49:13GPT also you can upload any kinds of

17:49:16documents. Okay. And you can start doing

17:49:18the conversation here. Okay. This is

17:49:20also possible. And one more thing I want

17:49:23to show you. So if I go to my langispit

17:49:25right now. So if I go to my trades.

17:49:29So I'll go to this trades

17:49:32and here all the conversation I have

17:49:34done. So the last conversation I did uh

17:49:37this one. Now if I go to the two

17:49:40condition

17:49:44okay I'm happy. I think last

17:49:45conversation was that. Okay. This one.

17:49:48Yeah. Now you can see here uh whenever I

17:49:50did the conversation first of all it it

17:49:52went to the chat node then large

17:49:54language model then um it was redirected

17:49:57to the tool condition tool condition was

17:49:58selected the tool now it selected the

17:50:01rack tool okay and inside rack tool we

17:50:03are using this vector search ret

17:50:05operation okay and with the help of that

17:50:06it is doing the vector search and it

17:50:09found actually four relevant response

17:50:10you can see okay from my knowledge base

17:50:12and this four relevant response went to

17:50:14my chat nodes again that means my llm

17:50:17with the prompt

17:50:18and then uh it was generating the final

17:50:21response. Okay. So that's how this

17:50:22entire system is working and in the

17:50:24Langmith platform itself you can monitor

17:50:26the entire system. Okay. This is the

Implement Human-in-the-Loop (HITL) in Agentic Chatbot using LangGraph

17:50:28best part of this uh of this actually

17:50:30application is. So yes guys uh this is

17:50:33the um like uh chatbot we have created

17:50:37so far. This is our agentic chatbot we

17:50:38have created so far and everything is

17:50:41working fine and all the codes I will be

17:50:42sharing in my description section. from

17:50:44there you can check it out and uh let me

17:50:46know how this uh learning is okay

17:50:49whether you are able to learn uh the

17:50:51agent TKI concept from my playlist or

17:50:52not. So if you found my content useful

17:50:55guys please try to subscribe to my

17:50:56channel and share this with your friends

17:50:58and family okay your support is

17:50:59required. So if you're supporting me

17:51:01guys, I'll get lots of motivation to

17:51:03bring this kinds of content. Okay. In

17:51:05this video, we'll be learning one very

17:51:07interesting concept called human in the

17:51:09loop HIT L inside our agentic chatbot

17:51:13with the help of Langraph. If you are

17:51:15following my entire playlist guys from

17:51:17the beginning, I think you remember uh

17:51:20in my introduction uh video, I already

17:51:22talked about this HITL that means human

17:51:24in the loop concept. uh that means uh

17:51:27this is the uh component of an AI agent.

17:51:30Whenever you are implementing any kinds

17:51:33of AI agents uh whenever you need any

17:51:36sensitive task, you need this HITL

17:51:38concept that means human in the loop

17:51:40concept. Okay. Uh so in this video guys,

17:51:42we'll try to uh learn this entire HITL

17:51:46concept. We'll also see the practical

17:51:48and we'll also try to integrate this

17:51:51functionality inside our agentic

17:51:52chatbot. So before I start this uh

17:51:56implementation guys, first of all I want

17:51:57to show you the demo how this uh hit uh

17:52:01looks like and uh after adding this

17:52:04inside our agentic chatbot how uh it is

17:52:07going to work. Okay, we'll try to see

17:52:09the demo after seeing the demo we'll try

17:52:11to understand this concept in a

17:52:12theoretical manner then we'll see the

17:52:15practical implementation as well. So

17:52:17guys this is our agentic chatbot that's

17:52:19how this chatbot looks like. So right

17:52:21now you can upload any kinds of document

17:52:23and you can start a conversation okay on

17:52:25top of your documents this is possible.

17:52:27So let's try to test our chatbot and I

17:52:30already integrated this hit with this

17:52:33agentic chatbot. I'm first of all going

17:52:35to um show you the demo then after that

17:52:37we'll try to see the practical

17:52:38development. So here uh you can perform

17:52:41the simple chat operation. Let's say if

17:52:43I give hello so your chatbot will return

17:52:45something. See hello can help you today.

17:52:48Now we'll ask uh what is the

17:52:54what is the

17:52:56current weather

17:52:59in Dhaka

17:53:03you will see that it will be using uh

17:53:05different different tools okay that

17:53:07means it will use uh weather tools and

17:53:09it will give me current weather

17:53:10informations okay uh given any kinds of

17:53:12location even you can upload any kinds

17:53:15of documents let's say I will upload one

17:53:17of my documents ments. Let's I will

17:53:19upload these documents.

17:53:21Okay.

17:53:28Okay. Now this is uh one of my resume I

17:53:31have uploaded. Now I'll ask some

17:53:32question on top of this uh PDF. So tell

17:53:35me about Boktier

17:53:40Ahmed

17:53:45By

17:53:47based on

17:53:51the PDF.

17:53:54Okay. Upload it.

17:54:02Now we'll see that it will be using rag

17:54:03tool and it is giving you the entire uh

17:54:07entire actually introduction of bkirhmed

17:54:09bpi is a data scientist over 5 years of

17:54:12uh working experience in the field of

17:54:14generative loops autonomous AI system

17:54:17okay and blah blah blah you can see the

17:54:19entire summary uh of me okay so that's

17:54:22how guys uh you can perform any kinds of

17:54:24conversation uh on any kinds of

17:54:26documents okay now here let me show you

17:54:29this uh hit functionality I have added

17:54:31added in this agentic chatbot. So

17:54:33basically here I have added this hit for

17:54:37one sensitive task. Okay, sensitive task

17:54:39means I think you know that uh with the

17:54:41help of this agentic chatbot I can see

17:54:43any kinds of stock price, right? So

17:54:45let's say if I asking uh let's say what

17:54:48is the

17:54:51stock

17:54:53price

17:54:55of

17:54:57Apple? Okay. So I think you know that it

17:55:00has a tool uh that tool actually real

17:55:02time f the stock prices. Okay. Given any

17:55:05kinds of company. So if I let's say send

17:55:07this prompt you'll see that it will use

17:55:09that tool using get stock price tool.

17:55:11Okay. And this is the current uh stock

17:55:13price we are getting of the Apple. Now I

17:55:16want to perform a sensitive task with

17:55:19this uh aentic chatbot. Basically I want

17:55:21to purchase a stock of Apple. Okay. I

17:55:24want to let's say purchase 10 stock of

17:55:25Apple. Now this task required actually

17:55:28human observation that means human

17:55:30approval. It's not like that you want um

17:55:33you are giving your agents uh the 100%

17:55:36authority to perform all of the task.

17:55:38It's not like that because there are

17:55:39some sensitive things you have to

17:55:41monitor okay manually and this is this

17:55:44needs actually human approval. So here

17:55:45let's see if I am asking to my agents uh

17:55:49purchase

17:55:53okay purchase let's say 10 stock

17:56:00of apple

17:56:05okay let's say I'm asking this question

17:56:07and this is a sensitive task and for

17:56:09this you will see that it will ask for

17:56:11human approval okay now if I send this

17:56:13prompt

17:56:16Now see it is asking for the human

17:56:18approval. Human approval required.

17:56:20Approve buying 10 shares of Apple. Yes

17:56:23or no? Do you want to give me the

17:56:25permission? Um if you want I can buy. So

17:56:28for this you have to provide yes

17:56:30otherwise you can reject this particular

17:56:32uh approval. Okay. So let's see if I am

17:56:35giving yes. I will approach this approve

17:56:36this purchase. Now you'll see that it

17:56:39will use my purchase stock tool and it

17:56:40will purchase the shares of the Apple.

17:56:43Okay. Now if I'm again asking this thing

17:56:46let's say

17:56:49um purchase 10 stock of

17:56:54Google.

17:56:59Now see again it is asking for human

17:57:01approval. Now right now let's say if I'm

17:57:02rejecting the purchase you'll see that

17:57:05it will not purchase that. Okay your

17:57:07request to purchase 10 shares of Google

17:57:09was declined. Okay. So this is called

17:57:11actually HITL that means human in the

17:57:14loop. Uh basically if you have already

17:57:16used any kinds of agentic system guys.

17:57:19Okay. Uh you will see that this kinds of

17:57:21functionality they are having they will

17:57:22ask for human approval. Uh if you are

17:57:25already using any kinds of code editor

17:57:27also like uh um this uh anti-gravity or

17:57:30cursor AI. Okay. There also you will see

17:57:32that whenever you want to generate

17:57:33something generate some code or if you

17:57:36want to create any project you will it

17:57:37will ask for the human permission. Okay.

17:57:39If it required that time you if you are

17:57:41giving the permission okay that time

17:57:44actually it will perform all of the task

17:57:45otherwise it will decline that okay so

17:57:48this functionality guys we have

17:57:49integrated inside our agentic chatbot

17:57:51and now this chatbot is super advanced

17:57:53okay now it can do all of the task and

17:57:56uh uh you can actually integrate this

17:58:00not only in this stock price purchase uh

17:58:04but also you can integrate uh these

17:58:06things in any kinds of let's say task

17:58:08you are performing. I'll show you okay

17:58:10how to do that. And uh you can uh feel

17:58:13free to add uh so many tools here. Okay.

17:58:15Uh so many autonomous tool you can add

17:58:17here. Let's say you want to send

17:58:18automatically email you can add the

17:58:20emailing tool. If you want to uh check

17:58:22uh your Google drive, okay, how many

17:58:24files are present and if you want to

17:58:26upload any file so you can also add

17:58:28these kinds of tools. Okay, I already

17:58:29talked about the tools and this video is

17:58:31already available over my channel. You

17:58:33can see that. Okay, how to add different

17:58:34different tools. So yes guys uh this is

17:58:36the demo of this u u hitl human in the

17:58:39loop. Now we'll try to see this human in

17:58:42the loop u uh what is this human in the

17:58:45loop? Okay why it is required in a

17:58:46theoretical manner then I'm going to

17:58:48show you the practical implementation of

17:58:50that. So guys if you are completely new

17:58:52to my channel and if you haven't

17:58:53subscribed yet please try to subscribe

17:58:55to my channel. Uh if you found my

17:58:57content useful uh please support me if

17:58:59uh if I get your support. So definitely

17:59:02I will get lots of motivation and I will

17:59:04bring this kinds of content more. So

17:59:06please try to subscribe to my channel

17:59:08and hit the like and please try to share

17:59:09this with your friends and family as

17:59:11well. So guys first of all let's try to

17:59:13understand what is this HITL is. As you

17:59:16can see from from the definition itself,

17:59:18HITL that means human in the loop is a

17:59:21design approach in agentic systems where

17:59:23a human actively participates at

17:59:26critical points of the AI workflow uh

17:59:29either to supervise, approve, correct or

17:59:32guide the model's output. Okay. So this

17:59:35is the concept actually it's required

17:59:38whenever you are performing any kinds of

17:59:40uh sensitive task. Whenever you are

17:59:42performing any kinds of let's say very

17:59:44critical task that time this HITL is

17:59:47required and if you are creating this

17:59:49kinds of agentic system I think you know

17:59:51that where you need to exactly add this

17:59:53HITL feature because inside agentic

17:59:57project actually there would be multiple

17:59:58kinds of task let's say uh here uh

18:00:01inside our chatbot we have added

18:00:02different different task let's say our

18:00:04chatbot can perform internet source

18:00:05operation it can give you the weather

18:00:08information okay so for these kinds of

18:00:10task actually I don't need this hit

18:00:12features. Okay. But let's say I showed

18:00:14you one demo. I need to purchase a stock

18:00:17price. This is a critical and sensitive

18:00:20task. Okay. And definitely needs human

18:00:22approval. Otherwise, if I give the full

18:00:24authority to my AI agents, uh it it may

18:00:27actually uh do something wrong. Okay.

18:00:29Let's say uh I will tell uh please

18:00:32purchase 10 shares of Apple. Okay. So,

18:00:35what it can do? It can let's say

18:00:37purchase 20 shares of Apple. Okay. uh it

18:00:40can let's say spend more money okay of

18:00:43me so that's why this human uh uh in the

18:00:46loop is required in this kinds of

18:00:48critical task that's how inside an

18:00:50agentic AI project there would be

18:00:52multiple uh like scenario uh you might

18:00:55need to add this HITL okay it's not

18:00:57necessary to add this HL to all of your

18:01:00features all of your task okay wherever

18:01:03you feel like okay this is required for

18:01:05me you can add add it there okay so

18:01:07that's why you can see this HL L it's a

18:01:10design approach in AI agentic AI system.

18:01:12Okay, where a human actively part

18:01:14participates at a critical point of the

18:01:16AI workflow. Okay, that means this is

18:01:19your completely uh your design uh

18:01:21philosophy here. Okay, you will be

18:01:23designing this kinds of HITL uh

18:01:25functionality inside your project. Now

18:01:28you can see think of a HLTL uh as

18:01:31putting a human checkpoints inside an AI

18:01:33pipeline uh so that important decisions

18:01:36are not made automate autonomously by

18:01:38the model. Okay, that is what I told

18:01:40you. So whenever you need this kinds of

18:01:42uh critical task handling uh you are not

18:01:45going to give the full authority to your

18:01:47uh agent. So that time it will not

18:01:49automatically take the decision okay uh

18:01:52by your agent that time you will be

18:01:54available okay in this particular loop

18:01:56and if you approve that particular task

18:01:58uh this will perform otherwise this will

18:02:00not perform okay this is what actually

18:02:02this definition says now you can see why

18:02:06exist uh as I already told you to help

18:02:08agentic system that means whenever you

18:02:10are creating any kind of agentic system

18:02:12so to help the agentic system you need

18:02:14this kinds of hitl for an example let's

18:02:17say you want to imple element an agent

18:02:18uh that will uh prepare a post okay that

18:02:22will prepare a LinkedIn post and uh it

18:02:24will uh post over the LinkedIn platform

18:02:27okay so here to create the LinkedIn post

18:02:30it doesn't need any kinds of human

18:02:32approval but whenever it will post that

18:02:35uh let's say on the LinkedIn platform

18:02:37that time this human approval is

18:02:38required because human will review the

18:02:41entire post if the post is fine then

18:02:44they will approve this post and this

18:02:46post would be published list over the

18:02:47Ling platform. Okay. So here basically

18:02:50this HITL helping the agentic system.

18:02:53Okay. Uh to perform the complete task.

18:02:56Okay. Uh I think you can understand what

18:02:59I'm trying to say. Then the second to

18:03:01add the accountability. Accountability

18:03:04means let's say I already told you

18:03:06agentic system can make mistake. So

18:03:08let's say if you are telling I need to

18:03:10purchase 20 stock of Apple. Okay. So

18:03:13there is a possibility your agent will

18:03:16uh your agent will uh will try to

18:03:18purchase let's say four 40 stock of

18:03:21Apple. Okay. So there is a problem

18:03:23right? So before purchasing that stock

18:03:26first of all you will try to review that

18:03:28whether uh the amount you want to

18:03:31purchase it is fine or not. The price uh

18:03:33Apple is having for the stock it is fine

18:03:35or not. If everything goes fine then you

18:03:37will try to give the approval otherwise

18:03:39you will try to reject. Okay. So that's

18:03:41why this uh HITL is exist. Uh it will

18:03:44help you to help the agentic system and

18:03:47uh to add the accountability as well.

18:03:49Okay. Now you can see HITL ensures

18:03:53accuracy definitely uh if you are

18:03:55implementing this HITL inside your

18:03:57agents uh there would be uh higher

18:04:00accuracy inside your agentic system. Um

18:04:02otherwise uh there are some problem. I

18:04:04think I have already explained that okay

18:04:06what would be the problem. uh so if you

18:04:08are adding this one so definitely

18:04:09accuracy will increase inside your

18:04:11agentic system that's why in charge GPT

18:04:13Google gemini whatever agentic system

18:04:15you are using all of the applications

18:04:17are having this kinds of hit

18:04:19functionality okay in charge also maybe

18:04:21you have observed uh it will tell you

18:04:23okay uh do I need to perform the uh

18:04:25perform this task or not okay if you

18:04:27give yes then it will perform otherwise

18:04:29it will not perform okay then safety

18:04:31definitely safety is required uh as I

18:04:34already given you one example that stock

18:04:36price uh purchase this demo. So there

18:04:38let's say if I'm not giving this kinds

18:04:39of hits features that that times that is

18:04:42a possibility our agents will purchase

18:04:45more stock which I which I don't need.

18:04:47Okay. So definitely this is one kinds of

18:04:49safety. Then the next thing uh is

18:04:52ethical alignment. Let's say um if you

18:04:55are doing a task that have some kinds of

18:04:58ethical alignment. Let's say we are

18:05:00preparing a post for the LinkedIn and

18:05:02that post should not have any kinds of

18:05:05let's say sexual content or let's say

18:05:08abusive content. Uh so uh that time

18:05:11actually you can have this kinds of

18:05:12ethics. Um you can uh basically review

18:05:15that and uh if you approve that kinds of

18:05:17content

18:05:19uh then your agent uh agent will

18:05:21basically uh post that otherwise it will

18:05:24not post that. That means if your

18:05:25content is having this kinds of uh uh

18:05:27these kinds of uh sexual and abusive

18:05:29content you will reject and uh if if it

18:05:32doesn't have that that time you will try

18:05:34to approve that. Okay. So these kinds of

18:05:35ethical alignment um also ensures this

18:05:38HITL then better user experience as I

18:05:41already told you um if you are adding

18:05:43these kinds of things so definitely

18:05:45there would be better user experience uh

18:05:47as you already observed inside our app

18:05:49right so it was giving some kinds of uh

18:05:52approved uh let's say input and if

18:05:54you're approving that the task was

18:05:56happening if you are not approving the

18:05:57task was not happening so this is kinds

18:05:59of better user experience okay you are

18:06:01providing with the help of this HITL

18:06:03then some common HITL patterns as you

18:06:06can see action approval patterns approve

18:06:08reject before execution uh as I already

18:06:10told uh showed you one demo right so

18:06:12basically whenever you want to perform

18:06:14any task and uh if it needs any kinds of

18:06:16action so here you you can perform with

18:06:19the help of this HITL you can approve or

18:06:21reject uh before the execution then

18:06:23output review and edit pattern so maybe

18:06:25you have seen um any kinds of uh uh

18:06:29block generation let's say agent so what

18:06:31it does basically it generates some

18:06:32kinds of output then it It's for the

18:06:34human review. Okay. Uh human review and

18:06:37edit. So if they review and edit and

18:06:39approve this kinds of output then it

18:06:41will finalize that otherwise it will not

18:06:43finalize that. Then ambiguity

18:06:45clarification pattern. So sometimes your

18:06:47agent is asking let's say uh your your

18:06:51agent is getting confused right. Let's

18:06:52say you are asking your agent schedule a

18:06:54meeting on Friday. So let's say in this

18:06:56week also you have the Friday and next

18:06:58week also you have the Friday. So that

18:07:00time your agent needs a clarification.

18:07:02Now which Friday it needs to schedule

18:07:04the meeting. So again it will ask you uh

18:07:06actually I'm a little bit confused which

18:07:08Friday you are u like talking about this

18:07:11Friday or the next Friday. So this is

18:07:13called ambiguity clarification pattern.

18:07:14Then escalation pattern let's say

18:07:16sometimes what happens in some kinds of

18:07:18chatbot. So it uh talks with the

18:07:20customer and when it feels like okay it

18:07:22cannot handle this kinds of scenario it

18:07:25will redirect to the actual actually um

18:07:29actual owner of that uh company and they

18:07:32will basically handle this kinds of

18:07:33scenario. Okay, this is called

18:07:34escalation pattern and that can be also

18:07:36implemented with the help of this HITL.

18:07:38Okay, so yes uh this is the entire idea

18:07:41of this uh HITL. I think you have

18:07:43understood. Now uh we'll try to see how

18:07:46this HITL works. Okay. Uh in a practical

18:07:49uh way. First of all, I will uh I will

18:07:51show you this uh diagram wise how this

18:07:54hit will work. So for this here I have

18:07:56taken an example. So here I have taken a

18:07:59basic workflow guys. As you can see this

18:08:01workflow you can consider this is a post

18:08:04generation workflow. Let's say uh you

18:08:07can generate any kinds of LinkedIn post.

18:08:09So you can see uh it has the start node.

18:08:12First of all, user will pass a topic and

18:08:14if submits the topic, it will go to the

18:08:16um your langraph workflow. Okay. And it

18:08:19will execute the start node. Then it

18:08:21will uh perform the resource operation

18:08:23of that particular topic. And once it

18:08:25found the content, it will prepare the

18:08:27content. And here it will uh post that

18:08:30particular content over the LinkedIn.

18:08:31But here we'll try to add this hit

18:08:33feature. Okay? Because before posting

18:08:35that definitely it needs the human

18:08:37approval. It will ask me whether I have

18:08:40to post or not. Okay? So if I review

18:08:42that, if I approve that then it will

18:08:44post otherwise it will not post then

18:08:45this workflow is getting ended. So let's

18:08:47try to understand this agit um with this

18:08:50particular example. So see what is

18:08:52happening. Let's say you are passing a

18:08:53topic name here. Let's see what topic uh

18:08:55you are passing a topic name of machine

18:08:58learning. Let's say ML. Let me take this

18:09:00color. Let's giving ML topic. Okay. So

18:09:04this ML topic you are submitting here

18:09:06and it will go to your langraph

18:09:09workflow. So this is the lang graph

18:09:11workflow we have created let's say. So

18:09:13first of all here it will prepare a

18:09:15state. I think you know that we have to

18:09:16prepare a state right. And here what

18:09:18would be the state? State would be the

18:09:19topic and as well as the draft that

18:09:22means draft post it is generating.

18:09:25Okay. So it will uh first of all uh

18:09:28invoke this uh uh workflow and it will

18:09:31go to the research node and research

18:09:33node will perform the research

18:09:34operation. It will try to find ML

18:09:36related uh latest uh let's say

18:09:39information and it will prepare a post.

18:09:41Okay. Once post is prepared then here

18:09:43we'll try to add this HITL feature.

18:09:45Okay. Hi TL feature. Human in the loop

18:09:47features. Okay. Now how human in the

18:09:49loop feature works. Let me give you as a

18:09:51highle uh like uh high level idea. Uh

18:09:55definitely we'll try to see in practical

18:09:56manner how to write in the code. But I

18:09:58will give you this one highle code

18:09:59diagram how it will work. Okay. So see

18:10:02whenever you are implementing this HITL

18:10:05inside any kinds of node right uh that

18:10:08time you will be using one function

18:10:11called interrupt okay this is already

18:10:12available inside langraph uh inside

18:10:14langraph actually this hit

18:10:16implementation is super easy so there is

18:10:18a function called inter in uh interrupt

18:10:20okay interrupt

18:10:23interrupt function okay so once you will

18:10:25use this interrupt function this

18:10:27execution will pause here okay this

18:10:29execution will pause here unless and

18:10:31until you are not giving any kinds of

18:10:32input. So let's say here I I'll take a

18:10:35variable called decision.

18:10:37Decision

18:10:43decision is equal to okay interrupt. Now

18:10:47here user will pass something. Let's say

18:10:49if user pass this decision

18:10:53decision is equal is equal to yes that

18:10:56time post will happen. Okay. Else

18:11:00it will reject.

18:11:02Okay. So this is the highle code diagram

18:11:04you can understand. That's how actually

18:11:06lang graph will work. Okay. So here

18:11:08we'll try to use uh one function called

18:11:10interrupt and this function will

18:11:11basically pause the execution unless and

18:11:14until human not human is not giving any

18:11:16kinds of input. Okay. Now you can define

18:11:19your input like what kinds of input you

18:11:21need from the user. This kinds of

18:11:22functionality also you can add here.

18:11:24Okay. Then after getting the input you

18:11:27can uh execute your workflow. And one

18:11:30more thing which is very important

18:11:32whenever you are implementing this HITL

18:11:35you have to add the checkpointer. Okay,

18:11:37you have to add the persistence memory.

18:11:40Uh we we have already seen the

18:11:41persistence memory. Okay. Uh persistent

18:11:43memory basically saves all of your state

18:11:45right inside a memory whether you can

18:11:47use any uh inmemory saver that means in

18:11:50in your RAM or any kinds of permanent

18:11:52database you have to use that because

18:11:54whenever it will perform the pause

18:11:56operation right uh let's say here it is

18:11:58performing the pause operation so to

18:12:00execute it again let's say whenever user

18:12:02is giving the input okay after getting

18:12:04the input this will execute right so

18:12:07whenever it will execute it's not like

18:12:08that it will execute from the beginning

18:12:10it will execute while it has passed that

18:12:12particular execution and how it will

18:12:14understand by seeing the state because

18:12:16state is saving all of the information

18:12:18and where it is getting loaded it is

18:12:20getting loaded in the database okay in

18:12:22the persistent memory and from the

18:12:24persistent memory it will load that and

18:12:25it will see that okay I stopped in the

18:12:27post uh nodes and now I have to continue

18:12:30from the post node instead of continuing

18:12:32from the beginning okay that's why the

18:12:33checkpointer you have to define the

18:12:36state uh persistence memory you have to

18:12:38define whenever you are implementing

18:12:39this hit concept inside langraph

18:12:43Okay, line graph it is super important.

18:12:46Okay, I hope you clear guys. So that's

18:12:48how this uh HITL will hit will work um

18:12:52in practical and uh you can implement

18:12:55this HITL in any kinds of node. Okay,

18:12:58any kinds of node or any kinds of tool

18:12:59you are using you can define that. We'll

18:13:02try to see that. And one more thing

18:13:03whenever you are uh giving this input

18:13:06right uh let's say this interrupt is

18:13:08waiting for the human input and whatever

18:13:11input you are passing let's say here you

18:13:13are passing this yes input okay so this

18:13:15yes input will consider as a command

18:13:17okay it will consider as a command uh so

18:13:20this command actually will u uh go to

18:13:22the again your uh let's say node that

18:13:26means your chat node and uh if uh your

18:13:29chat node is getting this yes command

18:13:31that time it actually it will uh it will

18:13:33uh feel like okay now user wants to post

18:13:36that okay then your posting will be

18:13:38happening okay so that uh that means

18:13:40this command is required a command

18:13:43keyword is required whenever you are

18:13:45using this interrupt function and

18:13:47whatever let's say user input you are

18:13:49getting uh you have to store in the

18:13:51command okay now this thing I will also

18:13:53show you in the code uh I think by

18:13:55seeing the code I think this concept

18:13:57would be more clear in your mind right

18:13:59but before uh the code uh implementation

18:14:01I have given you high table overview so

18:14:03that whenever I will explain the code

18:14:05you won't be having any kinds of

18:14:06confusion. Now guys, we'll try to

18:14:08implement this hitl with the help of

18:14:11lang graph. Uh for this actually first

18:14:13of all we'll try to see a simple

18:14:15example. Uh I think you remember uh the

18:14:18aentic chatbot uh we are creating so

18:14:20far. Uh from the very beginning I have

18:14:23taken this simple workflow. Okay. So

18:14:26this workflow has one node which is chat

18:14:28node. So if you basically give a input

18:14:30uh it will generate the output of that

18:14:32uh given input and you will be able to

18:14:34see the output of that. Okay. So here uh

18:14:36what I'm going to do guys I'm going to

18:14:38add a simple

18:14:40uh simple actually example of this HITL.

18:14:43So basically here whatever input is

18:14:45coming right in this particular node. So

18:14:48here we'll just try to add a HITL

18:14:50feature. Okay HITL feature. So here

18:14:52we'll try to first of all uh ask the

18:14:55user do you want to really ask the

18:14:57question okay uh do you want to really

18:14:59ask the questions to the model if user

18:15:01sends yes okay I want to perform then

18:15:04the answer would be generated otherwise

18:15:06answer won't be generated okay it it

18:15:08looks like very funny but just to make

18:15:10you understand actually I have taken

18:15:12this example first of all let's try to

18:15:14see the HITL implementation with this

18:15:16very simple example then I'm going to

18:15:18show you with the advanced example as

18:15:19well we'll uh we'll use our agent NTI

18:15:22code the code we have implemented so far

18:15:24and we'll try to integrate this uh

18:15:25things okay there but before that I want

18:15:27to show you the implementation part how

18:15:29it can be done that's why this uh

18:15:31example I'll be taking okay so I think

18:15:33you have understood what I want to do so

18:15:35whatever question is coming first of all

18:15:37here we'll just try to add a hit feature

18:15:41uh it will ask for the human review do

18:15:43you want to really ask the question if

18:15:44user gives yes then um this question

18:15:47would be uh going to the chat node and

18:15:50user will be able to see the output

18:15:51Otherwise user won't be able to see the

18:15:53output. Okay, this is the implementation

18:15:55we'll try to do. Now for this here I

18:15:58already prepared a notebook. So inside

18:16:00notebooks folder I already kept uh kept

18:16:02a notebook as you can see demo. Let's

18:16:04open it up. Okay. So I think uh this

18:16:06code is pretty much common. I have taken

18:16:08the same uh this uh this example. I

18:16:11think you know that I created a simple

18:16:13chat workflow. Okay. I copy pasted the

18:16:15same code and I added this HITL

18:16:17functionality there. Okay. So first of

18:16:18all here we are importing all the

18:16:20necessary library. As you can see here

18:16:22we have taken both model. If you don't

18:16:23have openi you can use uh gemini model.

18:16:25For this we are using this uh this

18:16:27library and uh some other library we're

18:16:30also importing. And uh we are also

18:16:32importing the checkpointter because I I

18:16:34already told you if you are implementing

18:16:36this hil you need this uh persistence

18:16:38memory. Okay. Then uh one new import I

18:16:42have done which is this from langraph

18:16:43types I have imported interrupt function

18:16:46and command. Okay. Because I already

18:16:47told you uh here if you want to add any

18:16:50kinds of HTL HITL functionality you need

18:16:53this interrupt function. Okay. So this

18:16:54should be interrupt sorry there should

18:16:56be a T. Okay interrupt function. So this

18:16:59interrupt function is required. So with

18:17:01the help of this interrupt you will try

18:17:02to pause the execution and you will take

18:17:04the input from the user and this input

18:17:07will basically become your command.

18:17:09Okay. So you can see this command is

18:17:10also required. Then load envirated

18:17:14and the base message. So let's import

18:17:16all of the necessary library

18:17:18and make sure inside your environment

18:17:20variable all of the key are present.

18:17:22Okay, whatever key we're using so far.

18:17:25Now let's load the environment variable

18:17:27and after that here I don't have open

18:17:30API key that's why I'll be using Gemini

18:17:32model and for this I already collected

18:17:33my Google API key. Let's uh initialize

18:17:36my model and here we are preparing the

18:17:38state guys. As you can see this is our

18:17:40state the same state we're using and

18:17:42here you can see in this chat note we

18:17:45have added this interrupt functionality

18:17:47that means HITL functionality okay that

18:17:49means here okay here we have added this

18:17:51HITL functionality so if you want to add

18:17:53this functionality you have to use this

18:17:55interrupt function I already told you

18:17:57you can see inside chat node see this is

18:17:58what this was our previous chat node

18:18:00right now this is the update I have done

18:18:02so here I am I'm using this interrupt

18:18:04function and in this interrupt function

18:18:06you have to give some like uh u metadata

18:18:09That means the first mate you have to

18:18:10give the type. So type should be

18:18:12approval. Reason model is about to

18:18:14answer a question. Okay. Then question

18:18:16whatever question user is asking this

18:18:18question you have to pass in the

18:18:19question section and the instruction.

18:18:21Okay. Approve this question yes or no.

18:18:23That means this instruction user will be

18:18:24able to see. Okay. Once he will execute

18:18:26the node this this message actually

18:18:28would be visible to the user. Do you

18:18:30want to approve this question? Yes or

18:18:32no. Okay. If user pass yes then this

18:18:34question would be going to the chat node

18:18:36and user will able to see the output and

18:18:38if he sends let's say no and that time

18:18:40it will be rejected. Now here we are

18:18:42checking you can see decision

18:18:45okay decision and here we'll try to

18:18:48expect a parameter expect a key called

18:18:51approve okay so if this approve is is

18:18:54equal to is equal to no let's see if

18:18:55user has given no that time I'll simply

18:18:57return the uh message okay that should

18:19:00be the AI message no approved okay not

18:19:02approved if user gives yes that means

18:19:06I'll simply invoke my large name base

18:19:08model I'll pass the message and user

18:19:10will be able to see the output So this

18:19:12is the simple things you have to add and

18:19:14the main thing here the interrupt as

18:19:15well as the command okay command uh

18:19:18functionality I'll show you the command

18:19:19where to add but here we are basically

18:19:22using the interrupt to pause the

18:19:23execution here okay and from the front

18:19:26end size that mean from the front end

18:19:28side that means from the user side we'll

18:19:30get this approved okay approved key I'll

18:19:32show you this part now let's execute

18:19:33this note now here we are building the

18:19:36entire graph guys you can see we're

18:19:38taking the graph we are adding the node

18:19:39we have only have one node

18:19:41We are doing the edge connection and we

18:19:43are preparing the checkpointer. So here

18:19:45just to show you I am using this

18:19:47inmemory server checkpointter and we are

18:19:49building the entire graph. Okay and

18:19:50we're passing the checkpointer and

18:19:52that's how your workflow looks like.

18:19:54Okay. So this is the same workflow. Now

18:19:56to execute the workflow guys you need uh

18:19:58this uh config you need this thread. I

18:20:00think remember if you are using

18:20:02persistence memory you need this thread.

18:20:04So here I created a dummy thread and we

18:20:06are initializing a input explain the

18:20:08gradient descent in a very simple terms.

18:20:10Okay, this is let's say our user input.

18:20:12So this input will uh invoke with this

18:20:16uh workflow we have created and the

18:20:18workflow object is app. So you can see

18:20:20we're invoking this input and we're

18:20:22passing the configuration. Now let's

18:20:24execute. Now see guys here you will uh

18:20:27get one result. Uh this is the result.

18:20:30Okay. Uh you can see this is the result

18:20:32you are getting. So here you can see

18:20:34this is the human message explain the

18:20:36gradient descent in a very simple term.

18:20:39And whenever uh it is going to the chat

18:20:42node there we added that hit. Okay that

18:20:45means here the interruption is

18:20:46happening. It is pausing the execution.

18:20:48Okay you can see you cannot see any

18:20:50kinds of output. Okay the model output

18:20:52you cannot see unless and until you are

18:20:54not providing any kinds of input. Now if

18:20:56you want to provide the input. So first

18:20:58of all let me show you the interrupt

18:21:00message. So this is the interrupt

18:21:01message you can see and this is the

18:21:03interaction uh instruction approve this

18:21:06question yes or no and some other

18:21:08metadata we have provided this is also

18:21:09coming here. Okay now what I'll do guys

18:21:12I'll take the user input. So here I am

18:21:14preparing the user input. I'm showing

18:21:16the same message to the user and here

18:21:18I'm taking yes or no from the user.

18:21:20Okay. So let's say this is my user

18:21:22input. So now user is giving let's say

18:21:24yes. Okay. Uh uh let's say user wants to

18:21:28see the message. Uh that means the

18:21:29output. Now if I give yes. Now inside uh

18:21:32user input what will be present? Yes.

18:21:34Okay. It will present yes. Now how this

18:21:36present uh uh how this uh input we have

18:21:39to return to the uh hit as a command.

18:21:43Okay. Now right now you can see we are

18:21:45again invoking this uh workflow. But

18:21:48right now inside invoke uh functionality

18:21:51we are giving this command keyword.

18:21:52Okay. We are giving this command

18:21:53keyword. Inside that we're telling

18:21:55resume is equal to approved. So you have

18:21:57to pass a dictionary. You can see we're

18:21:59giving approved and user input. Okay, so

18:22:01that means approved should be user

18:22:03input. So that's why here I have written

18:22:05this condition. Uh where is that? Yeah,

18:22:08if decision approved because it uh this

18:22:10approved uh key is getting created

18:22:12newly, right? If approved is equal to is

18:22:13equal to uh no, that means it will

18:22:15reject otherwise it will approve that.

18:22:17So that is what actually we're doing

18:22:18here.

18:22:20Okay, that that is what we are doing

18:22:22here. Then we are again passing the

18:22:24configuration and we are again invoking

18:22:26our workflow.

18:22:29Okay. Now one error I'm getting. Okay.

18:22:32So guys uh we are getting this error

18:22:34because uh inside our env we haven't set

18:22:36our environment variable yet. Okay. Uh

18:22:39so let's try to set all of my

18:22:40environment variable. All of the key. So

18:22:42this is my updated key I have uh added

18:22:46here. Now let me save and let me

18:22:48re-execute this notebook. Okay. So again

18:22:50what I will do I'll just try to execute

18:22:52from the beginning. So let me restart.

18:22:58Now let's execute all of this code.

18:23:05Now interrupt uh interrupt message we're

18:23:07getting. Now we're taking the user.

18:23:08Let's say user is passing yes.

18:23:13Now we'll try to invoke this workflow

18:23:15again.

18:23:24Now see this execution is complete. Now

18:23:27we'll see the final message. You can see

18:23:30this is the final message we're getting

18:23:31about the gradient descent. But let's

18:23:34say if user is giving no that time what

18:23:36will happen. Let's say again I will

18:23:38execute this uh code.

18:23:45user is giving no

18:23:50okay I have to re-execute from beginning

18:23:52because

18:23:55here I have running as a cell by cell

18:23:57right that's why

18:24:03now I'll give no

18:24:05if I execute my final

18:24:09uh final result now you'll see the

18:24:12output now you can see not approved

18:24:14because user has given Okay. So that's

18:24:16how guys you can add this HITL uh

18:24:18features inside any of your node. Okay.

18:24:21It's not necessary to add inside your

18:24:22node. Always you can also add this

18:24:24inside the tools. Okay. This part I will

18:24:26also show you uh after this demo. Okay.

18:24:29So yes guys, this is how we can um add

18:24:32this HITL and we have seen the simple

18:24:35demo. Now let's try to see the advanced

18:24:37example with our agentic chatbot we have

18:24:40created so far. And this is the uh this

18:24:42is the actually workflow we have

18:24:43created. I can remember uh because uh

18:24:45inside our workflow we are using some

18:24:47kinds of tools right and uh this is our

18:24:49workflow final workflow and this code we

18:24:52have already written as you can see this

18:24:53is the code we have written in my

18:24:55previous uh video if you haven't checked

18:24:57that please try to go through the

18:24:58recording so here actually I added the

18:25:00rag functionality and we added uh lots

18:25:02of tool here previously right you can

18:25:04see we have added lots of tool now guys

18:25:06first of all uh I want to show you uh

18:25:09this this uh agentic chatbot execution

18:25:13without using HITL. Okay, let's say if

18:25:16I'm not using HITL, uh what will happen

18:25:18that time? Let's try to see an example.

18:25:21So here I'm going to create a file. I'm

18:25:23going to name it as chatbot.

18:25:26Chatbot without

18:25:33HITL

18:25:36human in the loop. Okay. So after seeing

18:25:38that we'll try to add the HITL and we'll

18:25:40see the benefit of that. Okay. So

18:25:42chatbot without HITL. So what I'll do?

18:25:44So the code I have written the previous

18:25:46code that means the rag back end. Uh I

18:25:49think you have seen my previous video.

18:25:50I'll copy this entire code as it is. And

18:25:53here I'm going to paste it. Okay. So

18:25:55here I'm not going to change anything

18:25:56only the things I have to add um a new

18:26:00tool here. Okay. So here I going to add

18:26:02a new tool. So I think you remember um

18:26:05in this particular in this particular

18:26:07chatbot the sensitive uh the sensitive

18:26:10part is the stock price. Okay let's

18:26:14consider the stock price. So here we are

18:26:16getting the stock price right given any

18:26:18kinds of company. So here we'll try to

18:26:20add a new tool. So that tool will

18:26:23basically uh purchase the stock for me.

18:26:27So here I have written a simple uh dummy

18:26:29let's say uh tool. So uh it will it will

18:26:32only do the print statement that means

18:26:34return statement but in actual chatbot

18:26:37definitely uh here you have to use some

18:26:39kinds of API that API will uh connect

18:26:42the uh Apple let's say stock company and

18:26:46uh it will purchase the stock for you

18:26:48but just to show you here I have taken a

18:26:50dummy function so this function what it

18:26:52does it takes the symbol as well as the

18:26:54quantity like how how much quantity you

18:26:56want to purchase and which company you

18:26:59want to purchase and based on that it

18:27:01will give you some kinds of success

18:27:03statement. Let's say you have

18:27:04successfully purchased this uh stock.

18:27:06Okay. So this thing I have converted as

18:27:08a tool and I named it as a purchase

18:27:10stock. Okay. Purchase stock tool. Now

18:27:12what I have to do uh I have added a new

18:27:15tool and this tool I have to add inside

18:27:17my tool list. So I'll go below and here

18:27:21I have to add this tool. The tool name

18:27:23is par stock. Okay. Then we are binding

18:27:26this tool. Everything will remain

18:27:27common. No need to change anything.

18:27:31Uh

18:27:36just a minute let me check. Huh. So

18:27:38everything is fine.

18:27:42We have added this in the list. Now

18:27:47I will go below to list. Uh this is my

18:27:51checkp pointer. We are using SQLite

18:27:52database and we are creating the entire

18:27:55graph. And this is our helper function.

18:27:58It's completely fine. But here at the

18:28:00last I will add a

18:28:03simple CLI code. Okay, this is my simple

18:28:06CLI code. Basically I want to execute

18:28:09this file. Okay, in my uh terminal.

18:28:11Okay, that's why I have added this code.

18:28:12First of all, I am printing some

18:28:14message. That means this is a chatbot

18:28:16CLA. And here I have taken a demo trade.

18:28:19Okay, because if you know that if I want

18:28:21to uh because you know that if I want to

18:28:23execute my chatbot uh workflow, I need

18:28:26this trade. So that's why I created a

18:28:28demo trade and here I'm running a while

18:28:30loop. Okay, in this while loop I'm

18:28:31taking the user user input from the user

18:28:33and if user is giving let's say exit or

18:28:35quite I'm telling goodbye and breaking

18:28:36the loop otherwise I'm taking the user

18:28:39input. Okay, and preparing inside my

18:28:42state then we are invoking our chatbot.

18:28:44Okay, we are passing the trade ID then

18:28:47whatever response we are getting we are

18:28:48just printing uh in the terminal. So

18:28:50this is a simple CLI code I have

18:28:52written. Okay, just to execute my entire

18:28:54workflow. Now let me show you how this

18:28:56thing will work. So I will open up my

18:28:59terminal and I will execute this file

18:29:01chatbot without HITL. I'll just write

18:29:04Python

18:29:05chatbot

18:29:07without

18:29:09HITL. Okay. Now see if I execute

18:29:14now see it is uh asking for the input.

18:29:18Let's say here I will give hello.

18:29:22It's giving hello, how I can help you?

18:29:24Today I will ask uh what is the

18:29:28stock

18:29:29price

18:29:31of

18:29:33Apple?

18:29:36Now it will use that get stock price

18:29:38tool and it will extract the uh stock

18:29:41price of the Apple. Now see the stock

18:29:43price of Apple is uh okay that much. Now

18:29:46I'll tell uh purchase

18:29:53Okay. Purchase

18:29:5510 stock

18:29:58of

18:30:02Apple.

18:30:05Okay. Now see if I uh if I send this

18:30:09prompt,

18:30:10it will directly purchase the stock. It

18:30:12will use that tool, right? Uh like a

18:30:15purchase stock tool and it will purchase

18:30:17the stock. And here you can see the

18:30:19message. I have successfully placed the

18:30:21order to purchase 10 stock of Apple. Now

18:30:23see here it is not asking any kinds of

18:30:25user input. Right? Although this is a

18:30:27sensitive task we are performing but it

18:30:30is not asking any kinds of input. So

18:30:33there is a possibility it may do some

18:30:35mistake right? Instead of purchasing 10

18:30:37stock maybe it can purchase 20 stock

18:30:39right let's say instead of pinging

18:30:41purchasing um stock in Apple it will

18:30:44purchase the stock in Google. Okay. So

18:30:46these kinds of mistake my agent can

18:30:48perform. I think you know this is

18:30:49completely large language model and it

18:30:51can perform any kinds of wrong uh wrong

18:30:53task. It can do hallucination. I think

18:30:55you know that right? It's not always

18:30:57perfect. So here definitely I need a

18:31:00human approval here. Okay. If I want to

18:31:01perform this kinds of sensitive and

18:31:03critical task. So this is the execution

18:31:06you have seen without HITL and this is

18:31:08the problem here. Okay. Right now I'm

18:31:10going to show you if I add this HITL

18:31:13with this chatbot what will happen right

18:31:15now? Let's try to see. So I will exit

18:31:17this terminal

18:31:20H. Now here I'm going to create another

18:31:22file

18:31:25and I'm going to name it as chatbot.

18:31:30Chatbot uh with

18:31:34HITL.

18:31:40Okay. And here what I'm going to do I'm

18:31:43going to

18:31:45I'm going to copy paste the same code

18:31:50okay from my previous file and I'm going

18:31:51to paste it here and the modification I

18:31:54will do here in this particular tool.

18:31:58Okay in this particular tool

18:32:00uh this

18:32:03um stock price tool. Okay. Yeah. So here

18:32:06I'll do the modification. Why here I

18:32:08will do the modification? Because in

18:32:10this tool only I need the human

18:32:12approval. Okay. Whenever user is asking

18:32:14to purchase a stock right that time here

18:32:17only I need to perform the interrupt

18:32:19operation and whenever user is giving

18:32:21okay you just need to purchase it user

18:32:23is giving yes uh yes command that time

18:32:26this tool will execute otherwise this

18:32:27tool will not execute okay it will not

18:32:29purchase the stock for me. So for this

18:32:32I'll do a simple modification.

18:32:35See instead of this this function I have

18:32:38modified with this function.

18:32:40Now just try to see okay and most of the

18:32:42code I think this is common to you

18:32:44because I already explained previously.

18:32:46Okay in that uh simple demo right here

18:32:48I'm using interrupt function and uh here

18:32:51I just done a check statement here. Okay

18:32:55now I have to import this uh interrupt

18:32:57function as and common function. So

18:33:00let's import it as well.

18:33:07I'll import it here from langraph types.

18:33:10I'm importing interrupt and command. And

18:33:12I will go to my tool again. So this is

18:33:16the tool. Okay. Yeah.

18:33:22So see here I'm not adding this hit

18:33:25inside my chat node. Okay. Here I don't

18:33:27need to add inside my chat node because

18:33:29here I'm using a tool lots of tool okay

18:33:31and inside only get uh sorry purchase

18:33:34stock price in that tool only I need

18:33:36this HITL functionality okay always

18:33:39remember whenever you are using tools

18:33:41and you are creating this kinds of

18:33:43advanc advanc application right in chat

18:33:47node you don't need to add it you will

18:33:49be adding inside the tool that means

18:33:50with the tool you are performing some

18:33:52kinds of task you are performing some

18:33:53kinds of action and there this hit

18:33:56should be integrated okay not in chat

18:33:58node but in my previous example the

18:34:00simple example I have given you just to

18:34:02show you I added the hit in my chat node

18:34:04okay I hope you cleared now inside tools

18:34:07only I will add this functionality so

18:34:09this is the code for that

18:34:12I'll close some of the window

18:34:18chat with htl okay now this is the uh

18:34:21this is the tool guys I have written uh

18:34:23this is the update I have done so here

18:34:26Whenever it will uh use this uh use this

18:34:28tool that means my agent will use this

18:34:30tool that time you will uh it will see

18:34:32the interrupt function here and it will

18:34:34pause the execution here okay and user

18:34:36will able to see one message approve

18:34:38buying uh that means what how much how

18:34:40much quantity user will provide let's

18:34:42say user is provide uh 10 10 stock okay

18:34:44I want to purchase 10 stock of Apple so

18:34:47this 10 will come here so 10 shares of

18:34:49symbol means the company okay that's I'm

18:34:52giving Apple so apple will come here so

18:34:54do you want to purchase it yes or no.

18:34:56Okay, user will see this message. Okay,

18:34:58in interrupt only you can directly show

18:35:00the message. Then once user will pass

18:35:03this yes and no, it will store inside

18:35:05the decision. Okay, and right now I'm

18:35:07not storing inside uh as a dictionary.

18:35:10But previously the previous example I

18:35:11showed you right in the notebook

18:35:14in the notebook here I was storing as a

18:35:16dictionary. Okay, that's why I was uh

18:35:19checking the condition like that because

18:35:21here I was passing as a dictionary.

18:35:23Okay, I was passing as a dictionary but

18:35:25right now here I'm taking as a simple

18:35:27string. Okay, yes or no. So here I'm

18:35:30checking if this decision is a string

18:35:33and I'm doing the lower operation. If it

18:35:35is yes, then I'm returning this

18:35:37statement. Starter should be success

18:35:39message purchased order placed for

18:35:41quantity shares of symbol. Okay, uh

18:35:44symbol uh should be symbol and quantity

18:35:45should be quantity. That means here I'm

18:35:47giving a success message. Your uh order

18:35:49has been placed. Okay, let's see you

18:35:51have successfully purchased the stock.

18:35:53Otherwise if user is giving no. Okay. In

18:35:55the else block you can see purchase of

18:35:57shares of the symbol was declined by the

18:36:00human. Okay. And strategies canled right

18:36:02now. Okay. So this kinds of statement we

18:36:06have written inside our tool. Okay. And

18:36:08this thing you have to follow if you

18:36:10want to implement this HITL in any kinds

18:36:13of tool or any kinds of task you are

18:36:15implementing going forward. Okay. Now I

18:36:17want to give a task. Instead of purchase

18:36:20stock maybe you can add another tool

18:36:23that will perform some kinds of

18:36:24sensitive and critical task. Okay. And

18:36:26in that task you just might need to add

18:36:28this hit functionality. Okay. This

18:36:30should be your task after this

18:36:31implementation. Just try to make this

18:36:33aentic chatboard more advanced. You can

18:36:36u add some more advanced task which

18:36:38needs human approval and you can add

18:36:40this functionality here. Okay. Now this

18:36:43this is the update I have done. Now the

18:36:45next update you have to do

18:36:47next update

18:36:50if I go below

18:36:53already this tool is added inside the

18:36:54tool I don't need to add now your chat

18:36:56node will also remain same no need to

18:36:58add anything

18:37:00uh only this CLI CLI code you have to

18:37:04change okay right now uh user is giving

18:37:07the

18:37:08uh user is giving the interruption

18:37:10message that means the command so this

18:37:12thing you have to add uh take from the

18:37:13user So here

18:37:16this is the CLI code I have written

18:37:24because this this CLI doesn't have any

18:37:27um HITL input right now this has the

18:37:30HITL input so again the same loop I have

18:37:32written print statement demo trade while

18:37:36loop I'm taking the user input if user

18:37:38is giving exit and quite I'm like just

18:37:41breaking the loop then uh I'm preparing

18:37:44my state okay with the help of user

18:37:46input then I'm invoking my workflow okay

18:37:51and I'm passing my trade now we'll check

18:37:54this uh interrupt let's say whenever you

18:37:56are invoking the workflow and user is

18:37:58given let's say hello that time just let

18:38:00me know whether this interrupt interrupt

18:38:03uh interrupt will happen or not

18:38:04definitely there won't be any kinds of

18:38:06interrupt when interrupt will happen

18:38:08whenever you will ask purchase 10 stock

18:38:10or let's say purchase any stock of any

18:38:12company Right? That time that tool will

18:38:14be executed. I can okay uh that means

18:38:16our purchase tool will be executed and

18:38:19whenever that tool will be executed that

18:38:21time this interruption okay you will get

18:38:23the interruption that means you will get

18:38:25something in the interruption variable

18:38:27okay otherwise you will not get anything

18:38:29in the interruption variable that's why

18:38:30we're checking if interruption variable

18:38:32has something that means if interruption

18:38:34happens definitely some message you will

18:38:37get okay in the interrupt interrupt

18:38:39variable if you got the message that

18:38:40time you will feel like okay there right

18:38:43now there is interruption has happen

18:38:45inside my code then it will ask the

18:38:47human okay so what is the interruption

18:38:50okay you will show this prompt you can

18:38:52see I'm showing this prompt as a hit

18:38:54message okay whether uh he has to

18:38:57approved or uh uh approved or not so

18:39:00this thing I will take inside my

18:39:02decision I'm taking the input from the

18:39:04user your decision okay I'm just making

18:39:06it as lower then whatever decision user

18:39:09is giving I'm again reinvoking my ch

18:39:12chatbot okay and right now I'm giving

18:39:14the command and we are giving this

18:39:16resume parameter is equal to our

18:39:17decision okay which we are giving as a

18:39:19command then we are passing the

18:39:20configuration again and whatever result

18:39:22we are getting we are showing the

18:39:23message and we are also printing in the

18:39:26terminal so this is a simple code I have

18:39:27written now let me show you the

18:39:29execution so again I will open up my

18:39:30terminal and right now I'll execute this

18:39:34chatbot with

18:39:37hittl

18:39:40now see here I will give Hello.

18:39:46Hello. How how I can help you today? I

18:39:49will tell what is the

18:39:54stock

18:39:57of Apple?

18:40:00Stock price of Apple.

18:40:08Now see this is the stock price of the

18:40:09Apple as you can see. Now I'll tell

18:40:12purchase

18:40:14okay 20 stock

18:40:19of Apple.

18:40:21Okay purchase uh 20 stock of Apple. Now

18:40:24it will use that purchase tool right and

18:40:27there would be interruption that will uh

18:40:29basically happen the interruption that

18:40:30means hitl will apply uh in that

18:40:33particular tool and it will ask for the

18:40:34human input. Now hi

18:40:37uh TL has been triggered and it is

18:40:39asking for the human improve improved

18:40:42approved buying 20 shares of Apple. Do

18:40:44you want to approve? Yes or no. So here

18:40:46I will tell yes I want to purchase it.

18:40:48Now if I execute this code you'll see

18:40:50that I have successfully purchased an

18:40:52order to purchase 20 shares of Apple.

18:40:54That means uh this tool has been

18:40:57executed and uh this tool has purchased

18:40:59the shares for you. Okay. Of the Apple.

18:41:02Now again if I let's say reexecute this

18:41:04code let's say

18:41:07um

18:41:10purchase

18:41:13let's say purchase

18:41:1820 stock of Google

18:41:24now again it is asking for the human

18:41:26approval approved buying 20 shares of

18:41:28Google yes or no. Now if I let's say

18:41:30give no now it will decline okay

18:41:33declined so you can see I'm sorry your

18:41:35request was purchase 20 shares of Google

18:41:37was declined because you've given no

18:41:40okay right now just tell me which one is

18:41:42better okay for this kinds of sensitive

18:41:44task this kinds of critical task without

18:41:46HITL or with HITL definitely with HITL

18:41:50it is more accurate and more secured

18:41:53okay secured version of our agentic

18:41:55chatbot okay now guys I think you have

18:41:57got it how to integrate this HITL inside

18:42:00our agentic chatbot. Okay. Now guys, uh

18:42:03let's try to add this functionality

18:42:04inside our user interface. So what I

18:42:06have done guys, I just copy pasted the

18:42:09same code. Okay. I just copy pasted the

18:42:11same code and I uh given to the chart

18:42:14GPT and I asked I just need to add this

18:42:17HITL uh uh HITL functionality on my user

18:42:20interface and charge GPT has given me

18:42:23one updated code. Let me show you. Only

18:42:25you just need to uh update inside your

18:42:27front end. So maybe I'll create a

18:42:30separate file of the front end. Let's

18:42:31I'll tell it as app

18:42:34hi ll okay.py

18:42:38and this is the updated code I got from

18:42:40the chgpd guys. Again if you don't know

18:42:42about the front- end design no need to

18:42:44worry there are some front-end developer

18:42:47um uh in your uh would be in your

18:42:49company. So they will handle this kinds

18:42:51of scenario. Okay. But uh again if you

18:42:53don't know you can take the help from

18:42:54chat GPT and this is the updated version

18:42:57of our front end. Okay this has the uh

18:43:00hit u that means approval uh user

18:43:03interface. Okay that means the uh uh

18:43:05first time I showed you a demo right it

18:43:07was asking for a human approval yes or

18:43:09no button. So it has added that

18:43:10particular functionality here. Okay.

18:43:12Otherwise my back end code will remain

18:43:14same. There won't be any kinds of

18:43:15change. So what I'll do again I'll

18:43:17create another file here. Let's say um

18:43:21I'll copy the name

18:43:25and I'll create a new file. I'm going to

18:43:27name it as agentic chatbot hitl backend.

18:43:30Hitl

18:43:32backend. Okay. Backend.py sorry

18:43:37back end.py. Okay. And whatever code I

18:43:39have written inside chatbot with HITL

18:43:41I'll just try to copy paste as it is.

18:43:44Okay. So here from here I just need to

18:43:46copy chatbot with HITL. I'll just try to

18:43:48copy the same code and I'll paste inside

18:43:50my aentic chatbot. HITL backend.py.

18:43:53Okay. And uh no need to change anything

18:43:55only. You just need to remove this line.

18:43:58Okay. This CLA is not required. I'll

18:44:00just uh remove that code and everything

18:44:03will

18:44:05remain as it is.

18:44:07H now uh here in this app hit you just

18:44:12need to change this import. Okay. So now

18:44:14the import is agentic chatbot HITL back

18:44:16end. So agentic

18:44:19chatbot hit back end. Okay. So from here

18:44:21we're importing all the functionality

18:44:23and this is the updated code. Now let me

18:44:25execute and show you this execution. So

18:44:28here I'll stop the execution. Clear and

18:44:31I will run streamlit

18:44:34run

18:44:36uh

18:44:38app

18:44:40hl. Okay.

18:44:43Now this is your interface. Okay. The

18:44:46same interface I think you saw. Now here

18:44:49you can perform any kinds of chat

18:44:51operation. Tell me the

18:44:57latest

18:44:59news

18:45:02uh

18:45:04in AI. You will see that it will use

18:45:07some kinds of search tool.

18:45:10So see it is using tably search tool and

18:45:12it will give you the uh latest news in

18:45:14AI.

18:45:16You can see uh this is the latest new uh

18:45:19news I got and this is the news of

18:45:21Andropics. Okay, latest news. Now here I

18:45:23will ask u um I will try to check my

18:45:27HITL code uh HITL functionality. So here

18:45:30I'll tell uh what is the

18:45:33latest or let's say what is the stock

18:45:39price of Apple.

18:45:47It is using my get stock price and it is

18:45:50giving you the latest uh uh stock price

18:45:52of Apple. Now we tell purchase

18:45:58purchase let's say 20 stock

18:46:02of Apple.

18:46:09Now you'll see that it will ask for the

18:46:11human verification. Now see human

18:46:13approval is required and this is the

18:46:14user interface uh we have added with the

18:46:16help of charge GPT. Now if I approve

18:46:18this purchase now you see it will use

18:46:20purchase tool and it will purchase that

18:46:22uh that shares for me. You can see your

18:46:24order to purchase 20 shares of Apple has

18:46:27been placed successfully. Okay. Now if I

18:46:29let's say give another one

18:46:33uh process 20 stock of let's say Google.

18:46:38Now again it will ask for the human

18:46:39verification.

18:46:41Okay. Now if I reject this purchase now

18:46:44see it will tell your request to

18:46:46purchase 20 shares of Google was

18:46:47declined. Okay. So that's how this

18:46:49system is working right now and we have

18:46:51successfully added this hit

18:46:53functionality inside our agentic chatbot

18:46:56and you can also see the live tracing on

18:46:58the lang lang platform. You can go to

18:47:01the trades and you can open up your

18:47:05trades and you can see all of the

18:47:06execution. Okay. Now you can see guys uh

18:47:08it hit your hit functionality. This is

18:47:12also available here. Okay, you can see

18:47:14that. So guys, our agentic chatbot is

18:47:16ready and we have added all of the

18:47:18functionality. Okay, we have discussed

18:47:20previously in my introduction video in

18:47:22my um theoretical video. Okay, I think

18:47:25remember if you are following this

18:47:26playlist from the beginning, I think you

18:47:27know that we have already explained

18:47:29about all of the core component of

18:47:31agentic application. We have added all

18:47:33of these core component inside our

18:47:35aentic application and now this is like

18:47:36more advanced. Now the only part is left

18:47:40uh the deployment part. Uh in my next

18:47:42video guys I'm going to show you how we

18:47:45can deploy this uh agentic chatbot. Okay

18:47:48over the cloud platform and I'm not

18:47:50going to show you the simple deployment.

18:47:51I'm going to show you the CI/CD

18:47:53deployment. Okay that means continuous

18:47:55integration and continuous uh delivery.

18:47:57So there I will try to set up the entire

18:47:59CI/CD pipeline and we'll try to deploy

18:48:01this project over the um AWS cloud.

18:48:04Okay. Uh I'm going to show you another

18:48:05deployment on the render cloud. Render

18:48:07is another cloud and there you can also

Agentic Chatbot CI/CD Deployment on AWS with Docker & GitHub Actions

18:48:09do the deployment. Uh first of all I'm

18:48:11going to show the AWS deployment. Then

18:48:12I'm going to show you the render

18:48:13deployment as well. Okay means right now

18:48:16this uh bot is running on my local host.

18:48:18This agentic chatbot is running on my

18:48:19local host and it cannot access um by

18:48:23any kinds of people, right? You can only

18:48:24execute this bot. But let's say if you

18:48:26want to make it live right uh if you

18:48:28want to make make it live to the entire

18:48:29world that time you have to deploy this

18:48:31application. So this uh uh deployment

18:48:33part I'm going to show you in my next

18:48:35video guys. So yes guys this is all

18:48:36about and I hope you liked my content

18:48:39guys. If you like my content please try

18:48:40to subscribe to my channel and hit the

18:48:42like and please try to comment in the

18:48:44comment section if you have any

18:48:45question. Uh in this video I'm going to

18:48:48show you the uh final deployment of that

18:48:51identic chatbot. So guys, as I already

18:48:53told you here, we'll be doing something

18:48:54called CI/CD deployment, right? And I

18:48:57already told you what is uh CI/CD full

18:48:59form. It's continuous integration,

18:49:01continuous delivery or deployment,

18:49:02right? So inside continuous integration,

18:49:04continuous delivery, what happens? Let's

18:49:06say you are the developer. Okay, let's

18:49:09say you are the developer.

18:49:11So what is your task? Your task is to

18:49:14develop a project in the development

18:49:17let's say environment. So development

18:49:19environment means like your local

18:49:21system. Let's say you are using your

18:49:22laptop or computer. Let's say local

18:49:24computer. Okay, local

18:49:27computer.

18:49:30Fine. Then what we are doing? I think

18:49:33you remember we are committing this code

18:49:35to the GitHub, right? We are doing the

18:49:36code management. I think remember that

18:49:38means that means whenever I was adding

18:49:39some new feature, I was pushing this

18:49:41code to the GitHub. Yes or no? Okay.

18:49:44With the help of G client, we are

18:49:46pushing the code in the GitHub GitHub

18:49:47server. Now what happens actually let's

18:49:50say after deployment so this is called

18:49:52actually development server or I can

18:49:54write uh this is actually development

18:49:55environment

18:49:59okay development environment so after

18:50:02implementing this project what we have

18:50:04to do we have to deploy this project yes

18:50:06or no let's say um somehow you have

18:50:09deployed this project on the AWS cloud

18:50:11let's say this is your AWS cloud fine so

18:50:14let's say you have deployed this project

18:50:16to the AWS cloud

18:50:19manually manually you just created a

18:50:21let's say instance there you create uh

18:50:23you just took a machine there a KC2

18:50:25machine and you manually deployed this

18:50:27project now it will give you some

18:50:28endpoint okay endpoint so with the help

18:50:33of this endpoint any of the user

18:50:37okay user can access your application

18:50:39now let's say after 4 month or let's say

18:50:426 month you want to add some more

18:50:44features in this let's say uh

18:50:46application Let's say you are deploying

18:50:48medical chatbot. Let's say you want to

18:50:50add some more data. You want to add some

18:50:52more knowledge base and you want to add

18:50:53some more features in this application.

18:50:55Then what you have to do? You have to

18:50:56again develop this let's say features in

18:50:59your code. Then what you will be doing

18:51:00again you'll be deploying this

18:51:02application to the as cloud. Now just

18:51:04try to see whenever you are deploying

18:51:05the project for the second time. Let's

18:51:08say this is the first time you have

18:51:09deployed then you are trying to deploy

18:51:10for the second time. Then what you have

18:51:12to do? First of all, you have to stop

18:51:14this application in the AWS. Okay, stop

18:51:17this application. Then you'll be

18:51:18uploading your updated code. Then this

18:51:20code will reflect to the endpoint. Then

18:51:22user will able to access that. Now let's

18:51:24say in between whenever you stop this

18:51:26AWS server, let's say your uh

18:51:29application, let's say it took 3 hours.

18:51:32It took 3 hours to change the entire

18:51:34source code. That means uh change the

18:51:36entire features, okay, of your

18:51:38application. So what will happen? 3

18:51:40hours user won't be able to access your

18:51:41application. So they will come your

18:51:43website and they will see server error.

18:51:45Okay, server error actually they will

18:51:47get. So if user is getting this kinds of

18:51:50experience so definitely it would be a

18:51:51negative let's say uh effect okay on

18:51:54your application. So next time actually

18:51:55they are not going to use your

18:51:57application yes or no. Let's say if

18:51:58charg is down for the uh let's say 3

18:52:01hours definitely people will move to the

18:52:03Google b or any other let's say software

18:52:06whatever actually we are having. Okay.

18:52:08So now see chart GP is also updating

18:52:10their let's say application day by day.

18:52:13But did you ever observe this server is

18:52:15down? No even not seeing this server is

18:52:17down but still they're able to make the

18:52:18changes in their application. How?

18:52:20Because they are following something

18:52:21called CI/CD approach. Continuous

18:52:22integration, continuous delivery. That

18:52:24means this application is keep on

18:52:26running but in the back end they're

18:52:28pushing their source code. They're

18:52:29pushing their let's say new features and

18:52:31this feature is automatically getting

18:52:32updated. Okay. So this is collected

18:52:34CI/CD that means you are not going to

18:52:36deploy this application manual. Instead

18:52:38of that what you have to do you have to

18:52:39follow the CI/CD. That means what will

18:52:40happen? Let's say you have changed

18:52:42something in your code. You will push

18:52:44the code to the GitHub. Okay. GitHub

18:52:46will automatically uh let's say deploy

18:52:48your code to the AWS cloud. It will

18:52:51automatically push your code to the AWS

18:52:53cloud and your endpoint would be

18:52:55automatically updated. Okay.

18:52:57automatically updated so that if user is

18:52:59using your application okay they won't

18:53:01be filling any kinds of let's say server

18:53:03down issue okay server down issue

18:53:06actually they won't be failing got it so

18:53:08this is what actually uh we have to do

18:53:10that means we'll be creating the entire

18:53:11pipeline entire let's say CI/CD pipeline

18:53:14so we'll be just pushing the code in our

18:53:16GitHub and GitHub will automatically

18:53:18trigger uh this uh action and my code

18:53:21will update it to the AWS cloud and AWS

18:53:23will update the endpoint okay now see

18:53:26the automated process we'll be doing now

18:53:28whenever we we'll let's say push our

18:53:29code to the GitHub GitHub will

18:53:31automatically trigger how it will

18:53:32trigger for this you have to use some

18:53:34CI/CD tool okay CI/CD tool CI/CD

18:53:37automation tool so here there are

18:53:38different kinds of CI/CD tool so the

18:53:40first tool you can use something called

18:53:41GitHub action okay GitHub action you can

18:53:44use then you can use something called

18:53:45genkins okay genkins then you can use

18:53:48something called circleci

18:53:52so these actually three famous tool

18:53:54actually we are having in the market

18:53:55right now so people are using more this

18:53:58GitHub action because GitHub action you

18:53:59don't need to set up anything. It is

18:54:00already set up everything in the GitHub.

18:54:02But if you're using Genkins and CircleCI

18:54:04you have to set up this server manually.

18:54:06Okay. So here we'll be using GitHub

18:54:07action because it is already inbuilt

18:54:08with the GitHub. We don't need to set up

18:54:10anything. Going forward I will also show

18:54:11you how we can uh let's say use Genkins

18:54:13CircleCI. These are the services as

18:54:15well. Fine. So yes guys this is the

18:54:17complete uh highle architecture of our

18:54:19deployment. So guys uh here you can see

18:54:21this is our application code and uh we

18:54:24have written actually so many files but

18:54:27uh if you see the final files here which

18:54:30is this app hittl

18:54:33and this uh agentic chatbot hittl back

18:54:36end okay because this was our last uh

18:54:38last update we have done right so

18:54:40instead of like uh deploying all of

18:54:43these file guys uh what I'm going to do

18:54:45I'm only going to copy the final file

18:54:48okay the final code and I'm going to

18:54:50create a new uh folder and inside that

18:54:52I'm going to keep these are the code

18:54:54okay uh just to explain you all the

18:54:57concept guys I have kept all of my

18:54:59previous code and this is not required

18:55:01actually to run my final uh project so

18:55:04my final project is uh right now this

18:55:06app um app hittl let me show you so

18:55:09let's say if I execute this one

18:55:12streamlit

18:55:15uh run

18:55:17app

18:55:19hittl okay.py Pi. Now you'll see that uh

18:55:22my agentic chatbot uh application will

18:55:25be opening.

18:55:27So guys as you can see this is our

18:55:29application we have u implemented so

18:55:32far. So here uh what I'm going to do uh

18:55:35instead of moving all of these file I'm

18:55:37only going to take my final file which

18:55:40is this uh front end app hit and my back

18:55:43end which is agentic chart. HITL back

18:55:46end. Okay. Apart from that I need this

18:55:48requirement.xt txt file. Uh yeah, so I

18:55:51think if I have these are the file then

18:55:52I'll be able to run my final application

18:55:55and I also need this file because inside

18:55:57that you have all of the credential. So

18:55:59what I can do I can maybe create a new

18:56:01folder here and uh let's create this

18:56:04folder

18:56:07or I'll just create a GitHub repository.

18:56:09Okay, because here we have to do the

18:56:11CI/CD deployment and for this first of

18:56:14all uh you have to create a GitHub repo

18:56:16and you have to uh push all of your

18:56:19code, okay, in that particular

18:56:20repository. So what I'm going to do

18:56:22guys, I'm going to open up my GitHub. So

18:56:24here what I'm going to do, I'm going to

18:56:26create a new repository.

18:56:29Let's name it as uh aentic

18:56:33chatbot.

18:56:36Okay. Aentic chatbot using lang graph

18:56:45lang graph.

18:56:47Okay. Now uh what I'm going to do I'm

18:56:50going to simply add a readmi file.

18:56:55Then I'm going to take this g ignode

18:56:57here. I'm using python programming.

18:56:59Let's select the python. Uh you can also

18:57:01take any kinds of license. Let's take

18:57:03this apache license. You can also take

18:57:04any other license is completely fine.

18:57:07Now let's create the repository.

18:57:13Okay. Once repo is created, uh click on

18:57:15this code and copy this link address and

18:57:18open up your uh local folder. Inside

18:57:20that open up your terminal. Okay. You

18:57:23can also open up your git bash. It's

18:57:24completely fine. Now here simply write

18:57:26get clone

18:57:29and paste your uh URL you have copied

18:57:32from the GitHub and clone this

18:57:34repository here. Okay. Now you can see I

18:57:36have successfully cloned this

18:57:37repository. So now what I'm going to do

18:57:39I'm going to simply redirect this

18:57:40folder. So cd

18:57:43aentic

18:57:47chatbot using lang graph. Okay. Now I'm

18:57:49inside this particular folder. If I show

18:57:51you see I'm inside this particular

18:57:53folder right now. Now here I have to

18:57:55move my code file. Okay, my final code

18:57:57file. So what is my final code file?

18:57:59I'll take this appl

18:58:02then uh this agentic chatbot hit back

18:58:06end as well as this env file and I need

18:58:09this requirement.txt. Okay. Yeah, I

18:58:12think these are the file I need only.

18:58:13Now I'll copy this and I'll try to paste

18:58:16inside this uh new uh folder I have

18:58:19created. Okay. Now if I open up with my

18:58:22uh Visual Code Studio, let me open up.

18:58:25So this is my Okay, this is my old code.

18:58:27Now I'll try to open it with my Visual

18:58:29Code Studio.

18:58:31Yeah. So you can see guys, this is my uh

18:58:34final code. Okay, I have copied from my

18:58:36previous code. Yeah, this is my final

18:58:38version of the code. Now uh what I can

18:58:41do, I can maybe rename these are the

18:58:43file instead of keeping this file name

18:58:45like that, I can rename it. So first of

18:58:47all let's try to change this backend

18:58:49file name. So here let's rename it. So

18:58:53here I'm only going to name this file as

18:58:55backend.py.

18:59:00Okay backend.py

18:59:02and this app hit I'm going to name it as

18:59:07only app.py.

18:59:11Okay app.py. Now make sure uh whenever

18:59:15you uh you have renamed this file you

18:59:18also need to uh change the import. Okay.

18:59:20So it has automatically changed because

18:59:22I'm using one extension that extension

18:59:25automatically will uh like uh trigger uh

18:59:29whenever I'm changing any kinds of file

18:59:31name. It will automatically change that

18:59:32uh input in my other file as well. Now

18:59:35you can see I'm importing all everything

18:59:37and it's coming one warning because I

18:59:40have to select my original environment

18:59:42which is langraph test. Okay, this

18:59:43environment now I think everything is

18:59:45fine. Okay, now here uh what I have to

18:59:47do guys, I have to

18:59:50uh I have to

18:59:52um

18:59:54let me check again. Huh. So everything

18:59:57is fine. Let me show you whether it's

18:59:58working or not. So what I can do I can

19:00:01stop my previous execution and let's

19:00:04open up my new terminal.

19:00:08Now I'll execute this app. So cond

19:00:15list.

19:00:18So this is the name of the environment.

19:00:20I'll copy

19:00:24and I'll just write conduct activate

19:00:29my environment.

19:00:31Now after that let's execute my app.py.

19:00:33So streamllet

19:00:36run

19:00:37app.py Pi.

19:00:42Now see this is the application. Now

19:00:44let's uh test this application. Uh see

19:00:47right now you can't see any uh any of my

19:00:49old trades because completely right now

19:00:52I have copied my uh chatbot in a new uh

19:00:56new actually folder. Okay. And right now

19:00:58all of the execution will be happening

19:00:59from the beginning. So let me test this

19:01:02chatbot whether it's working or not. So

19:01:04here I'll pass hello.

19:01:07See it's working. Okay. Hello, I can uh

19:01:10help you today. That means everything is

19:01:11fine. That means uh this is our final

19:01:13code we can utilize right now for the

19:01:15deployment. Now guys, let me write all

19:01:18the deployment step actually we'll be

19:01:20following for this CI/CD deployment. Um

19:01:24let me write here

19:01:28this is the [clears throat]

19:01:31this is the entire step. Okay, you can

19:01:34see this is this enter step I have

19:01:36already prepared for this deployment. So

19:01:37let me open the preview. Yeah, now you

19:01:40can see here. So see this is a streaml

19:01:43app and uh we have to deploy the

19:01:46streamlit app over the AWS cloud as a

19:01:48CI/CD and for CI/CD tool-wise we'll be

19:01:52using GitHub actions. Okay. And GitHub

19:01:54action is already uh already actually

19:01:57let's say uh built-in CI/CD like uh

19:02:01tool. You don't need to set up this

19:02:03GitHub action server separately. This is

19:02:05already running on the GitHub. Okay, you

19:02:07just need to um you just need to

19:02:09actually configure that GitHub actions

19:02:12by adding some commands. Okay, by adding

19:02:15some commands inside a file. We call it

19:02:17as a CI/CD. ML file. This file I'm also

19:02:20going to show you how you can write

19:02:21that. But as you can see, this is the

19:02:24deployment step we'll be following.

19:02:25First of all, we'll try to build the

19:02:27Docker image of our source code. Okay.

19:02:30uh we'll try to dockerize entire for

19:02:32source code. Then we'll try to push this

19:02:34docker image to the docker hub. Okay.

19:02:36Then I'm going to launch a EC2 machine

19:02:38on AWS server. Uh then I'm going to pull

19:02:41my Docker image. Okay. From the Docker

19:02:44hub to EC2. Then I'm going to launch my

19:02:47um like image. That means I'm going to

19:02:50execute my application as a Docker

19:02:52container inside EC2 machine. Okay. Then

19:02:54I'll do some port mapping. Then you'll

19:02:56be able to access your application.

19:02:58Okay. uh from the remote URL. Now for

19:03:02this Docker knowledge is definitely

19:03:04required and I am expecting you are

19:03:06already familiar with Docker but if you

19:03:08don't know about Docker and all so don't

19:03:10worry I have a complete uh like let's

19:03:13say tutorial on my channel as you can

19:03:15see I have a complete um video ultimate

19:03:18MLOps full course in a one video. So

19:03:20this is around 11 uh almost 12 hours of

19:03:23recording and this course covers

19:03:25everything about the MLOps. uh I have

19:03:27already covered Linux. Okay. Then um

19:03:30some other tools as well. You can see in

19:03:32the description section. See lots of

19:03:34like MLOps tools I have covered. And

19:03:36here we'll be seeing uh one section uh I

19:03:39think from this uh hour itself you can

19:03:42uh start watching uh docker concept.

19:03:44Okay. You can see the docker concept I

19:03:46have also covered in this particular

19:03:47course itself. Now if you are completely

19:03:49new to the docker and if you want to

19:03:50learn the docker okay how do works and

19:03:52why do required I'm going to suggest you

19:03:54go through this recording. I'm going to

19:03:56add this uh video in my description.

19:03:58From there you can check it out. Okay,

19:03:59you don't need to watch from the

19:04:01beginning. Maybe you can only complete

19:04:02the docker part at least so that you can

19:04:05um you can u see the deployment part.

19:04:08Okay, you can um understand like how

19:04:10doer is helping for the CI/CD deployment

19:04:12and all. Okay. So yeah, this is the

19:04:14requirement. Then uh here I have added

19:04:17this step. First of all, we have to

19:04:19login to the AWS console. Then we'll be

19:04:22creating the IM user. Okay. Then after

19:04:24creating the IM user, we'll try to set

19:04:25the policy. Then we'll try to create the

19:04:27EC2 uh machine. Okay, we'll be taking

19:04:30open Ubuntu instance. After that, we'll

19:04:32try to open the EC2 instance and we'll

19:04:34try to set up uh docker there. Okay,

19:04:36because by default in the EC2 there

19:04:38won't be any kinds of docker. You have

19:04:39to set up it. Once the setup is

19:04:41complete, then uh you will be um able to

19:04:44set the port. Okay, that means by

19:04:46default streaml runs on port number

19:04:488501. Okay, so we'll try to do the port

19:04:50mapping. Then we'll try to set up our

19:04:53entire project as a self-hosted runner.

19:04:55That means we'll try to connect our AWS

19:04:58with our GitHub. That means once let's

19:05:00say we will try to push something in the

19:05:02GitHub automatically my CI/CD pipeline

19:05:04will trigger and all of the new changes

19:05:07will be available over my AWS. Okay,

19:05:09that means automatically my deployment

19:05:11will be happening. So these kinds of

19:05:12pipeline we have to create by creating

19:05:14the self-ostraed runner. Okay, I'm going

19:05:16to also show you how to create that.

19:05:17Then once everything is complete then

19:05:19I'll try to uh like set up all of my

19:05:21secret. Okay. So you can see uh if you

19:05:24want to run this project you need these

19:05:25are the secret. Uh apart from that some

19:05:27additional secret is also required like

19:05:29um registry docker username docker

19:05:31password. Okay. Image name AWS access

19:05:34key ID as secret key uh secret access

19:05:36key. Okay as region. So these are the

19:05:39thing additionally you need because if

19:05:40you want to uh authenticate with AWS

19:05:43account uh programmatically you need

19:05:44these are the credential. Okay. I will

19:05:46try to create this credential as well.

19:05:47I'm going to show you okay how to do do

19:05:49that and I am going to push my uh uh

19:05:52docker image uh to the docker hub for

19:05:54this docker credential is also required

19:05:56and you should have also account in the

19:05:58docker hub and uh after that whatever

19:06:00credential I'm having I think you

19:06:02already know that these are the

19:06:03credential I need to execute my entire

19:06:05agents okay like if you're using openi

19:06:07model you can set the open api key tab

19:06:09API key open weather google okay if

19:06:11you're using gemini you can set the

19:06:13google api key lang smmith lang smith

19:06:15endpoint lang smmith API then lang

19:06:17speedit project. Okay. So yeah, this is

19:06:19the step guys we'll be following for uh

19:06:22deployment. Okay, for this CI/CD

19:06:24deployment now first of all guys here

19:06:26I'm going to create a docker file. So

19:06:29let's create a docker file here. So to

19:06:32dockerize your entire application you

19:06:34need this docker file. Okay. And inside

19:06:35this docker file you have to write some

19:06:37docker related command. Now what are the

19:06:40command you have to write. So this is

19:06:41the command guys and this thing you will

19:06:43be able to understand uh from that

19:06:45particular video I suggested you because

19:06:47in that video I have covered like what

19:06:49is this uh uh beige image okay uh what

19:06:52is this environment what is this working

19:06:53directory okay each and everything I

19:06:55have explained there if you are

19:06:57completely new to the docker first of

19:06:58all try to complete that recording I

19:07:00think that would be easy for you okay

19:07:02but if you're already familiar with

19:07:03docker and you know that these are the

19:07:05command we need to create uh the docker

19:07:07image that means to containerize entire

19:07:09our application Right. So yeah, we are

19:07:11setting this um command inside the

19:07:14docker file and here you can see we have

19:07:16to install the requirement.txt. Okay,

19:07:18we're also uh installing in this

19:07:20particular command. Uh and I have

19:07:22already commented out. See now this uh

19:07:24part you need uh to prevent python cache

19:07:27file and enable immediate uh container

19:07:29logs. Okay. Then this code you need to

19:07:32build the essential supports package

19:07:33that required uh compilations. then lib

19:07:38uh gum gum one is a commonly required by

19:07:42fire CPU that means here I am using fire

19:07:45CPU for the vector database right that's

19:07:47why this library you also need to

19:07:50install okay whenever you are upgrading

19:07:51this machine then you need this

19:07:54requirement txt um it has to copy in the

19:07:58root folder then um you can see uh we

19:08:01will be installing this requirement txt

19:08:03and this is the command we are writing

19:08:05then we are copying all of our source

19:08:07code inside the root directory. Then

19:08:08we're exposing the port and by default

19:08:11streamllet runs on port number 8501.

19:08:13We're exposing the port and this is the

19:08:15final command to launch the streamlit

19:08:16server. Okay. So yeah, this is the

19:08:18docker file and with this docker file

19:08:20you need another file which is dot

19:08:22docker ignore

19:08:26ignore. Okay. So inside this dot uh

19:08:28docker ignic node uh you have to write

19:08:30some of the unnecessary files and folder

19:08:33which you don't need to uh integrate

19:08:36inside uh your docker image let's say if

19:08:39you have your virtual environment okay

19:08:41in this particular folder itself that uh

19:08:43you don't need okay whenever you are

19:08:44creating the docker file right so that

19:08:46time you can ignore this one so that

19:08:48means whatever file and folder you will

19:08:50be keeping inside dot docker ignore it

19:08:52will ignore during building the docker

19:08:54image okay like uh this get ignore and

19:08:56you know get ignore what it does it

19:08:58ignores the files and folder whatever

19:08:59you will be adding inside this get

19:09:01ignore okay so that it won't be pushing

19:09:03inside our um github repositories okay

19:09:06so these are the things uh actually I

19:09:08don't need inside my um docker image

19:09:11that's why I'm ignoring inside dot uh do

19:09:13docker ignore so once it is done uh then

19:09:16I'll try to add this cicdl file for the

19:09:20github actions acd deployment so for

19:09:22this you have to create a folder the

19:09:24folder name should be github Okay. So

19:09:27this is the folder name we usually use

19:09:28and this folder name you don't need to

19:09:30change. If you are changing it will not

19:09:32work. So by default if you're using u

19:09:34this uh GitHub actions for this

19:09:37deployment you have to create this dot

19:09:39GitHub folder. Inside that I'm uh you

19:09:41will be creating another folder called

19:09:42workflows.

19:09:44Okay workflows. Make sure you are using

19:09:47the same name otherwise it will not

19:09:49work.

19:09:50Okay workflows. And inside this

19:09:53workflows you will be creating a file

19:09:54called cicd

19:09:56dot

19:09:58yml uh okay yl okay this is a yl file

19:10:03inside that you have to mention all of

19:10:05the command you need for the cicd

19:10:07deployment okay now just verify whether

19:10:11everything is fine or not inside github

19:10:13workflows and cic.ml file is available

19:10:15okay now guys uh what I'm going to do um

19:10:19I'm going to maybe close this file this

19:10:21is not required. Yeah, I'm going to open

19:10:24up my new code. Yeah, now what I'm going

19:10:26to do guys, I'm going to add all of the

19:10:28CI/CD related command and these are the

19:10:31CI/CD related command you will be

19:10:33getting in the internet itself. Okay. Uh

19:10:35you can simply search I want to perform

19:10:38um CI/CD deployment. Okay. Uh on AWS and

19:10:43I have a streaml application for that. I

19:10:45need this uh CI/CD. ML file. So you will

19:10:48be able to see this YML file is

19:10:50available okay over the internet you

19:10:52don't need to memorize it you will be

19:10:53getting this thing in the internet only

19:10:55and if you have the chart GPT gemini

19:10:57simply you can open the chart GP and

19:10:58Gemini you can ask okay I need a CI/CDML

19:11:01file commands uh I have to do this

19:11:03deployment okay streamllet app on the

19:11:05AWS as a CI/CD so I have already

19:11:08prepared the CICDML command so let me

19:11:10show you so this is the

19:11:12uh command and most of the command you

19:11:14can see this is a Linux command uh if

19:11:16you are completely new to the Linux

19:11:17command So again in my MLOps course okay

19:11:21on my YouTube channel I already covered

19:11:23the Linux okay relaxated command you can

19:11:25see uh Linux is also covered okay you

19:11:27can go through the Linux video as well

19:11:29to understand how this command works

19:11:31okay so yes uh this is the like uh uh

19:11:34structured command you need to execute

19:11:37uh whenever you want to perform CI/CD

19:11:38with the help of GitHub actions so first

19:11:40of all you have to define a name of your

19:11:42application so here I have given

19:11:44streamlit AWS CICD you can change the

19:11:46name anytime Then on push okay that

19:11:48means if you're pushing on the main

19:11:50branch that means right now I have the

19:11:53GitHub right this is the GitHub and here

19:11:55I am using main branch that means

19:11:57whatever push I'm going to do on my main

19:11:58branch this pipeline will trigger okay

19:12:02only it will ignore if you're changing

19:12:04the readmi file because readmi is not a

19:12:06feature okay readmi is kinds of file

19:12:08there I just try to write some metadata

19:12:10for my project right so if I'm changing

19:12:12anything in my readmi that time our cd

19:12:14pipeline should not be triggered that's

19:12:16why path not ignore we are writing

19:12:18readmi file otherwise if you're changing

19:12:20in any file this pipeline will start

19:12:22okay this cd pipeline will start and

19:12:24your deployment will be happening then

19:12:27uh we are giving some other like uh

19:12:29parameter as well like workflow dispatch

19:12:32concurrency okay permissions we are

19:12:34giving each and everything and this is

19:12:35already uh I mean uh predefined actually

19:12:39workflows you have to write if you're

19:12:41using this uh GitHub actions for the

19:12:43CI/CD deployment okay this is not our

19:12:45code So CI/CD uh uh with the GitHub

19:12:49actions documentation if you check so

19:12:51they have written these are the commands

19:12:52should be added inside your CIC dol. Now

19:12:56here the main thing is the jobs. So here

19:12:58first of all continuous integration will

19:12:59be happening inside continuous

19:13:01integration we are just only eing the

19:13:02command. Okay we are taking a Ubuntu

19:13:04instance and we are only eing the

19:13:05command. Then the second step we are

19:13:08building and pushing the image to the

19:13:09docker hub. So here first of all we are

19:13:12verifying with the uh docker hub

19:13:14account. So make sure you have the

19:13:15Docker Hub account. So if you don't have

19:13:17you can create. So simply search for

19:13:19DockerHub. Okay, Docker Hub. Go to the

19:13:21first website and make sure you have a

19:13:24account here. Okay, I already have the

19:13:25account that's why it it got login.

19:13:28Okay, but if you don't have account

19:13:29guys, please try to create an account.

19:13:31So let's say I will sign out.

19:13:36So here you can sign up. Okay, sign up.

19:13:38You can fill your information. After

19:13:40filling you will be able to create the

19:13:41account. So I already have the account.

19:13:42I'll just try to sign up.

19:13:45sign in.

19:13:47So this is my email and password. I'm

19:13:48going to sign in with my Docker Hub.

19:13:52Okay. And this is how your Docker Hub

19:13:55will look like. Okay. Previously I

19:13:57already pushed some of the image that's

19:13:58why it's available. But for you it would

19:14:00be completely empty. Okay. So Docker Hub

19:14:02is a service that you can store all of

19:14:03your Docker image. Okay. You are

19:14:05creating. You can also use AWS ECR

19:14:08service but this is fine. Uh I can use

19:14:10Docker Hub also. It's completely fine.

19:14:12Okay. Okay, in AWS also to store your

19:14:14docker image there is a service called

19:14:16AWS ECR elastic container registry.

19:14:18Okay, you can also use that this one but

19:14:20I'm going to use docker hub for this

19:14:21particular project. Maybe in future I'm

19:14:22also going to show you that elastic

19:14:24container registry how to use that

19:14:27because I want to uh minimize my cloud

19:14:29cost that's why I'm using these are the

19:14:31free uh free to use actually hub okay to

19:14:33push my image

19:14:35and uh yeah so here you can see we are

19:14:38authenticating with the docker hub and

19:14:40after that we are building the image

19:14:42okay we are building our docker image

19:14:45then after building we are pushing this

19:14:46image to the docker hub then once my uh

19:14:50second step done Then it will start the

19:14:52third step. There you will try to deploy

19:14:54your image to AWS EC2 instance. Okay. As

19:14:58a self hosted runner. For this this is

19:15:00the command. So it will again

19:15:01authenticate with your docker hub and it

19:15:03will uh take that image and it will run

19:15:06on your EC2 instance. Okay. And to run

19:15:08your app you need some credential. I

19:15:10think you remember you need Google API

19:15:12key API key open a open weather API.

19:15:15Okay. So whatever let's say API you have

19:15:17used right you have to write all of the

19:15:19API here. You can see uh what is that?

19:15:22Yeah, but you are not going to directly

19:15:24give the value. So this value you'll be

19:15:26reading from the secret. Okay, we call

19:15:28it as a GitHub secret. I'm going also

19:15:29going to show you how to add this

19:15:30secret. But make sure whatever API key

19:15:32you are using, you have to write here.

19:15:34Okay, and here we are checking all of

19:15:36the API keys are available or not. If

19:15:38not available, we are uh just uh like

19:15:41launching a message called secret is

19:15:42missing. Okay. Then uh this is the code

19:15:45and finally we are running our docker

19:15:47image and it is starting the server.

19:15:49Okay. And some other necessary command

19:15:52we are also running. Okay. Everything

19:15:54will be running in that docker video I

19:15:56have already given you. Okay. In my

19:15:57MLOps course. Now this is the cicd.

19:16:00Mamel file guys you need for this uh

19:16:02deployment. Now everything is ready. Now

19:16:05let's try to create the server. Okay.

19:16:08Server means I will follow this step.

19:16:10Okay. First of all here what I'm going

19:16:12to do? I'm going to login with my AWS

19:16:14console. So let's try to login. I

19:16:17already logged in with my AWS console.

19:16:18Make sure you have the AWS account. If

19:16:20you don't have the account guys, please

19:16:22try to create one account. I already

19:16:23logged in with my AWS console and that's

19:16:25how your console looks like. Now here

19:16:27the first thing you have to search for

19:16:28the IM user. Okay, IM user that means

19:16:31identity access management. Um then I

19:16:34will go to the IM user section and here

19:16:36you have to create an user. Okay, let's

19:16:38create a user. So I'm going to name it

19:16:40as uh let's say agentic.

19:16:46Okay, agentic user. You can give any

19:16:48name it's up to you. Now I'll click on

19:16:50next. Then you have to add the policies.

19:16:52Okay. And which policies you have to

19:16:53add. So here I think I have already

19:16:55written.

19:16:57Uh yeah. So after login to the console

19:16:59we are creating the IM user and this is

19:17:00the policy you have to add. Okay. AD

19:17:02Amazon EC2 full access. So here uh let

19:17:07me check again. Amazon EC2 full access.

19:17:09Okay. Huh? Because you only need the EC2

19:17:11instance. Okay. So I'll copy this and uh

19:17:14here I'm going to search it here. Okay.

19:17:17Okay. So, Amazon EC2 full access. I'll

19:17:18provide this access and I'll click on

19:17:21next. Okay. See why we are giving this

19:17:23permission because in my AWS account

19:17:25there are lots of services we are having

19:17:27right [snorts] and it's not like that

19:17:29I'm going to give all of the services

19:17:31access to my um like project to my code.

19:17:35Instead of that I'm only going to give

19:17:36the access the service actually I'm

19:17:38using otherwise there is a possibility

19:17:40uh it might use some other service and I

19:17:42will end up with lots of cost right? But

19:17:44I don't need that. So that's why I am

19:17:46only giving the access the services I'm

19:17:48using. So here I'll be using EC2

19:17:50instance. EC2 is a virtual machine

19:17:52inside AWS. Okay. Once it is done, let's

19:17:54create the user.

19:17:58Okay. So some error is coming.

19:18:03The specific username is invalid. Must

19:18:05contain. Okay. So I think the name we

19:18:07have given this is not uh okay. There I

19:18:10have given a space, right? But it should

19:18:11not be having any kind of a space. So

19:18:14I'll give this hyphen sign. Now let's

19:18:16click on next. Now I'll provide this um

19:18:22Amazon EC2 full access. Click on next.

19:18:25Everything is fine. Create the user.

19:18:28Okay. So my user creation is done. Now

19:18:30I'll go inside the user and there is a

19:18:32option called security credential. Just

19:18:34try to click here

19:18:36and uh here you will see this one access

19:18:40keys. Okay. Now I'll click on this

19:18:43create access keys. Now select this

19:18:45command line interface CLI and just do

19:18:47the confirmation. Okay. Once everything

19:18:49is done, now click on the next. Then I

19:18:51will uh click on this create access

19:18:53keys. Okay. Now this is our access keys

19:18:56and secret access keys. Guys, you need

19:18:57to authenticate with your AWS because

19:18:59I'm going to access my AWS account from

19:19:02my Python code, right? Um uh from my

19:19:05actually GitHub actions.

19:19:07Uh that's why this credential is

19:19:09required. Okay. Now you can download as

19:19:12a CSV file as well. Let's try to

19:19:13download this thing. I need later on.

19:19:15Now this service is creation done. Okay.

19:19:18Now this this is creation done. Um we

19:19:21have successfully created the IM user

19:19:24and we have given the policy and we

19:19:26collected our access key and secret

19:19:28access key. Now the next step you have

19:19:29to create the EC2 machine Ubuntu

19:19:31machine. Okay. Now let's do that. I will

19:19:33go to my home and here I will search for

19:19:37uh EC2 instance. Okay. Let's open this

19:19:40EC2 instance. And EC2 instance is a

19:19:43virtual uh virtual computer service.

19:19:46Okay. Inside AWS. Now I'll just try to

19:19:50click on launch instance. Uh launch

19:19:52without a walk through. Okay. Now you

19:19:54have to give a name. So I'll give

19:19:56aentic.

19:19:58Okay. Agentic chatbot

19:20:04machine. Okay. You can give any name.

19:20:06It's up to you. And make sure you select

19:20:08this Ubuntu instance. Okay. There are

19:20:09some other instances available like Mac

19:20:11OS, Windows, Red Hat. But I will take

19:20:13this Ubuntu instance because this is the

19:20:15most used instance whenever you are

19:20:17doing the production grade deployment.

19:20:19Now once it is done you can uh select

19:20:21the instance type that means how much

19:20:23memory how much CPU you need. You can

19:20:26select the configuration here. So for

19:20:27this project at least 4 GB RAM is

19:20:30required. Okay. And I'm going to take 2

19:20:32vcpu. I think this T2 medium is fine for

19:20:35me. Okay. But if you are creating a

19:20:37heavy project that needs lots of

19:20:38computation that time you can also take

19:20:40some bigger instance as well. Some

19:20:42bigger instance are also available like

19:20:4332 GB memory 16 GB memory. Okay you can

19:20:47see everything is available. Now I'll

19:20:48take this T2 medium. Okay this is fine

19:20:50for me. Now here you have to create a

19:20:53key value pair uh key pair. Now you can

19:20:55give the name. I'll give aentic.

19:20:58Let's create the key. And once it is

19:21:01created you can select it from here.

19:21:03Okay. agentic

19:21:05huh this one so this uh key you need

19:21:08whenever let's say you want to access

19:21:10your uh this EC2 machine from any third

19:21:12party tools like putty and mobile

19:21:14extreme that time it is required but for

19:21:16our case we'll try to launch in the uh

19:21:18same uh Google chrome only okay there uh

19:21:20you can launch the uh terminal okay your

19:21:24uh easy to inst terminal this is also

19:21:25possible now here you have to uh check

19:21:29mark these two option allow https and

19:21:31allow http traffic from the internet and

19:21:33here you can take the storage at least

19:21:36try to take 32GB storage and uh

19:21:39everything is fine no need to change

19:21:40anything simply launch the instance

19:21:48okay so I'll go below and click on view

19:21:51all instance now see my instance has

19:21:54created and it is running okay make sure

19:21:55it is running otherwise you can keep on

19:21:56refreshing this page now simply I'll

19:21:59click on my instance ID and here you

19:22:01will get one option call this connect

19:22:03button. Okay, but before connect button

19:22:05I think you remember what I told you. I

19:22:07told you to do the port mapping as you

19:22:09can see. Uh

19:22:13okay, port mapping I think we can also

19:22:15do do later on but you can do the port

19:22:17mapping right now. Uh if you want just

19:22:20do the port mapping otherwise we'll do

19:22:22do it later on. Okay. So simply I'm

19:22:24going to connect my instance. Okay. So

19:22:26there is a connect button. Just try to

19:22:28click on the connect button and uh make

19:22:30sure you select everything as default.

19:22:32If you want to connect this uh this uh

19:22:34let's say EC2 instance from any third

19:22:36partyy tool that time you can use HSS

19:22:37client and you can use mobile extreme

19:22:39putty. These are the tools to connect.

19:22:41Okay. But I'm going to connect from my

19:22:44uh same AWS CLI only. I'm going to

19:22:46simply click on connect. Now see in a

19:22:48different tab it will open up your this

19:22:51uh EC2 instance terminal. Okay. This

19:22:53will be your uh Linux terminal and there

19:22:56you have to execute all the command to

19:22:57set up your entire server. Okay. Now see

19:22:59this is the Linux server we are getting

19:23:01guys that's cleared and for this you

19:23:03need some idea about Linux command

19:23:06Ubuntu Ubuntu operating system and this

19:23:08thing I have already covered in my

19:23:10ultimate MLOps full course okay there I

19:23:12have already covered about the Linux you

19:23:13can study about that okay for the

19:23:15deployment guys you need little bit of

19:23:17understanding MLOps if you know about

19:23:19MLOps it would be easy for you to do the

19:23:21deployment now guys what I'm going to do

19:23:23I'm going to set up all of the

19:23:27uh all of the package I need here So for

19:23:29this I mention all of the command as you

19:23:31can see. Uh first of all you have to

19:23:34upgrade your machine. So for this just

19:23:36copy this command and execute it here.

19:23:42Right click and paste and execute. Then

19:23:45I'll copy the next one. See you just

19:23:47need to copy this command one after one

19:23:50and just execute inside the terminal.

19:23:53Done. Now I'll coph paste this second

19:23:56command. So see this is a completely new

19:23:59create newly created machine and here

19:24:00you have to upgrade the package manager.

19:24:03Okay. So we are upgrading and for this

19:24:04we're using pseudo get upgrade this

19:24:06command. Now I'll give yes permission

19:24:09and upgrade this machine

19:24:15and that's how your production server

19:24:17looks like. Okay. That's why you you may

19:24:19be heard of in production you need to

19:24:22know about Linux. Okay. because every

19:24:24production server they're using Linux

19:24:27especially the Ubuntu instance okay

19:24:28they're using now this is also done I

19:24:31will clear the terminal now let me see

19:24:33the next command next command you have

19:24:35this um

19:24:37you have to install this docker okay now

19:24:39to install the docker this is the

19:24:41command first of all let's download the

19:24:43docker

19:24:44there's a hs file you have to download.

19:24:55Then after that we'll try to install.

19:25:08I'll copy this command one by one.

19:25:23paste the next command.

19:25:26And this is the last command you have to

19:25:28execute.

19:25:33Now see docker successfully got

19:25:35installed inside our Linux instance. You

19:25:37can check it. For this you can run this

19:25:39command docker version. So you'll see

19:25:42that Docker is running right now. Okay.

19:25:43But previously Docker was missing. Okay.

19:25:46I can maybe close my local local host

19:25:49execution.

19:25:51Let's close it.

19:25:53Uh terminal is also running. I'll stop

19:25:55it. H.

19:25:58So fine. Uh we have successfully

19:26:00installed Docker. Now the next step I

19:26:01have to uh configure my EC2 as a

19:26:05self-hosted runner. For this just open

19:26:07up your GitHub and go to the settings.

19:26:10Okay. Make sure you are using your

19:26:11GitHub, okay? Not my GitHub. Go to the

19:26:13settings and uh left hand side you will

19:26:16see one option called uh actions. Now go

19:26:19to the runner.

19:26:23Okay. Here just try to select this new

19:26:25self-hosted runner

19:26:30and you will see this Linux uh operating

19:26:32system. Just try to select that and uh

19:26:35these are the command you have to

19:26:36execute inside your EC2 instance. I'll

19:26:38copy the first command and execute in

19:26:40the terminal.

19:26:43Then I'll copy the second command. I'll

19:26:46execute in my terminal.

19:26:51I'll copy the third command and let's

19:26:53execute it here.

19:26:56That means you are connecting your AWS

19:26:58with your GitHub. Okay, that means

19:27:00whatever change you will uh let's say

19:27:02push in your GitHub automatically uh

19:27:04this will be um uh this will be like

19:27:07let's say available inside your AWS.

19:27:10Uh then I'll copy the last command

19:27:15and execute.

19:27:21Okay, so two more command you have to

19:27:22execute. So inside configure this

19:27:24command.

19:27:29Now see GitHub action is getting

19:27:31initialized and it is it is already

19:27:33connected with my GitHub. Now here it is

19:27:35asking for the internal name of the

19:27:37runner group. I don't need to give any

19:27:39runner group name. I'll simply press

19:27:40enter.

19:27:42Then it is telling enter the name of the

19:27:44runner. So here make sure you give the

19:27:46same name self-enhosted.

19:27:49Okay. That means in this uh YML file I

19:27:53think you remember here you have given

19:27:55this name okay continuous deployment you

19:27:58have given ransom self hosted you have

19:28:00to give the same name here self-en

19:28:02hosted okay so make sure you are giving

19:28:03the same name otherwise it will not work

19:28:05now I'll press enter now it is asking uh

19:28:08there would be any following labels uh I

19:28:11don't need any label I will skip it

19:28:12press enter then it is telling enter the

19:28:14name of the work working folder I'm

19:28:17going to again press enter okay now it's

19:28:19Now simply you have to copy this last

19:28:22command and you have to execute and you

19:28:24will be able to see that uh your u AWS

19:28:27will be connected to your GitHub.

19:28:30See connected to the GitHub and

19:28:32listening for the jobs. Now you can test

19:28:34it here. So simply you can again click

19:28:36on the runners. Now see your self-hosted

19:28:39runner it is already idle. That means

19:28:41your AWS is connected with your GitHub

19:28:43and it is listening for the jobs. Now

19:28:45right now if you push anything in your

19:28:48uh in your let's say repository right if

19:28:50you push any any code automatically it

19:28:52will get deployed over the AWS um AWS

19:28:56cloud okay how because you have written

19:28:58this YML file and inside this YML file

19:29:00all the commands are available for the

19:29:02deployment operations okay but one more

19:29:04thing I have to do which is this secret

19:29:06credential I have to add other without

19:29:08this secret it will it will not work

19:29:09okay so definitely this secret needs to

19:29:11be added so let's add the secret Now if

19:29:15you see the last step uh last step is

19:29:18that you have to add the secret key in

19:29:20the GitHub actions. Okay. So let's do

19:29:23that. I'll go to the GitHub again. Go to

19:29:26the settings.

19:29:28Left hand side you will see one option

19:29:29called secret and variable and go to

19:29:32this action section. Okay.

19:29:35Now here you have to create a new

19:29:37repository secret.

19:29:39So first of all you have to

19:29:42create this registry.

19:29:47Registry should be docker.io because we

19:29:51are using docker hub.

19:29:55So make sure this is the key name and

19:29:56this is the value name. Okay. Inside

19:29:57secret you have to give the value and

19:29:59add the secret.

19:30:01Okay. Done. You can see we have added

19:30:04this uh secret. Now I'll uh create

19:30:07another one new repository secret and

19:30:10I'll do it for the next one. I'll add my

19:30:12docker username.

19:30:18So what is what is my docker username?

19:30:20If you go to my docker hub. So this is

19:30:23my hub. If you just click on my account

19:30:26here, you will be able to see the

19:30:28username. Okay. So make sure you check

19:30:29your username in your docker hub and

19:30:31copy the same name and give it here.

19:30:38Now the next thing I have to add the

19:30:41docker password that means docker hub

19:30:43password. So make sure you are giving

19:30:45your docker hub password. Okay. So let

19:30:47me give my password guys. So this is uh

19:30:49this is like secret password. I don't

19:30:51want to show you. So that's why I'm

19:30:53going to pause the video after adding

19:30:55the password. I'm going to show you the

19:30:56next step.

19:30:59So yeah guys I have successfully set my

19:31:01docker password. Okay. So that's how you

19:31:03have to add all of the secret inside

19:31:05this secret variable. Now let's try to

19:31:07add the next one the image name.

19:31:14So image name I'm going to let's say

19:31:17give the same name like aentic chatbot.

19:31:20So with this name actually your docker

19:31:22image would be created. Okay. You can

19:31:23also change this name as per your

19:31:24requirement. I I have given aentic

19:31:26chatbot. Now let's add this secret.

19:31:29Now next I have

19:31:31this AWS access key ID.

19:31:35Now why you will get this AWS access key

19:31:37ID? I think remember we downloaded one

19:31:40CSV file. Okay, this CSV file. Let's

19:31:42open it up. I'll open in my Notepad++.

19:31:45So this is the secret and secret access

19:31:47key. So first of all, let's copy this

19:31:49access key ID. So before this comma,

19:31:51this is your access key ID. Okay, I'll

19:31:53copy and paste it here. And make sure

19:31:58you don't share this credential with

19:31:59anyone otherwise they will be able to

19:32:00access your account. Okay, I'm going to

19:32:01remove after this recording. Don't use

19:32:04my one. Okay, try to use your one. Now

19:32:06AWS access key is done. Now let next I'm

19:32:09going to add AWS secret access key

19:32:16secret access key. Okay, now where you

19:32:18get the secret address key? So this part

19:32:20is your secret address key. Okay, that

19:32:21means after this comma whatever you have

19:32:24this is your secret access key. Let's

19:32:25copy and paste it here.

19:32:31Done. Now next you have the AWS region.

19:32:39So right now I'm inside you will see

19:32:40that I'm inside US East one region North

19:32:43Virginia US East one. Okay. If you're in

19:32:45other region you can give this name.

19:32:47Okay. But right now I'm inside US East

19:32:49one. I will give the same name here.

19:32:52Why is that? Yeah. Let's copy.

19:32:58So all the command I have given in my

19:33:00readmi file you can check from there

19:33:02guys.

19:33:06Done. Now next I have to add

19:33:09the open API key. If you're using open

19:33:12API key guys you have to add the open

19:33:14API key. Okay. And make sure you add

19:33:17your value here. So I'm using Google

19:33:20Gemini model because I don't have open

19:33:22API key. So that's why I'm not going to

19:33:24pass my open API key. But I just showed

19:33:26you, okay, how to add your open API key.

19:33:27So make sure you pass your open API key

19:33:29here. Okay.

19:33:32Now here I'm using Google API key. That

19:33:35means I'm using Gemini model. I'll be

19:33:37using my Google API key instead of

19:33:38OpenAI. You can also remove this part if

19:33:40you are not using OpenAI. But I have

19:33:42showed you if you're using OpenAI, you

19:33:44can add it. Add this. Now I'm going to

19:33:46add the table API key.

19:33:51Tablely and where is your table API key?

19:33:54It is available inside your environment

19:33:58variable. So this is your table API key.

19:34:00Let's copy

19:34:03and give it here.

19:34:08Then next you have this

19:34:11um

19:34:14open weather API key.

19:34:20Just copy my open open weather API key

19:34:22from this env.

19:34:31Okay. Now next I have to add

19:34:38after open weather Google API key.

19:34:47So here I have my Google Google API key.

19:35:00Now next

19:35:02you have this

19:35:07lang smmith tracing

19:35:09because we're also using lang lang

19:35:11smmith for monitoring our entire

19:35:12application right to trace all of the

19:35:14execution

19:35:16and this secret would be true.

19:35:21You can also verify from your

19:35:23environment. So tracing should be true.

19:35:25Okay. And don't give any quotation.

19:35:28Okay. Quotation you don't need to give.

19:35:31Now next [clears throat] I have this

19:35:36Langmith endpoint.

19:35:44This is the end point.

19:35:52Now next I have this

19:35:58lang API key.

19:36:05And here is your lang API key.

19:36:14Done. Now next you have

19:36:18this

19:36:20lang project name. Okay, that's how

19:36:23whatever API key you are using you have

19:36:25to add inside the secret. Okay, that's

19:36:28how you have to prepare the secret

19:36:30variable. So what is the name? Aentic AI

19:36:34project agentic chatbot project. This is

19:36:37name I think I was using

19:36:39even you can also open up your language

19:36:41platform. You can verify

19:36:46Yeah. So, aentic chatbot project. Okay.

19:36:48If you want to create a new one, you can

19:36:49also create an uh uh it's completely

19:36:51fine. But here I'm tracing all of my

19:36:53execution. All right. So, all of the

19:36:55secret I have added guys. Uh let me

19:36:57check if I'm having anything else. No, I

19:37:01think everything is added. Okay. Now,

19:37:02see all of the secret we have added. So,

19:37:04right now this secret is not visible uh

19:37:06to the public. Okay. So, this is

19:37:09available inside my account inside my

19:37:11secret. Okay. and my application will

19:37:13pick up from this particular secret

19:37:14only. That's why everywhere I have given

19:37:17secret dot your API name or let's say

19:37:20key name. Okay. So that's how you don't

19:37:22need to expose your API key u I mean to

19:37:24the audience. Just try to make sure you

19:37:26are adding inside the secret. Okay. This

19:37:28is super important. Now everything is

19:37:30done. Now we are ready for the

19:37:31deployment. So right now our server is

19:37:33connected. My GitHub is connected. My

19:37:37self-hosted runner runner is running.

19:37:39Everything is done. Now simply I'm going

19:37:41to push the changes. Okay. Now let's try

19:37:42to push the changes. I'll commit the

19:37:44changes. So here I'm going to open up my

19:37:46terminal. I'm going to write g add. So

19:37:49see these are the file I'm going to

19:37:52push.

19:37:56Yeah. So everything is fine. But let's

19:37:58let's delete these are the file. This is

19:38:00actually created uh because I have

19:38:02executed this uh project right. And it

19:38:03has created the persistence memory. But

19:38:05I want to delete it. Okay. I want to

19:38:08like push completely new new project

19:38:10okay to the cloud. So I'll delete this

19:38:13at the file.

19:38:15So everything is fine. [clears throat]

19:38:16Now let me push the changes. So I'll

19:38:18open up my terminal. I'll just write g

19:38:20add space dot then get commit type m

19:38:29uh I'll give let's say updated

19:38:33and I'll just write get push

19:38:40origin

19:38:42main.

19:38:46Now push is done. Now if I go to my

19:38:49GitHub.

19:38:53Okay. Now see everything is updated in

19:38:55my GitHub and your workflows is running.

19:38:58Okay. You can go to the action and you

19:39:00can see your first comet is running.

19:39:02This is your first uh attempt to the

19:39:04CI/CD deployment. Okay. And this is a

19:39:06one-time setup guys. This uh setup you

19:39:08have to do one time and going forward

19:39:10you don't need to do this setup. Okay.

19:39:12Going forward you will only just try to

19:39:13change your upgrade and automatically it

19:39:15will be getting deployed. Now see

19:39:18three-step it is running continuous

19:39:19integration building and pushing image

19:39:21uh push docker image and deploying to

19:39:23the AWS EC2. So continuous integration

19:39:25is already completed. Now building and

19:39:28pushing image is running. Okay. So right

19:39:30now my image is getting builded. Okay.

19:39:32You can see it is setting everything all

19:39:33the package and everything. So this

19:39:35process may take some time. Let's wait.

19:39:38Now see requirement got installed

19:39:39successfully. After that it will push

19:39:41the image to the docker hub. Now you can

19:39:43see in the docker hub I don't have any

19:39:45kinds of image name with the help of

19:39:47agentic chatbot. Okay. Now you'll see

19:39:48that after some times this image would

19:39:50be available.

19:39:52Everything is happening automatically

19:39:54guys. Okay. Because I have set up the

19:39:55entire server. I have written that YL

19:39:57file and all of this command is

19:39:59available. So everything would be

19:40:00automatically. This is the beauty of

19:40:02CI/CD deployment.

19:40:04Only one time effort. Okay. One time

19:40:06configuration, one time setup and rest

19:40:08of the life you can enjoy.

19:40:12And that's how production deployment

19:40:14happens. Um, whatever application you

19:40:17can see, right? Everything is connected

19:40:19with CI/CD pipeline and that's how

19:40:21they're setting up the server. You can

19:40:24also use any other cloud like GCP,

19:40:25Azure. Uh, it's completely fine. The

19:40:28step will remain same. Maybe some

19:40:30functionality would be different. Okay.

19:40:31In that cloud.

19:40:39Now see uh build and push is complete.

19:40:43See the green tick mark that means

19:40:45complete. Now deploying this image to

19:40:47the AWS EC2. Now it is pulling the image

19:40:50and it will run on my EC2 instance.

19:41:17Okay. See all the three steps are

19:41:20complete. All the three steps are

19:41:21getting green tick mark. That means

19:41:23everything is fine. There is no error

19:41:24inside our workflow. Okay. We have

19:41:27successfully uh deployed. Now I will go

19:41:30to my instance and there you will see

19:41:32one option called public DNS. Okay. Just

19:41:34try to copy this URL and paste over the

19:41:38new tab. And if I execute, see uh right

19:41:41now this uh application uh is not going

19:41:44to open because we haven't done the port

19:41:46mapping. Okay, port mapping is required

19:41:48because by default our application is

19:41:50running on port number 8501. Okay, so we

19:41:53have to do the port mapping.

19:41:55So to perform the port mapping, you can

19:41:57go back to your instance and there is a

19:41:59option called security. Just go to the

19:42:02security.

19:42:03There is option called security groups.

19:42:05I'll click on security groups. And here

19:42:07you will see one option called edit

19:42:09inbound rules. Okay. Now here you can

19:42:11see your uh port number is not defined

19:42:14here. That means 850 uh 0 um 8501 is not

19:42:18defined here. So just try to add the

19:42:20rules and port number you have to write

19:42:228501. Okay. This is the port of streaml.

19:42:24You can also verify in the cicd. Mamel

19:42:28at the last whenever you are running

19:42:30your image, right? So there you said

19:42:32that yeah see you are doing the port

19:42:35mapping to 8501. This is the port. Okay.

19:42:38By default stream application runs port

19:42:40uh 8501. Now you have to select this 00.

19:42:43Okay. Uh that means you can access from

19:42:45anywhere and simply save this rules.

19:42:48Done. Now I'll go to this instance

19:42:50again. Instance ID. Now I'll copy this

19:42:52public DNS again.

19:42:55Okay. And make sure after this URL you

19:42:57are you are giving this uh clone port

19:43:01number 8501.

19:43:03Okay 8501. Now if I execute I'll see

19:43:06your application will be running and

19:43:10this is completely live right now. Okay.

19:43:12Now if I share this URL with anyone they

19:43:14will be able to access my agent.

19:43:18See this is running on the AWS server

19:43:21right now and this is completely live.

19:43:22Okay. Now you can purchase any kinds of

19:43:24domain name. Okay. Uh then you can

19:43:27change this name with your domain name.

19:43:28On domain name this is also possible.

19:43:30Okay. But if you know till here I think

19:43:33it's completely fine. Uh the domain uh

19:43:36part I think this will take care by the

19:43:37front- end developer. So right now our

19:43:40chatbot is running live. Okay. We can

19:43:42test whether it's working or not. So

19:43:44let's say I will give hello.

19:43:48See how I can help you today. Then I

19:43:50have given another message. I am BP. Now

19:43:52it is telling nice to meet you bi. Now

19:43:54it'll tell tell me the current

19:43:59weather.

19:44:04Okay. In Dhaka.

19:44:11Now see it is using my get weather uh

19:44:13tool and it is giving you the kind of

19:44:15weather in Dhaka. Now we'll ask uh

19:44:19uh latest

19:44:22news

19:44:25uh in FIFA.

19:44:31Now see it is using tably search tool

19:44:33and this is giving you the latest news

19:44:35on FIFA. Okay. So this is the latest

19:44:38news you're getting. Now you can ask any

19:44:43other thing. Let's say you can ask about

19:44:44the um stock price.

19:44:48Tell me

19:44:51tell me the stock

19:44:55price of

19:44:58Apple.

19:45:02Okay, this is the current stock price of

19:45:04Apple. Now you can also purchase any

19:45:07stock. So you can just write purchase

19:45:13uh let's say 20 stock

19:45:19of Apple.

19:45:30Okay. Now again we have added this HITL

19:45:33features that means that means human in

19:45:34the loop. It will ask for the human

19:45:36verification.

19:45:38Now see asking for the human

19:45:39verification. Now if I approve now my

19:45:43share would be purchased. Okay. Now you

19:45:45can even upload any kinds of document.

19:45:46You can start the conversation. You can

19:45:48also create a new trades. This is also

19:45:50possible. Let's say I have created a new

19:45:52trades. Okay. Now here I will ask upload

19:45:54any kinds of documents. Let's I will

19:45:56upload my resume and I will ask tell me

19:46:00about

19:46:01Bir Ahmed

19:46:04Bi based on

19:46:08the

19:46:09PDF

19:46:11uploaded.

19:46:16Now see it is using rag tool

19:46:19and it is giving you about myself. Okay.

19:46:22Based on the resume I'm having. Okay. So

19:46:25that means everything is working fine

19:46:27and this is completely live right now.

19:46:28You can share this URL with your friends

19:46:30and family. They'll be able to use that.

19:46:33Okay. So amazing guys. We have seen how

19:46:35to perform the deployment. Now the u I

19:46:38mean good part I want to show you about

19:46:40the CI/CD deployment is that now let's

19:46:42see in future if you want to add any new

19:46:44change here. Okay let's say if you want

19:46:45to add any new features you don't need

19:46:47to manually let's say uh set up

19:46:50everything again in the cloud server.

19:46:53Okay, you don't need to manually copy

19:46:54paste your code and set up everything.

19:46:56Only you just need to change and upload

19:46:58inside your GitHub. Automatically this

19:47:00deployment will be happening. Let me

19:47:01show you. Let's say in this app.py

19:47:04um let's say right now let me show you

19:47:06one like a small features. Okay, I'll be

19:47:08adding here. Let's I'll refresh my app.

19:47:12H. So right now you can see it is

19:47:13agentic chat but with langraph. Okay,

19:47:15let's say I want to add a emoji here.

19:47:17Okay, let's say I want to add a emoji.

19:47:19So what I'm going to do, I'll go I'll go

19:47:22to that part that I'm creating this

19:47:24title.

19:47:26I think here I'm creating the title

19:47:28right here. So let's say I'm going to

19:47:29add a emoji. So simply let's add an

19:47:32emoji. So let's say I'm going to add

19:47:34this uh this robotic emoji. Okay. So I'm

19:47:36going to add this robotic emoji.

19:47:38Refresh.

19:47:40And uh yeah, save it. And now we have to

19:47:43commit it again. Okay. You have to

19:47:44commit your change again. So let's

19:47:46commit our change again. So I'll just

19:47:49write

19:47:53get add space dot

19:47:56get commit hyphen m let's say I'll give

19:48:02new feature

19:48:04addit

19:48:06okay and get push

19:48:09origin

19:48:12main

19:48:16now push is done now again I I'll go to

19:48:18the GitHub and I will see that your

19:48:20pipeline will automatically

19:48:23uh get triggered.

19:48:25Now see again action is running. I'll go

19:48:27to the action. Now see new feature

19:48:28added. This pipeline is running again.

19:48:31Okay. And this version is having a new

19:48:33update. Okay. Again it will build the

19:48:34docker image. Push the docker image to

19:48:36the docker hub. So you can see in the

19:48:38docker hub itself you will see your

19:48:40application

19:48:42that is your image. See aentic chatbot.

19:48:45So right now it is having only

19:48:49uh one image. Okay. And it is uploading

19:48:51the next image here. So let's wait.

19:48:58See again all of the execution is

19:49:00happening. And you don't need to do

19:49:01anything. Okay. And still your server is

19:49:03live. See if you refresh here, if you

19:49:05start the conversation, it will run.

19:49:07Okay. It will not uh it will not

19:49:09actually shut down. Okay. But if you're

19:49:11not creating CI/CD pipeline that time

19:49:13there is a possibility it will get shut

19:49:15down. Okay. And user will feel uh this

19:49:18application is not working and then you

19:49:20may lose your user. Right? So that's why

19:49:22CST is required

19:49:25in the back end all of the deployment is

19:49:27happening but you are not going to uh

19:49:29you are not going to see anything right

19:49:31now. If I come here see deployment is uh

19:49:33completed. Now if I come here now if I

19:49:35refresh my application

19:49:37now see that new update has added here.

19:49:41Now see this uh emoji has been added

19:49:44here. Okay. So this is called actually

19:49:46CI/CD deployment and that's how you can

19:49:49continuously add new features without

19:49:51shut down your application. Okay,

19:49:53without let's say stopping your

19:49:54application and this is what actually we

19:49:56use inside the industry inside the

19:49:59production deployment. Okay, I hope

19:50:01everything is clear guys. So if you

19:50:03found this content useful, please try to

19:50:04subscribe to my channel and share this

19:50:06video with your friends friends and

19:50:07family and please try to like on my

19:50:10video guys. Okay. And if you have any

19:50:12question, please try to comment in the

19:50:14comment section. Uh I would like to see

19:50:15your comment and I would like to see

19:50:17your opinion. Okay. Whether um this

19:50:20playlist is helpful or not because I

19:50:22have covered each and everything. I have

19:50:23implemented the project. I showed you

19:50:25the end to end implement uh end to end

19:50:27deployment. Everything I showed you.

19:50:28Okay. And lots of things are coming as

19:50:30well. So guys, yeah, we have seen the

19:50:32deployment. Now we will see that how we

19:50:35can uh terminate all of the server

19:50:37because if you keep on running it, it

19:50:38will charge you. So let's say once uh we

19:50:40have deployed everything, our learning

19:50:42is over. Now I'm going to show you how

19:50:45we can stop the server. Okay, let's say

19:50:47you want to stop the server, how to do

19:50:49that. So for this, okay, one more thing

19:50:50I want to show you that say if I close

19:50:52this terminal, okay, if I close this

19:50:53terminal also, still my application will

19:50:55be working.

19:50:57Okay, see still my application is

19:50:58working. Okay. So now if you want to uh

19:51:02let's let's say delete this instance

19:51:04first of all you have to select it. Then

19:51:06there is a option called instance state

19:51:09and there you will see called terminate

19:51:10and delete instance. Okay. So if you do

19:51:12terminate and delete it will delete uh

19:51:14everything. Okay. But if you stop it it

19:51:16will stop again. You can restart it but

19:51:18I'm going to delete everything because

19:51:19my learning is over. Uh I'm going to

19:51:21terminate and delete. Now after some

19:51:24time it will be uh deleted. Okay. Now

19:51:26you have to delete your IM user as well.

19:51:30So let's go to the IM user. Left hand

19:51:32side IM user is available. Select the IM

19:51:35user and delete it from here. Deactive

19:51:37the keys and just write confirm.

19:51:41So it will be deleted.

19:51:46Okay. If you want you can also delete

19:51:48your uh docker image you have uploaded

19:51:50in your hub. Okay. This is also

19:51:52possible. You can also delete here. But

19:51:53I'll keep this uh uh image. Okay. in my

19:51:56docker repository so that later on I can

19:51:59use it anytime. Okay. So yes guys that's

19:52:01how we can do the CI/CD deployment and

19:52:03we have completed our deployment. Okay.

Deploy Agentic AI Chatbot on Render for FREE with Docker

19:52:05So right now you can see our application

19:52:07will not run because I have deleted all

19:52:09the instance and this is offline right

19:52:11now.

19:52:15So see this is offline right now. Okay.

19:52:17So yeah you can try I will share all the

19:52:19resources all the code in my

19:52:20description. From there you can try and

19:52:22please try to support my channel guys.

19:52:24If you support me definitely I will

19:52:25bring this kinds of content more in

19:52:27future. So yes uh this is all about for

19:52:30this uh deployment I have showed you on

19:52:32the uh AWS cloud. Now in the next video

19:52:34I'm going to show you how we can deploy

19:52:36this project over the render cloud.

19:52:37Okay, render is another cloud there you

19:52:40can also uh deploy this project as a

19:52:42CI/CD. So what is render? Render is a

19:52:44cloud platform. So there you can deploy

19:52:46any kinds of web application. Okay. uh

19:52:49this is the like a very fastest uh and

19:52:53uh very easy to use cloud platform. So

19:52:55here you don't need to do so many

19:52:57configuration. Okay. Uh with some few

19:52:59clicks actually you can do the

19:53:00deployment. I'm going to show you okay

19:53:02how to do that and um definitely for

19:53:04this you have to create one account on

19:53:06render and render is not completely free

19:53:08but they have a free instance. In that

19:53:10free instance you can at least deploy

19:53:12some application. Okay. But if you want

19:53:14to do the production grade deployment

19:53:16okay with some uh higher infrastructure

19:53:19and higher instance that time you have

19:53:21to take the subscription. Okay. But I

19:53:23think uh uh this is fine um as a

19:53:25learning purpose and uh just to uh just

19:53:28to actually live our app okay just to

19:53:31test our app we'll be using the free

19:53:32instance. So free instance is having

19:53:34like very low configuration like machine

19:53:37and I think this is completely fine for

19:53:39us so we can manage that. Okay. So if

19:53:42you found my content useful guys please

19:53:44do uh try to subscribe to my channel and

19:53:46please try to share and please try to

19:53:48hit the like. uh I need your support if

19:53:50you provide the support guys so I can

19:53:52bring this kinds of content more in

19:53:54future. So uh well let's start with the

19:53:56deployment guys. First of all here you

19:53:58have to create an account. If you don't

19:53:59have account guys please try to create

19:54:01an account with your Google um uh Google

19:54:03address. You can create your account. So

19:54:05I already have the account. I'll just

19:54:06try to sign in.

19:54:10So here I'll just try to sign in with my

19:54:12Google.

19:54:15So after sign in guys you will be able

19:54:17to see this kinds of interface. So this

19:54:19is the rendered dashboard and previously

19:54:21I deployed some app that's why it's

19:54:23coming okay like that but for you it

19:54:25would be completely empty. So here uh

19:54:27what I have to do guys uh first of all I

19:54:30have to uh I have to actually commit my

19:54:33code to the GitHub. Okay. And uh in my

19:54:35previous deployment video I already

19:54:37pushed this code in my GitHub. So this

19:54:39is already available in my GitHub repo.

19:54:41As you can see this is the repository we

19:54:42created aentic chatbot using langraph.

19:54:45So we can utilize that and one best part

19:54:47is that if you're using render so render

19:54:50uh it is already having the CI/CD

19:54:52integrated you don't need to set up the

19:54:54CI/CD separately okay like we did in on

19:54:57AWS right here CI/CD uh it is included

19:55:00okay only you just need to connect your

19:55:03repository and automatically this CI/CD

19:55:07uh pipeline would be created you don't

19:55:08need to manually create that that part

19:55:10I'm going to show you so first of all um

19:55:12here just try to copy this URL Okay,

19:55:15copy your GitHub URL and in on render

19:55:18you will see one option called new.

19:55:20Okay, just click on new and here is a

19:55:22service called web service. Okay, just

19:55:23click on web service

19:55:26and uh here you can see G provider is

19:55:28available. Okay, just try to paste your

19:55:30URL. Okay, or you can go to this public

19:55:34uh g repository and you can provide the

19:55:36URL. Okay, and if you want you can also

19:55:38pass your existing let's say docker

19:55:40image. So I think you remember uh in my

19:55:42last video I like pushed my uh docker

19:55:45image in my docker hub. So you can also

19:55:47provide that image URL that uh and with

19:55:50the help of that you can also perform

19:55:51the deployment. You can also use your

19:55:53GitHub to do the deployment. Okay. But

19:55:55make sure you have this docker file

19:55:56here. So I already have the docker file

19:55:58and pre uh in my last video I already

19:56:00created this docker file. So docker file

19:56:02should be available. Okay. So we have

19:56:04the docker file. It's completely fine.

19:56:05Now simply what I'm going to do I'm

19:56:08going to just paste this URL here and

19:56:10I'll just connect this repository. Okay,

19:56:13once you have connected, you can provide

19:56:15the name the name you want to provide uh

19:56:17for this deployment. But I will keep the

19:56:19same name and the language you have to

19:56:21select the docker. Okay, if you don't

19:56:23have the docker, you can also select the

19:56:24simple python. But I have the docker.

19:56:26I'll try to select the docker. Okay,

19:56:28language. Then everything will remain

19:56:30same as it is. No need to change

19:56:31anything. And here in the instance type,

19:56:33see they have some plan. You can take

19:56:36the plan as per your requirement. If you

19:56:38have let's say very high configuration

19:56:41project that needs lots of computation

19:56:42that time you can take these are the

19:56:44like uh plan but uh we'll be using this

19:56:47u free plan for the hobby project. Okay

19:56:50just to show you I'm using this free

19:56:52plan and it is having 512 MB RAM and uh

19:56:560.1 CPU core. Okay, it is uh it would be

19:56:59a little bit slow lagging but uh just to

19:57:01I mean make our project live it's

19:57:03completely fine because nowadays none of

19:57:05the cloud provides the free uh free

19:57:07let's say instance right to uh do the

19:57:10deployment but at least they're

19:57:11providing I think this is fine for us

19:57:12right so I'll select this free instance

19:57:14then here you have to set all of your

19:57:16environment variable uh you have inside

19:57:18your project so I think remember inside

19:57:20our project these are the environment

19:57:21variable is required so try to set one

19:57:23by one so uh I'm not using openi so I

19:57:27will not set the open I'll select set

19:57:30from tably

19:57:31so tably API key here you have to give

19:57:33the value

19:57:40okay then the next one you have

19:57:44this open weather API key

19:57:52that's how I'll try to add all of the

19:57:54environment variable I have here you can

19:57:55also upload your NV file that will also

19:57:58load but let's try to add like that

19:58:02Google API key because I'm using Gemini

19:58:05model.

19:58:14Now next I have this languid tracing

19:58:28Smith endpoint

19:58:40then uh Langmith API

19:58:53then we have Langmith project.

19:59:03So yeah, all of the API key has set

19:59:05successfully. Now uh in adv advanc part,

19:59:09you don't need to do anything. uh just

19:59:10keep it same as it is. Now let's try to

19:59:13deploy our web service.

19:59:18Okay. Now it will start building your

19:59:20docker. Okay. Uh all of the setup

19:59:23everything will uh uh going on here.

19:59:29So we have to wait for some times. Okay.

19:59:31So this will set up and prepare

19:59:33everything and once this starter should

19:59:35be live, you'll be able to access your

19:59:36application.

19:59:39Now let's wait guys. So what I'm going

19:59:41to do, I'm going to pause the video once

19:59:43this u um docker building is complete

19:59:46then I will come back.

19:59:59So as you can see guys our application

20:00:01is live right now and all of the um

20:00:04setup has complete successfully. Now we

20:00:06can access this application. So this is

20:00:08the URL. Just try to copy this URL and

20:00:11open in a new tab. So you'll be able to

20:00:13see that your application will open.

20:00:22Yeah. So it has loaded my application.

20:00:25So this is our agentic chatbot. Now

20:00:28let's test this chatbot. Uh let me zoom

20:00:31out so that you can see the entire

20:00:32screen. Yeah. So now let's uh test this

20:00:35chatbot. So here I will give hi.

20:00:41So see it's giving you hello I can

20:00:43assist you. Now I'll tell um what is the

20:00:50current weather

20:00:55in

20:00:57Bengaluru.

20:01:04So this is the current weather in

20:01:06Bengaluru. Now I will ask

20:01:09tell me

20:01:12the latest

20:01:17score of

20:01:20FIFA. Okay. Today.

20:01:30Yeah. So this is the score it has given.

20:01:33Now you can um you can check about this

20:01:37um stock price. What is the

20:01:42stock

20:01:45price of Google?

20:01:58Okay. So the API I was using uh so the

20:02:01rate rate limit has been uh over. Okay.

20:02:04So I have to create another API key.

20:02:06It's completely fine. Now let me test uh

20:02:08with my documents upload. So I'll just

20:02:11try to

20:02:13provide my resume and ask who is

20:02:18Btier Ahmed

20:02:21Bi

20:02:24based on the

20:02:26PDF uploaded.

20:02:36Now it is giving you the entire uh

20:02:38answer about me, right? So yeah uh it's

20:02:41working perfectly. So only the issue we

20:02:42found uh our uh API key we're using

20:02:45right for this stock price uh this has

20:02:47been I think limit is over. So I have to

20:02:49create an uh another API key and I have

20:02:51to set there uh because we are using the

20:02:53free one right and free one definitely

20:02:55has some limitation that's completely

20:02:57fine. Yeah. So it's working fine. Then

20:02:58you can also create a new trades. Okay.

20:03:01You can create a new trades and you can

20:03:03uh again do the conversation. Let's say

20:03:04hi I am Alex. Okay. See everything is

20:03:08working fine. Okay. Now this application

20:03:10is completely live. You can share this

20:03:12with your friends and family. They will

20:03:14be able to access your application and

20:03:17uh this will not uh charge you. Okay.

20:03:19Because this is running completely on

20:03:21the free instance and uh that's how you

20:03:23can deploy any kinds of project. Okay.

20:03:25Uh just for the uh testing purpose.

20:03:28Okay. But if you want to do the

20:03:29production grade deployment that time

20:03:30just try to make sure you are taking the

20:03:32subscription plan. Now guys uh one best

20:03:35part uh I will show you uh which is this

20:03:37uh CI/CD. Okay. Uh that means if you are

20:03:40changing something inside your code and

20:03:42if you are again committing to the

20:03:44GitHub, so what will happen? So let's

20:03:46say right now uh here I have an emoji.

20:03:49Okay. So I want to remove this emoji. Uh

20:03:51as of now let's try to consider this is

20:03:53our features. Okay. We are adding inside

20:03:54this chatbot. Uh where

20:03:58is that part? Yeah. So here so let's say

20:04:00I will delete this uh emoji. Okay. And I

20:04:03will uh again push my changes to the

20:04:06GitHub. So let's say app file updated.

20:04:13Now I'll push the changes.

20:04:17Done. Now if I go to my GitHub,

20:04:22see this comet is over. Okay. Um have

20:04:25file added. Uh now here if I come to

20:04:28this uh uh I mean render and if I go to

20:04:32this event. So you have to go to this

20:04:34event and there is a option called

20:04:36manual deploy. Just try to click here.

20:04:39Okay. And there is a option called

20:04:40deploy last commit. Okay. So you can

20:04:43also like make it as automated. There is

20:04:45a setting you can turn on that. Uh but

20:04:48if you just click here deploy latest

20:04:50commit. Now if I let's say deploy latest

20:04:52commit.

20:04:57So you'll see that uh automatically um

20:05:00my new features should be added.

20:05:04See still my application is running.

20:05:12See still my application is running and

20:05:14my deployment is going on. Okay. So

20:05:17that's how they have integrated this

20:05:18inbuilt CI/CD uh and all of this. Okay.

20:05:21Whatever we have learned in my previous

20:05:23deployment. So here uh you don't need uh

20:05:25that much of configuration only few

20:05:27clicks you can do the deployment. Okay.

20:05:29So this is the best part uh on this

20:05:31render cloud. Uh let's see.

20:05:41So see our application is live. Now if I

20:05:43go to my application refresh.

20:05:51So see this emoji got removed. Okay. So

20:05:54that's how uh we can add uh our new

20:05:56features. uh and you just need to commit

20:05:58the code on GitHub and you can uh just

20:06:00uh trigger that pipeline. Okay. And you

20:06:02can also make it automated. There is a

20:06:04settings you can run on. So yes guys uh

20:06:06that's how we can do the deployment. Now

20:06:07I'll show you how we can delete the

20:06:09instance. Okay. Let's say this project I

20:06:11have deployed. Now how we can delete

20:06:12this instance. Okay. So for this you

20:06:14just need to go to the settings

20:06:17and go below there is a option called

20:06:20delete web service and you have to copy

20:06:22this command

20:06:26and give it here and delete the web

Project: Build Your Own ChatGPT Agent with LLMs, LangGraph, FastAPI, LangSmith, ChromaDB, SQLAlchemy & AWS

20:06:28service. Okay. So if you delete it so

20:06:30this service would be deleted and your

20:06:31application would be offline. Okay. So

20:06:34yeah that's how we can do that. So if

20:06:35you found my content useful guys please

20:06:37try to support me and this is my

20:06:40LinkedIn profile. Uh if you want to

20:06:41connect me guys, you can connect on my

20:06:43LinkedIn. You can follow me on LinkedIn

20:06:45and uh please let me know how you are

20:06:47enjoying this uh complete list. If you

20:06:49found this useful, so please try to tag

20:06:51me on LinkedIn. Okay, I'll happy to see

20:06:53that and just try to implement uh

20:06:55something from your end and please try

20:06:56to tag me. So if you are tagging me on

20:06:58LinkedIn, I would be happy to see your

20:07:00work and definitely I will put my uh

20:07:02feedback and comments. Okay. So guys, as

20:07:04you know, I started a complete agenti

20:07:07playlist on my YouTube channel and uh I

20:07:11completed our first orchestration

20:07:12framework which is langraph. So we have

20:07:15studied uh about this langraph in depth.

20:07:18We have seen each and every component of

20:07:20langraph. Even I showed you one amazing

20:07:23uh end toend project implementation

20:07:25which is one agentic chatbot. If you

20:07:28haven't uh checked those uh videos guys,

20:07:30this is already available in my playlist

20:07:33guys. It is already available on my

20:07:34YouTube channel uh DS with BP. So all

20:07:37the recordings are available uh you can

20:07:40go through all of these recording. Okay.

20:07:42Uh then I told you uh after completing

20:07:45like our uh first orchestration

20:07:47framework we'll be implementing some

20:07:49amazing project. Okay. And one project

20:07:51we have already developed in this uh

20:07:53playlist itself. Okay. So as you can see

20:07:55uh our first project was around uh uh 8

20:07:59plus hours of recording. uh we have uh

20:08:02implemented the entire agentic chartbot

20:08:04with the help of lang graph database

20:08:06languid tools rag hittl AWS and render.

20:08:10So guys uh in this video what I'm going

20:08:12to do uh I'm going to utilize the same

20:08:15concept we have learned so far inside

20:08:17our agenti playlist and we'll be

20:08:20implementing one very interesting and

20:08:22amazing project in this video. Okay. And

20:08:25in this video, we are not only going to

20:08:27develop this project. Uh we'll also show

20:08:29you how we can uh deploy this project

20:08:32over the cloud platform as a CI/CD.

20:08:34Okay. That means first of all, we'll try

20:08:36to implement the entire project uh

20:08:38completely end to end. Then after

20:08:40implementing, I will also show you how

20:08:42we can deploy this project and we'll be

20:08:44using CI/CD pipeline for that. So the

20:08:46project name is BPGpt.

20:08:49So [gasps] this sounds uh seems to be

20:08:51funny but uh yes actually I'm going to

20:08:53implement uh one uh project here called

20:08:57buppy GPT and this would be kinds of

20:09:00your chart GPT. So basically we'll try

20:09:02to recreate this chat GPT okay uh with

20:09:05our own workflow. So I think you have

20:09:08already used chat GPT right uh chat GPT

20:09:11uh it's an agentic AI chatbot. So here

20:09:14you can perform the chat operation you

20:09:16can upload your documents. Okay. Then

20:09:18you can also activate the voice mode.

20:09:21Then um you can see the conversation

20:09:24trades. Okay. Then it has also connected

20:09:26with different different tools like you

20:09:28can perform realtime source operation.

20:09:30You can uh solve complex math problem.

20:09:33You can generate the codes. Okay. Each

20:09:35and everything you can do here. So yes

20:09:37uh in this video guys we'll be

20:09:39developing our own chat GPT. So I

20:09:42already named it as BPGT. So let me uh

20:09:45show you first of all the application

20:09:46demo how this application uh will work

20:09:49and how this application uh will look

20:09:51like. Then after that we'll start the

20:09:53development guys. So as you can see guys

20:09:55uh this is the application we'll be

20:09:57developing named buppy GPT. You can give

20:09:59any name okay as per your needs. I have

20:10:02given buppy GPT and I think first time

20:10:05someone is creating uh chat GPT with the

20:10:08Gemini model.

20:10:10[laughter] Why I I have used Gemini

20:10:12model because uh I wanted to use free

20:10:15resources. Um I I didn't wanted to use

20:10:18the paid one. Uh I could have used the

20:10:20open AI model here. But for openi model

20:10:23you need open subscription but uh there

20:10:26are many learners they don't have the

20:10:27open key that's why I thought let's try

20:10:29to integrate any free model. Okay, open

20:10:32source model and uh Gemini actually you

20:10:34can use freely. Okay, there are some

20:10:36free limits you can utilize that. But if

20:10:39you want you can also integrate any

20:10:40other model. You can also integrate

20:10:41OpenAI model. It's completely up to you.

20:10:43Okay. But the main things here we have

20:10:45to learn this uh concept like um the way

20:10:48they have created the chart GPT. Okay.

20:10:50You can see all the functionality like

20:10:52tradings the documents uploaded this

20:10:55model selection. Okay. Then uh you can

20:10:57also uh open this V voice mode. You can

20:11:00uh uh give your voice and automatically

20:11:02your voice would be recognized and you

20:11:04can perform the chat operation here.

20:11:06Okay. And it has also connected with

20:11:08different different tools. But here I

20:11:09tried to integrate u actually few tools

20:11:12here um uh because um here I want to uh

20:11:16show you okay uh this uh project

20:11:18implementation. So you can add as much

20:11:21as tool you can okay you can add all

20:11:23kinds of tool. I already um told you

20:11:25about the tool in my playlist. I think

20:11:27you remember right if you go through the

20:11:28playlist I already discussed about the

20:11:30tool. So you can uh integrate as much as

20:11:32tool you can okay whatever tool you need

20:11:34but I added few tools here just to show

20:11:36you the working demo. Now first of all

20:11:39uh let me show you the working demo how

20:11:40this will work and one thing guys I

20:11:42think you have seen uh in charge GPT you

20:11:44can also create the account you can

20:11:45login with different account okay this

20:11:47is a full fully stack application but

20:11:49here we avoided this part we didn't

20:11:52added any kinds of account fun u I mean

20:11:54login functionality here we just uh

20:11:56created the interface okay of the charge

20:11:58apt I think this is fine uh for learning

20:12:00purpose this is completely fine if you

20:12:02want you can also uh use full stack uh

20:12:04let's say framework you can also create

20:12:06uh this kinds of account functionality

20:12:08and all. Okay, this is completely up to

20:12:09you. So yes guys this is the interface

20:12:11as you can see it has the trading

20:12:13features that means you can switch

20:12:14between any of the trades and and you

20:12:16can see the older conversation you have

20:12:17done even you can also create a new

20:12:19conversation you can upload any kinds of

20:12:21documents you can select your model okay

20:12:24then you can also activate the voice

20:12:25mode uh if you want to speak with your

20:12:29chat u GPT okay and here I have also

20:12:32given some suggestion you can also see

20:12:34that okay I think you can't see uh the

20:12:37interface because of my video so what I

20:12:39can do I and turn off my video. Now I

20:12:41think you can see the full uh

20:12:43application. So here is the voice mode

20:12:44and everything, right? So guys, now

20:12:46let's uh test our BPGPT. Okay. Uh I'll

20:12:50provide some prompt. Let's say first of

20:12:51all I'll tell hi

20:12:57um I am

20:13:00BP here.

20:13:04So as you can see it is giving hello BY.

20:13:06It's nice to meet you. How I can assist

20:13:07you today? So tell tell me about

20:13:13gradient

20:13:15descent

20:13:16in simpler

20:13:21word.

20:13:33Now it is telling you about gradient

20:13:35descent. Now I will ask something um

20:13:38something about latest information.

20:13:43So I will give this prompt. What was the

20:13:45score today for Argentina in FIFA World

20:13:47Cup? So let's see. Now you can see it is

20:13:50using realtime web search tool and it

20:13:54will find out the latest information.

20:14:00So you can see based on the website

20:14:01result Argentina defeated uh Austria two

20:14:06by zero in FIFA World Cup match today.

20:14:08Leonel Messi scored both goal making him

20:14:12uh the alltime legend leading scorer in

20:14:16World Cup history. Okay, I think if you

20:14:18have already watched the la last match

20:14:20of Argentina, you'll see that uh um this

20:14:23was happened. Okay, last match. Last

20:14:24match. So yeah, it's working uh fine.

20:14:27You can also switch uh any other model

20:14:28if you want. Okay. Let's say I will take

20:14:30this um pro model. Okay. Now I ask

20:14:34something. Let's say

20:14:36uh I want to do some calculation. Let's

20:14:39say what is the

20:14:42result of

20:14:46so I'll give a complex mathematics here.

20:14:59Now you can see it is using calculated

20:15:00tool and it will solve that.

20:15:04Now you can see this is the result.

20:15:06Okay. Now here what I can do I can

20:15:08upload any kinds of documents. So let's

20:15:10say here I will upload uh any kinds of

20:15:12documents. Let's say I upload my resume

20:15:16and I can do the conversation here. Now

20:15:19see it's getting uploaded. Now you can

20:15:20see you can ask the question about the

20:15:22document and I'll tell

20:15:25uh who is

20:15:31Bier

20:15:36Ahmed Baki

20:15:38based on PDF.

20:15:41Now you can see it is using document

20:15:43search tool and uh this will use my

20:15:46document to give the response. So this

20:15:48is the rag features you have in this

20:15:51kinds of agenti chatbot. Now you can see

20:15:53based on the provided PDF Ber Ahmed B is

20:15:57a data scientist with five years of

20:15:59working experience specializing

20:16:00generative AI. Okay. And it he is um and

20:16:05you can see it is telling each and

20:16:06everything about me. Okay. Now you can

20:16:08also continue the conversation. Uh

20:16:12how

20:16:13many

20:16:15projects he

20:16:17has done?

20:16:20Give me

20:16:25all the name.

20:16:33Okay. Okay, you can see based on the

20:16:34documents uh BP uh has worked with uh uh

20:16:39worked on four main project as you can

20:16:41see these are the project actually I

20:16:43have mentioned in that resume okay

20:16:46amazing it's working great now you can

20:16:48uh see it has also voice mode I can also

20:16:50activate the voice mode and I can um ask

20:16:53something let's say

20:16:57tell me about Python programming and

20:16:59give me the hello world program.

20:17:03See tell me about Python programming and

20:17:05give me the hello world program. Now if

20:17:06I send this prompt

20:17:17see it's giving you the entire response

20:17:20okay with the hello world program as

20:17:22well. Okay. So yes uh that's how guys uh

20:17:25chart GPT works. Uh even in charge GPT

20:17:28also you can give this kinds of prompt

20:17:29and it will be working. But yes u charg

20:17:33is like a very u very actually advanced

20:17:36uh agentic application because u inside

20:17:39that they have added so many

20:17:41functionality okay deep resource and all

20:17:43but again yeah we have just tried to

20:17:46create recreated that um application

20:17:48here okay by focusing on some major

20:17:51component okay whatever we have learned

20:17:54so far I think this is very much

20:17:55interesting okay if you want you can

20:17:57also upgrade uh this project as per your

20:18:00requirement

20:18:01And you can add uh new new features like

20:18:03chart GP okay if you want and uh going

20:18:06forward I'm also going to create some

20:18:08other project as well uh so that you

20:18:10will be learning some more concept okay

20:18:12so yes guys this is the entire demo of

20:18:14the application we have seen and

20:18:16throughout the entire implementation

20:18:17guys we'll try to uh recreate uh this uh

20:18:21application okay I think this would be

20:18:23fun so make sure you watch this video

20:18:24till the end and uh if you found my

20:18:27content useful please try to subscribe

20:18:28to my channel and uh share this video

20:18:30with your friends and family. Now I'm

20:18:32also going to show you the memory

20:18:34features. Uh I also educated the memory

20:18:36here. That means it can remember my

20:18:39previous conversation. So I think you

20:18:40remember uh at the very first I told uh

20:18:43yes uh my name is BP. Okay. Like hi I'm

20:18:46Buppy here. So let's see whether it is

20:18:48able to remember my name or not. So what

20:18:51is my name?

20:19:01So as you can see you introduced

20:19:02yourself as a buppy earlier is it

20:19:04correct? Yes.

20:19:10Okay. Now uh I will remember that uh

20:19:13it's nice to chat with you. That means

20:19:15it has also long-term memory

20:19:17integration. If you uh want your chatbot

20:19:19to remember something, it will remember.

20:19:21Okay. This will save that information in

20:19:23the long-term u memory. Okay. uh this

20:19:26thing will also try to add with a

20:19:27database. So yes guys uh that's how uh

20:19:30you can implement this uh this amazing u

20:19:34agenti chatbot uh named bgptt or you can

20:19:37give any kinds of name if you want like

20:19:39chat gpt and if you go to the homepage

20:19:41here also you can um directly give

20:19:44something let's say I'll give u search

20:19:46the latest uh so if you click here uh it

20:19:48will automatically come search the web

20:19:50uh for latest EI news okay so you can

20:19:54directly send this prompt

20:20:03Okay, that's how I added some prompt

20:20:05here. Summarize the uploaded documents.

20:20:07Save something to the memory. Use

20:20:09calculated tool. Okay, if you want, you

20:20:10can also give some more suggestion here.

20:20:12Okay, it's completely up to you. So

20:20:15guys, now we'll start the development of

20:20:17BGPT. uh before starting the development

20:20:20first of all I want to show you the

20:20:22highle um architecture diagram like what

20:20:24are the component we'll be implementing

20:20:27in this um uh in this project so as you

20:20:30have seen u this has already one front

20:20:33end server um it is running on basically

20:20:36um HTML CSS and JavaScript so the entire

20:20:41front end you can see right I have

20:20:43created with the help of HTML CSS and

20:20:45JavaScript uh if you want you can also

20:20:47use any front- end framework like NexJS,

20:20:50React, okay, it's completely up to you.

20:20:52But again, if you don't know about

20:20:53front- end development, it's completely

20:20:55fine. There would be a separate team for

20:20:56that. They will try to design this front

20:20:58end. But okay, for you and if you don't

20:21:00know about HTML, CSS, Javcape, don't

20:21:02worry. This thing you can easily

20:21:03generate from uh chat GPT even you can

20:21:06also generate from puppy GPT if you

20:21:08want. Um so you just try to ask I need

20:21:10this kinds of interface it will create

20:21:12you can use that readym made template

20:21:13and you can uh edit okay uh as per your

20:21:16requirement uh but chart GPT actually

20:21:19they're using some kinds of front- end

20:21:21framework uh for this kinds of user

20:21:23interface so every application has this

20:21:26kinds of front- end server okay then it

20:21:29is connected uh with a backend uh server

20:21:32and the backend framework wise we're use

20:21:35we'll be using here fast API that means

20:21:37the application we have created it is

20:21:38running on fast API. Okay. And fast API

20:21:41is a production ready uh backend

20:21:43framework you can use. Uh we'll be also

20:21:46using fast API here. Okay. We'll try to

20:21:48handle all of the get request, post

20:21:50request, everything with the help of

20:21:51fast API. Charg also running on some

20:21:53kinds of u backend server. Okay. Maybe

20:21:57they have used fast API. We don't know

20:21:59that. Then uh you can see uh this

20:22:02backend server is connected with a

20:22:04workflow. Okay. That means some agentic

20:22:06workflow. So here we'll be using

20:22:08langraph to implement this entire

20:22:10workflow. Um I think charg they might be

20:22:14using any other agentic framework. Okay.

20:22:17Um I don't know which framework they're

20:22:19using but here we'll be using this

20:22:21langraph because we have completed lang

20:22:23graph so far inside our playlist. Okay.

20:22:24We'll try to use the langraph for the

20:22:27entire aentic workflow. Okay. We'll try

20:22:29to create our entire agents. Um we'll

20:22:32try to create the nodes. We'll try to

20:22:33create the tools. Okay. each and

20:22:34everything we'll try to create with the

20:22:36help of edge uh lang graph. Then this uh

20:22:39workflow will be connected with lots of

20:22:41tools okay like uh we'll be using some

20:22:45separate tools we'll be using rag tools

20:22:47okay for document search we'll be using

20:22:49memory tools as you saw it has also

20:22:52remembered okay my conversation even you

20:22:54can also retrieve the old conversation

20:22:56how it is happening with help of memory

20:22:57tools then some external uh API tools

20:23:00will be using like web search tool okay

20:23:03um then uh if you want you can also

20:23:05integate uh current weather informations

20:23:07okay it's and everything you can

20:23:08integrate here. then it will have one

20:23:10node tools uh tools node then uh it has

20:23:14also database connection that means uh

20:23:16for the I think if you have already

20:23:18understood about this uh langraph it has

20:23:20a concept of state okay the state uh uh

20:23:23checkpointter saving we have to use some

20:23:25kinds of database and here we'll be

20:23:26using SQLite database okay for this

20:23:28state tracking and uh for long-term

20:23:32uh long-term conversation storage we'll

20:23:34be using SQL uh alchemy okay uh this

20:23:37will store basically my um um like

20:23:40long-term conversation in that

20:23:42particular database and whatever state

20:23:45information we are having we'll try to

20:23:46save inside this scale database and for

20:23:49rag pipeline guys we'll be using chromb

20:23:51vector database and we'll try to

20:23:53generate the vector embeddings and here

20:23:55we have used gemini embeddings uh

20:23:57because gemini is free to use uh you can

20:23:59also use any other embedding model it's

20:24:00up to you okay with the help of Gemini

20:24:02embeddings we'll try to generate the

20:24:04embeddings and we'll store in the chrom

20:24:06and it's it's not necessary to use the

20:24:07chrom if you want you can also use fires

20:24:10pine cone but pine cone is a paid one

20:24:12you have to take the subscription then

20:24:13you will be able to use that then web

20:24:15also wit is also there it is also like a

20:24:18paid one so in this project I tried to

20:24:21use all the services as free okay that's

20:24:22why I'm using chromb okay chrom is in

20:24:25storage vector database that you can

20:24:27store all of your vectors then some

20:24:29external APIs we'll be using like tab

20:24:31API okay then Google gemini API for the

20:24:33lm and embeddings and if you want you

20:24:35can also integrate any other API as well

20:24:37here Okay. So yes, this is the highle

20:24:40architecture of this um BPGT. Now we'll

20:24:44try to follow this architecture. We'll

20:24:46try to develop each and every component

20:24:48in detail. So first of all uh we'll be

20:24:51creating a GitHub repository for this

20:24:53project. Uh so here I will open up my

20:24:55GitHub.

20:24:57Let's create a new repository here.

20:25:01I'll create a new repository.

20:25:04Um, I'm going to name it as uh

20:25:07Buppy

20:25:11GPT.

20:25:16Buppy GPT

20:25:19then uh here I will make it as public

20:25:23repo and add the readmi file. I'll also

20:25:28add the git ignore and here we'll be

20:25:30using python and license. You can take

20:25:33any license. I'll take this Apache

20:25:34license. Okay. Now let's create the

20:25:36repository here.

20:25:42Okay. Once you have created uh this

20:25:44repository, now just click on code, copy

20:25:47this link. Make sure you copy the HTTP

20:25:49link and uh open up your local folder.

20:25:51And here let's try to clone that.

20:25:56So get clone

20:26:04paste the URL.

20:26:07Okay. So cloning is complete. Now I'll

20:26:09go inside that. So cd b gpt. Okay. Now

20:26:13I'm inside this folder and here I'm

20:26:16going to open up my um I'm going to open

20:26:19up my uh VS code. So let's open up my VS

20:26:24code.

20:26:27So this is my VS code.

20:26:30Let me zoom

20:26:32everything is fine. Yeah. So here the

20:26:35first thing guys uh what I have to do I

20:26:37have to create a virtual environment and

20:26:40uh after creating we have to um install

20:26:44some of the library for this project

20:26:46then we'll be creating the folder stack

20:26:47set. So let's do it uh quickly and uh if

20:26:51you are uh implementing this project

20:26:53guys um I have implemented uh a similar

20:26:57kinds of agentic chatbot in my previous

20:26:59project. Uh if you go through that

20:27:01recording uh all of the concept I

20:27:03explained in detail like tools rag okay

20:27:06then um memory each and everything I

20:27:10explain in detail. So if you are

20:27:12completing that uh video it would be

20:27:14easy for you to implement this project.

20:27:16Okay, if you're completely new but if

20:27:18you already watch that video, if you

20:27:20already know these are the concept then

20:27:21it will be easy for you. So here I'm not

20:27:23going to focus on the theoretical

20:27:25explanation. Instead of that I'm more

20:27:27going to focus on the practical

20:27:28development because I'm expecting you

20:27:30are already familiar with those concept.

20:27:32Okay. So yeah make sure if you

20:27:34[clears throat] are completely new go

20:27:35through that uh previous recording.

20:27:36Okay. I have on my playlist.

20:27:39Now

20:27:40>> [gasps]

20:27:40>> uh here the first thing we'll be

20:27:41creating the

20:27:44um creating the

20:27:48environment.

20:27:50So let's create the environment. So how

20:27:52to

20:27:56run

20:27:58BPG?

20:28:10Yeah. First of all, you have to clone

20:28:12the repository.

20:28:30Okay. Then after that you have to create

20:28:33the environment.

20:28:40Yeah. So you have to navigate the

20:28:41project directory first. Then you have

20:28:43to create the environment.

20:28:46So all of this step I'm writing so that

20:28:47it would be easy for you uh to set up

20:28:50okay later on

20:28:54create virtual environment.

20:28:59So to create environment you need to run

20:29:01this command. So ponda

20:29:04create

20:29:06hyphen n bgptt python is equal to we'll

20:29:08be using python 3.11 and hyphen y we're

20:29:11giving the yes permission. Then once

20:29:13involvement is created, we have to

20:29:15activate the environment

20:29:18then we have to install the

20:29:20requirements.

20:29:23Okay, once requirement installation done

20:29:25then you'll be running the app.py.

20:29:29Okay, app.py should be our endpoint

20:29:31here. So now let's uh refer this uh file

20:29:36and install everything one by one. Okay.

20:29:38So, first of all, we have already inside

20:29:41my bgptt folder and I'll create the

20:29:42environment here. So, I'll copy this

20:29:44command. Open up my terminal.

20:29:51Let's create the environment.

20:30:02Then we we have to activate that. This

20:30:04is the command.

20:30:13Okay, activation is complete. Now here

20:30:16uh we have to add a requirement file

20:30:25requirement.txt file inside that we'll

20:30:28be mentioning all of the requirement we

20:30:29need here.

20:30:32So I already prepared all of the

20:30:34requirement guys.

20:30:36with the specific version I will be

20:30:38installing here. See these are the

20:30:40requirement I need for this project. I

20:30:42need fast API for the backend server and

20:30:45to run the fast API you need uon then

20:30:47ginga okay and then python multipart. So

20:30:50these are the dependency of fast api

20:30:52then python.enb I need for environment

20:30:55management that means uh whatever api

20:30:57I'm going to mention I'm going to

20:30:58mention inside this dot env file.

20:31:04Okay.

20:31:05Then uh I'll be installing the

20:31:09orchestration framework like lang chain.

20:31:11Then we'll be using gemini model. For

20:31:13this you have to install this langen

20:31:15google ji. Then lang chain core. Then

20:31:18we'll be in uh using lang graph

20:31:19orchestration framework for this agent

20:31:21workflow. Then langent text splitter. I

20:31:23need uh I will be integrating feature

20:31:26rag feature. And to parse our documents

20:31:29we need that. Then lang graph checkp

20:31:30pointer skqli. That means uh to save

20:31:33this uh persistence memory I need SQLite

20:31:36um saber. Okay. Then langent chroma I

20:31:39need uh because for vector database I'll

20:31:41be using chromb. Then chromad you have

20:31:43to install pi pdf. Here we'll be only

20:31:46considering the pdf document. But if you

20:31:48want you can also use uh like docs file.

20:31:51You can also use excel file. Okay. This

20:31:53part you can add simply go to the length

20:31:55documentation. You will able to see

20:31:56that. Then langent tab. So internet

20:31:59search operation will be using tably

20:32:00search. Okay. Then tab python. This is

20:32:03the dependency for langent tab and SQL

20:32:06um alchemy we'll be using for this uh

20:32:10long-term uh conversation storage. Okay.

20:32:13We'll be creating a database and there

20:32:14we'll try to save everything. Okay. So

20:32:16yes uh these are the requirements I

20:32:18need. Now we have to install this

20:32:19requirement and this is the command for

20:32:21that. Let's copy

20:32:23and uh we'll install everything here.

20:32:49Let's wait. This process may take some

20:32:51time.

20:33:21So in between what I can do I can

20:33:23collect all of the API key I need uh for

20:33:26this development.

20:33:29So here

20:33:32uh what I'm going to do I'm going to

20:33:34first of all collect the uh Gemini API.

20:33:36Okay, this is available inside Google

20:33:39AI studio.

20:33:45Go to the Google AI studio

20:33:52and uh here we'll just click on get

20:33:55started and left hand side you will see

20:33:56this API key.

20:34:00And here you have to create an API key.

20:34:02Okay. So I already have my API key. I'll

20:34:04just copy that. If you don't have you

20:34:06just try to create from here. Okay. So

20:34:08after that you just need to add it here.

20:34:11So this is my Google API key.

20:34:15Okay. This is my Google API key I

20:34:17collected. And don't use my API key

20:34:19guys. I'll be removing after this

20:34:20recording. And once it is done then you

20:34:24have to mention the Google model which

20:34:26model you want you want to use as

20:34:28default. Okay. Let's see if user is not

20:34:30selecting the model that means the by

20:34:33default model I'll be using Gemini 2.5

20:34:35flash model. Okay. And this model has

20:34:37some free access limit you can use that.

20:34:39Okay. So we'll be adding this model. If

20:34:42you want to use any other model you can

20:34:44simply do do that. Okay. You can go to

20:34:45the chat GP. You can ask I want to use

20:34:47this model. What should be the model

20:34:48name? You can use that. Then the next uh

20:34:52API key I need for internet search

20:34:55operation because as you see uh we'll be

20:34:57integrating the tools. Okay. And for

20:34:58real time search operation we need a

20:35:02tool called tably search. So tab search

20:35:04uh needs the API key. So let's collect

20:35:06that API key as well. So here what I'm

20:35:09going to do I'm going to search for

20:35:10tably API key.

20:35:18Okay. Now let's

20:35:22open this.

20:35:26Here you have to login with your

20:35:28account. Let's login with my account.

20:35:33And here you have the API key. Okay. So

20:35:35previously I already created the API

20:35:36key. I'll just try to copy. But if you

20:35:38don't have just create from here. So

20:35:40let's add the table API key here.

20:35:46Table API key. Okay.

20:35:48Yes. Now uh tab is also done. Now what I

20:35:52have done guys uh for this development I

20:35:55also integrated lang here

20:35:59that means I can continuously monitor my

20:36:02chatbot the bub pgbt. Okay we are

20:36:05tracing on langsmith platform. Let's log

20:36:08in my lang. So if you don't have the

20:36:10account just create an account in lang.

20:36:12You can continue with your Google.

20:36:18Okay. So here you can see uh we created

20:36:20a aentic chatbot test.

20:36:23So here uh we are tracing everything.

20:36:25Okay. Whatever chat we have done here it

20:36:28is tracing everything. You can monitor

20:36:30from here. Okay. You can monitor from

20:36:32here. Even you can also see the trades.

20:36:36Okay. You can also see the trades

20:36:38different different trades. Okay.

20:36:39Everything is visible. So we'll be

20:36:42integrating the this lang also uh inside

20:36:44this uh project. So for this you need

20:36:46lang langsmith API key. Okay. So where

20:36:49you will get this API key? It is

20:36:51available in settings API key. Okay. Now

20:36:53just create an API key. So I already

20:36:55created my API key. I'll just try to use

20:36:57that. So for langid tracing guys you

20:36:59need to add this four four variable

20:37:02here.

20:37:08Okay. The first thing langid tracing is

20:37:10equal to would be true. Then lang

20:37:14endpoint um this is the endpoint api

20:37:17smith.langjen.com

20:37:19then lang API key. So this is the API

20:37:21key I have given and here you have to

20:37:23give the project name. So here I'll give

20:37:25let's say

20:37:27bpg

20:37:31bgt. So this is the project. Okay you

20:37:33can give any name. Uh so it will

20:37:35basically create that name here uh that

20:37:38name here and it will trace all of the

20:37:40informations there. Okay. So yeah so

20:37:42these are the API key as of now I need

20:37:44uh for this uh project but if you want

20:37:47you can also use uh any other API key

20:37:49you can use realtime weather uh weather

20:37:52let's say API key to get the weather

20:37:53information you want you can also use

20:37:56any kind of stock price u uh stock price

20:37:59API key if you want to get the latest

20:38:01stock okay of any company. So this thing

20:38:03I have already added inside my previous

20:38:05uh uh chatbot. So this part I want to uh

20:38:09I want to leave it to you. I want you to

20:38:11integrate these are the features okay

20:38:13inside this uh puppy GPT. So just try to

20:38:16add realtime weather information s and

20:38:18uh real time stock price. Okay these are

20:38:20the thing just try to add and for this

20:38:22you can use any any other open open

20:38:24source let's say API provider for that.

20:38:27So yes these are my environment

20:38:29variable. Now let me see my installation

20:38:30is complete or not. Yeah. So,

20:38:31installation is completed. There is no

20:38:33error. Okay. It's completely fine.

20:38:36So, yeah. Now, uh what I'm going to do,

20:38:39I'm going to just push the changes.

20:38:42Okay. So, here you can just write

20:38:45requirement

20:38:50requirements

20:38:52and uh

20:38:57API addit.

20:39:05Now if I go to my GitHub

20:39:08refresh

20:39:10see everything is up to date. Now

20:39:14uh what I have to do guys I have to

20:39:15create the uh folder structure

20:39:18um what whatever folders and file you

20:39:21need I'll just try to create then I'll

20:39:23just uh uh implement all of the

20:39:26component one by one. So now let's uh

20:39:28create the files and folder I need. So

20:39:30first of all I need the files here

20:39:33called

20:39:34agent.py.

20:39:36So here I'm going to write my agent

20:39:39workflow. Then I'll be creating another

20:39:42file called tool.py.

20:39:46So here I will be writing all of the

20:39:48tools. Okay tools functionality. Then I

20:39:51need another one called rag.py.

20:39:55So here I'm going to write all of the um

20:39:58rag related code that means document

20:40:00uploader vector store everything. Then

20:40:02I'm going to create another file called

20:40:04database

20:40:06dopy. So here uh we'll just try to write

20:40:10all of the code related database. Okay,

20:40:12database integration.

20:40:14Then I need um

20:40:18anything else. Okay, I need my endpoint

20:40:20which is app.py. Okay, so this is going

20:40:24to be my endpoint, my first API

20:40:26endpoint. And uh for HTML and CSS, I

20:40:31need a folder called template

20:40:34templates. Okay, inside that I'm going

20:40:37to create a file called index

20:40:41html.

20:40:44Okay, so inside that we'll be writing

20:40:46all of the HTML, CSS, JavaScript related

20:40:48code in a single file. Okay. And if you

20:40:51don't know about HTML is completely

20:40:52fine. Even uh I also took the help from

20:40:55chat GPT to generate my user interface.

20:40:57The user interface you have seen. Okay.

20:40:59This user interface.

20:41:02So yes uh as of now this thing is

20:41:05required

20:41:06and uh if I need anything I'll just try

20:41:08to create later on. Okay. Now you can

20:41:11again commit the changes like folders

20:41:17and

20:41:21Why had it

20:41:34so folders and file added? Okay. Now,

20:41:37first of all, guys, uh what I'm going to

20:41:39do, I'm going to create my agent

20:41:42workflow. So, let's create the agent

20:41:44workflow. I'll just try to close this

20:41:45out the file.

20:41:52So I'll open up my agent.py

20:41:55and here we'll be creating our agent

20:41:57workflow with the help of lang graph. So

20:42:00let's import some necessary library.

20:42:07We'll import all the necessary library

20:42:09and here make sure you select your

20:42:10environment which is this one

20:42:14bpg. Okay. And now this error would be

20:42:17removed. Now here we are importing

20:42:19operating system SQLite uh path from

20:42:22path lib then env because we need to

20:42:25load these environment variable then

20:42:27certify you need uh why certify is

20:42:30required because see sometimes if you're

20:42:32using Windows operating system there

20:42:34would be some kinds of path related

20:42:36error. Okay to prevent that this is the

20:42:39safer code you have to add. Let me show

20:42:42you.

20:42:44So this code you have to add okay

20:42:46west.in environment SSL uh cert file

20:42:50okay uh certified wire and request ca

20:42:53bundle certified. You have to add this

20:42:55two line. So if you're using Windows uh

20:42:57operating system uh you won't be getting

20:43:00the error related path issue. So it uh

20:43:03doesn't happen to all the operating

20:43:04system. Sometimes uh in uh in some

20:43:08operating system it happens. Okay.

20:43:09That's why I added this code just for a

20:43:11safer purpose. That means if you are

20:43:13executing my project in future you won't

20:43:15be having any kinds of problem. But if

20:43:16you're using Linux wind u Mac OS I think

20:43:19this line is not required but still if

20:43:21you keep it will not uh h uh make harm

20:43:24okay in your in your project. So I'll

20:43:26just try to add it to prevent the path

20:43:28issue.

20:43:29Then apart from that I need some other

20:43:32um other libraries as well.

20:43:35Yeah.

20:43:37So these are the library I need

20:43:40and I think all the libraries are common

20:43:42guys. Uh here I don't need to explain

20:43:44these are the library again. Uh we are

20:43:46using this chat Google generate API for

20:43:47this Gemini model initialization system

20:43:50uh message we're importing from lang

20:43:52chain. Then from lang graph we importing

20:43:54state graph start message state. Okay

20:43:56then from pre-built we are importing

20:43:58tools node tools condition. Okay. Then

20:44:01checkpoint we're using uh SQLite saber

20:44:04and from um Okay. Okay. So this line I

20:44:07don't need to write as of now because

20:44:09whatever tools I'm going to write I'm

20:44:11going to import here. Okay. So yes uh

20:44:13these are the like uh import I need as

20:44:15of now. Now what I'm going to do guys

20:44:17first of all I'll just create a

20:44:19directory.

20:44:21Okay. Here I'll just create a directory.

20:44:23So why directory is required? Because uh

20:44:26I think you know that uh this uh

20:44:28langraph will have a state right? Uh so

20:44:31for our uh for our let's say this uh

20:44:35workflow what would be the state okay

20:44:37state should be the message state that

20:44:39means whatever user is giving the input

20:44:41message and my chatbot is replying uh

20:44:45whatever response so this should be my

20:44:46state okay that means uh if I create the

20:44:50workflow so how my workflow will look

20:44:52like let's try to understand

20:44:56so for this I created a demo excalider

20:44:58file and here I just uh uh created the

20:45:02architecture. So this is the

20:45:04architecture guys. So this is my

20:45:06langraph workflow. So here uh it will

20:45:09have a chat node and this will have a

20:45:11tool nodes. Okay. So whatever user will

20:45:13give the message it will go to the chat

20:45:15node and chat node will decide uh so

20:45:17here basically we'll be using something

20:45:19called tool condition. This tool

20:45:20condition will decide whether it has to

20:45:22use any kinds of tool for this question

20:45:24or not. If it doesn't need any kinds of

20:45:26tool, it will directly go to the end

20:45:27node. Otherwise, it will use the tool.

20:45:29Now, it will automatically se select the

20:45:31tools like which tools is required to

20:45:33give the answer and um the response will

20:45:35go to the end node. Okay. So, this is my

20:45:38uh this is my actually

20:45:40uh workflow. Okay. And what should be

20:45:42the state for this workflow?

20:45:46So, this should be the state. Okay. This

20:45:48should be the chart chat state. That

20:45:49means whatever input user is giving and

20:45:52whatever response it is uh generating.

20:45:53Okay. this I we have to add in the chat

20:45:56state. So this should be the state.

20:45:57Okay. So yeah. So if you want to save

20:46:00this state in the uh in the actually

20:46:03physical uh database that time we'll be

20:46:05using SQLite database because if I'm

20:46:07saving uh inside my RAM so if you close

20:46:10your application this would be erased.

20:46:12Okay. But I don't want that. I want uh

20:46:14let's say if I close my application also

20:46:16like chart GP still I'll be able to see

20:46:18all of my chart history and message.

20:46:19Right. So for this we'll be using SQLite

20:46:22um SQLite database and to save the

20:46:24SQLite database we'll be creating a data

20:46:28folder here. Okay. So inside data folder

20:46:30we'll try to create the database SQLite

20:46:31database and we'll try to save all of

20:46:33the checkpoint there. Okay. So for this

20:46:35uh this uh data folder is required.

20:46:39So to create the data folder I'm going

20:46:41to use this code. Uh you can see I'm

20:46:44using path library and inside that I'm

20:46:46giving data data folder and I'm using

20:46:49mkdr command to create the data folder.

20:46:52So first of all it will check whether

20:46:54this data folder is available or not. If

20:46:56available it will not create otherwise

20:46:57it will create. That's why I'm giving

20:46:58this parameter exist. Okay is equal to

20:47:00true. Okay. Yeah. Now uh here we'll just

20:47:04try to define the list of the model uh

20:47:06we want to uh we want to show to the

20:47:09user.

20:47:11Um

20:47:13yeah so these are the model guys I have

20:47:16considered for this project allowed

20:47:17model Gemini 2.5 flash Gemini 2.5 Pro

20:47:21and so on. If you want to use any other

20:47:23model, you just need to um rename this

20:47:26this uh dictionary. And the default

20:47:29model uh if user is not giving any kinds

20:47:31of model, the default model I'm taking

20:47:32Jiny 2.5 plus from the environment

20:47:34variable. Okay, here we have already

20:47:36set. Yeah, this is for the safer

20:47:39purpose. Okay, let's say if user is not

20:47:40giving any model by chance, that's why

20:47:43you can take the safer uh I mean default

20:47:45model.

20:47:47Okay.

20:47:49Yeah. So once it is done now we'll try

20:47:51to create a system prompt.

20:47:57So this is the

20:48:00system prompt guys I have prepared. As

20:48:02you can see you are a helpful agent

20:48:05assistant named BGPT similar to chart

20:48:07GPT. You can answer normal question use

20:48:09tools when needed. Okay. Search uploaded

20:48:11documents using rack tool. Search web

20:48:14for the latest current information using

20:48:16tab search. remember important

20:48:18informations using memory tool okay

20:48:20recall any kinds of old conversation

20:48:23using memory and you can also use

20:48:26calculator for mathematical operation

20:48:28and here I have set some rules okay so

20:48:30that's how we can change this prompt as

20:48:31per your requirement I have given this

20:48:33system prompt now the first thing guys

20:48:35uh here what I'm going to do I'm going

20:48:37to

20:48:39build our agent agent workflow

20:48:43um so let's do that I already written

20:48:47that function. Let me show you. So here

20:48:49I'm not going to write from scratch

20:48:51because this code I have already written

20:48:53from scratch in my previous uh previous

20:48:55project implementation. So most of the

20:48:57codes are common. There is no new thing

20:48:59we have added yet. That's why I will try

20:49:01to copy paste.

20:49:03So see this is my

20:49:06um function I have written named build

20:49:08agent. So this will take the model name.

20:49:11Okay. Because to uh to uh create the

20:49:16agent you need the model and uh first of

20:49:19all what I have to do I have to

20:49:20normalize the model and normalize the

20:49:21model name means if user sometimes let's

20:49:25say he is giving um any other name okay

20:49:29let's say it if it is not matching with

20:49:31this name so that type um my code will

20:49:34give me error so make sure whenever you

20:49:36are giving the model ID make sure the ID

20:49:38should be same like that you can go to

20:49:40the Gemini documentation you'll see that

20:49:42they're giving the ID like that. Okay.

20:49:44So, we have to give the same ID. So, if

20:49:46by chance from the front end I'm getting

20:49:48any other different name, I'll just try

20:49:50to normalize that first of all. So, for

20:49:52this we'll return write a function here

20:49:54called normalize model name. It will

20:49:55take the model name and it will do the

20:49:57normalize. First of all, it will check

20:49:58if not model name use the default model

20:50:00otherwise first of all it will do the

20:50:02strip operation then it will check if

20:50:04model name is not not in allowed model

20:50:06return the default model otherwise

20:50:08return the uh same model user is giving.

20:50:10So this function we are applying here

20:50:12just to um just to what just to do the

20:50:17model name verification the model name

20:50:19it is matching here or not. Okay. Yeah.

20:50:21So this kinds of simple simple function

20:50:24you have to write inside your code so

20:50:26that your application would be more

20:50:27robust. Okay. Because user can give

20:50:29anything. So you have to handle in the

20:50:31back end. Now here we are using uh this

20:50:35Gemini model chat Google generative way.

20:50:37We're giving the model temperature

20:50:38streaming is equal to true and we are

20:50:40creating the LM object. Then uh before

20:50:44creating the chat node first of all you

20:50:46remember I think we have to uh bind the

20:50:48tools okay with the lm because here

20:50:50we'll be using the tools right and for

20:50:51this we need list of the tools we'll be

20:50:53creating the tools okay just don't worry

20:50:55I'll create the tools as of now we

20:50:56haven't created so after binding u we'll

20:50:59be using this object lm with tools now

20:51:01here we have written another function

20:51:02called chat node so this is my chat uh

20:51:05chat uh chatbot nodes and here preparing

20:51:08the system message and we are also

20:51:10giving the state Okay. And um um here

20:51:14you can see we are using this uh lm with

20:51:17tools and we are doing the invoking

20:51:19operation and after that we are just

20:51:21returning the message. Okay. Then the

20:51:23second node we are using the tool tool

20:51:25node that means if you see the

20:51:26architecture so this node is created now

20:51:28we are getting this tool this node.

20:51:31Okay tool node. So once tool node is

20:51:33created we are creating the workflow

20:51:34state uh graph. Uh we are giving the

20:51:37message state. Okay. And message state

20:51:41is already available inside this

20:51:43langraph. Okay, you don't need to

20:51:45separately write that. It is already

20:51:46inbuilt inside lang graph. If you are

20:51:48creating this kinds of chatbot, you can

20:51:50directly use this message state. I think

20:51:51previous video I already discussed this

20:51:53part. So message uh state we are taking.

20:51:56Then we are adding the nodes. First of

20:51:57all we have to add the um chat node,

20:52:00right? Then we have to add the tool

20:52:02node. So adding the chat node, then tool

20:52:04nodes. Okay. Then we are doing the edge

20:52:06connection. First of all start to

20:52:08chatbot.

20:52:09Start to chat chat note. Okay. Then uh

20:52:13we are using conditional edges. Okay.

20:52:15Conditional edges that means chatbot to

20:52:17tools condition. Chatbot to tool

20:52:19condition. Okay. That means there would

20:52:21be two condition. Then

20:52:24uh tool condition to chatbot

20:52:27tool condition to chatbot again that

20:52:29means whatever response we'll be getting

20:52:30from the uh tools right this should be

20:52:33refined with my LLM. That means I may

20:52:36again passing to the chat node. So yeah

20:52:38this is the connection and now we have

20:52:40to give the persistence memory which is

20:52:42my

20:52:44uh SQLite. So here we are already

20:52:47creating the data folder. I think

20:52:48remember this data folder. So inside

20:52:51data folder we are creating a database

20:52:53object called langraph checkpoint.sqlite

20:52:56and skqite is a local uh database. You

20:52:58can create inside your storage only.

20:53:00Okay. If you want you can also use any

20:53:02remote database as well. Okay. You can

20:53:04set up this this is on any server and

20:53:06you can use that. But again for this uh

20:53:09you need cloud platform like AWS okay

20:53:12then your GCP. So there you can set up

20:53:15the database server. You can store all

20:53:17of the um uh store all of the uh data

20:53:21but again I'm using the free resources.

20:53:22That's why I'm using the local one. Okay

20:53:25for this you don't need to pay anything.

20:53:27Then same trades is equal to false. So

20:53:30this thing you have to u make and this

20:53:33will become your connection object. Now

20:53:34you will be initializing the escalate

20:53:36server and this connection object you

20:53:38will pass here and this will become your

20:53:39checkpointter and this checkpo pointer

20:53:41you will be using whenever you will do

20:53:42the workflow compilation. Okay done. So

20:53:45this is what you have to just write for

20:53:48this build agent. Okay. So now guys uh

20:53:52it's done. Now the next thing we have to

20:53:54prepare the tools. And again I'm telling

20:53:56you guys all of this concept I have

20:53:59completed in my playlist. Okay, just go

20:54:01through one by one all of the concept.

20:54:03You can see tools, rag, okay, aentic,

20:54:06chatbot, workflow, okay, each and

20:54:08everything I have already discussed in

20:54:09my playlist. Just try to go through

20:54:11that. If you are first time uh in this

20:54:14implementation,

20:54:15uh you might get difficulties for sure.

20:54:17Okay, but if you cover all of this

20:54:19recording, you won't be any kinds of uh

20:54:21you won't be having any kinds of

20:54:22problem. Okay, this is my promise. So

20:54:24that's why I'm telling you I'm not going

20:54:26to focus on the theoretical part. I'm

20:54:28only going to focus on the practical

20:54:29development because theory I have

20:54:31already covered. Okay. Yes. So yes. So

20:54:34now let's work on the tool. Uh so for

20:54:37tool guys what I'm going to use I'm

20:54:38going to use this tools.py and inside

20:54:41that I'm going to mention all of the

20:54:42tools I'll be using in this project. So

20:54:45first of all let's import all of the

20:54:47necessary library.

20:54:49Um

20:54:51yeah.

20:54:53So I'll import math module uh env. Then

20:54:56we'll load the environment variable.

20:55:00Okay. Then here we have imported tools

20:55:05from langen code tools. Then langen tab

20:55:08where importing tab search. Okay. Yeah.

20:55:12So first of all um here what I'm going

20:55:15to do I'm going to initialize some

20:55:17tools.

20:55:24First of all, I'm going to use this

20:55:27web search tool.

20:55:32Okay, web search tool. So, I'm using

20:55:34tably and here we're giving the some

20:55:36parameter like max result, topic. Okay,

20:55:39search depth. These are the parameter

20:55:40we're giving and this will become your

20:55:42tool. And here you don't need to use the

20:55:43tool decorator because table is already

20:55:45a tool. Okay, so you don't need to give

20:55:47that. And uh I need other tool as well

20:55:50like I need calculator tool.

20:55:54So this is my calculator tools. So you

20:55:58can see this is a simple custom function

20:55:59we have written for calculator. It will

20:56:01take any kinds of expression and it will

20:56:03do the um mathematical operation and it

20:56:06will return the result. And if you want

20:56:08to use as a tool I have to use this tool

20:56:10decorator. Okay that means website and

20:56:12calculator we have added. Now we'll be

20:56:14adding some more tools like uh we'll be

20:56:17adding the uh we'll be adding the

20:56:23memory tool that means you can save any

20:56:25kinds of uh uh information if user is

20:56:28giving let's say user is giving remember

20:56:30something okay it will use that memory

20:56:33tool and it will save that information

20:56:35in the long-term memory and for this we

20:56:36have to use the database so we'll be

20:56:38writing that thing as a tool then if you

20:56:41want to search memory that means if you

20:56:42want to get any older conversation which

20:56:44you did long time ago. It will retrieve

20:56:46from the database. Okay. So again for

20:56:48this we will be writing a tool. Okay. So

20:56:50that's how we'll be writing different

20:56:51different tool and one more tool you

20:56:52need which is this uh um rag tool. That

20:56:55means if user wants to search something

20:56:57over the documents you can use the rag

20:56:59tool. So this part we'll just try to

20:57:01write but before that we'll be writing

20:57:03another function called

20:57:06trade.

20:57:07This trade is required because here I

20:57:10think you saw we we'll be using the

20:57:11trade right? different different trades.

20:57:13Okay. Uh user can create different

20:57:15different trades. Okay. And anytime they

20:57:17can switch between another trades. So

20:57:19for this every time we'll be using the

20:57:22trades. So for this here I have written

20:57:23another function called set current

20:57:25trades. And if user gives any kinds of

20:57:27trade ID here it will try to set that

20:57:29particular trades and this trade will be

20:57:31considered in that particular session.

20:57:33And by default if user is not giving any

20:57:35trades it will be using the default

20:57:36trades. Okay. So this trading concept I

20:57:38also discussed in my playlist. You can

20:57:40go through that. Now first of all uh

20:57:43what I'm going to do guys I'm going to

20:57:44use the database related

20:57:48database related tools. So for this

20:57:51there is a file I have written called

20:57:52database.py. Let's open it up and uh let

20:57:56me show you

20:57:59all of the

20:58:02function you need here.

20:58:05I already written this code. Let me show

20:58:07you very simple only the database

20:58:09operation I have written. And here we

20:58:11are using SQL uh alchemy database. Okay,

20:58:13for this you need the knowledge on SQL

20:58:15alchemy. If you don't know, just go

20:58:16through any YouTube video and try to

20:58:18understand SQL alchemy how it works with

20:58:20Python. So here we're importing dead

20:58:22time, path leave, SQL alchemy, you're uh

20:58:24importing create engine, column,

20:58:26integer, string, text, dead time, SQL

20:58:28alchemy, you're importing OM. Okay. Uh

20:58:31declarative base session maker each and

20:58:33everything you will uh see from the

20:58:35tutorial itself. I'm not going to

20:58:36explain this here because again this is

20:58:38a theoretical concept. You can

20:58:40understand this thing from a YouTube

20:58:42tutorial how SQL Alchemy works. But this

20:58:44is a simple code I have written.

20:58:45Basically, this uh code will try to

20:58:47connect with SQL Alchemy server. So here

20:58:50we're creating a local server. You can

20:58:51see okay, we'll be creating a local

20:58:53server. If you want you can also install

20:58:56this SQL Alchemy in the remote server.

20:58:58Uh for this again I told you you need to

20:59:00use AWS, GCP or any other cloud

20:59:02provider. There you can set up that but

20:59:04again uh that would be costly. That's

20:59:06why I'll be using the local one just to

20:59:08show you the free resources. So again uh

20:59:10we are creating the data data folder.

20:59:12Okay data folder why every time we're

20:59:14creating the data folder because if data

20:59:16is not data folder is not there first of

20:59:18all it will create and inside that it

20:59:20will save this uh DB object. Okay. So

20:59:23every time you need to check okay uh and

20:59:26this parameter you have to provide if

20:59:27already available no need to create

20:59:29otherwise just try to create. Okay. So

20:59:31this is my database URL SQLite clone. uh

20:59:35then you have to give / data folder

20:59:37inside that chatbot memory db this

20:59:39object would be created okay inside that

20:59:41we'll try to save all of the information

20:59:43first of all we're getting the engine

20:59:44okay where we providing the database URL

20:59:46and some connection method then we're

20:59:49getting a session okay after getting the

20:59:51session we are creating some class you

20:59:53can see first of all this class will

20:59:54return you the schema like table name ID

20:59:57trade ID title created at updated okay

20:59:59this is called actually uh schema okay

21:00:02uh database schema Then chat message.

21:00:05For chat message, we are returning the

21:00:07schema like ID, trader, ro content,

21:00:09created at. Okay, these are the

21:00:11information we'll try to uh save inside

21:00:13chat message. And for long time uh

21:00:15long-term memory that means if user

21:00:17wants to save any kinds of long-term

21:00:19conversation that time we'll try to set

21:00:21ID, trade ID, memory that means the

21:00:24conversation and the created when it it

21:00:26got created. Okay. And the table name

21:00:28should be long-term memory that time.

21:00:30And for chat message that means the

21:00:31regular message whatever message user

21:00:33will perform it will become as a chat

21:00:35message table. Okay. Now we are

21:00:38initializing the database with this

21:00:39function and this is the function for

21:00:41create or update conversation. So this

21:00:43will take the trade ID and the message.

21:00:45Okay. If you give if you give the

21:00:47message it will update that conversation

21:00:49in the table. Okay. So you can see here

21:00:52we have written the code for that. Okay.

21:00:55And this code will also help you to

21:00:58prepare these traits. Okay, that means

21:01:00every time you can see whenever user is

21:01:01passing any kinds of message, it is

21:01:03taking the message title and it is only

21:01:05taking the 40 character of that. So this

21:01:07part I'm doing here. Okay, so from the

21:01:10user message uh first message, I'm

21:01:12taking the first 40 character and I'm

21:01:14preparing a title and I'm showing you

21:01:17inside the trade message. Okay, so this

21:01:19is what actually we have written here in

21:01:20this function.

21:01:22Then once it is done, we are listing all

21:01:24of the conversation. Okay, listing

21:01:26conversation means uh whatever

21:01:28conversation we have here. Okay, uh we

21:01:31are listing all of the conversation with

21:01:33this with this function. Okay, then save

21:01:38chat messages. Okay, that means if you

21:01:40if user wants to save any kinds of

21:01:43message, so it will be using this

21:01:44function for that. Then if user wants to

21:01:47get any kinds of history, previous

21:01:48history, it will be using this function

21:01:50for that. So it is only doing the

21:01:52database operation. You can see it is uh

21:01:54uh adding adding the data. It is uh

21:01:57retrieving the data. That's how it's

21:01:58working. If user wants to save any

21:02:00memory

21:02:02any kinds of let's say let's say I I'm

21:02:05telling my chatbot I am BP. Okay. Try to

21:02:07remember me that time it will use this

21:02:10function. We'll be using this function

21:02:11as a tool. Okay. As a long-term memory

21:02:14that's why we're using this schema that

21:02:16time. Okay. Now let me go below.

21:02:20And [clears throat] if user wants to

21:02:21search anything uh about the previous uh

21:02:23question that time uh we'll be using

21:02:26this function as a tool that time okay

21:02:27for a long time long-term memory uh

21:02:30concept. So yes uh this is the um

21:02:34database related code guys I have

21:02:35written and we'll be using uh inside our

21:02:38tools right now. Now let me import

21:02:41for these are the functionality first of

21:02:43all. So see from this database I only

21:02:45need to import

21:02:47from database

21:02:50I need to import save memory and search

21:02:53memory. Okay, save memory I'll be using

21:02:54to save my conversation and search

21:02:58memory I need to uh get my previous

21:03:01conversation. Okay, old conversation.

21:03:04Now these two things I'll be defining as

21:03:06a tool. Let me do that.

21:03:10So

21:03:14here I'll just try to add after

21:03:16calculator

21:03:19remember this okay if u user is asking

21:03:22um just to remember anything it will use

21:03:25this tool that time okay and it will uh

21:03:28take the conversation and it will save

21:03:29inside the memory and for this we're

21:03:31using this save memory

21:03:33this function save memory and we are

21:03:36defining as a tool and uh one formatting

21:03:39we need the recall memory.

21:03:44If user wants to let's say

21:03:48uh if user is asking about old old

21:03:50conversation let's say if user asking

21:03:52what is my name or what was my hobby

21:03:54that time it will use the equal memory

21:03:56tool and it will search the memory that

21:03:58means in the database it will search the

21:04:00old conversation and it will return that

21:04:03okay so these two things I have used as

21:04:05a tool I hope you get it and one more uh

21:04:09tool I have to create

21:04:11Um

21:04:14one more tool I'll be creating here

21:04:20called uh this rag tool.

21:04:23Just a minute. Yeah, one more tool I

21:04:25need called rag tool. Okay, rag tool you

21:04:27need. Let's say if user is uploading any

21:04:29kinds of documents. So this document uh

21:04:32um you have stored in the vector

21:04:35database. Okay. And from the vector

21:04:37database you'll be performing the

21:04:38retrieving retrieving operation. That

21:04:39means you will try to retrieve the

21:04:40informations for this. This tools is

21:04:42required. So let's create this rag tool

21:04:45here. I'm going to open this rag.py.

21:04:48Inside that I'm going to write all of

21:04:49the rag related code. And again this rag

21:04:52related code is uh uh common from my

21:04:54previous implementation. First of all

21:04:56let's import the necessary libraries.

21:05:00Okay. I'm importing these necessary

21:05:02libraries. Then again I need that

21:05:07environment related

21:05:09um command that means if you are getting

21:05:12the path issue that time this code will

21:05:14help you to prevent that and uh some

21:05:16other library I need

21:05:20these are the library like from langen

21:05:22we're importing chroma chromadb then

21:05:24google generative embeddings we'll be

21:05:26using google genative embeddings model

21:05:28then documents we're importing from lang

21:05:30langen code then recursive character

21:05:32text splitter for the chunking

21:05:33operation. Okay, what is chunking? What

21:05:36is uh why chunk is required in the lag?

21:05:38Each and everything I have discussed in

21:05:40my rag video. So here, okay, implement

21:05:43rag in aentic chatbot. You can go

21:05:45through that. Yeah. Then pi PDF reader

21:05:48because we'll be considering the PDF

21:05:50document. But if you want you can also

21:05:51upload any other document as well. Txt,

21:05:53docs. Okay, it's completely up to you.

21:05:55Then doc to text. Then here we'll be

21:05:58creating two more directory.

21:06:02one is the uploads. Okay, let's say

21:06:04whatever document user is uploading I'll

21:06:06try to store in the uploads folder.

21:06:08Okay, for this you're creating the

21:06:09directory and one more directory you are

21:06:12creating called chromad. Okay, let's say

21:06:14whenever it is creating the vector

21:06:16store, right? Uh um chromod actually use

21:06:19your local storage to save the

21:06:22information that means the vector store.

21:06:23So that time it will create a chrom

21:06:25directory inside that it will save

21:06:26everything that's two directory we are

21:06:28creating. Then we'll be initializing the

21:06:30embedding model.

21:06:33So this is our embedding model.

21:06:36Okay, we are using Gemini uh Gemini

21:06:38embedding 001 this model. Now we'll be

21:06:41creating the vector store.

21:06:44So this is our vector store. We are

21:06:45using chromad and this is the name of

21:06:48the collection name aentic chatbot docs.

21:06:50We are giving the embedding model and we

21:06:52are providing the chromadb path

21:06:56here. [sighs] You can use any vector

21:06:58database. You can use uh pine cone web

21:07:00whatever you want. You can use any

21:07:01vector database. Okay. It's not like

21:07:04that you have to use chrom always. Now

21:07:06here I have written a function. So this

21:07:09function what it does let me show you

21:07:11this function basically reads the uh

21:07:14reads reads reads a file text okay that

21:07:17means if you provide any file uh it will

21:07:19read read that whether it is a PDF or

21:07:23whether it's it's in a doc format okay

21:07:26so basically uh here uh you can upload

21:07:28txt md pi CSV

21:07:32okay and you can load that but here we

21:07:35are considering the docs and pdf format

21:07:37and uh if you want you can also load

21:07:39these other documents as well. So once

21:07:41it's read everything it will load that

21:07:44like if it is PDF it will use the PDF

21:07:46reader to uh read that documents. Okay.

21:07:49If it is docs it will use the docs uh to

21:07:52text and it will load that. Okay. And if

21:07:55you want to consider like MDI you can

21:07:57write another other condition as well.

21:07:59Okay. So it will use that and it will uh

21:08:01load that. But here by default I have

21:08:03written a code uh I'm using path read.

21:08:06Okay. So what it does if you are

21:08:07providing this txt, MD, PI, CSV, it can

21:08:10still load that documents and it can um

21:08:13extract the content from that. Okay. And

21:08:16uh there is exception I have given

21:08:18unsupported file like upload PDF, docs,

21:08:20txt, MD, py or CSV. Uh if user is

21:08:23passing any other file format let's

21:08:24say.pl or any other file that time I'll

21:08:27raise the exception. Okay. So exception

21:08:29has handling is also required whenever

21:08:31you are doing this kinds of scenario. So

21:08:33yeah this is the function to load the

21:08:35documents. Now uh we'll be writing the

21:08:38final function to create the vector

21:08:41store. So this is the function we'll be

21:08:43using to create the vector store. As you

21:08:45can see

21:08:47add documents to rag. It will use the

21:08:49file path and the trade ID. Then uh we

21:08:52are doing the chunking operation. We're

21:08:55giving the chunk size and chunk overlap.

21:08:57Creating the chunking. Then we are um we

21:08:59are taking the page content. Okay. uh

21:09:02that means uh content from the uh

21:09:04documents and we're storing in the

21:09:06vector store. Okay. And we're returning

21:09:07the path. So this function will

21:09:09basically create the vector store. Okay.

21:09:11Vector database and it will store

21:09:12everything in the vector store. Okay.

21:09:15Now for retrieve operation that means if

21:09:17user is asking anything regarding the

21:09:19documents, it will retrieve the

21:09:21information by using the similarity s. I

21:09:23think you know every vector database

21:09:24having a similarity source okay

21:09:26operation. So in this function we are

21:09:28doing that. Sorry from rag where user is

21:09:30giving the query as well as the trade

21:09:32and the k parameter. So by default k

21:09:34parameter is four that means four

21:09:35relevant information it will extract

21:09:37from the vector database we are doing

21:09:39the similarity source operation that

21:09:40means retrieve operation after that

21:09:42whatever result we are getting we're

21:09:44just loading inside result and we are

21:09:46returning returning it as a string okay

21:09:48so this is what we are doing inside

21:09:50retive from rag and this function will

21:09:52be using as a tool right now. So here

21:09:54what I'm going to do I'm going to open

21:09:56up my agent sorry tool and here I will

21:09:58try to import that function. So let's

21:10:00import

21:10:03um the function name is retrieve from

21:10:06rack. So let's import it here. So from

21:10:09rag

21:10:12import

21:10:14retrieve

21:10:18what's the name?

21:10:21Retrieve from

21:10:25Okay, we will be importing here and now

21:10:28we'll just try to create a tool.

21:10:33So here maybe I can create the tool. So

21:10:36this is the tool name uh search uploaded

21:10:38documents user will give the query and

21:10:40we'll be using retip from rag this

21:10:42function we'll pass the query trade ID

21:10:45and it will give me the relevant answer.

21:10:48Okay, for that query we are using this

21:10:50this code for that. So I think now you

21:10:52have understood like how we have

21:10:54arranged everything how we have prepared

21:10:56all of the tool. Okay, we have created

21:10:58the database tool, we have created the

21:10:59rack tool, we have created the search

21:11:01tool, we have created a calculator tool.

21:11:03Each and every tools are ready. Okay,

21:11:05now in the agents

21:11:08uh we'll be importing the tools right

21:11:10now.

21:11:12Let's import the tools.

21:11:17So here we'll just write

21:11:21from tools

21:11:27import

21:11:28tools.

21:11:37Um, okay. So, we have to create a tool

21:11:39object. So, here at the last what I'm

21:11:41going to do, I'm going to just prepare

21:11:45the list of the tools.

21:11:48So, yeah. So you can see this is a list

21:11:50inside that first of all I'm passing the

21:11:51calculator then search uploaded

21:11:52documents remember this recall and web

21:11:54search all the tools we have created we

21:11:57are just passing one by one here okay

21:11:59now if you want to add any other tools

21:12:01in future you can add it here so I'm

21:12:02going to give you a task guys you just

21:12:04try to add the real time where the

21:12:06weather search tool and uh stock price

21:12:09tool okay this tool two tool you can add

21:12:11at least here okay now this thing we are

21:12:14importing here tools now we are using

21:12:18this tool for the bind operation. Okay.

21:12:20Now we are doing the bind operation and

21:12:22our uh workflow is getting created.

21:12:26Okay. So that means still here

21:12:27everything is fine. Everything is good.

21:12:30Okay. Now uh one thing I will do before

21:12:32the testing see here we are uh building

21:12:35the agent right. So it's not necessary

21:12:37to build the agents every time whenever

21:12:39you are initializing the chatbot. Okay.

21:12:42because uh if you're building from uh

21:12:45scratch so I mean it will take some time

21:12:48right so instead of that maybe we can

21:12:50create a cache agent cache that means we

21:12:53can build one time and save in the cache

21:12:56and every time whenever it will um

21:12:59reinitialize the chatbot instead of

21:13:01building from again we can uh take the

21:13:03agent from the cache okay so for this

21:13:06this code is required

21:13:09so simply you can write this code so

21:13:11here I created create a dictionary

21:13:12called agent cache uh and we had created

21:13:16a function called get agent. So you will

21:13:18only pass the model okay a model name.

21:13:22So what will happen? And this will go to

21:13:24the normalize model name function and

21:13:26you will get the correct model name and

21:13:29you are checking if selected model in

21:13:32agent cache okay not in agent cache then

21:13:36you will try to build the agents okay

21:13:38otherwise what you are doing you are

21:13:40taking the existing agent only so you

21:13:42are not building again the agent again

21:13:44and again okay so this thing you can

21:13:46write now we can test whether this uh

21:13:49workflow is working or not so I can open

21:13:51up my rag dot sorry app.py and here I

21:13:54can test it. So I'll just try to import

21:13:57import um from agent

21:14:08agent

21:14:10input get agent.

21:14:16Now

21:14:18agent is equal to get agent. Here you

21:14:20have to pass the model name.

21:14:23So let's say I'll give the same name.

21:14:27This model name I'll keep.

21:14:39So it will only take the model name I

21:14:41think. Yeah model name. Okay. Now we can

21:14:44do the invoke operation.

21:14:48Yeah. So we have written this code for

21:14:50testing. Okay. So here we are using the

21:14:53streaming right. So that's why instead

21:14:54of invoking I'm just doing agent stream

21:14:57and we are giving the human message here

21:15:00and stream will return a uh generator

21:15:03object and for this we are using this

21:15:04for loop and we're uh getting the answer

21:15:06token by token and we're streaming that

21:15:10and uh here is the code. So let's test

21:15:14it whether it's working or not. I will

21:15:15open up my terminal and uh I'll just

21:15:18execute python.py.

21:15:24Now see all the folders are getting

21:15:26created.

21:15:28Now here we are getting the response as

21:15:29you can see streaming response. So this

21:15:31is the blog about a machine learning we

21:15:33got. See okay that means everything is

21:15:36working fine. And here we are given um

21:15:40like um testing trade just to test the

21:15:44workflow because this workflow needs a

21:15:45trade ID right we we have given a

21:15:47testing trade here in this

21:15:49configuration. Now you can see um all of

21:15:53the folders got created and you can see

21:15:55this is your state uh state actually

21:15:59um state database it is serving inside

21:16:01SQLite and uh this is the chromb um that

21:16:05means the vector database will be

21:16:08creating here and the upload folder as

21:16:11well as of now we haven't uploaded

21:16:12anything that's why it's coming like

21:16:13that now we can ask anything uh that may

21:16:16use any tool let's say I will ask

21:16:21Tell me

21:16:24today's

21:16:30news

21:16:34of AI. So definitely he will use uh the

21:16:37tool that mean search tool. Let's see.

21:16:51Now see it has uh done the internet

21:16:52search operation with the help of tably

21:16:56and uh it found the result. Okay,

21:16:59regarding the today's uh news of AI and

21:17:02you can see it has referred different

21:17:03different website here. Okay, different

21:17:05different website URL are present. Okay.

21:17:07So from this URL it has extracted the

21:17:09news and this is what we got in the

21:17:12answer and one best part is that you can

21:17:16also uh see this uh database that that

21:17:19means whatever methods are available

21:17:20inside that. So for this you have to

21:17:23install one extension called SQLite

21:17:27okay viewer.

21:17:30So this extension you have to install.

21:17:32So this is the like author you can

21:17:35install this extension. I already

21:17:36installed that. Now after installing

21:17:38this, you'll be able to see your data uh

21:17:41data uh sorry database. Now let's double

21:17:44click and you will see that all of the

21:17:47information it has saved here. All of

21:17:48the like checkpoint you can see. Okay.

21:17:51All of the checkpoint it has saved here

21:17:54with a trade ID as well. And trade ID is

21:17:56nothing but test ID as of now we have

21:17:58given.

21:18:00So now let's uh test the long-term

21:18:02memory as well. That means uh it is able

21:18:05to save my um save uh my long-term

21:18:09memory in my uh conversation database or

21:18:11not. I think you remember we used SQL

21:18:14SQL alchemy database for that right. Um

21:18:17so if you are um if you are let's say

21:18:20doing any kinds of conversation with

21:18:22your uh chatbot if you want to remember

21:18:24something okay that means the long-term

21:18:27conversation uh it will also remember

21:18:28with the help of this database. So for

21:18:30this we'll test that uh that's why I

21:18:32have given a prompt my name is BP

21:18:35remember that and uh I think you know

21:18:37that in database

21:18:39uh database.py we created a function

21:18:41called save memory okay save memory and

21:18:44this thing I created as a tool now

21:18:47inside tools.py Pi you'll see that this

21:18:50uh remember this uh tools will be using

21:18:52this save memory save memory function

21:18:54okay that means if user is giving any

21:18:56kinds of conversation it will save

21:18:58inside the memory the SQL alchemy memory

21:19:00right and you it will automatically use

21:19:03that tool if user wants to remember

21:19:05something it will use this tool and it

21:19:07will store that conversation uh in the

21:19:10database itself okay we'll try to test

21:19:11this part so for this we are giving this

21:19:13prompt my name is Bumpy remember that

21:19:16and uh if you want to execute first of

21:19:17All you have to initialize the database.

21:19:19Okay, because if you check the database

21:19:20inside that we created a function called

21:19:23uh init DB. Okay, we have to initialize

21:19:25the database. First of all, database

21:19:26would be created. All the table would be

21:19:27created. Then we'll be able to store

21:19:29that. So let's import it. So in the

21:19:31app.py from database

21:19:35import

21:19:37db then we'll try to initialize the

21:19:39database. Okay, now I think it will

21:19:41work. Let's test it. I'll open up my

21:19:44terminal.

21:19:46Clear. I'll execute my app.py.

21:19:51Now you can see that uh memory saved

21:19:53successfully. Got it. By I remembered

21:19:55your name. Now if I uh go back now

21:19:58you'll see that this database uh

21:20:00database is created. Chatbot memory.

21:20:02This is my SQL alchemy database. Now if

21:20:04I open this okay now you'll be able to

21:20:06see the uh table. Okay. All the three

21:20:08table has created chat message

21:20:09conversations and long-term memory. And

21:20:11it will save in the long-term memory I

21:20:13think remember in the database. So I

21:20:15think remember whenever it will save

21:20:17something right save memory it will use

21:20:20my long-term memory okay long-term table

21:20:24long-term memory table so in the

21:20:25long-term memory table you'll see that

21:20:27it has saved my information my name is

21:20:29puppy okay so that's how uh it will it

21:20:32is working okay so right now if you are

21:20:34asking let's say

21:20:37what is my name now it will use that uh

21:20:42sorry not here I have to ask it here

21:20:49what is my name. Now it will use that um

21:20:56tool that means this tool again

21:21:00recall memory tool and it will search in

21:21:02the memory that means in the database

21:21:04and uh it will get this information and

21:21:06it will reply that. Let me show you.

21:21:18Okay. You can see your name is Baki. So

21:21:22it is using

21:21:24your conversation story. Okay. That

21:21:27means your long-term long-term memory.

21:21:29Yeah. So everything is working fine

21:21:31guys. Uh uh we have already tested and

21:21:33our workflow is working great. Now what

21:21:35we have to do guys? we have to uh we

21:21:38have to uh create the front end that

21:21:41means the user interface we'll be taking

21:21:44all of the message from the user and

21:21:46we'll try to connect with the back end

21:21:47that means we'll create a fast API

21:21:48server and there we'll try to make the

21:21:50communication okay so to for the front

21:21:54end guys uh here we will be using this

21:21:56HTML uh file index html file inside that

21:21:59we'll be writing all of the HTML CSS

21:22:01JavaScript code whatever you need for

21:22:03this user interface okay the user

21:22:04interface we created And again if you

21:22:07are not familiar with these kinds of

21:22:08HTML, CSS, okay, JavaScript, no need to

21:22:12worry. Even I also took the help from

21:22:14ChatgPT. I already uh generated this

21:22:17template from Chad GPT and ChatgPT

21:22:20written that HTML, CSS, JavaScript code

21:22:22for me. Whatever required for this user

21:22:25interface. Okay. But uh in your team

21:22:28there would be some kinds of person they

21:22:29will be working on this front- end

21:22:30design part. You don't need to worry

21:22:32about that. So let me show you. This is

21:22:35the code I have generated from chartg

21:22:37guys. Again you don't need to remember

21:22:39this code. You can take from uh you can

21:22:42generate this code from chartg or gemini

21:22:44whatever you want. So here is the HTML

21:22:47CSS everything I have written in the

21:22:49single file itself. This is the design

21:22:51of that front end. Each and everything

21:22:53you can see color.

21:22:56So this is a big file.

21:23:00See okay all of the front end uh code I

21:23:05have written here and the see this is

21:23:07the JavaScript code okay so in the

21:23:09JavaScript some um um that means uh

21:23:13backend API is getting triggered as well

21:23:15I'll show you these are the part see

21:23:18this is the entire code we have

21:23:20generated from chat GPT

21:23:23okay chat GPT and one more thing I have

21:23:26done uh I think you saw the voice mode

21:23:28right here is the voice mode see this

21:23:30This void mode you can add two way you

21:23:33can use the Python voice API inside

21:23:36Python I think you know there is a

21:23:38library called speech uh speech

21:23:40recognization library you can use that

21:23:42for this voice voice mode either in

21:23:46already this um uh JavaScript okay

21:23:49JavaScript there is a library uh there

21:23:51is a library called let me show you

21:23:56this voice features

21:24:14Yeah. So here is the code part. So in

21:24:16JavaScript uh there is a already inbuilt

21:24:18library called speech recognization. So

21:24:20we're using this speech recognization

21:24:22library here. Okay. You can see we're

21:24:24using this speech recognization library

21:24:26and automatically it will use your uh

21:24:29Windows microphone. Okay. And uh it will

21:24:32uh start uh listening you. Okay. And

21:24:34whatever uh speech you will give and it

21:24:37will try to listen it will try to

21:24:40understand and it will try to convert

21:24:41that speech to text. Okay. So this is

21:24:43already available inside JavaScript. Uh

21:24:45if you have already studied about

21:24:46JavaScript I think you know that this

21:24:48library is available. So you don't need

21:24:50to separately write inside Python. Okay.

21:24:52You can directly use the JavaScript

21:24:54functionality here. So we have already

21:24:55used the JavaScript functionality and we

21:24:57are doing the speech recognization that

21:24:58means this part. Okay. Now if you click

21:25:00here it will start listening. Okay. And

21:25:03uh you can uh like um tell something and

21:25:05it will automatically recognize that. So

21:25:07we're using this part here. Okay. So

21:25:09yes, this is the entire HTML, CSS and

21:25:11JavaScript code we have written inside

21:25:13HTML and uh index.html. And this code

21:25:15you can generate um from chatgi

21:25:19anywhere. Even you can also copy this

21:25:20code and you can give uh give it to the

21:25:22chart GP and you can ask explain this

21:25:24code in a simple manner. You'll see that

21:25:26it will explain like what are the

21:25:27functionality it it has already. Okay.

21:25:30But don't worry this uh front end part

21:25:33um you can implement

21:25:35um uh with any kinds of front- end

21:25:37developer. You can see it with them. You

21:25:39can um just tell your expectation what

21:25:41kinds of front end you need. They will

21:25:43try to develop for that. But uh uh if

21:25:45you're creating production grade uh like

21:25:48uh application better to use any front-

21:25:50end framework for that like nextjs is

21:25:52there okay in market next JS is there

21:25:58next JS is there react is there okay

21:25:59these are the framework you can use for

21:26:01this kinds of front-end development okay

21:26:05but here uh we are creating this front

21:26:08end with the help of HTML CSS and

21:26:09JavaScript

21:26:12now let me show you how this our design

21:26:15uh will look like. For this uh we'll

21:26:17just write our first API code that means

21:26:19our first API server. So for this we can

21:26:22write inside our app.py. Let's open it

21:26:24up. And this part we can maybe keep

21:26:27inside our test.py. Okay. Let's create

21:26:29another file called test.py.

21:26:35I'm not going to delete it. I'm just

21:26:37keeping it just for your reference.

21:26:38Okay. Now in the app.py, I'll just

21:26:40remove everything.

21:26:43Now let's uh import all the necessary

21:26:44library.

21:26:48Yeah. So again I will import this

21:26:53ENB where certify and this is for the uh

21:26:56path issue. Okay. We have to add then

21:26:59we'll be importing the fast API

21:27:02related functionality. So you can see

21:27:04we're importing JSON UI ID. I need for

21:27:08this trading. Okay. every time we need

21:27:10to create a unique trade and for this UI

21:27:11it is required then you click on fast

21:27:14API okay fast API from fast API

21:27:16importing these are the libraries okay

21:27:18and here we'll be showing the streaming

21:27:20response and inside fast API already

21:27:22streaming response function is there you

21:27:24can use that then JSON response then

21:27:26ginger template so these are the things

21:27:28we need and definitely you should have

21:27:30little bit knowledge on fast API okay

21:27:32how fast API works here then um from

21:27:38lang chain we'll be importing these are

21:27:40the functionality so we are importing

21:27:42human message AI message AI message

21:27:44chunk tool message okay so basically

21:27:46we'll be uh doing the verification like

21:27:48what kinds of response we are getting

21:27:50from the workflow whether it is human

21:27:53message AI message okay or AI message

21:27:56some tool message based on that we'll

21:27:57try to filter out the content

21:28:01and uh apart from that I also need to

21:28:04import my agent

21:28:06okay agent

21:28:08From agent we're importing our get agent

21:28:10function. This will return me the agent.

21:28:12Let me close these are the things.

21:28:18Then after that we'll be importing some

21:28:20other functionality from the database.

21:28:27So from database we're importing init

21:28:29database. Init uh DB save chat message.

21:28:33Okay that means this function save chat

21:28:35message. Then we are importing get chat

21:28:38history. Okay, get chat history. Then

21:28:41create or update conversation. This

21:28:44function and list conversation. Okay,

21:28:46these are the functionality I need.

21:28:49Then from rag and tools I'll import.

21:28:55So from rag I'll import this add

21:28:57documents to rag. That means if user is

21:29:00asking any uh uploading any document

21:29:02we'll try to call this function. First

21:29:03of all, it will add the document to the

21:29:06rack. Okay, that means my vector is

21:29:09stored. Then from tools, we are

21:29:11importing send current trade ID because

21:29:13every time I need to create a unique

21:29:15trade ID if user is creating the trades.

21:29:17Okay, so these are the functionality I

21:29:19need to import. Now let's initialize the

21:29:21first API.

21:29:26So we'll initialize the first API.

21:29:28That's how we can initialize the first

21:29:30API. and we can redirect a folder that

21:29:32means the templates inside templates

21:29:34folder I have my HTML CSS and JavaScript

21:29:36code that's why we are giving this

21:29:37directory then we are again creating

21:29:39these two folder if it is not available

21:29:41uploads and data and we'll be

21:29:44initializing the database

21:29:46my SQL alchemy database okay database

21:29:48should be initialized first of all then

21:29:52let's create the default route so this

21:29:54is our default route okay and here we're

21:29:57using uh asynchronous asynchronous

21:29:59programming is uh because uh instead of

21:30:02running my

21:30:04endpoint uh as a sequence I can run in

21:30:06parallel and this concept I have already

21:30:08told you uh I have already discussed in

21:30:10my playlist you can see a synchronous

21:30:12programming is available you can go

21:30:14through that okay why asynchronous

21:30:15programming is required for AI agents

21:30:17okay uh especially it is already

21:30:19integrated in fast API if you're using

21:30:21fast API you can integrate this

21:30:22asynchronous programming so please go

21:30:24through this session you will understand

21:30:25why asynchronous programming is required

21:30:26I'm not going to explain this part okay

21:30:28again so Yeah, that's why I'm using as

21:30:30keyword and this is my home route. That

21:30:33means my default route. If user is

21:30:34visiting our uh let's say uh server, you

21:30:37will be able to see that index.html

21:30:39page. Okay, we are rendering that here.

21:30:41Now, let me show you. Let's um

21:30:45render it.

21:30:52Yeah, we'll try to render. So here we'll

21:30:55uh we'll mention two more things in my

21:30:56environment variable which is the

21:31:02app host and app port or you can also

21:31:04directly write here

21:31:08host should be

21:31:130

21:31:160.0.0 0 this is my local host at port

21:31:20number I'll give

21:31:238 0 8 0 okay now this two part I don't

21:31:27need

21:31:30here it should be app because my file

21:31:32name is app and inside that I'm creating

21:31:34a app app uh object okay now this is my

21:31:38host this is my port and it will reload

21:31:39every time whenever you will change

21:31:41something and with the help of uon we're

21:31:43running the first API server yeah so

21:31:46everything is fine now let me execute

21:31:47and show you. Uh so first of all I'll

21:31:51close my previous application. Okay,

21:31:53previous application is also running.

21:31:58Now let's clear. [clears throat]

21:32:00Now python app.py.

21:32:10Now I'll give the permission.

21:32:12It is running on post uh local host port

21:32:15number 80080. Let's open it up.

21:32:19Local host port number 80080.

21:32:26So this is the interface guys. Okay. We

21:32:28have created uh with the help of chat

21:32:30GPT. Okay. So it has all the button this

21:32:34uh chat input box, document uploader

21:32:36option, this voyage option, then you can

21:32:39select the models from the front end,

21:32:41send the prompt. Okay. So each and

21:32:42everything we have created here. Now we

21:32:44have to make it as functional.

21:32:46So first of all uh here what I'm going

21:32:48to do I'm going to write more route

21:32:51here. So

21:32:54first of all here what I'm going to do

21:32:55I'm going to write a route that route

21:32:57will fetch all of my previous trades I

21:33:00have done the chat operation. Okay that

21:33:02means uh if you saw like uh previously

21:33:05it is you can see all of the trades

21:33:07previously whatever trades I did the

21:33:08conversation right you can switch

21:33:09between any of the trades you can see

21:33:11that. So this thing I have to fetch for

21:33:13this. What I can do? I can write a route

21:33:15here. So this is the route

21:33:22after this home route. I'll add this.

21:33:24Okay. / conversation. Okay. And this /

21:33:27conversation we are calling inside my

21:33:30JavaScript. Let me show you here. This

21:33:34is the function we have written. So this

21:33:36will basically call this route. Okay.

21:33:38and it will load all of the conversation

21:33:40conversation trades and it will show in

21:33:42the front end. Okay, now let me show you

21:33:45if I refresh.

21:33:48No chats is available.

21:33:54Okay, now let me do the chat and let me

21:33:57show you because right now we haven't

21:33:59done any chat operation, right? That's

21:34:00why it's not showing.

21:34:04Okay, this is the first time we are

21:34:06doing right. So first time you won't be

21:34:08able to see the conversation but let

21:34:10let's complete it then I will show you.

21:34:11Okay. Yeah. Then uh the second thing we

21:34:15have to add which is this uh this one

21:34:19actually this features. So let's say now

21:34:21if I switch to any any let's say um uh

21:34:25trades. So let me run this previous app

21:34:27then I think I can explain better.

21:34:33Yeah now this is running. Now see if I

21:34:35click on any of the trades right so

21:34:38you'll see that the previous

21:34:39conversation story today I'm able to see

21:34:40that okay that means each of the trades

21:34:42is having a conversation okay so this

21:34:45conversation uh I have to also load for

21:34:47this I'll be creating another route in

21:34:50my first API server so this is the work

21:34:52of fast API right you can create

21:34:54different different route and you can uh

21:34:56hit that a um route anytime okay from

21:34:58your u javascript code or any other code

21:35:02you can hit

21:35:05So here this is the route I have created

21:35:08called history and it will take the

21:35:10trade ID as well. That means which trade

21:35:12you want to uh see the conversation.

21:35:14Okay. You have to give the trade ID. So

21:35:16trade ID. So basically this will get the

21:35:19story. Okay. How you'll get the history?

21:35:21Because we are using this get history

21:35:24function from the database. Okay. And

21:35:25previously here you can see for

21:35:27conversation we are using list

21:35:29conversation function. Okay. It will

21:35:30list all of the conversation. So this

21:35:32two function we are using here. Okay.

21:35:34And this slash story we are calling

21:35:37inside my

21:35:39uh JavaScript. Let me show you. See here

21:35:42we are calling this / story. Okay. First

21:35:44of all you're getting the um traits then

21:35:46we are getting the story and all of the

21:35:48message you are able to see that. Okay.

21:35:50So this is the function you need here.

21:35:52Done. Now the next functionality I have

21:35:55to write for the upload operation. Let's

21:35:56say if user is uploading any kinds of

21:35:58documents. If they're uploading any

21:36:00kinds of documents, what will happen?

21:36:01Let's try to do that. So for this I have

21:36:04written this function

21:36:07written this route.

21:36:14This is the route. Okay. / upload. So it

21:36:19will uh take the uploaded documents. And

21:36:21after that here we are calling that

21:36:23function. Let me show you. So we are

21:36:25taking the file name. We're taking the

21:36:27file and we are generating the unique ID

21:36:30of the file. Okay. Then here create and

21:36:33upload the conversation. Okay.

21:36:36Uh so here uh basically we are calling

21:36:39this function just to uh just to save

21:36:42the message that the user has uploaded

21:36:43any documents here. It will also save in

21:36:45the story that means the database story.

21:36:48We are using this function and here we

21:36:50are using this add rag uh documents to

21:36:52the rag this function. So this function

21:36:54basically will read that documents,

21:36:56process it and it is stored in the

21:36:57vector database. Okay. Then we are

21:37:00returning the response. So I think you

21:37:01are getting okay what we are doing here.

21:37:03Very simple. Okay. So every time

21:37:05whatever user is doing you have to save

21:37:06in the database. Okay. All the activity

21:37:09you have to save in the database then

21:37:10you are doing the other stuff.

21:37:13Now we'll do the general conversation

21:37:20like um if user is asking anything this

21:37:24will hit my

21:37:26chat route that means I will be able to

21:37:28see my streaming response. So this is

21:37:31for this this is the function I have

21:37:32written.

21:37:34Okay again I'm using asynchronous

21:37:36because I want to run in parallel. So I

21:37:38named it as chat stream. So this is the

21:37:40route / chat/stream

21:37:44and uh this thing also you are calling

21:37:46from this

21:37:49JavaScript.

21:37:53Okay, as you can see so JavaScript is

21:37:56hitting that route and uh we are taking

21:37:59the user message trade. Okay, trade we

21:38:02are taking and every time uh whenever

21:38:05let's say uh user is uh clicking on new.

21:38:09Okay, new that means new button that

21:38:11time what will happen a new trade would

21:38:13be created and here we are setting the

21:38:14trade ID that time. So trade we're

21:38:16taking selected model we're taking. Then

21:38:18we are preparing the user message. We

21:38:21are initializing the agent. As you can

21:38:22see we are calling the get agent

21:38:24function and this will give me the

21:38:25agent. Okay. After that we are updating

21:38:29the conversation in the database. Then

21:38:31we are saving the chat message as well.

21:38:33That means every time it will save the

21:38:34conversation. Okay. Whatever

21:38:36conversation user is doing or it will

21:38:38set in the chat message. That means in

21:38:39the chat message table here in this

21:38:41table. Okay. It will save all the

21:38:43conversation. After that we are setting

21:38:45the current trade id. We are preparing

21:38:47the config that means the trade and we

21:38:50are written we have written another

21:38:52function called event generator. Okay.

21:38:54So here it is using asynchronous.

21:38:56Uh so here basically what we are doing

21:38:58we preparing the human message. Then we

21:39:00are running the stream stream code. You

21:39:02can see we are doing this agent. We are

21:39:05passing all of the input and

21:39:06configuration and we are just showing

21:39:08the answer token by token. And for this

21:39:10we are using some kinds of utility

21:39:12function like should stream chunk. then

21:39:14SSE data. Okay, these are the things you

21:39:16need. Uh because sometimes whenever you

21:39:19are uh calling any kinds of tool, tool

21:39:21will give you the raw response and this

21:39:23raw response you don't want to show in

21:39:25the front end, right? So for this you

21:39:26have to do the some filter operation. So

21:39:28this code I have written here. Let me

21:39:30show you.

21:39:41So this is the code. These are the

21:39:42utility function unit.

21:39:45Yeah. SEC data. Then should stream

21:39:48chunk. So basically it will first of all

21:39:49check whether it a tool to tool

21:39:51response. Okay. Then it is a AI message

21:39:54or not. Okay. These kinds of things

21:39:55verification it will do. Then it will

21:39:57extract the text from the chunk. That

21:40:00means instead of uh getting the raw

21:40:02message it will only take the content

21:40:04and it will return you. Okay. So this is

21:40:06what actually we're using in this

21:40:07function. You can see we're using in

21:40:08this function. should stream extract uh

21:40:12from chunk as a token by token then we

21:40:15are showing it in the console and every

21:40:17time we're doing the yield operation

21:40:19okay so if you're using uh asynchronous

21:40:23I think you know what is yield right uh

21:40:25you can go through that recording okay

21:40:28then we are using u past api streaming

21:40:30response function and we're giving this

21:40:32event generator uh function inside that

21:40:35okay so basically this will show my uh

21:40:38response as a streaming one by one

21:40:40token. Yeah. So, yes, uh this is the uh

21:40:43code you just need to write in the first

21:40:45API server, fast API uh endpoint now. I

21:40:48think everything is ready.

21:40:51Let me see.

21:40:58So, everything is ready. Now, we can

21:40:59test our app. I'll come here. Refresh.

21:41:03Okay. Now, let's do chat operation. Hi,

21:41:07I am Buppy.

21:41:10Let's send it. Okay. If you send it, so

21:41:12what will happen? It will hit that

21:41:16this route. Okay. Chat stream route.

21:41:22So you can see uh hi BP, it's nice to

21:41:24meet you. How I can help you today? And

21:41:26it has also taken the trade. Right now I

21:41:28can create another trade. Again I'll do

21:41:31some message. Let's say

21:41:33my name is

21:41:36Alex.

21:41:41Okay. Okay. Alex, I have saved your

21:41:43memory. Nice to meet you. Okay. This is

21:41:46uh another trade. This is another

21:41:47trades. Okay. And if I click here, you

21:41:49can see the conversation here. Okay. You

21:41:51can see the conversation here. Why it is

21:41:54happening? Because of these two function

21:41:55two um

21:41:58two method. One is uh this last

21:42:00conversation. it is uh it is actually um

21:42:04filtering out all of the trades you have

21:42:06in the database. Now if I show you my

21:42:08database right the chat memory database

21:42:10now see every time whatever conversation

21:42:12you are doing chat message you are doing

21:42:16yeah so I have refreshed now see this

21:42:18conversation is available so whatever

21:42:20conversation you are doing right hi my

21:42:21name is Buffy okay blah blah blah all

21:42:24the conversation you will see with the

21:42:25trade ID here okay trade ID here and uh

21:42:29here is the conversation

21:42:32and here is the long-term memory okay so

21:42:34that's how we are saving inside our

21:42:36database every

21:42:38Now let's uh test uh any other message

21:42:41that say tell tell me

21:42:46the latest

21:42:51news

21:42:53in AI. So basic uh it will uh use the

21:42:56search tool that time. Let's see see it

21:42:58is using web search tool.

21:43:06and see you are getting the response.

21:43:09Now let's ask another question.

21:43:11Calculate

21:43:13this.

21:43:26You'll see that it will use calculator

21:43:28to

21:43:37this is the response. Now you can also

21:43:39upload any documents. So if you are

21:43:40uploading right now so it will hit this

21:43:42route upload route / upload this one.

21:43:45Okay. And it will create the vector

21:43:47store. You can see that vector store

21:43:49would be created and you can perform the

21:43:51chat operation on top of that. Let's

21:43:52upload. Let's have a upload

21:43:55my resume.

21:44:00Done. Now you can see the uploaded

21:44:02documents as well. It is available in

21:44:03the upload folder. See the document you

21:44:05have uploaded. It is available. Now we

21:44:07can perform the chart operation. Who is

21:44:11Bier

21:44:13Ahmed Baki

21:44:17on PDF.

21:44:22Now it will use document search that

21:44:23means the rack tool. Okay. Now you can

21:44:25see that the my vector store is created.

21:44:27So this is my vector store. Okay. So

21:44:30this is the beauty of this um chatbot.

21:44:36Now see it is uh telling about me right?

21:44:39Okay. Everything is working fine. Now

21:44:41let's test the boys mode whether it's

21:44:42working or not. Um

21:44:47I'll give the permission.

21:44:50How many years of experience Bktier

21:44:52Ahmed Bi is having?

21:44:57Okay, it is not able to recognize my

21:44:59name.

21:45:01Okay, let me do it again.

21:45:06How many years of experience he is

21:45:08having

21:45:10now? Good. Now, let's send it.

21:45:20Now see based on the uploaded documents

21:45:21bkhmed bi has five plus years of

21:45:23experience. Amazing. It's working fine.

21:45:25Okay. Even you can do the wise mode as

21:45:28well. Dictate mode as well. Okay. Now

21:45:30you can select different different

21:45:31model. Let's I'll select this model. Now

21:45:33you can ask anything

21:45:35uh tell me about

21:45:38ML.

21:45:43Now see it is telling you about ML. Now

21:45:45you can generate code, you can uh do

21:45:49realtime source operation, you can

21:45:50upload your documents, you can use the

21:45:52voice mode, you can create different

21:45:54different trades. Okay. Anything you can

21:45:56do like chat GPT. Okay. So our

21:45:58application is prepared. Now we have

21:46:00given some suggestion. You can also use

21:46:02this suggestion to prepare a like

21:46:04instance prompt. Okay. Instant prompt.

21:46:06This is also possible. So yes guys uh

21:46:09that's how we have created the entire

21:46:11system and uh this is uh like a chat GPT

21:46:14application we have created our own chat

21:46:16GP we have created now we can deploy

21:46:19this application over the cloud and we

21:46:22can make it live so that other people

21:46:23can use it and uh my request would be to

21:46:26everyone just try to upgrade this uh

21:46:28application as much as you can just try

21:46:30to add integrate more features okay just

21:46:32try to integrate more features more tool

21:46:34see here I have used few tools right I

21:46:37have used very few tools here.

21:46:40Where's the tools?

21:46:42Here is the tools. Okay, I have used

21:46:43very tool few tools here. You can use as

21:46:46much as tool you can. Okay, just try to

21:46:48use as much as tool you can and make it

21:46:50like more powerful. Okay, now you can

21:46:55um also test the memory. My f colors is

21:47:02red.

21:47:13is red. Okay. Now you'll see that

21:47:16it will save this information in the

21:47:18memory.

21:47:20Okay. Now you can ask what is

21:47:25my favorite color.

21:47:33Now it will use the long-term memory to

21:47:36give you the response. Now see your

21:47:37favorite colors is red. Okay. Now you

21:47:39can also see in the long-term memory you

21:47:42can open this memory. You can go to the

21:47:44long-term memory. Refresh. So you'll see

21:47:47that my favorite color is red. Okay.

21:47:50Everything is available. Now in the lang

21:47:53also you'll see that it's tracing your

21:47:56execution. Now see GPT. Now all of the

21:48:00trades you can see even the trades as

21:48:02well in which trades how many

21:48:04conversation you have done each and

21:48:06everything you can see here okay all of

21:48:08this thing you can monitor here

21:48:10everything you can debug here okay see

21:48:12everything is available

21:48:14and this monitoring part also I told you

21:48:16in my playlist

21:48:18like how to monitor your AI agents and I

21:48:22already explained about this lang okay

21:48:24you can go through that so yes guys uh

21:48:26everything is working fine uh we are

21:48:29Uh now we'll try to deploy this project

21:48:31over the AWS cloud as a CI/CD. We'll

21:48:34just try to make it live because right

21:48:36now it's running on local host. Now

21:48:37we'll make it live. We'll try to do the

21:48:39CI/CD deployment here.

21:48:43So guys uh our app is ready. Now we'll

21:48:46be deploying this uh application uh as a

21:48:49CI/CD over the AWS cloud. But before

21:48:52that let me push all the changes uh

21:48:54because we have um updated all of the

21:48:58component one by one. So simply here I'm

21:49:01going to give

21:49:03um updated all component

21:49:14then I will push the changes

21:49:19and apart from that I also added the

21:49:21deployment step here as you can see uh

21:49:23this is the deployment step we'll be

21:49:25following

21:49:26uh let me show

21:49:31So now if I refresh in my GitHub

21:49:37so see all the codes are updated. Okay.

21:49:39And this is the deployment step guys

21:49:41will be following. So here first of all

21:49:43I will be logging with my AWS console.

21:49:45Then there I will be creating IM user

21:49:47that means identity access management.

21:49:49After that u uh there we'll just try to

21:49:53um give some of the permission. Okay.

21:49:56like what are the services we'll be

21:49:57using? So here we'll be using EC2

21:49:59instance and ECR elastic container

21:50:01registry. So in the elastic container

21:50:03registry we'll try to store our docker

21:50:05image. Okay, because we'll be using

21:50:07docker service here to containerize

21:50:09entire our application and uh we'll try

21:50:11to store in the ECR service. CCR is a um

21:50:15um I mean docker uh image storage

21:50:16service. So there you can store any

21:50:18kinds of docker image.

21:50:20Uh so this is the uh description for the

21:50:22deployment. First of all, we'll be

21:50:23building the docker image of our source

21:50:25code. Then we'll try to push this docker

21:50:27image to the ECR elastic container

21:50:29registry of AWS service. Then we'll

21:50:31launch our EC2 machine. Uh it should is

21:50:34a virtual machine. Then we'll try to

21:50:36pull uh our image from ECR to EC2. Then

21:50:40we'll try to run this u docker image as

21:50:42a container. Then we'll do some port

21:50:44mapping. After that uh we'll be able to

21:50:47access the application. And these are

21:50:49the policy we have to provide whenever

21:50:50we'll be creating the im user. Okay. So

21:50:52this is the entire step guys. I have

21:50:54written all of the command everything

21:50:55whatever you required I just mentioned

21:50:57it here. So you just try to follow this

21:50:58readmi file and we'll try to perform the

21:51:00deployment but uh beforeh doing the

21:51:03deployment guys you need some of the

21:51:04file here. Um let me show you what are

21:51:07the files you need. Yeah. So the first

21:51:09uh things you need which is the

21:51:11cic.imml.

21:51:13Uh but before that let's create a

21:51:15dockard file first of all. So docker

21:51:20file.

21:51:21Okay. So we'll be writing this docker

21:51:24file docker file and again uh if you are

21:51:27not familiar with docker uh then if you

21:51:29are not familiar with uh this kinds of

21:51:32mlops concept

21:51:34so on my YouTube channel I already have

21:51:36a complete uh mlops course guys here I

21:51:39have already covered all kinds of mlops

21:51:42tools like docker okay I have also

21:51:44covered linux mlflow dbch and everything

21:51:47but you don't need to cover all of them

21:51:49uh if you are completely new with the

21:51:50docker and all you can go through this

21:51:52recording. I think dockard starts here.

21:51:55Even you will see this u um timing.

21:51:58Okay. Uh this time stamp. So from here

21:52:01you can uh uh see right where is the

21:52:03docker. Simply you can uh click on the

21:52:05time stamp. You'll be able to see the

21:52:07docker. So just try to learn if you

21:52:09don't know about docker and if you want

21:52:11to understand the docker command just

21:52:13try to go through that recording. So

21:52:15here let's try to add all the docker

21:52:17related command. So this is our docker

21:52:21file. Okay. And these are the command

21:52:22you have to mention in the docker file.

21:52:24So first of all we're taking the base

21:52:25image and python 3.11 we are using. Then

21:52:28we're creating the working directory.

21:52:31Then we are setting some environment

21:52:33variable just to prevent some error.

21:52:35Then we are running these are the

21:52:37command and just to upgrade our uh um

21:52:40like Ubuntu instance and u install some

21:52:42tools. Then we're copying the

21:52:44requirement.txt. We are installing the

21:52:46requirement. TXT. After that we are

21:52:48copying all of the source code in the

21:52:49root directory. We are creating the

21:52:51folders like uploads and data. These two

21:52:52folders we're creating. Then after that

21:52:54we're exposing the port. We are running

21:52:56our application on port number 80080. So

21:52:59I think you have seen that this is the

21:53:01port. Okay. We are running our

21:53:02application. Make sure you are giving

21:53:04the same port. If you're changing the

21:53:06port here you have to also change. Then

21:53:08this is the command to run the our

21:53:09app.py server. So you can um app uh so

21:53:13we are um running the app.py. Inside

21:53:15app.py we are having this app object.

21:53:17Okay. We created this app object. So we

21:53:19are running it here. Then we're uh

21:53:21giving the host and as well as the put.

21:53:23So this is the docker we have to write.

21:53:25And if you're writing docker you need

21:53:27another file here called dot

21:53:31docker

21:53:33ignore.

21:53:35Inside that you will just write all of

21:53:37these folders and file you don't need

21:53:39whenever you are building the docker

21:53:40image. Okay. So these are the things I

21:53:42will avoid and that means any kinds of

21:53:44virtual uh environment or these are the

21:53:46file I'll just try to avoid whenever it

21:53:48will build a docker image it's kind of

21:53:50your g ignore. So whenever you are

21:53:51pushing anything in the g github right

21:53:53you are ignoring something in the get

21:53:55ignore these are the files. So same

21:53:56thing you have to write in the docker

21:53:58ignore if you want to ignore anything

21:54:00whenever you are creating the docker

21:54:01image. Okay. Yeah. Then uh docker uh

21:54:05file is done. Now we'll just try to

21:54:07create a folder. I'm going to name it as

21:54:09GitHub.

21:54:11Inside that you have to create another

21:54:13folder.

21:54:15The folder name should be workflows.

21:54:16Okay. Just make sure you are giving the

21:54:18same name otherwise it will not work

21:54:19because uh as a CI/CD tool guys here

21:54:22we'll be using GitHub actions. Okay. Uh

21:54:24I told you we'll be using CI/CD

21:54:26approach. So if you are pushing your

21:54:28code to the GitHub automatically it will

21:54:30get deployed over the cloud. Okay. We'll

21:54:31be creating that pipeline and as a CI/CD

21:54:34tool we'll be using GitHub action and

21:54:35GitHub action it is already available on

21:54:37GitHub. Okay, it is already um um I mean

21:54:40uh pre predefined setup. You don't need

21:54:42to set up the GitHub um um sorry uh this

21:54:45uh GitHub action server separately. It

21:54:47is already running on GitHub. So that's

21:54:49why you need this folder and workflows

21:54:51and inside that you will be creating a

21:54:52file called CICD

21:54:56yiml yml. Okay. So this is the file. So

21:54:59inside that you will you have to write

21:55:01all the CI/CD related command and these

21:55:04are the command you will be getting from

21:55:06the internet only. If you just search uh

21:55:09GitHub action CI/CD deployment um

21:55:11command you will see this kinds of uh

21:55:14code would be available over the

21:55:16internet. Even you can also generate

21:55:17from charge GPT. So this is the uh

21:55:19command I have prepared guys. Here I

21:55:20have mentioned all of these step and

21:55:22command you need to perform whenever you

21:55:24are doing the CI/CD. First of all we are

21:55:26giving the name of this workflow. Then

21:55:28whenever you are pushing your code on

21:55:30the main branch that time what will

21:55:32happen this will trigger. Okay. So in

21:55:35continuous integration what we are doing

21:55:37guys we are authenticating with the AWS

21:55:39account uh with the help of this secret

21:55:41key AWS access keys access uh secret

21:55:44access key and region we are

21:55:46authenticating then we are logging into

21:55:47the Amazon ECR we are building the

21:55:49docker image then we are pushing this

21:55:51docker image to the Amazon ECR. Okay.

21:55:53Then in continuous deployment what what

21:55:55we are doing again we are authenticating

21:55:56with the account our AWS account with

21:55:59this credential then we are logging into

21:56:00the ECR we are pulling that docker image

21:56:03and we are running inside our EC2

21:56:04machine. Okay so these are the commands

21:56:06I have written guys and you know that to

21:56:08run this application you need some

21:56:10environment variable. So these are the

21:56:12environment variable you need and all

21:56:13the environment variable I have

21:56:15mentioned here. Okay you can see I need

21:56:16Google API key, Google model, table API,

21:56:19lang. So whatever key you are using make

21:56:21sure you are adding in as environment

21:56:23variable. Okay. And we'll be write

21:56:24reading it from the GitHub um GitHub

21:56:26secrets. We'll try to add all of this

21:56:28credential in the GitHub secrets because

21:56:30directly I haven't mentioned inside my

21:56:32code. So that's why always secret file

21:56:34should be um written in secrets. Okay,

21:56:36GitHub secrets. So yes uh this is the

21:56:39entire cicd.iml and we'll be using this

21:56:42file for the deployment and uh I'll

21:56:44share all of these resources in the

21:56:45description. From there you can check it

21:56:47out. And if you want to learn more about

21:56:49this CI/CD. ML and again just try to

21:56:51check that uh MLOPS course there I

21:56:54already discussed about the CI/CD. Okay.

21:56:55So inside CI/CD I already explained that

21:56:57concept you can go through that. So yeah

21:57:00now uh let's try to follow the pipeline.

21:57:05So if I go to my GitHub. So this is the

21:57:08pipeline. First of all let's login with

21:57:09the AWS console. Make sure you have the

21:57:12AWS account guys. I already have the

21:57:14account. I'll just try to login.

21:57:17I'll just sign in with my management

21:57:19console.

21:57:34So here you just need to uh give your uh

21:57:39authentication

21:57:43authentication credential that means

21:57:44your email and password. So let's give

21:57:47my email and password and let me login

21:57:48with my AWS console guys.

21:57:52So this is my AWS uh console guys. Uh uh

21:57:56just try to login and you will be able

21:57:57to see this kinds of interface. So here

21:57:59the first thing uh what we have to do we

21:58:02have to create a IM user. Okay, let's

21:58:04create the IM user. So here just search

21:58:06for IM identity access management

21:58:14and uh here I'll just click on IM user

21:58:17create a new user I'll give the name

21:58:19let's say BPI GPT

21:58:23you can give any name you can attach the

21:58:26policies now here you need these are the

21:58:28policies Amazon EC2 full access and ECR

21:58:32sorry ECR and EC2 elastic container

21:58:35study and EC2 machine. So this is the

21:58:37service here. I'll just try to search

21:58:38and select

21:58:40uh then I'll just try to add another

21:58:42one. This one and

21:58:46um this one Amazon EC2 full access.

21:58:54Once we have done I'll just click on

21:58:56next. Now see both uh permission I have

21:58:58given. And why this permission is

21:59:00required? because I want uh I don't want

21:59:02to give the full access to my um to my

21:59:06uh let's say project whenever it will do

21:59:07the deployment uh otherwise um if any

21:59:11mistakes is there it will be using any

21:59:13other services as well okay there is a

21:59:14possibility so to prevent that we're

21:59:16only giving the permission the services

21:59:19we're using from AWS okay now I'll just

21:59:21create the user so user creation is done

21:59:24now I'll click on the user

21:59:26I'll go to the security credential

21:59:29and here you'll see one option call

21:59:31create access key. I'll select the first

21:59:33option command line interface and

21:59:35confirm do the confirmation. Click on

21:59:37next. Now let's create the access key.

21:59:39So this is our access key and secret

21:59:41access key you need to authenticate your

21:59:42AWS uh account from your Python client.

21:59:45Okay. Now I'll just try to download as a

21:59:47CSV file. Done. And make sure you just

21:59:50keep this file. Uh I need it later on

21:59:52whenever uh we just uh create the GitHub

21:59:56secret. Okay. I'll just try to open in a

21:59:58Notepad++. So this is the credential.

22:00:00This is your access key ID. This is your

22:00:02secret access key ID. Okay. Yeah.

22:00:04Perfect. Now let's click on done. Now

22:00:07the next step we have to follow. Uh we

22:00:10have to create the ECR repo to store the

22:00:11docker image. Now let's create the ECR

22:00:13repo. I'll go to the home and I'll

22:00:15search for ECR elastic container

22:00:18registry. Okay. So this is a fully

22:00:20managed docker container registry and

22:00:23this is the alter alternative of docker

22:00:24hub. Okay. The docker hub you used

22:00:26right. In docker hub also you can store

22:00:28the docker image here. Uh this service

22:00:30actually has created. Okay, this is this

22:00:32is the AWS container story. Now I'll

22:00:35just create a new reg. Give the name.

22:00:38I'll give

22:00:41GPT. You can give any name everything

22:00:44just keep it as it is. Now create this

22:00:46repository. Okay, this is the repository

22:00:48and copy this URI and keep it somewhere.

22:00:50Okay, I need it later on. So maybe in

22:00:52readmi file I'll just try to store here.

22:00:54Okay.

22:00:57Perfect.

22:01:00Now uh it is also done. Now I'll again

22:01:01click on home and see the next step.

22:01:04Next step is you have to create a EC2

22:01:06machine Ubuntu instance. Now let's

22:01:08search for EC2 EC2 instance virtual

22:01:12service in cloud.

22:01:16And here I'll just try to launch an

22:01:18instance.

22:01:19Uh click on launch without walk through.

22:01:23Now give the name. I'll give bi GPT

22:01:28machine

22:01:30again you can give uh any kinds of name

22:01:32here then you have to select this Ubuntu

22:01:34instance okay most of the production

22:01:36server would be Ubuntu and there are

22:01:38some other operating system as well but

22:01:39select the Ubuntu one now here you can

22:01:41uh you can select the instance type okay

22:01:46like uh how much memory how much CPU you

22:01:49need you can select from here so at

22:01:51least here I'll just try to select this

22:01:53four um sorry not this one huh uh 8 GB

22:01:59memory okay this 8 GB memory at least

22:02:01I'll be taking for this project and two

22:02:04CPU cores but if you have a very let's

22:02:07say uh I mean heavy project that time

22:02:09you can use some heavy instance here

22:02:11okay and all the instance how how much

22:02:13it will charge per hour it has already

22:02:15given you estimated cost so I'll select

22:02:17this one

22:02:18once it is done now you can create the

22:02:20key value pair

22:02:22this is optional uh optional means you

22:02:24have to create it if you want to access

22:02:26your EC2 instance from any third party

22:02:28tools like mobile extreme and putty that

22:02:29time it's required so I'll give

22:02:33GPT

22:02:34now let's create the key value here now

22:02:37see one p file would be downloaded this

22:02:39p credential you need whenever you want

22:02:41to use any third party tool but I don't

22:02:43want to use any third partyy tool I'll

22:02:44be using uh this um instance in the same

22:02:48AWS console only I'll tell you how to do

22:02:50that now just try to select these two

22:02:53options allow HTTPS and allow HTTP

22:02:55traffic and uh you can also select your

22:02:58storage like how much storage you need.

22:03:00So I'll take uh 8 GB storage as of now

22:03:02you can increase it okay as per your

22:03:04requirement. Let's say you can take 32

22:03:07GB or 16 GB as per your requirement.

22:03:10So here I'll just try to launch the

22:03:12instance

22:03:21now. Click on view instance.

22:03:29Now let's refresh. And you can see our

22:03:32instance is running. Okay. Now I'll

22:03:34click on this instance.

22:03:36And here you will see one option called

22:03:37connect button. Okay. Just click on

22:03:39connect. And if you are using any third

22:03:41party tools like mobile extreme and puty

22:03:44that time you can use SSS client to

22:03:45connect that. Okay. These are the

22:03:46command you have to execute.

22:03:48I'll just launch this uh terminal in the

22:03:50same AWS uh console only. Now let's

22:03:54connect that. Now see it will open a new

22:03:57window and there you will see a Ubuntu

22:03:59terminal and there you have to set up

22:04:01everything.

22:04:13So this is the Ubuntu terminal. Now

22:04:15let's clear. Okay. And if you don't know

22:04:18about Ubuntu again you can refer my

22:04:20course. So there I already discussed

22:04:22about the Linux operating system. Okay.

22:04:24How to run the Linux command each and

22:04:26everything. So first of all here uh I

22:04:28have already given all of the command.

22:04:30First of all you have to upgrade the

22:04:32machine. So these are the command you

22:04:33have to execute. Just try to copy and

22:04:35right click and paste and run.

22:04:39So this is a new launched machine and

22:04:41here I have to upgrade and set up all of

22:04:44the requirement tools I need here.

22:04:48Then I'll copy the second command

22:04:52and I'll execute.

22:04:56So I'll give yes permission.

22:04:59Yeah. So it will upgrade all of the

22:05:00tools. Now here I have to install the

22:05:03docker because initially there is no

22:05:05docker in this instance. So this these

22:05:07are the command you have to execute to

22:05:08install the docker.

22:05:24Okay, let's clear.

22:05:27Paste.

22:05:29Now I'll copy the next one.

22:05:43Then I'll copy the next one.

22:05:57Paste and run.

22:05:58Then the last command this one.

22:06:04Okay. So docker is installed

22:06:06successfully. Now you can check it. So

22:06:07docker

22:06:09version. You can see this is the version

22:06:12is running. Okay. Now the next thing

22:06:15guys uh we have to configure our EC2 as

22:06:17a self-hosted runner. That means we have

22:06:18to connect. Okay. We have to connect our

22:06:20GitHub repo with our AWS uh account.

22:06:23Okay. So that if you are uh committing

22:06:25any changes okay if you're pushing your

22:06:27code it will automatically deployed over

22:06:29the as cloud. So for this this is the

22:06:31connection we have to build. So for this

22:06:33make sure you are using your GitHub repo

22:06:35guys the same repo you are updating your

22:06:36project not my repo. So let's create

22:06:38another um tab here because I want to

22:06:42refer this command okay from this one.

22:06:44So now here you have an option called

22:06:46settings. Click on settings and there

22:06:49you will see an option called action and

22:06:50go to the runners. Okay. Now create a

22:06:53new self-hosted runner.

22:06:56Select this Linux

22:06:59and you have to execute these are the

22:07:00command one by one. Copy and execute in

22:07:02the terminal.

22:07:05So that's how we'll be connecting.

22:07:08Now next command and execute.

22:07:16Then again third command and execute.

22:07:24Done. Now we have this command

22:07:34done. Now I think uh we have executed

22:07:38all of this command. Now we have to run

22:07:39this configure command. Let's copy this

22:07:41and execute.

22:07:45Now see GitHub action initialized and it

22:07:47has connected to my GitHub. Now it is

22:07:49asking enter the name of the runner

22:07:51group. I'll press enter simply. Now it

22:07:53is asking enter the name of the runner.

22:07:55Okay. Now name of the runner is

22:07:58self-hosted.

22:08:00Self-hosted. Okay. Make sure you're

22:08:02giving the same name. I'll copy.

22:08:05And here I'll just try to paste it.

22:08:08Self-hosted. Then it is telling uh this

22:08:11runner will have any following labels.

22:08:13No. I'll press enter. Then it is telling

22:08:15name of the work folder. I'll again

22:08:17press enter. Okay. Done. Now the last

22:08:19command you have to execute this one. So

22:08:22if you execute your GitHub would be

22:08:24connected to the AWS. Now see connected

22:08:27to the GitHub and listening for the

22:08:28jobs. Now if I come to my repo now if I

22:08:32go to the runners again. Now you can see

22:08:35that uh this status is idle. That means

22:08:38my uh AWS is connected with my GitHub.

22:08:40Now if I push anything in my GitHub, it

22:08:43will automatically get triggered that

22:08:46CI/CD pipeline and all of the uh code

22:08:48would be deployed over my as cloud. But

22:08:50before that we have to set this

22:08:53credential. Okay, these are the secret

22:08:55credential in my GitHub uh GitHub

22:08:56secrets. So let's do that. So for this

22:08:59again uh here you will see one option

22:09:01called secret and variable. Click here

22:09:03and click on this action. Now here

22:09:06you'll see this repository secret. Just

22:09:08click on new repository secret and here

22:09:10you have to add all the secret one by

22:09:11one. Now first of all you have to add

22:09:12this Google API key or whatever API key

22:09:14you are using you can add here one by

22:09:16one. So this is my Google API key. Let's

22:09:22copy that.

22:09:26Yeah.

22:09:29A copy and paste it here.

22:09:36Done. Now next I will add my Google

22:09:38model.

22:09:47This the model

22:09:54that's how you have to add all of the

22:09:55secret one by one. Now API key.

22:10:11Now next you have this langid tracing

22:10:20should be true.

22:10:27Now lang speed end point.

22:10:38This is the end point.

22:10:50Now lang spit API key.

22:11:05Now next you have this lang project

22:11:12project name. So this is the project

22:11:14name bpg.

22:11:19Done. Now we have to add the AWS related

22:11:22credential. AWS access key.

22:11:27So why do you have the access key in the

22:11:29CSV file? I think you remember we have

22:11:30already downloaded. Let's copy this

22:11:32access key before the comma till here.

22:11:35I'll copy and paste it.

22:11:38Then next I have AWS secret access key.

22:11:46And in this file only you have the

22:11:48secret access key after this comma.

22:11:50Okay, whatever values you have just try

22:11:52to add in the secret

22:11:55H. Now next you have this head of this

22:11:58region.

22:12:05So right now I'm inside this region

22:12:07called North Virginia US East one. Okay.

22:12:10If you're in other region you can give

22:12:11the name. I'll give US East one.

22:12:17Make sure you are writing in same way.

22:12:23US East one.

22:12:25US East one. Okay. H the secret. Now

22:12:30last I have to add my ECR weapon name.

22:12:37So where do you have the web name? I

22:12:39think remember we copied one URI right

22:12:44here. So here is the name. Just try to

22:12:46copy after this slash and add it here.

22:12:51Done. Okay. All of these secrets we have

22:12:53added one by one. Now let's try uh it's

22:12:55time to commit our changes. I'll go to

22:12:57my repo.

22:12:59Now let's commit the changes here.

22:13:04CICD

22:13:08add it.

22:13:10Now push the changes.

22:13:15Done. Now if I refresh

22:13:18now see my action is running. We

22:13:20workflow is running. Now I'll click on

22:13:21action. Uh I'll open the CI/CD

22:13:25workflow. Now see continuous integration

22:13:27is running. So it is building the docker

22:13:29image and pushing it to the ECR. All of

22:13:30the execution you'll be able to see. So

22:13:32let's wait. This process may take some

22:13:34time.

22:14:13building is done. Now it is

22:14:16uh pushing the image to the uh ECR

22:14:20elastic container registry.

22:14:30You can even check in this year. So

22:14:34let's create a new tab and I'll go to

22:14:37the elastic container registry.

22:14:39So this is my registry. I'll click here.

22:14:41So see the image has been pushed.

22:14:44Okay. Now it is running continuous

22:14:45deployment. Now it will pull that ACR

22:14:49image and it will run on my EC2.

22:14:52Now see pulling is completed.

22:15:02Now see it will run the docker image as

22:15:04a container. Done. See all of the

22:15:06execution are green that means

22:15:08everything is fine. Now I'll come to my

22:15:10instance and there is a option um URL

22:15:13you will get public DNS. Just copy this

22:15:15URL and paste it here and execute. See

22:15:19initially this uh application will not

22:15:21open because right now this is running

22:15:22on port number 8080 but we haven't done

22:15:24the port mapping. So if you want to do

22:15:26the port mapping just come here and

22:15:28there is a option called security. Click

22:15:29on security. Go to the security groups

22:15:33and you have one option called edit

22:15:35inbound rules then add the rules and

22:15:38here just try to add port number 8080

22:15:41okay and just try to okay one more thing

22:15:44you have to add this 0000 that means you

22:15:46can access from anywhere then save the

22:15:47rules then I will go to my instance

22:15:52copy this

22:15:54URL again and at the last I will give

22:15:57port number 80080 okay now if I execute

22:16:00Now see my uh application is running.

22:16:03Okay. See our uh BGP is running and this

22:16:06is completely live right now. You can

22:16:08share this URL with anyone and they will

22:16:11be able to access. Okay. Now you can

22:16:12purchase any kinds of domain name. You

22:16:14can also change the domain here. Now

22:16:15let's test whether it's working or not.

22:16:18Okay. Now here I have given hi. It is

22:16:20giving hello how I can assist you uh how

22:16:22I can help you today. And it has also

22:16:24loaded my previous trades. Uh why?

22:16:26because in my GitHub I already um

22:16:29updated my database right so from

22:16:32database it is loading in the old

22:16:33conversation okay that's why you're able

22:16:35to see that see that now let's uh do the

22:16:37chat operation I'll tell my name is BP

22:16:46see now you can even create a new

22:16:48threads and you can do the conversation

22:16:50but let's continue here now here you can

22:16:54upload your documents

22:16:56your any kinds of documents that I will

22:16:59upload my

22:17:01resume.

22:17:06Okay. Now I'll ask who is book based

22:17:13on

22:17:14PDF.

22:17:17Now it is using my doc search tool and

22:17:19it is giving you the response. Okay. Now

22:17:21you can open search any latest

22:17:23information,

22:17:25latest

22:17:28news in

22:17:31um

22:17:33Bollywood.

22:17:41Now see realtime s operation it is doing

22:17:46and this is the latest news I got. So

22:17:49yes guys, everything is working fine.

22:17:51Okay. Now this is completely live and

22:17:53now if I let's say close my uh this uh

22:17:56this window that means this terminal

22:17:58still my application will be working.

22:18:00See. Okay. Now the best part is that uh

22:18:04if you push anything right if you push

22:18:06anything push any new ch

22:18:08uh automatically this pipeline will

22:18:11trigger and all of the new features

22:18:14would be added in in your um deployment

22:18:17server uh without uh let's say stopping

22:18:19your application. This is the main

22:18:21benefit. Okay. So this is the one time

22:18:24setup and rest of the life you can

22:18:26enjoy. Now here everything is done. Now

22:18:29uh we have seen the deployment. Now

22:18:31let's try to stop all the instance we

22:18:33have created uh because our landing is

22:18:35over. I don't want to keep it running

22:18:37otherwise it will charge me. And one

22:18:39more thing I want to show you this uh

22:18:40langismith monitoring. So if I go to my

22:18:43lang in bpgpt see the last execution.

22:18:47Okay it has done. Okay perfect. Now

22:18:49let's try to um terminate everything.

22:18:54So first of all I'll terminate my EC2

22:18:57instance.

22:18:59So select it and click here instant

22:19:02state and terminate and delete. Okay, if

22:19:04you stop it, it will stop but it will uh

22:19:06it will not delete. Okay, but I will

22:19:08delete it everything.

22:19:10Terminate and delete. Now see after some

22:19:13times it will delete it and shut down.

22:19:16Once it is done I will search for ECR

22:19:20ECR

22:19:22elastic container history and uh

22:19:25whatever history I created I'll select

22:19:26and delete it. I'll give delete message

22:19:35and confirm. Then I will delete my IM

22:19:38user as well.

22:19:45Now delete

22:19:47deactive

22:19:49right confirm and delete.

22:19:57Okay. So everything is deleted. Now this

22:19:59server is down.

22:20:19So see now this uh URL is down because

22:20:21we have deleted everything. So fine guys

22:20:24uh we have done. Um now I'll share this

22:20:27code and everything in the description.

22:20:29Uh from there you can check it out. I

22:20:32will add a beautiful readme here. Readme

22:20:35let's say uh information uh so that uh

22:20:38you can see all of the commands all of

22:20:40the steps in the readme itself. Okay.

22:20:42Now this was uh the as deployment. Now

22:20:45if you don't have the AWS account guys

22:20:47still you want to deploy this

22:20:48application and you want to test uh for

22:20:50this uh you can use render. Okay there

22:20:53is another one called render.com. you

22:20:55can use this uh platform and here you

22:20:57can do the deployment. Okay. So for

22:20:58render I already created a video in my

22:21:01playlist as you can see uh deploy aentk

22:21:03chatbot on render for free with docker.

22:21:06You can simply uh check this video and

22:21:08you will be able to deploy this uh

22:21:10project over the render cloud as well.

22:21:12Okay. So yes uh this is all about guys.

22:21:14I hope you like this uh uh

22:21:16implementation. If you found this uh

Project: Build TripMate AI End-to-End: Multi-Agent Travel Planner with Groq, LangGraph, PostgreSQL & FastAPI

22:21:18this implementation useful guys please

22:21:20try to subscribe to my channel. So this

22:21:22is my channel guys. Please try to

22:21:24subscribe. Uh let's hit uh 100k

22:21:27subscriber as soon as possible and uh I

22:21:30have lots of plan for this channel. I'll

22:21:33bring lots of content related agent MCP

22:21:36okay uh data science. So each and

22:21:39everything would be available in one

22:21:40place and uh if you want to connect me

22:21:42guys this is my LinkedIn profile. So

22:21:44here you can also connect me. You can

22:21:46also follow follow me here. So

22:21:47definitely um we'll try to keep in touch

22:21:50and if you have any kinds of question

22:21:52you can feel free to reach out here. So

22:21:54guys in this video I'll be developing

22:21:56one end to end multi- aent application

22:21:58with the help of Langraph.

22:22:01So in this video the application I'm

22:22:03going to develop the application name

22:22:05would be Tripate AI. So Tripmetate AI is

22:22:08a multi- aent uh application. Uh here uh

22:22:11you only just need to mention your trip

22:22:13location and this will uh give you the

22:22:16entire uh plan uh with respect to the

22:22:18location uh you are planning for the

22:22:20trip and this will also give you some

22:22:23amazing informations like uh your

22:22:26flights, your hotels. Okay. Then it will

22:22:28give you the travel itinerary even it

22:22:31will give you the day-to-day plan you

22:22:33will be making whenever you are on a

22:22:34trip. So this is a very much a cool

22:22:37application we'll be developing. Why?

22:22:39because uh we know that all of the uh

22:22:42people out there they are very much

22:22:45interested uh especially in trip

22:22:47especially about the travel. So let's

22:22:50say whenever we are planning for any

22:22:51travel let's say uh country A to B. So

22:22:55before going to that particular country

22:22:57we just need to make some plans right

22:22:59let's say um if I want to visit that

22:23:02country so which flight I have to take

22:23:05okay after let's say taking the flight

22:23:07um uh in which hotel I have to stay

22:23:10right then uh where I need to visit what

22:23:13are the me uh memorable locations there

22:23:15right even uh what would be my day one

22:23:18plan day two plan let's say I have that

22:23:20much amount of budget so how much money

22:23:22I should spend in day one day two like

22:23:25that. Okay. So this is the major problem

22:23:27um whenever we are planning for any

22:23:29kinds of trips. Okay. So why not we can

22:23:31create a multi- aent system so that

22:23:33agent will prepare the entire plan for

22:23:36us. Okay. Only just need to give the

22:23:38location. Let's say I want to visit uh

22:23:40let's say uh country A to B. Okay. I

22:23:43only just provide that much informations

22:23:45to my agent and my agent will prepare

22:23:47everything for me. Okay. Even I can

22:23:50download that particular plan as a PDF

22:23:52file and I can take it on my smartphone

22:23:54anytime and I can visit anywhere. Okay.

22:23:56So this is the system guys we'll be

22:23:58developing throughout the entire video

22:24:00and for this we'll be using some amazing

22:24:02tools and technologies. Okay. So guys uh

22:24:04first of all I want to show you the

22:24:06application demo how this application

22:24:07looks like and how this application will

22:24:09be uh working. Then after that we'll

22:24:12start the development. Okay. So to

22:24:14implement this uh entire system guys I

22:24:16have used some amazing technology. I

22:24:18have used a fast API. So it is running

22:24:21on fast API back end. Even I have used

22:24:23HTML, CSS and little bit of JavaScript

22:24:26to design the entire front end. Okay. As

22:24:28you can see this is a beautiful front

22:24:30end I have created. Then uh for this

22:24:32agent workflow multi- aent workflow I

22:24:34used langraph. Okay. And uh the large

22:24:37language model wise actually I'm using

22:24:39gro

22:24:41actually playground that means gro

22:24:43platform. So from the gro platform guys

22:24:46I'm using llama model. Okay. metal lama

22:24:48model then uh for the memory persistence

22:24:50memory I'm utilizing postgrace SQL

22:24:54database so if you know postgrace is

22:24:56amazing uh database okay whenever you

22:24:58are implementing this kinds of agentic

22:25:00application so postgrace you can utilize

22:25:03okay uh here uh this postgrace uh

22:25:06supports so many functionality whenever

22:25:09you are implementing this kinds of

22:25:10agents so for our uh persistence memory

22:25:13guys we'll be using postgrace database

22:25:15inside this development and Postgrace

22:25:17I'm not going to use the local Postgress

22:25:19server instead of that I have set up uh

22:25:22this uh Postgress on the render cloud

22:25:24okay my Postgress is running on my

22:25:26render cloud let me show you so this is

22:25:29my Postgress server it is running on

22:25:30render cloud so from here we just

22:25:33connected our application okay so right

22:25:35now this is not local anymore so if you

22:25:38close your local system as well still

22:25:40this uh this application will be running

22:25:43then for the realtime search operation

22:25:45guys uh for finding hotels or for

22:25:47finding uh different different uh

22:25:50itinary for a specific location we'll be

22:25:53using tably okay tably search tool so

22:25:55with the help of that we'll be doing the

22:25:57internet search realtime internet search

22:25:58and we'll try to figure out all of the

22:26:00latest informations about that country

22:26:02okay then uh for the flight information

22:26:05guys we'll be using uh aviation stack uh

22:26:07platform basically they provides a API

22:26:10key with the help of this API key you

22:26:11can get the entire flight informations

22:26:14okay for any kinds of country. So yes,

22:26:16these are my tool to tools and

22:26:18technologies we'll be using for this

22:26:20development and after this development

22:26:22I'm also going to show you how we can

22:26:23deploy this project over the render

22:26:25cloud. Okay. So here we are not only

22:26:28going to develop this project uh even

22:26:30after completing the development I will

22:26:32show you the deployment part as well. So

22:26:34make sure you watch this video till the

22:26:36end and if you found this content useful

22:26:38please try to subscribe to my channel

22:26:40and please try to share this with your

22:26:42friends and family and please guys hit

22:26:43the like and uh I need your support if

22:26:46you are supporting me guys definitely I

22:26:48can bring this kinds of content more and

22:26:50uh yeah it would be amazing okay

22:26:52altogether so please try to subscribe to

22:26:54my channel this should be my request to

22:26:56all of you so yes uh this is how my

22:26:58application interface looks like uh you

22:27:00can see this is a tripmate AI platform a

22:27:02multi- aent Travel planner with

22:27:04Langraph. So here basically you can plan

22:27:06your perfect trip with AI. You can

22:27:08search flight, discover hotels, generate

22:27:10a complete travel itinerary using multi-

22:27:13aent langraph system. Okay. Now for an

22:27:16example here what you have to give. So

22:27:18here you have a input box. So basically

22:27:21you can mention uh where to where you

22:27:23want to let's say go for the trip. You

22:27:25just only need to mention let's say here

22:27:27I have given some example. to plan a

22:27:28complete 7 days trip uh 7 days Japan

22:27:31trip from Bangladesh under one uh two

22:27:33two lakhs. Okay, let's say you have two

22:27:35lakhs budget. You can provide this

22:27:36information. So what I can do? I can

22:27:38copy this information. I can paste it

22:27:40here. Let's say maybe I can tell uh plan

22:27:42a complete 7 days. Let's say here I will

22:27:45give

22:27:48I'll get Nepal tool. Okay, Nepal trip

22:27:51from Bangladesh under two lakhs. Okay,

22:27:53so let's say this is my uh this is my uh

22:27:55let's say plan for the trip. Now simply

22:27:57you just need to click on generate

22:27:59plans.

22:28:00Now see um after some times you will see

22:28:04the entire plan would be ready. Even you

22:28:06can download this uh down download that

22:28:08plan as a PDF file. Let me show you. So

22:28:11guys uh as you can see uh it has

22:28:13successfully generated the 7 days Nepal

22:28:15trip from Bangladesh under u two lakhs

22:28:18taka. So as you can see this is the trip

22:28:21summary. Uh we have planned a 7-day uh

22:28:24Nepal trip from Bangladesh that includes

22:28:26a visit to Kathmandu then Pok uh Pokara

22:28:31then uh Chitwan and others exciting uh

22:28:33destinations and blah blah blah you can

22:28:36see. So first of all it has given the

22:28:37flight informations. Let's say if I want

22:28:39to visit Nepal. First of all, I have to

22:28:42uh I have to go to the Dhaka and Dhaka

22:28:45to Kathmandu. There is a flight and this

22:28:47is the flight information it is giving

22:28:49and the times as well when this flight

22:28:51is available. Okay. Then some hotel

22:28:54suggestion it is giving. So after you

22:28:55reach to Kathmandu so in which hotel you

22:28:58just need to stay and what would be the

22:29:00cost per night even it is also telling

22:29:02you. Apart from that it is giving you

22:29:04the dayby-day uh itinary. Here is the

22:29:06dayby-day itinary. Day one Dhaka to

22:29:08Kathmandu you will be visiting. Okay. Uh

22:29:11so it is giving you the entire step.

22:29:13Okay. See then when you reach the

22:29:16Kathmandu so in day two what should be

22:29:20your visit location? It is giving you

22:29:22the entire visit location. Okay. And

22:29:24what is the entry fee each and

22:29:25everything it is giving you. Then Kmandu

22:29:28to Pokara again it is uh giving you the

22:29:30plan. You have to take a bus or private

22:29:33card. Okay. And this is the estimated

22:29:34cost for that. Okay. So that's how it is

22:29:36giving you the entire summary. So then

22:29:38day four, day five, okay, day six, day

22:29:42seven and the entire estimated budget is

22:29:44also giving you like how much money uh

22:29:47uh I mean it will spend um in 7 days.

22:29:50Okay, if you're visiting Nepal. So it is

22:29:52giving you the estimated cost about

22:29:54flights, accommodations, transportation,

22:29:56food and activities, total budget. Okay.

22:29:59Then the final recommendation it is

22:30:01giving you uh you can see some final

22:30:03recommendation we are also getting. So

22:30:05yes uh if I get these kinds of things

22:30:07guys okay in just one place it would be

22:30:10amazing for us because otherwise what I

22:30:12have to do I have to individually search

22:30:14Google let's say what is the best hotel

22:30:16in Kathmandu okay and how much let's say

22:30:19price they are taking so I have to

22:30:21search individually I have to search the

22:30:23flight uh flight information

22:30:25individually I have to search hotel

22:30:27information individually okay I have to

22:30:29search this dayby-day itinary

22:30:31individually okay so yeah this take uh

22:30:33takes time And it needs lots of

22:30:35exploration, right? I I have to search

22:30:37on Google, go to different different

22:30:38website, just try to see their review.

22:30:40Then after that, I'll try to select this

22:30:42one. Then again, I have to note it,

22:30:44right? I have to take a note. Let's say

22:30:45I will visit uh A to B, B to C, okay?

22:30:48And it will take that much of money.

22:30:50This is the estimated time. I have to

22:30:51note everything. So that much time I

22:30:53don't have. So why not we can bring

22:30:55everything inside of one platform. Okay?

22:30:58One uh one let's say uh one system

22:31:01there. I only just need to give my uh

22:31:03trip plan and it will generate uh the

22:31:06entire plan for me. This is what we have

22:31:08developed guys. Okay. So this is very

22:31:10interesting and realtime application

22:31:12guys because right now these kinds of

22:31:14application you'll be uh seeing okay uh

22:31:16people are using there are some platform

22:31:18they are providing this kinds of let's

22:31:20let's say functionality only you just

22:31:22need to give the location and it will

22:31:23give you the entire trip plan for that.

22:31:25Okay. Now if I go to the cut uh Nepal

22:31:27right so I don't have any kinds of issue

22:31:29because I know what is the estimated

22:31:30cost there what is the best hotels there

22:31:33right what is the best flights there

22:31:35right uh in day 1 day 2 day three where

22:31:38I need to visit which which is the best

22:31:40location to visit there in 7 days all

22:31:42the information I have okay so I don't

22:31:46need anyone to guide me there is what

22:31:48guys will be doing now you can see there

22:31:50is a download PDF option if I click on

22:31:52download PDF so you can see this PDF

22:31:54file would be available Now you can take

22:31:56this PDF file on your smartphone okay or

22:31:58on your laptop anywhere you can take and

22:32:01you can just open it up and you can see

22:32:02okay what you have to do amazing right

22:32:05so yes guys this is the things we'll be

22:32:07developing even you can also copy this

22:32:09information and you can also paste it

22:32:11anywhere even you can also send it uh to

22:32:13your friends and family this is also

22:32:15possible okay so that's how not only uh

22:32:19not only Nepal you can give Japan Dubai

22:32:21Thailand okay global anywhere while You

22:32:24just need to visit just try to mention

22:32:26here you can generate the plan. Okay.

22:32:28With respect to that and uh I already

22:32:31told you this u uh this is also

22:32:33utilizing the postgrace database. All

22:32:35the information it is saving in the

22:32:36postgrace. This is uh already uh um

22:32:40postgress servers we have created on the

22:32:41render render server. Okay. Render is a

22:32:44cloud platform and let me show you I

22:32:47have my PG admin. So in PG admin I

22:32:50connected my remote server that means my

22:32:52render postgress server and here you can

22:32:54see the persistence memory checkpoint.

22:33:09So see these are my persistence memory

22:33:11checkpoint and you can see this is

22:33:13connected with render cloud. See this

22:33:15connected with render cloud. Okay. and

22:33:17all of me all of my persistence memory

22:33:20checkpoint all of my conversation are

22:33:22saved here okay even I'm also using

22:33:25langismith here

22:33:29to monitor my entire application

22:33:37so as you can see I'm using lang lang

22:33:40smmith guys to monitor my entire

22:33:41application it is using this travel

22:33:43agent uh project and it is monitoring

22:33:45the entire

22:33:47entire application. Okay. So yes guys uh

22:33:50that that's how we'll be developing this

22:33:52entire application end to end completely

22:33:54end to end we'll try to develop. So yes

22:33:56guys this is the entire uh application

22:33:59uh this is the entire application demo.

22:34:01Now let's start the development. So guys

22:34:03before starting the development first of

22:34:06all let's try to understand the

22:34:07application uh overview and the

22:34:10application architectures. So as you can

22:34:12see tripate AI this is a langraph

22:34:14multi-agent tribal planet system. So you

22:34:16can see this is a multi- aent travel

22:34:18planner that turns a natural language

22:34:21trip request into a practical travel

22:34:23plan with flight suggestions, hotel

22:34:25ideas and day-to-day uh itinerary. Uh uh

22:34:29the projects uh uses a multi- aent

22:34:31workflow built with langraph and why

22:34:34this project uh as you can see planning

22:34:36a trip usually means jumping between

22:34:39multiple websites, tools and

22:34:41spreadsheets. Okay, as I already told

22:34:42you, let's say if you're planning for a

22:34:44trip, right? Uh you have to visit

22:34:46multiple websites to uh look for the

22:34:48flights information, hotel informations,

22:34:51right? Then uh which location you just

22:34:54need to visit there, right? These are

22:34:56the things you have to uh explore and

22:34:57you have to take a notes on the

22:34:59spreadsheet or anywhere then um uh you

22:35:02will be making the entire plan. So this

22:35:03takes uh lots of time, right? And uh it

22:35:06needs lots of exploration even sometimes

22:35:08you you may miss out anything, right?

22:35:11Uh so this project brings that flow into

22:35:13one experience by combining a flight s

22:35:15agent, a hotel research agent and uh

22:35:19itinerary plan planning agent and a

22:35:22final response agents. Okay. Uh all

22:35:24coordinated through a langraph workflow

22:35:27that means in a single place we'll be

22:35:29combining all of them and each of the

22:35:31task would be mentioned to each of the

22:35:34agent. That means for the flight search

22:35:36operation we will be creating an an

22:35:38agent. For uh hotel uh hotel information

22:35:41we'll be defining another agent. For uh

22:35:44itinerary planning we'll be defining

22:35:46another agents. Okay. For final report

22:35:48generation we'll be defining another

22:35:49agents. That's how we'll be creating

22:35:51multiple agents together and those

22:35:53agents will be uh those those agents

22:35:56will be responsible for generating the

22:35:58entire trip summary for me. Okay. Trip

22:36:01plan for me. So that's why we call it as

22:36:02a multi- aent system. So here we are not

22:36:05utilizing one agent. We are using

22:36:06multiple agents and each of the agents

22:36:08will have some kinds of tools to

22:36:10complete that particular task. Okay. So

22:36:13here is the entire uh like architecture

22:36:15guys. As you can see for this project so

22:36:17first of all I already told you here

22:36:18we'll be utilizing uh multiple agent.

22:36:22As you can see here we'll be utilizing

22:36:24multiple agent. The first agents will be

22:36:25creating the flight agents. Okay. So

22:36:27basically this will search the flight

22:36:28and finds the best option for visiting

22:36:31location A to B. Okay. And for get uh

22:36:34and to get these kinds of flight

22:36:35informations, it needs some tools,

22:36:37right? And here we'll be using aviation

22:36:39stack API. So this aviation stack API uh

22:36:42what it it can do it can search realtime

22:36:44flight informations, right? And it will

22:36:47give you that particular flight

22:36:48informations to the flight agent and

22:36:49flight agent will try to utilize that.

22:36:51Okay. So optionally you can also use

22:36:53tably search here but I feel like uh

22:36:55aviation stack is having all kinds of

22:36:57flight integration in one place. So

22:36:58that's why we'll be using a aviation

22:37:00stack API key here. Then second agents

22:37:03will be developing this hotel agents. So

22:37:06what this hotel agent will it will

22:37:07search hotels and compares options. That

22:37:10means it will only look uh it is not

22:37:12only going to look for the agents. It

22:37:14will all it will look for the best

22:37:16hotels for you. Okay. Best hotels uh

22:37:18with respect to your budget, right? So

22:37:20this hotel information it will try to

22:37:22find and for this we will be using some

22:37:24kinds of tools. Right? And here we'll be

22:37:26using tably search. Okay. So tably

22:37:28search with the help of tably search

22:37:30we'll try to figure out the best hotels

22:37:32uh from that particular location and

22:37:34we'll try to give the suggestion

22:37:36optionally you can use Google place API

22:37:38this is optional but uh I'll be using

22:37:39tably tab search okay because this is

22:37:41completely free to use then the next one

22:37:44uh itinary agent so this basically

22:37:46creates the day wise itinary uh that

22:37:49means where you have to visit okay what

22:37:50are the activities you have to do there

22:37:52what are the best places okay each and

22:37:54everything this particular agents will

22:37:55try to uh get it for for you And again

22:37:58to get these are the information u the

22:38:00best in best visit location activities

22:38:03we'll be using tably API key again.

22:38:05Okay. So with the help of tab will

22:38:06perform the internet search operation

22:38:08and um real time will get the

22:38:11information and it will try to um use

22:38:13this information in my itinary agents.

22:38:16Then uh fourth I'll be using this final

22:38:18response agents that means it will be

22:38:19using all the information and will try

22:38:22to prepare the entire plan for you

22:38:24entire trip plan for you. Okay, that

22:38:26means it it combines all the information

22:38:27and generate a final response. And again

22:38:30for this we'll be using a large language

22:38:32model and the large language model wise

22:38:33we'll be using llama 3. Okay, and we'll

22:38:35be using gro provider. Uh I think you

22:38:38know grock provides some free uh free

22:38:40limits. Okay, you can generate uh API

22:38:43keys and you can access some model.

22:38:44Okay, completely free. You don't need to

22:38:45pay for that. But there is a limitation

22:38:47but it's fine. Okay, for this particular

22:38:49task I will be using this free API key.

22:38:51But if you want you can also take the

22:38:53subscription. You can uh use some

22:38:54premium model. It's completely up to

22:38:56you. Okay. So, yeah, we'll be using this

22:38:58uh hog rock provider here.

22:39:01Uh yeah, then uh you can see uh each of

22:39:04the agents will be connected to a shared

22:39:06state that mean shared memory h and we

22:39:08call it as a state. If you are already

22:39:10working in langraph, I think know there

22:39:12is a concept of state, right? We have to

22:39:14create the state and these are the state

22:39:15I need guys. Okay, I need user query.

22:39:18That means whatever user will pass, I'll

22:39:20save inside the user query. Whatever

22:39:22flight results I'll be getting, I'll try

22:39:24to save in the flight results. Whatever

22:39:25hotel results I'll be getting, I'll try

22:39:27to save in the hotel results. Whatever

22:39:29itinary response I'll be getting, I'll

22:39:31try to say save inside itary results.

22:39:33Whatever final response I'll be getting,

22:39:34I'll save inside final response. Okay?

22:39:36And whatever my agents will try to

22:39:38reply, okay? Uh that entire plan, I'll

22:39:41try to save inside my masses state. And

22:39:44this uh shared state will be uh storing

22:39:46inside one amazing database guys. We

22:39:48call it as a Postgress SQL. Okay. So

22:39:50this uh database we'll be using for my

22:39:53memory. Okay, memory memory purpose

22:39:54we'll be using that means we'll try to

22:39:56store all of the checkpoints all of the

22:39:57conversation here. Okay. So it will

22:39:59basically have the conversation story

22:40:01user preferences agents output and state

22:40:03updates. Okay. So this is the entire

22:40:06architecture guys we'll try to follow

22:40:07and we'll be implementing this entire

22:40:10agents. Okay. I hope you get it. So guys

22:40:13as you can see to develop this entire

22:40:15application I need the four agents here.

22:40:17uh the flight agent, hotel agent, then

22:40:20uh itinary agents and the fin final

22:40:22response agents. Okay. So we'll be

22:40:25developing four agents and we'll try to

22:40:27uh combine them all together and this

22:40:29will become a multi- aent system. Okay.

22:40:31Yeah.

22:40:34So first of all uh to implement uh this

22:40:36entire system guys what I need I need to

22:40:38create my GitHub repository. So uh there

22:40:41I'll try to create a repo and u I'll

22:40:44start uh writing the code.

22:40:51So for this let's open up my GitHub

22:40:53guys. I'll open up my GitHub.

22:40:57I'll go to my repository

22:41:00and let's create a new repo here. I'm

22:41:03going to give the name of this repo. So

22:41:06what I can do maybe I can copy this name

22:41:11and I can give it here. Okay, let's say

22:41:13this is my name

22:41:15and uh simply I'll just try to make it

22:41:18as public. Uh I'll add the readmi file.

22:41:21Get ignore wise I'll be taking python

22:41:25and license. Let's take this um MIT

22:41:28license. Okay, you can take any license.

22:41:30It's up to you. Uh okay, everything is

22:41:32fine. Now simply what I'll do, I'll just

22:41:35try to create this repository.

22:41:44Okay, so my repo is created guys. Okay,

22:41:46next thing I'll just try to clone this

22:41:48repo. I'll just uh click on this code

22:41:51and copy this HTTP URL and I will open

22:41:54up my local folder.

22:41:58So here I'll open up my terminal

22:42:01and let's clone it. So get clone

22:42:07paste that URL.

22:42:11So it has already cloned my repo. So now

22:42:13I'll go inside that. So cd the name of

22:42:15the repo is trip AI. Okay. So now I'm

22:42:18inside this folder. I'm inside this

22:42:21folder. Okay. Now here I'm going to open

22:42:22up my visual code studio.

22:42:32Okay. Perfect.

22:42:35So here I already moved my um

22:42:38architecture file which is

22:42:40demo.excaliraw.

22:42:41So here I'm using excali file format. So

22:42:44for this you have to install one

22:42:45extension called excali draw. Okay xcali

22:42:49draw. So this is the extension you have

22:42:51to install. So if you install you will

22:42:52be able to open this file guys. Okay.

22:42:54And here you will be getting this

22:42:55architecture diagram. So fine. Um yeah.

22:42:59Now next guys what I have to do? I have

22:43:02to first of all uh create the

22:43:03environment and we have to create the

22:43:05folder structure. So to create the

22:43:07environment guys um here uh what I can

22:43:10do I can write this step

22:43:19how to run

22:43:23first um create the environment

22:43:31virtual

22:43:34environment ment.

22:43:40So to get the virtual environment uh you

22:43:42have to use this command

22:43:51p

22:43:55rate

22:43:56hyphen n

22:43:59uh then you have to give the name of the

22:44:01environment. I will give let's say

22:44:06travel

22:44:08then I'll give the python version. So

22:44:11python is equal to 3.11. Okay I'll be

22:44:14using 3.11 and hyphen y that means I

22:44:17want to give the permission. So this is

22:44:18the command you have to use to create

22:44:19the environment. Then second you have to

22:44:22uh activate the environment.

22:44:30activate the environment.

22:44:37So to activate the environment you have

22:44:39to use this command

22:44:41panda activate

22:44:46travel.

22:44:51Then next you have to install the

22:44:53requirement file.

22:45:02Install the requirements.

22:45:07So we'll be using this command. So pip

22:45:09installer

22:45:13requirements

22:45:19txt.

22:45:21Okay. So yeah uh these are the step we

22:45:23have to follow. So first of all let's

22:45:25create the environment. I'll copy this

22:45:27command and I'll open up my terminal.

22:45:32Let's clear.

22:45:34Let's create the environment first of

22:45:35all.

22:45:38Okay. Uh there is a space I have given

22:45:40but uh the space should not be there. It

22:45:43should be hypen only. Okay. Now copy

22:45:45this again and execute it here.

22:46:13Okay, done. Now I have to activate the

22:46:15environment.

22:46:20So this is the command.

22:46:28See I have activated. Now I'll be

22:46:30installing the requirements. But for

22:46:32this I need to create the requirements

22:46:33file

22:46:35requirements.txt.

22:46:37Okay. So here I need to mention all of

22:46:40the requirements I need for this uh

22:46:43agent. So I already uh noted all the

22:46:46requirements I'll be using. So these are

22:46:48the requirements guys I need. I need

22:46:50langraph definitely to create the agent

22:46:52workflow. Langchen you need um because

22:46:55if you want to use langraph so langen is

22:46:58the dependency and uh uh whenever I want

22:47:01to load any large language model and all

22:47:02right I have to use the langen there

22:47:05then we'll be using grock provider uh

22:47:07that means lm provider that's why we'll

22:47:09be installing langen grog then langen

22:47:11community is also required then we'll be

22:47:12using tably search tool we'll be using

22:47:14langen tab and I told you I'll be using

22:47:17postgraql database for this I need this

22:47:19uh ps

22:47:22I cop g binary then uh uh this pull uh

22:47:26the uh these two things I need okay for

22:47:28this u uh database okay uh database and

22:47:32another thing I need this langchen

22:47:34checkpoint postgress okay these are the

22:47:35dependency for the database okay then

22:47:38python env to manage the environment

22:47:40credential so let's create this env file

22:47:44okay here we'll try to mention all of

22:47:46these uh credential secret credential

22:47:48then tavly python unit request library

22:47:50unit I already told you about the

22:47:52postgrace right uh I will save my

22:47:55checkpoints in the postgra database

22:47:57that's why this lang lang graph

22:47:59checkpoint postgrace is required then uh

22:48:02I'll also get the um um um I mean flight

22:48:06information right for this um I'll be

22:48:08using one um package called airports

22:48:11data so inside airports data some

22:48:13informations are available we'll try to

22:48:15utilize that then uh I'll be considering

22:48:17all of the country right whenever I'll

22:48:19try to search for the flights so that's

22:48:21There is another package called PI

22:48:22country. So inside that all of the

22:48:24country informations are available.

22:48:25We'll try to also use that. Then fast

22:48:27API for my entire u uh back end and

22:48:31front end development. Then uh first API

22:48:34dependencies u with help of uicon we'll

22:48:36try to launch the fast API server. Then

22:48:38the ginger ginger two templates. Okay.

22:48:40So these are the requirements guys I

22:48:41need and I already mentioned all of the

22:48:43version. Okay. And you should also

22:48:44mention the version. Uh otherwise what

22:48:46will happen? Let's say uh if you if you

22:48:49not mention the version. So if you're

22:48:51running this project after 2 month there

22:48:53is a possibility uh one of the package

22:48:55will get update and that functionality

22:48:57will be deprecated. Okay that time you

22:48:58will get the error. So that's why it's

22:49:00uh necessary to add the version. Okay

22:49:02this is super important. Now let's

22:49:04install the dependency. So I'll copy

22:49:05this command

22:49:07and I'll try to install the dependency

22:49:09here.

22:49:25Okay, let's wait uh once it is installed

22:49:28then we'll try to

22:49:31uh see the next step.

22:49:42So apart from this uh dependency, I also

22:49:44need to install some other tools as

22:49:46well. Let me show you.

22:50:00So installation is complete and there is

22:50:02no error. Okay, it's completely fine.

22:50:05Now guys, uh what I need I need some

22:50:07more tools. Okay, uh I told you we'll be

22:50:09using this uh PG admin to see my tables,

22:50:13right? My uh conversation checkpoints

22:50:15even you can also see the different

22:50:17different uh conversation it has saved

22:50:18right in in the memory. So you can able

22:50:21to see that because uh I'll be creating

22:50:23this uh postgrace server on my render

22:50:25cloud and to see that I need this uh PG

22:50:28admin. Okay, PG admin um this uh

22:50:31graphical user interface we have to

22:50:33install that. So let me close my PG

22:50:36admin and let me show you how to install

22:50:37this this PG admin. So if you want to

22:50:39install the PG admin guys uh only in

22:50:41just Google just try to search PG admin.

22:50:47Okay, PG admin download

22:50:50for Windows. So this is the website just

22:50:54try to visit

22:51:01uh or you can directly search like

22:51:02postgress download okay post

22:51:08postgra sql download so this is the

22:51:11website

22:51:13h here just try to choose your operating

22:51:16system let's say I'm using windows you

22:51:19can uh also select other operating

22:51:20system as

22:51:23And there is a option called uh download

22:51:25the installer.

22:51:27Okay. Now you have to [snorts] choose

22:51:28which one you will be downloading. So

22:51:30make sure you are installing the latest

22:51:31one. Okay. 18.4. So here is the download

22:51:34option. Just try to click here. It will

22:51:36start downloading that. Okay. So this is

22:51:39the uh file guys you have to download.

22:51:41Okay. This is around uh 400 MB you can

22:51:44download. So for me I already

22:51:45downloaded. I'll just try to cancel it.

22:51:47So once you have downloaded guys in the

22:51:48download folder you will see this uh

22:51:50file this uh uh postsql okay installer

22:51:54now you just need to double click and

22:51:55install this uh software okay inside

22:51:57your system. So I think you know how to

22:51:59install any software. Okay. The way you

22:52:01install any software just try to double

22:52:02click and do next next. Okay. Um it will

22:52:05ask for uh like u um password. Okay. You

22:52:08just need to set the password and you

22:52:11can complete the installation process.

22:52:13Okay. So once you have done the

22:52:14installation now simply you just need to

22:52:16search for PG admin. PG

22:52:20admin on your search bar. Now you'll be

22:52:21able to see this kinds of uh this kinds

22:52:23of application. Now let's open it up.

22:52:26Okay. So this kinds of interface you'll

22:52:27be able to see

22:52:36see this is my PG admin. So for me I

22:52:38already connected with the server that's

22:52:39why it's coming like that but for you it

22:52:42would be completely different. Okay. So

22:52:43maybe I can close this H. See for this

22:52:46you will be getting this [clears throat]

22:52:47kinds of window screen or welcome

22:52:48screen. Okay. So now uh what I have to

22:52:51do guys I have to set up this uh I have

22:52:55to set up this u u u postgress server on

22:52:58my render cloud. Okay, because I told

22:53:00you for this uh persistence memory we'll

22:53:03be using post P postgress, right? So how

22:53:05to install this Postgress server on the

22:53:07render cloud. Let me show you. So here

22:53:09I'll just visit the render.

22:53:12Okay, make sure you have a account on

22:53:14render. If you don't have account,

22:53:15please try to create one account for me.

22:53:17I already have the account. I'll just

22:53:18try to go to my dashboard.

22:53:20Let me close these other tab.

22:53:26So here uh to launch a postgra server

22:53:29guys you just need to click on new and

22:53:32there you will see one option called

22:53:34post grace postgrace okay postgrace

22:53:36database just try to click here so give

22:53:39the name of that uh postgrace

22:53:43I'll give let's say trip

22:53:50agent

22:53:54repagent uh let's say this is the name I

22:53:56have given now you can give the database

22:53:59name so I'll give let's say

22:54:03um

22:54:05I'll give trip memory

22:54:15or let's say agent memory

22:54:21Okay. Now you have to give the user. So

22:54:24I can give my user ID. You can give your

22:54:27any unique user ID. Here I have given

22:54:29ENT buff. Then um everything just keep

22:54:32it default. No need to change anything.

22:54:35Just here in the plan option you just

22:54:37select the free instance. Okay. So uh

22:54:40render provides actually free instance.

22:54:42You can use the free instance to launch

22:54:44this server. Okay. And if you want to

22:54:45take this subscription you can also do

22:54:46do that. But in free instance there is a

22:54:48limitation. I think after

22:54:517 or 14 days I think this instance would

22:54:54be deleted automatically. And here you

22:54:55are getting 200

22:54:5856 MB RAM 0.1 CPU and 1 GB storage.

22:55:02Okay. I think this is enough for our

22:55:04learning. But whenever you are creating

22:55:05any real world application production

22:55:07grade application whichever you will be

22:55:09using right uh that time you can take

22:55:11their subscription plan. Okay. No need

22:55:13to take the free instance that time.

22:55:16So yeah, everything just keep it default

22:55:17and simply just create the database.

22:55:25Okay. Uh it's uh giving one error

22:55:27because uh previously I also created one

22:55:29uh postgress server, right? So first of

22:55:32all I had to delete that one. So maybe I

22:55:35can delete that one.

22:55:39So this is the database I created,

22:55:41right? I'll just try to delete that.

22:55:45So if you're doing for the first time

22:55:46right uh you don't need to do that it

22:55:48will create but uh for me I created

22:55:51previously that's why it's coming like

22:55:52that. So I'll just try to delete it.

22:55:57Done. Now maybe I will be able to create

22:55:59that.

22:56:02All the informations are fine. Let's

22:56:04create the database.

22:56:06Okay. Now it is getting created. Okay.

22:56:08Now let's wait. This starter should be

22:56:10active. Once it is active then we can

22:56:12use this database.

22:56:37Okay guys, now you can see status is

22:56:39available. That means my um Postgress

22:56:42server is running successfully. Okay,

22:56:43you can check there. You can go to the

22:56:46dashboard and you can see it is

22:56:47available and this is running. Okay, now

22:56:49I have to connect this uh Postgress

22:56:51server with my PG admin so that I can

22:56:54see all of the uh table inside that all

22:56:56of the database inside that. Okay,

22:56:58whatever I'm going to create later on.

22:57:00So for this uh what I can do I can go

22:57:03below

22:57:05and there is a URL you have to copy.

22:57:08This is called external database URL.

22:57:10Okay. So render uh tells you if you are

22:57:13connecting this uh server in an external

22:57:16service that that means right now I'm

22:57:18using PG admin. This is the external

22:57:20service. Okay. This is running on on my

22:57:21local machine. So for this I have to use

22:57:24external database URL. Okay. But there

22:57:26is another one called internal database

22:57:28URL. As you can see this is the internal

22:57:29database URL. This is only required

22:57:31whenever you are deploying this project.

22:57:34That means let's say I am deploying the

22:57:36same project in the render cloud. Okay.

22:57:38And I'm using render postgress server

22:57:41that time I will be using internal

22:57:42database. Okay. So if you're only

22:57:45running your application in the same

22:57:47render cloud that time internal database

22:57:49should be used. Okay. Database URL

22:57:51should be used. But if you're running

22:57:52from the external one you have to use uh

22:57:55you have to copy this external database

22:57:56URL. Okay. Now let's try to copy that

22:57:58and make sure you don't share this URL

22:58:00with anyone otherwise they will be able

22:58:02to access your database. Okay. I'm going

22:58:04to remove I'm going to delete the

22:58:05instance after this recording. That's

22:58:07why I'm showing you. So I'll copy this

22:58:10and uh what I can do. Maybe I can save

22:58:13it somewhere.

22:58:16Let's I will save save this inside my

22:58:18readmi file.

22:58:24Okay. So this is the information I have.

22:58:27So this information I need to connect

22:58:30with my PG admin. So now let's open the

22:58:32PG admin. So there is a option called

22:58:34server. Just try to right click and

22:58:36there is a option called register. Okay

22:58:38just click on register and there is a

22:58:41option called server. Now here you just

22:58:43need to uh give the name of the server.

22:58:46So I'll give

22:58:48um

22:58:50tab agent

22:58:54or let's say tripmate

22:58:58server. I'll give my application name

22:59:01trip.

22:59:04So this is the name

22:59:08trip.

22:59:16Okay, I'll give tripmmet and uh just

22:59:19keep it as it is. Okay, then uh there is

22:59:22a option called connection. Just click

22:59:24on the connection and here you have to

22:59:25give the name. Okay, host name and where

22:59:28get get this host name? Host name should

22:59:30be uh this one.

22:59:33This should be the host name. See after

22:59:35add the rate, right? Whatever you have

22:59:37just try to copy till.com render.com.

22:59:39This is your host name. Just try to copy

22:59:42and provide it here.

22:59:46So this is the host name. Okay. Now by

22:59:49default uh this postgress run runs on

22:59:52port number five uh 5432. No need to

22:59:55change change this. Now you have to give

22:59:57the database name. Okay. So what is the

22:59:59database name? So here is the database

23:00:02name agent memory.

23:00:10So just try to copy this.

23:00:13This is the name. You can also verify

23:00:16simply go to the

23:00:19server

23:00:21and here is the database. Okay. So this

23:00:23is the name actually it has taken for

23:00:24the database. So I have given agent

23:00:27memory but it has added this uh 68 K5

23:00:32because it should be unique name. Okay,

23:00:33that's why this information has added.

23:00:35Okay, just try to copy this and add it

23:00:37here.

23:00:39Okay, now it has u it is asking for the

23:00:42username. So what is the username? I

23:00:45think you remember I given the username

23:00:47entpo

23:00:49verify in the postgress

23:00:51server.

23:00:53here. So, username is yenduppy. Let's

23:00:55copy and paste it here. Now, I have to

23:01:00give the password. Okay. Where to get

23:01:01the password?

23:01:03Here is the password.

23:01:05This is the password. Okay. Let's copy.

23:01:08Even it is also available on my URL. So,

23:01:10this is the URL. Okay. This is the

23:01:12password. Just try to copy and paste it

23:01:15here. Okay. Then just try to activate

23:01:18this one. Save password on. And uh yeah,

23:01:22everything is fine. Now simply

23:01:26let me check everything is required or

23:01:28not. No, I think everything is fine. Now

23:01:29I'll just try to save this information.

23:01:36See once you will do that it will be

23:01:39connected to the uh render postgress

23:01:42server. Okay. Now you can expand it. Now

23:01:45you can click on database. Now see this

23:01:47agent memory uh 68 uh 68 K5 agent memory

23:01:5468 K5 okay this database I can see

23:01:57because this is already connected now

23:01:59whatever tables you will be creating

23:02:00inside that it would it would be

23:02:02available inside PG admin okay I can see

23:02:04all the tables so this this table now I

23:02:07can refresh and simply

23:02:09uh see right now there is no table uh we

23:02:11haven't created but once I will try to

23:02:13create the table you'll be able to see

23:02:14all the tables okay all of the

23:02:16conversations be available. So see so

23:02:18far we have connected our uh Postgress

23:02:20server with my PG admin. Now right now

23:02:22you have the graphical user interface

23:02:24and from there you can see all of the

23:02:27tables you will be creating going

23:02:28forward. Okay so that means my Postgress

23:02:31installation is completely done.

23:02:32Postgress setup is completely done and

23:02:34this is running on my render cloud.

23:02:37Okay. I hope you get it.

23:02:39So guys, we have successfully uh set up

23:02:41our postgrad server on the render and we

23:02:44have connected with our PG admin and

23:02:46this is running completely fine. Now I

23:02:49need to set up some additional uh

23:02:51additional let's say keys which is

23:02:53required for this development. So first

23:02:55thing I need the um I need the aviation

23:02:59stack API key. Okay.

23:03:03Um aviation stack API key.

23:03:06Then I need

23:03:09Gro API key. Okay, first of all, let's

23:03:12collect the Gro API key. Okay, our LLM

23:03:15provider API key because here I told you

23:03:17I'll be using a metal lama model. Okay,

23:03:19llama 3 model from the Gro Gro provider.

23:03:23Then um I need

23:03:27table API key.

23:03:33Then I need uh my database URL.

23:03:37Okay, that means my postgress database

23:03:39URL. And we already copied the URL. I

23:03:41think you remember that external URL.

23:03:43I'll just try to copy this as it is.

23:03:45Let's cut it. Okay. And I'll try to save

23:03:48inside this variable.

23:03:52So this is the URL. Okay. So with this

23:03:54URL, my Python client will be able to

23:03:57connect with my Postgress server. It

23:03:59will store all of the conversation

23:04:00there. Okay. So make sure you copied

23:04:03this external URL, the URL we just

23:04:05copied. Okay, external URL this one and

23:04:08try to save here. Okay, then I need um

23:04:12some other things like my lang uh API

23:04:17key and tracing. These are the things I

23:04:19need. Let me show you

23:04:24because uh to monitor to trace the

23:04:27entire application we'll be using lang.

23:04:29So this is the lang. Okay, lang speed

23:04:31tracing it should be true. Lang speed

23:04:33endpoint. So this is the URL you have to

23:04:35provide and lang API key we have to

23:04:37collect. Okay. So let's delete this API

23:04:39and I'll collect my own API and lang

23:04:42project name. So let's say I'll give uh

23:04:45travel agent. Okay. Or let's say I'll

23:04:47give uh my project name which is

23:04:51tripmmeti.

23:04:59Let's say this is my project name. Okay.

23:05:02Now let's collect all of the API key one

23:05:03by one. Okay. One more thing I have to

23:05:05add which is the default origin data.

23:05:09H default origin data [clears throat]

23:05:10means let's say here the things you have

23:05:13to do. You have to give the location A

23:05:16to B. Let's say you want to visit India

23:05:18to Thailand, right? So India is your

23:05:21origin, right? And Thailand you want to

23:05:24visit. So by default if user is not

23:05:26providing origin let's say user is

23:05:28giving the prompt like that uh I want to

23:05:32visit Nepal. Okay. So you are not giving

23:05:35the origin here. So by default uh you

23:05:38can set the origin here. Okay. Let's say

23:05:40which your origin. So let's say I'm from

23:05:42Dhaka right now. So I'll give D A C.

23:05:45Okay. That means Dhaka. So from Dhaka it

23:05:47will plan to the different country.

23:05:50Okay. That means Dhaka is the origin

23:05:51right now for me. Okay. I I hope you get

23:05:54it guys. Okay. So that's how we can add

23:05:57a default origin. If user is missing

23:05:59their origin, you it will automatically

23:06:01take the default origin. Okay, you can

23:06:02change this origin as per your

23:06:03requirement. If you're in let's say

23:06:05Thailand, you can give Thailand. If

23:06:06you're in let's say USA, you can give

23:06:08USA. Okay, it's up to you you. So yes,

23:06:11uh this is how we have to add all of the

23:06:14API key. Now let's collect the Gro API

23:06:15key first of all. So what I will do,

23:06:17I'll just uh go to the Gro platform. So

23:06:21you can search for Gro

23:06:24Gro API key. Okay, simply search for

23:06:26Grock API key and um go to the first

23:06:29website

23:06:36and uh you can create a API key here.

23:06:38Okay, so let's create a API key.

23:06:43So what I can do, I can maybe remove my

23:06:46previous API key.

23:06:52Now I'll create a new one. I'll give the

23:06:55name. Let's say I'll give um

23:06:58my trip agent

23:07:08tripment no expiration just try to keep

23:07:11it here. If you want expiration you can

23:07:12also select. Now let's submit.

23:07:21Now this is your API key. Just try to

23:07:23copy and make sure you are adding inside

23:07:25your environment variable. Okay. Yeah.

23:07:29Now you can ask me I have given double

23:07:30quotation here but in the database URL I

23:07:33haven't given any document uh double

23:07:34quotation. See whenever you are adding

23:07:36the database URL no need to give any

23:07:37double quotation. Okay. Uh because

23:07:40database uh URL is a sensitive

23:07:42information. If you are give quotation

23:07:44sometimes it will also consider as a

23:07:45quotation uh as this u as this URL.

23:07:49Okay. So that's why I'm not giving any

23:07:50kinds of quotation. Perfect. So we have

23:07:52successfully copied the gro grapi key

23:07:55and uh inside gro you will be able to

23:07:57see different different models are

23:07:58available. Let me show you if I go to

23:08:01the dashboard

23:08:04I think playground and here you have

23:08:06different different model. So here I'll

23:08:08be using meta llama model. Okay. You can

23:08:11also use any other model. It's

23:08:12completely up to you. Then the next

23:08:14thing guys I need my aviation stack API

23:08:18key. Okay. So let's search for aviation

23:08:20stack API key. You can simply search on

23:08:23Google aviation stack API key. So this

23:08:26is the first website. Just go to the

23:08:28website.

23:08:30Okay. So this is the website guys. Now

23:08:33here you will see one option get free

23:08:35API key. But for this you have to sign

23:08:36up. Okay. Sign up in their account. So I

23:08:39already have the account. I'll try to

23:08:40login.

23:08:42Let's give my email and password

23:08:45and login.

23:08:50Okay. So I've lo I've logged in. Now

23:08:52here you have the API key. Okay. Just

23:08:53try to copy this API key. Uh this is the

23:08:56API key as you can see. Just try to copy

23:08:59and you paste it here.

23:09:03Okay. This is my aation stack API key.

23:09:05So we need this aation stack API key to

23:09:07get the realtime flight information.

23:09:09Okay. Uh so as you can see this is the

23:09:13interface

23:09:18so free realtime flight status and

23:09:20global aviation data API. Okay. This

23:09:22provides flight tracker airport

23:09:25uh timetable data web service trusted by

23:09:28uh 5,000 plus of smart test company.

23:09:31Okay fine. Now the next thing I need

23:09:34which is uh table API key. Okay. For

23:09:37realtime source operation I think you

23:09:38saw the diagram right? So I have already

23:09:41collected my aviation stack API key and

23:09:43gro API key. Okay, for the large

23:09:45language model provider. Now for

23:09:46realtime source operation I need tably

23:09:48API key. Now let's collect this tably

23:09:50API key. So for this on Google just try

23:09:52to search for tably API key. Go to the

23:09:55tabi

23:10:00and make sure you login with your

23:10:02account.

23:10:04Okay. Now here you have the API key.

23:10:06Okay. So previously I already have some

23:10:08API key. Maybe I can collect or maybe I

23:10:11can create a new one. So let me delete

23:10:13some of the API key.

23:10:19I'll create a new one. I'm going to name

23:10:21it name it as let's say

23:10:24my project name.

23:10:29Now simply create the API key.

23:10:33Okay. Now copy this one and add inside

23:10:37your environment variable

23:10:41H. Now [clears throat] last thing I need

23:10:43my Langismith API key for the tracing.

23:10:46So we'll be using Langismith platform.

23:10:47So you can search for

23:10:48smith.langchen.com.

23:10:50So this is the langismith platform. So

23:10:52if you don't have account guys please

23:10:54try to create one account. Uh so I

23:10:56already logged in with my account. Okay.

23:10:59But for you it will look like that.

23:11:01Okay. So once you have done that uh you

23:11:04have to collect the API key. So left

23:11:07hand side you will see one option called

23:11:08settings. Now here is the API key

23:11:11section. Okay. Just create one API key.

23:11:14So I'll create one API key here.

23:11:20You can give the name.

23:11:30Okay. Just keep it as it is.

23:11:33Now expiration date you can give it as

23:11:36never and create the API key. Now copy

23:11:39this API key and mention it here.

23:11:44Okay. And give the name of the

23:11:47langismith project. I have given uh trip

23:11:49AI. So it will create this project

23:11:51inside that you will perform all the

23:11:52tracing. Okay. So yes uh that's how we

23:11:54have collected all of the API key

23:11:56whichever we needed here. Now uh we what

23:11:59we'll do guys, we'll just try to define

23:12:01the folder structure. Then we'll try to

23:12:03um implement the component one by one.

23:12:08So guys, now let's try to define our

23:12:10folder structure.

23:12:12So first of all here uh what I'm going

23:12:14to do, I'm going to create a folder. I'm

23:12:17going to name it as tools. So inside

23:12:18that I'm going to create all of my tools

23:12:21I need uh for this development. So I

23:12:23think you know I need some tools like uh

23:12:25these aviation stack tools. So this

23:12:28function I'll be writing separately. So

23:12:29it will get the realtime flight

23:12:31informations. Then for hotel agents I

23:12:33need tabby right. So tab will do the

23:12:35realtime source operation. It will get

23:12:37the uh different different uh

23:12:39information let information. For this I

23:12:41will be creating another function. Okay.

23:12:43So that's how I need separate separate

23:12:44tools and this thing I'll try to define

23:12:46inside my tools. So let's uh create some

23:12:48file inside that. So first of all I'm

23:12:50going to

23:12:53define a constructor

23:12:57init_.py.

23:12:59Now inside that let's create a file. I'm

23:13:02going to name it as flight 2.py

23:13:12and I'm going to create another file.

23:13:13I'm going to name it as tabulator.py.

23:13:27Okay. Yeah. Now, uh I need another

23:13:34um

23:13:37another files here.

23:13:42I'm going to name it as back end

23:13:51dotpy.

23:13:53Then I'm going to create another file

23:13:55called app.py.

23:13:57So this is going to be my endpoint.

23:13:59Okay. And uh I'm going to create another

23:14:02folder called templates. So inside that

23:14:05I'll write try to write my front end

23:14:07codes that means HTML codes. write

23:14:10templates inside that I'm going to

23:14:12create a file called index

23:14:14dot HTML. So here we'll try to write all

23:14:17of the HTML code because I told you

23:14:19we'll be using HTML CSS JavaScript with

23:14:22the first API and first API needs this

23:14:24template folder and this uh HTML file

23:14:27and whatever CSS and um uh JavaScript

23:14:30file uh I'll be writing it should be

23:14:32available inside static folder

23:14:35okay static folder inside that I'm going

23:14:37to create two more file one is style

23:14:43dot CSS other this uh script.js.

23:14:56Okay. And if you don't know about HTML,

23:14:58CSS, JavaScript, no need to worry. Uh

23:15:00simply you can take the help from chart

23:15:02GPT and you can create this at the user

23:15:04interface for you. Okay. So yes, these

23:15:06are my folders and file I need for this

23:15:09development. Now let me close this at

23:15:11the one by one.

23:15:17Now let me commit the changes on my

23:15:19GitHub. So simply I'll tell folder

23:15:24structure

23:15:26addit.

23:15:38Now if I go to my GitHub refresh

23:15:41see all of the folder structures are

23:15:43available. Okay. So later on I also need

23:15:46dockard file. Uh I will use that

23:15:47whenever I'll do the deployment. Okay.

23:15:49As of now it's completely fine. Now

23:15:51first of all uh what I can do guys?

23:15:53First of all let's say um here

23:15:57I'm going to define the tool. Okay.

23:15:59First of all let's write this tably

23:16:01tool.

23:16:07H so I already installed the uh

23:16:10environment and the environment name is

23:16:15travel right I think I created travel

23:16:17I'll select this environment okay now

23:16:18let's import some necessary package so

23:16:20I'll import tavly

23:16:23import

23:16:25tavi client okay then I need operating

23:16:28system

23:16:30then I need so from

23:16:34env import

23:16:36load 4 DNB done. Now I'll try to load my

23:16:39environment variable

23:16:42H then let's create a table client first

23:16:44of all. So client

23:16:47is equal to table client.

23:16:52So first of all inside that you have to

23:16:54pass the API key. So why do you have the

23:16:56API key? API key is available inside my

23:16:58environment. I'll just write west dot

23:17:00get env. Okay. get

23:17:04uh

23:17:06env.

23:17:08And what is the name of my key?

23:17:12The key name is

23:17:15Table API key. I'll copy this and paste

23:17:18it here.

23:17:24So this is going to be uh this is going

23:17:26going to give me the client. Okay. So

23:17:28after that here we'll just try to write

23:17:30a function. So div tab search

23:17:39inside that uh it will take a query that

23:17:41means the search query.

23:17:45Okay. And uh it will search over the

23:17:49internet. So for this I'll just try to

23:17:51write response

23:17:53is equal to client

23:17:56dot search. Okay. And inside search I

23:17:59will give my query

23:18:02query is equal to my query and there is

23:18:05another parameter you have to give

23:18:07called max result. Okay that means how

23:18:08many maximum search result you want. So

23:18:11I need five results. Okay five search

23:18:13results I need.

23:18:15Then then whatever results I'll try to

23:18:17get guys I'll try to uh I'll just try to

23:18:20do some refinement operation that means

23:18:22it will also give me some uh some kinds

23:18:24of metadata but I don't need the

23:18:26metadata. I only need the content,

23:18:28right? And to filter out, I have written

23:18:30this code.

23:18:36Let me show you.

23:18:39First of all, let's define the result.

23:18:46So it it is going to be empty list.

23:18:48Okay.

23:18:49So this is the filter code I have

23:18:51written. So it will run a for loop.

23:18:53Okay. So um it will run the for loop on

23:18:56the response result and it will get the

23:18:58title URL snippet. Snippet means the

23:19:01content and uh it will length the

23:19:03snippet if the snippet it is more than

23:19:06300 words. So what I'm going to do I'm

23:19:08going to split it and I'm going to

23:19:11append in my result uh result list.

23:19:13Okay, that means I'm only taking the

23:19:16content uh from my source result instead

23:19:18of some metadata. Okay. So yeah, I think

23:19:22um

23:19:24[clears throat] it's done. Uh even you

23:19:26can also uh I mean remove this if you

23:19:28don't want. So this thing I have added

23:19:30just to keep only the first 300

23:19:32character to avoid wall of text. Okay.

23:19:35So that's why but if you want you can uh

23:19:37take the entire snippet if you want.

23:19:39Okay. Uh it's up to you. Uh because we

23:19:42are using a free large language model

23:19:44and definitely some input output

23:19:46limitations are there. Tken limitation

23:19:47are there. So that's why I've taken like

23:19:50some um some like important first

23:19:53character instead of um I mean the last

23:19:56one but you can uh you can ignore this

23:19:59line. Okay, maybe you can directly take

23:20:01the snippet and you can add inside the

23:20:02results. Okay, this is completely up to

23:20:04you. So this is my uh tably search

23:20:06function. Okay, now let's test whether

23:20:08it's working or not. So what I can do

23:20:10maybe I can create another file here.

23:20:12I'm going to name it as test.py.

23:20:15Let's import this

23:20:18from tools

23:20:22dot tably.

23:20:25import taby source.

23:20:30Now

23:20:31let's define an object. I'm going to

23:20:34call the table s. Inside that I'm going

23:20:36to give a query. So let's say I'll give

23:20:39um best hotels

23:20:46in

23:20:48India

23:20:50and I'm going to print the response.

23:20:56Now let's execute.

23:20:58So python test.py.

23:21:04So you can see this is the information

23:21:05we are getting. Best hotels in India. So

23:21:08it is uh uh see it is referring

23:21:11different different website realtime

23:21:13website. Okay. Uh that means

23:21:15tripadvisor.com [snorts]

23:21:18and it is finding some best website uh

23:21:21hotels. Okay. Then some other YouTube

23:21:23resources also it has u referred some

23:21:26review it has uh seen right and it is

23:21:29giving you some best hotels in India.

23:21:30Okay. So that's how we are getting best

23:21:33out of all of the uh all of the let's

23:21:36say resources out there with the help of

23:21:38this tablely instead of manually

23:21:40exploring. I have the table. I can

23:21:42search like I need best things. It will

23:21:44automatically search over different

23:21:46different website, hotels. Okay. And it

23:21:48will give me those information. Okay.

23:21:50For my agents, this is the idea. See?

23:21:52Okay. It is referring that URL. That

23:21:56means this function is working

23:21:57completely fine. There is no issue with

23:21:58this function. Now, simply I'll just try

23:22:01to

23:22:03open up my code again. Yeah. Now, next

23:22:06guys, I'll be writing my flight tools.

23:22:08Okay. This uh tools I have to write. Now

23:22:10this will give you that realtime flight

23:22:11informations. Okay. So for this let's

23:22:14import some necessary library. So I need

23:22:16hovering system.

23:22:19I need regular expression.

23:22:22I need certify.

23:22:29I need

23:22:34air

23:22:37airports data. I need pi country

23:22:48then I need. So from env

23:22:52import load env.

23:22:57Okay then I'll load the environment

23:23:00variable.

23:23:02After that um see if you're using

23:23:04Windows operating system uh you might

23:23:06get a path issue. So to prevent that we

23:23:08add this two line SSL uh uh sert files

23:23:13and request key bundles. Okay you have

23:23:15to give certified dot wire. So if you're

23:23:18uh getting the path issue that time you

23:23:20can give. Okay. So I have given uh for

23:23:22this sest purpose. Then first of all I

23:23:24have to get my aviation API key. So I'll

23:23:27just write API key is equal to

23:23:35OS dot get env. Okay. And what is the

23:23:40name of that? And the name of that is

23:23:43aviation API key. Aviation stack API

23:23:45key. I'll just try to get this API key.

23:23:49So once you get the API key, you also

23:23:51need to take the origin.

23:23:56See I'm taking the origin as well.

23:23:58Default origin we mentioned Dhaka here

23:24:01but if you want you can also change it

23:24:03as per your requirement. Okay. So here

23:24:05my default origin is dhaka. If user is

23:24:06not giving any default origin it will

23:24:08take the dhaka otherwise uh it will take

23:24:10the default uh uh it will take the

23:24:12origin. Okay. From the user query then

23:24:15uh what is the base URL for aviation

23:24:17flights. So this is the base URL. You

23:24:20can visit the base URL. So here you have

23:24:23to give a API key. If you give the API

23:24:24key, this will give you the this will

23:24:26return you the aviation. Sorry, this

23:24:28will return you the flight information.

23:24:29Okay. So, we are hitting this website

23:24:31API. Okay. Now, uh first of all, I will

23:24:35load the airport's data. So, to load the

23:24:38airports data, you have to use airports

23:24:40data.load. Then you have to give I uh I

23:24:43a

23:24:46give you all the airports. Then I will

23:24:48also mention my country allias

23:24:54because sometimes uh user may pass the

23:24:57allies information right let's say user

23:24:59will give us US means USA okay that's

23:25:01how it it has all the allies name for

23:25:04all the country let's say Korea K R

23:25:06Dhaka uh D AK right I already told you

23:25:09so this is called allies so we are

23:25:11defining the allies then country many

23:25:15airport.

23:25:16So all the country main airport I'll

23:25:18just try to mention here. So these are

23:25:21the airport name. Okay. So B, DA, India,

23:25:25Dell like that. Then city main airport

23:25:32these are my city many airports. Okay we

23:25:35are defining.

23:25:38Then we'll just write a function for

23:25:40cleaning the text. So clean text. So it

23:25:43this will take the text and it will

23:25:44perform the cleaning operation. It will

23:25:45remove some stop words and all. Okay?

23:25:47And it will return return you that.

23:25:51Then I'll write another function. This

23:25:53will return you country name to code.

23:25:56Okay? If you give any text that means

23:25:57the country name, it will return you the

23:25:59country code.

23:26:01Then airports

23:26:03country matches.

23:26:05So if you're um giving give if you're

23:26:09giving any airports and country code it

23:26:11will give you the uh airports. Okay.

23:26:16Then get best airports for the country.

23:26:19For this I have written another

23:26:20function.

23:26:23Okay. So get best airport for the

23:26:25country. So you just need to give the

23:26:27country code. It will give you the best

23:26:28airport for that.

23:26:30Then uh some other things I have also

23:26:32added here. So this is like more robust

23:26:35code I have written. Um

23:26:39if you see over the uh internet right

23:26:43and if you see this uh aviation stack uh

23:26:46API key code uh you will see different

23:26:47different codes are available over the

23:26:49internet people are using to get the

23:26:51realtime information realtime uh flight

23:26:54information with respect to all the

23:26:55country. Okay. So I utilize the internet

23:26:57resources and I prepared the entire uh

23:27:00function for you. Okay. So this is

23:27:02giving you the location.

23:27:05Okay. Then let me show you some other

23:27:08things I have added.

23:27:20So this is the entire code guys. Okay.

23:27:31So one thing I have to import which is

23:27:34request.

23:27:39Now see this is the entire code I have

23:27:41written to get the flight informations.

23:27:43Okay. So see these are some dependency

23:27:45utility function I need to get the

23:27:47airport informations flight

23:27:49informations. See

23:27:54and some of the functionality I

23:27:55generated from chart GPT just to make it

23:27:57more robust. See here my main intention

23:27:59is to handle all of the country user is

23:28:01giving right. So that's why these are

23:28:03the things are required. So see it will

23:28:05return uh these are the thing airlines

23:28:07flight status departure. Okay terminal

23:28:10gate schedule. So these are the

23:28:12information it will return from the

23:28:14aviation stack API. So search flight

23:28:18see we are getting these are the

23:28:20informations. Okay now let's uh test

23:28:23this whether it is working or not. So

23:28:24what I can do? So this is the function

23:28:26search

23:28:28flight. This is my final function. This

23:28:29takes the query and the limit. So by

23:28:31default limit I have given 10. Okay 10

23:28:34information it will give you okay 10

23:28:36flight information it will return you.

23:28:38So let let's test it. So what I can do

23:28:41maybe I can copy this code.

23:28:48I'll go to the test. I'll comment this.

23:28:51Let's import that. So from

23:28:54uh tools

23:28:56dot flight

23:29:01tools import

23:29:07search flights. Okay. Now let's mention

23:29:10the search plate and I'll get the result

23:29:17and I'll print that.

23:29:24Let's say I'll give Nepal trip from

23:29:27Bangladesh.

23:29:29Now if I execute

23:29:39Now see this is giving you all the

23:29:41flight information from Bangladesh to

23:29:44Nepal. See all the flight information it

23:29:46is returning you. Okay. And why this is

23:29:49happening? Because I have written this

23:29:51code. This code okay this is like more

23:29:54robust code and it can handle almost all

23:29:56kinds of entry. Okay. All kinds of

23:29:58flight informations. Okay. So I took the

23:30:01help from JPT. I prepared this entire

23:30:04functionality for you. Even we can also

23:30:06write a small function but a small

23:30:08function has some limitation only if you

23:30:10hit the aviation stack API key that time

23:30:12uh sometimes uh if you are uh giving the

23:30:15wrong let's say location name that times

23:30:18it will uh return you none. Okay. So to

23:30:21handle this kinds of scenario because

23:30:23user can give any anything right in the

23:30:25chat interface they can sometimes uh

23:30:28let's say give the wrong input okay uh

23:30:31of the country that time it can also

23:30:33handle this kinds of scenario okay

23:30:34that's why I have written this code now

23:30:37you can ask me why I'm not using tools

23:30:39decorator here whenever I'm writing the

23:30:41tools um see here I'm not going to use

23:30:45it as a um as a like custom tool instead

23:30:49of Right? I'll be using it inside my

23:30:52agent. Okay, I'll tell you this part how

23:30:54to do that. That's why I'm not using any

23:30:55kinds of tool functionality from langen.

23:30:57Okay, I'll tell you. So yes, uh my table

23:31:01and flight tools functionality are added

23:31:03and this is completely working fine. We

23:31:05have already tested. Now we'll start the

23:31:08uh agent workflow. Okay, but before that

23:31:10let me commit the changes. So here I'll

23:31:12just write flight

23:31:18and

23:31:20davi

23:31:23tools

23:31:25edit.

23:31:34Now go to uh GitHub refresh.

23:31:38This is available. Okay.

23:31:41All right. Now let's work on the um

23:31:44agentic workflow part. That means right

23:31:47now my tools are ready. Okay. Uh all the

23:31:49tools whatever we'll be using aviation

23:31:51stack and tab these are ready. Okay.

23:31:54Then I now I'll be working on the agent

23:31:56part. Okay. We'll try to define all the

23:31:57agents one by one and we'll be creating

23:31:59the langraph workflow. Once all of the

23:32:02agent uh implementation is complete then

23:32:05we'll um also uh define the uh state.

23:32:10Okay. And this state will try to save

23:32:12inside my post SQL database. Okay. So

23:32:16yeah, this is the entire plan. Now let's

23:32:18try to work on the um agent workflow.

23:32:21For this, I'm going to open up my

23:32:22backend.py.

23:32:25And here I'll just try to write all of

23:32:27my code.

23:32:30H. So first of all here, let's import

23:32:32all the necessary library.

23:32:36I need operating system

23:32:39again. I need certify just to prevent

23:32:42that path issue. And I need as well

23:32:53load env. Okay. So I'll load my

23:32:56environment variable

23:32:58and uh this is the code I need to

23:33:02prevent that path issue. Okay. Then I

23:33:05need some other libraries as well. Let

23:33:08me show you. Um these are the libraries

23:33:11I need.

23:33:14So I need uh this typing type dict and

23:33:17why I need I think you know to define

23:33:19the state okay of the graph. then

23:33:21operator I need because here we'll be

23:33:24using the reducer concept because all of

23:33:26the conversation uh we are doing right

23:33:28let's say I'm giving an input my my uh

23:33:32agent is giving a output right and this

23:33:34output I don't want to replace with the

23:33:36previous one I have to add uh add it

23:33:39like a list okay and for this I I can

23:33:42use reducer concept okay I think you

23:33:43know we have already studied about this

23:33:45thing inside our course right inside my

23:33:48aenti course I already told you about

23:33:50that if you haven't checked that please

23:33:51try to check then UI ID I need just to

23:33:54define a shon trade I think you know uh

23:33:58in persistence memory we have to give a

23:34:00trade right trade id so every times uh

23:34:02we can generate a new trades okay for

23:34:04the user then uh this is for the

23:34:06postgress okay database uh then uh we

23:34:09are also importing this uh row uh dict

23:34:11row okay for the postgress database then

23:34:14uh from lang graph we are importing

23:34:15state graph start and end and this is

23:34:17the checkp pointer so from lang graph

23:34:19checkpoint post case we're importing

23:34:21postgress s ser s ser s ser s ser s ser

23:34:22s ser s ser s ser s ser s server okay so

23:34:23we'll try to save my checkpoint in my

23:34:24postgress server apart from that I also

23:34:27need to import these are the libraries

23:34:30like from langen uh messages I need any

23:34:33message human message AI message system

23:34:35message then from grock

23:34:39lang gro I need chat gro because we are

23:34:41using grock API provider to access the

23:34:43large language model and the tools we

23:34:46have created so from tools

23:34:50dot tab

23:34:53I'll import my

23:34:56table search and from tools

23:35:01dot flight tools I'll import the search

23:35:05flight

23:35:06okay these two things I'll try to import

23:35:08okay so yeah these are my imports uh I

23:35:11need as of now first of all here what

23:35:13I'm going to do I'm going to um I'm

23:35:17going going to

23:35:19define a function. Okay. So this

23:35:20function what it returns it returns the

23:35:22database URL. That means I think you

23:35:25remember let me show you. So let me

23:35:27close these are the files.

23:35:30So I think you remember in the viewb we

23:35:33have mentioned the database URL. Okay.

23:35:34So this is the database URL. So this

23:35:36database URL I have to return. Okay just

23:35:39to connect with my Postgress SQL

23:35:41database server. Okay. So for this I'll

23:35:43define a function. So see this is the

23:35:45function only you just need to do a

23:35:47slight modification here which is that

23:35:50at the last okay at the last of this URL

23:35:52you will be adding this SSL mode is

23:35:55equal to required that means if you if

23:35:57this is your database right so here we

23:35:59are adding this line we are adding this

23:36:02line we are adding

23:36:04this

23:36:06this thing okay at the last

23:36:12this thing at the last we'll be adding

23:36:14Okay, this is required. Why this is

23:36:16required? Because here we will be um

23:36:19we'll be connecting with my remote

23:36:21Postgress server, right? And uh for

23:36:24remote postgress server, this is

23:36:25required. So that's why we are checking.

23:36:27First of all, we are getting the

23:36:28database URL. Then we are checking if

23:36:30not database URL, I'll raise the

23:36:32exception database URL is missing.

23:36:34Otherwise, I'll try to check if SSL mode

23:36:36not in database URL, I'll just try to

23:36:38add it and return the database URL.

23:36:40Okay. Now how this uh this will uh look

23:36:43like? So let me show you. So maybe I can

23:36:46call this function. So URL is equal to

23:36:50database URL. So I'll print the URL

23:36:54right now.

23:37:03So I'll

23:37:05come here Python

23:37:08app.py Py

23:37:12okay sorry it's back end.py Pi sorry my

23:37:15mistake so python

23:37:18backend.py apply

23:37:22now see this is what we are getting this

23:37:23is the entire URL add the last see it is

23:37:26adding this this thing okay it is it

23:37:28will give you this uh question mark then

23:37:30this SSL mode is equal to required okay

23:37:33this thing it should add then I will be

23:37:35able to connect with my postgress remote

23:37:38server okay which is running on red okay

23:37:40I hope you get it that's why we are

23:37:41giving this function

23:37:44yeah so now let's delete this code it's

23:37:47not required Okay. Now guys, uh we'll

23:37:50try to get some other things like my

23:37:59let me show you

23:38:05like my Gro

23:38:08Gro API key.

23:38:12So we are loading the GRO API key. Okay.

23:38:14From the environment variable. Then here

23:38:16we'll just try to write a condition

23:38:19if not grock API key found it will raise

23:38:21exception. Okay. Now we'll try to define

23:38:23the large language model.

23:38:28So here we are defining the large

23:38:29language model. As you can see we are

23:38:30using chat gro and model is equal to I'm

23:38:33using llama 3.37 billion versatile

23:38:36model. Okay, this is available on the

23:38:39um rock.

23:38:46See this one. Okay, this model we are

23:38:48using. Okay, now you can use any model

23:38:51only. You just need to give the model

23:38:52ID. Okay, just try to check here. It has

23:38:55the model ID. Just copy this model ID

23:38:57and paste it here. It will use that

23:38:59model and we are giving the um API key.

23:39:03Then we have to define the state. Okay,

23:39:05my

23:39:07graph state.

23:39:09So this is the state I have prepared

23:39:11guys and I think you know what is a

23:39:13state and how to define the state each

23:39:14and everything I have completed in my

23:39:16course. Please try to check guys. Okay.

23:39:17So I named it as table state and

23:39:19inherited with the type dict first of

23:39:21all the message that means you can match

23:39:23with here message okay whatever message

23:39:25uh user is giving I'll try to store here

23:39:27but this should be reducer object. Okay

23:39:30that means we are doing operation dot

23:39:32add that means every time it will add

23:39:33add that message. Okay, instead of

23:39:34replacing then user query whatever query

23:39:37user is passing I'll write save in the

23:39:39user query then flight result hotel

23:39:41result uh then itinary uh result and one

23:39:44additional things I have provided here

23:39:46which is llm calls that means I want to

23:39:48see how many times llm calls we are

23:39:50doing here that means we'll do the lm

23:39:52count as well this thing I also stored

23:39:54inside my state memory okay that is my

23:39:57shared memory now first of all I'll

23:39:59define my flight agent okay the first

23:40:01agent let's define the first agent So

23:40:04this is my first agent. Flight agent.

23:40:09Okay. So I named it as a flight agent.

23:40:10It will take this state. Okay. As a

23:40:12shared memory. Then uh first of all I'm

23:40:15taking the user query from this state.

23:40:16And we are doing the flight search

23:40:18operation with the help of this search

23:40:20flight function we have written inside

23:40:21my flight tools. Okay. That is why I'm

23:40:23not using this function as a tool custom

23:40:26tool. Instead of that I'm using inside

23:40:28my agent. Okay. I think you remember uh

23:40:30I think you get it right. Why I'm not

23:40:32using custom function? Yeah. So I'm

23:40:35using directly inside my agent. So it is

23:40:37doing the search operation. Uh it will

23:40:39get the flight information and I'm

23:40:41returning the flight information as a

23:40:42result and AI message. Okay. The flight

23:40:45result fetched. Then I'm also doing the

23:40:47LM count. That means uh initially my LLM

23:40:50call should be zero. Okay. So I'm just

23:40:53uh getting that particular data and I'm

23:40:55doing the plus one add operation. That

23:40:58means if initially it was zero it will

23:41:00add the plus one that means one LM call

23:41:02I have done that's how many time LLM

23:41:05call I will try to do I'll just try to

23:41:06update this LM calls okay done so this

23:41:09is my first agent we have prepared now

23:41:11let me define the second agent which is

23:41:12nothing but hotel agent okay now let's

23:41:14define the hotel agent now what hotel

23:41:16agent do it will use the tabularly

23:41:18search and it will get the hotel

23:41:20informations see this is my next agent

23:41:22which is hotel agent so again it will

23:41:24take the state and this is the query

23:41:26best hotels for user query that means if

23:41:29user is giving let's say I want to visit

23:41:32uh Japan from Bangladesh so Japan best

23:41:35hotel it will try to find right and for

23:41:37this we're using tably search

23:41:38functionality so this is the tab search

23:41:40functionality it will found best hotels

23:41:42okay from the internet and it will

23:41:45return it here then I'm returning this

23:41:46hotel result as well as the AI message

23:41:48hotel information fetched and again we

23:41:50are updating the lm calls with plus one

23:41:53okay I think you get it so this is my

23:41:55second agent now I'll try to define in

23:41:57my third agent which is itinonary agent.

23:42:00Okay. So basically this will uh do the

23:42:02uh plan it will basically

23:42:05uh create the places to visit activities

23:42:07all of this thing right. So here what

23:42:09I'm going to do I'm going to utilize the

23:42:11large language model here because

23:42:12without large language model I can't

23:42:14generate the plan right so that's why I

23:42:16have to use the large language model. So

23:42:17this is my

23:42:21uh next agent.

23:42:23Okay inside back end.py I have to write

23:42:26this is my uh itinary agent. Okay, as

23:42:29you can see itinary agents this is

23:42:31taking the state and this is the prompt

23:42:33I'm defining. So create a complete

23:42:34travel itinary uh user query. This is

23:42:37the user query. This is the flight

23:42:38result. This is the hotel information.

23:42:40Okay. Make the itinary a practical

23:42:42budget hour and easy to follow. Okay.

23:42:45Now here we are ining the LLM. The LM we

23:42:48have defined. I think remember this is

23:42:49the LM we invoking the LM with this

23:42:52prompt.

23:42:54We are giving the system message you are

23:42:56expert table planner and this is the

23:42:57human message we are giving as a prompt.

23:43:00Okay. Then after that we are returning

23:43:01the itinary response message as well as

23:43:04the LLM call we are also updating. Okay.

23:43:07I hope you get it. So that's how we are

23:43:08completing the third agent which is

23:43:10itinonary agents. Now we'll be creating

23:43:12the final agents which is final response

23:43:14agents. That means it will take all of

23:43:15the results and it will combine

23:43:17everything. It will generate a final

23:43:19response for me. Okay. So let's try

23:43:20write it here. Uh so this is the result

23:43:26for final response.

23:43:36So this is our final agent. It will take

23:43:38this state again and this is the final

23:43:40prompt. Generate the final trial

23:43:42response for the user. This is the user

23:43:43query, flight information, hotel

23:43:45information and this is the uh itinary

23:43:48plan. Format the final answer

23:43:50beautifully using these sections. That

23:43:52means it will have the trip summary,

23:43:54flight information, hotel suggestion,

23:43:55daybyday, itinary, estimated budget,

23:43:57final recommendation and some important

23:43:59note as well. Okay. So yeah, this is my

23:44:02entire prompt and we are again booking

23:44:04the LLM. We are giving the system

23:44:06message. You're a professional AI travel

23:44:07booking assistant and this is the human

23:44:09prompt you're giving and whatever

23:44:10response I'm getting, I'm returning as a

23:44:12response and I'm updating my LM call.

23:44:14Okay, that's how we have completed four

23:44:17agents implementation. Okay, now we'll

23:44:19try to build the graph. So in like graph

23:44:21we have to define the graph. Let's try

23:44:23to define the graph right now. So we'll

23:44:26build the graph. So to build the graph

23:44:28first of all I have defined my state

23:44:30graph. I passed my state and this is

23:44:32going to be my graph. Now we'll try to

23:44:34add all of the nodes one by one. First

23:44:36of all I will add my flight agent then

23:44:39hotel agent then itinerary agent then

23:44:41final respond agents. All the agents

23:44:43I'll try to add one by one.

23:44:47So these are my agents. Okay, I'm adding

23:44:49the nodes. Flight agent, flight agent,

23:44:51hotel agent, hotel agent, itinary

23:44:53agents, itinary agents, flight agents,

23:44:55flight agents, sorry, final agent, final

23:44:57agents. I have added all of the agent

23:44:59node. Now I have to do the age

23:45:01connection. Okay, that means flight

23:45:03agents would be connected to the hotel

23:45:04agent, hotel agent would be connected to

23:45:06the itinary agents, final agents would

23:45:08be connected to the final response

23:45:09agents. Okay, that is the connection we

23:45:11have to build right now. So, let me show

23:45:13you the connection.

23:45:15So, this is the connection. So, you can

23:45:17see start uh start to flight agents.

23:45:20Okay. Then uh flight agents to hotel

23:45:23agents. Flight agent to hotel agents.

23:45:26Then hotel agents to itinary agents.

23:45:28Hotel agents to itinary agents. Okay.

23:45:29Then itary agents to final response

23:45:31agent to final response agents and final

23:45:33respon agents to end. Okay. So this is

23:45:35the connection we had we have done. Now

23:45:38we have to define the postgrace

23:45:41checkpointer. So I think remember we

23:45:43already written a function called

23:45:45database URL. So basically this returns

23:45:47the database URL. Okay. And we are um

23:45:50storing the URL inside a variable called

23:45:53database URL. Now I'll try to do the

23:45:56connection.

23:45:58So we are using uh psyg.

23:46:03We are giving the database URL. Then

23:46:05auto commit is equal to true and row

23:46:07factory is equal to dro. Okay, these are

23:46:08the parameter I have to pass and it will

23:46:10give you the connection and this

23:46:12connection I have to pass inside my

23:46:14checkpointer.

23:46:16So postgress saver I think remember we

23:46:18imported from checkpo pointer here from

23:46:21lang gap checkpointter postgate

23:46:22postgress saver inside that we have to

23:46:24pass this connection and this will

23:46:26return the checkpoint and we have to do

23:46:28the checkpointter uh checkpointer dot

23:46:30setup once it is done then I'll try to

23:46:32pass this checkp pointer inside my graph

23:46:35okay we'll try to compile so travel

23:46:37graph is equal to graph graph dot

23:46:40compile and we are giving the checkpoint

23:46:42now all of this state would be saved

23:46:43inside my memory Okay.

23:46:47Then uh once everything is done, now let

23:46:48me write the function

23:46:52for my first API.

23:46:56So this is the function final function.

23:47:00So run travel agent. So this takes the

23:47:02run user input and the trade ID. Okay.

23:47:05So first of all, if user is uh not given

23:47:07trade ID, so what I'm doing, I'm just uh

23:47:10generating a unique trade ID and uh we

23:47:13are preparing the configuration. Okay,

23:47:14configurable inside trade ID. I'm

23:47:16passing my trade ID. Then I'm invoking

23:47:18my travel graph. Okay, so here we're

23:47:20doing the invoking. So we are giving the

23:47:22human message user input and initially

23:47:25my flight result, hotel result, itinary

23:47:27lm cost would be empty. That's why I'm

23:47:30passing as a empty. Then I'm passing the

23:47:31configuration. Whatever result I'm

23:47:33getting, I'm just checking the content

23:47:35and I'm returning the response. That

23:47:36means my trade ID, answer, flight

23:47:38result, hotel result, it lm cost, each

23:47:40and everything I'm just returning on my

23:47:43front end. Okay. And in from here I'll

23:47:46try to get the informations and uh what

23:47:49I can do I'll just try to show in my

23:47:51front end. Okay. The front end will try

23:47:53to create. Now let me test whether it's

23:47:54working or not. So what I can do I can

23:47:56maybe run this travel agent test. I'll

23:48:00copy this and open my test.py.

23:48:03Let me import here. So from back end

23:48:08uh import

23:48:11run agent. Okay. And then again I'll try

23:48:14to comment out.

23:48:18So

23:48:20response is equal [clears throat] to

23:48:24run table agent

23:48:31and I'll print the response

23:48:38even maybe what I can do I can instead

23:48:40of writing like that I can write a full

23:48:42loop. Okay let me show you

23:48:45I can write a for loop like that.

23:48:54So here I'm taking a user input uh from

23:48:56the user and um

23:49:01um okay instead of for loop maybe I can

23:49:02directly run okay then I'm running the

23:49:04travel agent this uh function and I'm

23:49:07passing the user input and trade ID uh

23:49:11just for testing purpose I've given test

23:49:12user and whatever response I'm getting

23:49:14I'm just u printing the response. Okay,

23:49:16now let me test. So I'll just try to

23:49:19execute.

23:49:35So I'll just run python backend.py.

23:49:39Not backend.py, sorry. It should be

23:49:43um it should be test.py. Pi. Okay, let's

23:49:47execute. Huh? So, Python test.py.

23:49:54Now, it is asking the user input. So,

23:49:56let's give a input.

23:50:12So, this is my user input. uh plan a

23:50:15complete 7 days India trip from

23:50:17Bangladesh including flights, hotel, uh

23:50:20sightseeing under two lakhs. Now let's

23:50:22see

23:50:33now see this is the entire plan I'm

23:50:35getting. So final response, the summary,

23:50:38flight information, hotel suggestions,

23:50:41dayby-day itinerary, then uh estimated

23:50:44budget, final recommendation. Amazing.

23:50:47Okay, it's working fine. Now we have to

23:50:50add uh add this inside my user

23:50:52interface. Okay, right now my back end

23:50:54is ready. Okay, we are able to test it

23:50:56perfectly. Now we'll be creating the

23:50:59uh front end user interface with the

23:51:01help of fast API and we'll be writing

23:51:03the uh fast API uh fast API route. Okay.

23:51:07Uh backend route and so that my front

23:51:09end can communicate with my um like back

23:51:12end. Okay. So for this we'll be using

23:51:14fast API service and fast API is a

23:51:16production grade um uh web framework.

23:51:19Okay. Especially API creation framework

23:51:20you can use. Okay. So let's try to

23:51:24implement my first API code guys right

23:51:26now.

23:51:29And one more thing I want to show you. I

23:51:31already executed my uh workflow and it

23:51:34has executed successfully. I think we

23:51:36have seen that. Now let me see whether

23:51:38it is able to store the checkpoint in my

23:51:40database or not. Now I'll open up my PG

23:51:42admin. And now if I refresh on my table

23:51:45right now if I go inside the table

23:51:48you'll see that all of the checkpoint

23:51:50has created. Okay. Now here is a

23:51:51checkpoint uh checkpointter table is

23:51:53there. Now just try to right click and

23:51:56there's a option called view edit data.

23:51:58Now just click on all rows. Okay. If you

23:52:00do that you'll be able to see that all

23:52:02of the checkpoint it has saved here.

23:52:08See all of the checkpoint it has saved.

23:52:10Okay. This is the state memory and it

23:52:13has also traced on my langid platform.

23:52:16Let me open my lang.

23:52:20done. If I go to my langu so trip AI if

23:52:25I go inside that now see this is the

23:52:27langismith execution even you can see

23:52:29the trade wise okay the test user uh

23:52:32trade we have given initially and this

23:52:34is the execution

23:52:36okay this is the execution it has done

23:52:38okay see amazing right now let's try to

23:52:41add my first API code so for this uh

23:52:44I'll open up my app.py I

23:52:48and here let's define all of the code

23:52:51and I'm expecting guys you are already

23:52:52familiar with fast API here uh first API

23:52:55knowledge is required.

23:52:59So here what I'm going to do I'm going

23:53:01to import some necessary libraries.

23:53:05Yeah. So I'm importing path from path

23:53:07lip pack uvicon from fast API. I'm

23:53:10importing fast API request first API.

23:53:12I'm importing HTML response, JSON

23:53:14response, static file, ginger templates

23:53:16and base model from pientic. So here I

23:53:19need piic just to define my um data

23:53:22structure. I think I already completed

23:53:24pientic videos as well on my um on my uh

23:53:28agenti course and why pyic is required.

23:53:30I already told you please guys to go

23:53:32through that session. Then I need

23:53:34another functionality which is my uh

23:53:37this function run travel agent from my

23:53:39back end. Let me import it as well.

23:53:44So from back end

23:53:48import

23:53:52run agent. Okay. First of all let's

23:53:54create a base directory.

23:53:58Then I'll define my first API app.

23:54:02That's how we can define the first API

23:54:03app. So I have named it as AI travel

23:54:05planning system. Or maybe I can give

23:54:07this name trip AI.

23:54:17Okay, tripate AI.

23:54:20So this is a lang multi- aent travel

23:54:23planner with fast API front end. And

23:54:25this is the version we have given. Okay.

23:54:27Now first of all you have to mount your

23:54:29static folder as well as the template

23:54:32folder. So let's mount

23:54:34because inside static you have

23:54:36JavaScript and CSS and template you have

23:54:38the HTML. So we are doing the app

23:54:39domount static and this is my static

23:54:42fold file uh file directories okay we

23:54:44are giving it and similar wise we have

23:54:46[snorts] to give the templates as well.

23:54:48So you can see ginger templates I am

23:54:50passing my directory which is templates

23:54:52inside that I have my HTML content. Now

23:54:54what I have done guys I have already uh

23:54:57generated HTML CSS code from chart GPT

23:54:59for this uh project. See if you don't

23:55:01know about HTML CSS design it's

23:55:03completely fine that is there would be a

23:55:05separate front-end developer for that.

23:55:07uh they will be using some other front-

23:55:09end framework like NexJS, react okay

23:55:11with the help of that they will be

23:55:12creating the front end server for you

23:55:14and then they will be connecting with

23:55:15your first API back end right so if you

23:55:18don't know about HTML CSS completely

23:55:20fine just try to go through chat GPT and

23:55:22just tell I need this kinds of interface

23:55:24okay just give me the HTML CSS and

23:55:26JavaScript code charge GPT will give you

23:55:28and you just need to copy paste here and

23:55:30you you need to modify with respect to

23:55:31your requirement so I've done the same

23:55:33thing so this is my HTML code I

23:55:35generated from chart GPT

23:55:37uh for my user interface and then I

23:55:40modify it okay as per my requirement. So

23:55:43here title wise I can give my name trip

23:55:46materi.

23:55:56So that's how you can uh modify the data

23:55:59data property with respect to your

23:56:01requirement. Okay. Whatever data you

23:56:02have inside HTML content just try to

23:56:04change. So this is a simple code I have

23:56:06generated from charge JPT and it needs a

23:56:08CSS okay just to load the design. So CSS

23:56:11style. So I'll again try to

23:56:15give this CSS design here in my CSS file

23:56:19static CSS style CSS file.

23:56:22So this is the CSS codes design. Okay. I

23:56:25have added

23:56:27okay again I generated from chat GPT.

23:56:30Then just to communicate with my front

23:56:32end uh the just to communicate with my

23:56:34first API route I need this scriptjs. So

23:56:38again I prepared with the help of charg.

23:56:42So this is my javascript code and hit it

23:56:45hits my first API route. Okay I'll tell

23:56:48you what are the route it will hit just

23:56:50to get the data. So first of all it will

23:56:52hit my API travel. Okay, API travel

23:56:55means it will uh hit that API travel

23:56:57route and it will get the uh it will get

23:57:00the entire plan. Okay, that means

23:57:01whatever execution I showed you right

23:57:03now, these are the information it will

23:57:04try to get and it will try to show in my

23:57:06front end. Okay, this is what it is

23:57:08doing. Now, let me show you. First of

23:57:09all, let me define all the routes one by

23:57:12one. So, first of all, I'll try to

23:57:14define my

23:57:16pantic schema travel request. I'm

23:57:19inheriting with the base model and this

23:57:20has the message and trade ID. Okay. And

23:57:23this is my default route.

23:57:26This is my default route. If you visit

23:57:27my app, first of all, it will launch my

23:57:29HTML page. And this is the final

23:57:33API route.

23:57:38This is my final API route as you can

23:57:40see API/travel.

23:57:42If you hit that and again I'm using

23:57:43asynchronous, okay, asynchronous

23:57:45functionality. Why asynchronous? Because

23:57:47it will run my agent is a asynchronous

23:57:50way. Okay, that means parallel execution

23:57:52it will do. I think I already covered

23:57:54this asynchronous as well in my

23:57:55playlist. Just try to go through that.

23:57:57So asynchronous uh I'm running you can

23:57:59see travel planner it will take the uh

23:58:02information from the user that means the

23:58:04user input whatever user input will pass

23:58:05from the input box. First of all I'm

23:58:07checking if user is not available. I'm

23:58:09returning message can cannot be empty.

23:58:13Then if available I'm running my run

23:58:15travel agent that means this function.

23:58:16Okay, this function I have imported from

23:58:18back end. So this function will return

23:58:20what result okay and from the result

23:58:22we're extracting these are the content

23:58:24and we're returning okay in my front end

23:58:28and if some exception is occurring I'm

23:58:30handling the exception okay and uh some

23:58:33other route I need uh sometimes uh it

23:58:36will check the health condition of my

23:58:38first API server so for this it will hit

23:58:40this route / health and it will if

23:58:43everything is uh working fine it will

23:58:44give uh status is okay and this is

23:58:47running and some icon to load some icon

23:58:50actually you need this one okay now uh

23:58:54finally I'm going to execute my server

23:58:56with the help of uon run so app clone

23:58:59app because this is app file and my

23:59:01object is app my objective app okay then

23:59:05uh host and port number and reload is

23:59:07equal to true so these are the things

23:59:08you have to provide okay now in this uh

23:59:12javascript I'm calling this route if I

23:59:14show you if I do just ctrl f and paste

23:59:18see This is what actually I'm executing.

23:59:19So whenever user is generating the

23:59:21response, it is hitting here. Okay. And

23:59:23it is getting the information. Let me

23:59:25show you. So I'll execute my app right

23:59:27now. So python app.py.

23:59:34See this is running on local host port

23:59:36number 8,000.

23:59:38So I'll come here. Search for local host

23:59:41port number 8,000. See this is your

23:59:44application. Okay. Uh you can see this

23:59:46is your application. Now here you have

23:59:49to give the input. So let's say I'll

23:59:50give this input Dubai trip. Plan a 5

23:59:53days Dubai trip from Dhaka with flights,

23:59:55hotels and sites uh site syncs. Now if I

23:59:59see click on generate plan that time it

24:00:01will hit this route. Okay, hit this

24:00:03route and it will get all of these uh

24:00:05information. It will generate all of the

24:00:06information then it will get and show in

24:00:08the front end. Let me show you. See

24:00:12uh okay uh just terminating. Okay.

24:00:14Because my previous application is

24:00:16running. Okay. I already executed my uh

24:00:18this app previously just to show you. So

24:00:20let me first of all stop this execution.

24:00:23Okay, now it will run.

24:00:26It's running. Now refresh again. Now let

24:00:30me give this prompt and generate the

24:00:32plan.

24:00:41Now see this is the entire plan we are

24:00:44getting. Okay. in a beautiful format.

24:00:47Okay. And there is a download PDF button

24:00:50and how this is coming because of the

24:00:51front- end design we have done. Okay. So

24:00:54this work uh this work is completely uh

24:00:56responsible for front- end designer. So

24:00:59uh you just tell them okay what you

24:01:00need. So if you need this kinds of

24:01:02download PDF or if you need let's say uh

24:01:05any u download any markdown file you

24:01:08just tell them okay they will try to

24:01:09prepare for you and you can um you can

24:01:13just use that as it is. Okay. And this

24:01:15is the trade it has created. Okay. Uh

24:01:18because we haven't passed any trades.

24:01:19That's why it has created a um randomly

24:01:23generated trades. Okay. So that's how we

24:01:25can give any kinds of prompt. Right now

24:01:28let's say instead of Dubai I'll give

24:01:31maybe Thailand.

24:01:42See this is the plan for the Thailand.

24:01:44So this is the summary. This is the

24:01:46flight information. This is the hotel

24:01:48suggestions. This is the dayby-day

24:01:50itinary. Uh first day, second day, third

24:01:53day, fourth day, fifth day, sixth day, 7

24:01:55days. Okay. And estimated budget unit.

24:01:59Then final recommendation. Okay.

24:02:01Amazing. Right? Now I can easily

24:02:03download this file and I can uh I can

24:02:06store in my mobile phone. Okay. And I

24:02:08can use it anytime. So yes guys that's

24:02:11how we can implement this entire system

24:02:13and if I show you my checkpoint right

24:02:16now if I again do let's say refresh see

24:02:19all of the checkpoint would be available

24:02:22all of the conversation me would be

24:02:23available inside my postgress see okay

24:02:26now see initially I executed test user

24:02:28now this is the current user the current

24:02:31trade okay current execution and these

24:02:32are my messages now you can also see the

24:02:38um

24:02:40lang. So if I go to the lang smmith uh

24:02:43if I again refresh

24:02:46now another trade should be created. See

24:02:48this is the trade and two conversation I

24:02:50have done. Now this is the two

24:02:51conversation. Now you can see all of the

24:02:53informations. Okay. Which tools it is

24:02:55using each and everything is visible

24:02:56here. Input and output each and

24:02:58everything. Okay. So amazing guys. We

24:03:00have successfully completed our uh

24:03:02implementation and it is working fine.

24:03:05Now what I want to do guys, I want to

24:03:07deploy it over the render cloud. Okay.

24:03:10So I'll deploy this uh project on my

24:03:13render cloud. But before that let me

24:03:15commit the changes. So here I'll just

24:03:18try to

24:03:21app add it commit and see the changes.

24:03:29Okay. Now if I go to my GitHub refresh

24:03:34now see it's updated. Okay. Now it's

24:03:36ready for the deployment. Now let's do

24:03:38the deployment of this application.

24:03:44Okay. So guys for the deployment uh

24:03:46we'll be using docker. Um so let's

24:03:49create a file here. I'm going to name it

24:03:51as docker file. And inside that you have

24:03:55to mention all of the docker related

24:03:56command. And uh if you don't know about

24:03:58Docker guys u docker is a

24:04:01containerization service and this

24:04:03tutorials uh this tutorial is already

24:04:05available on my YouTube channel. Let me

24:04:07show you. So if I go to my YouTube right

24:04:10deals with BP.

24:04:12So if you go to the video section I

24:04:15already have a full MLOps course. Okay

24:04:18here if you see here uh this is the

24:04:21MLOps course. You can open it up. And

24:04:24this course already covered the docker.

24:04:27Okay.

24:04:30Yeah. So see docker for mlops. You can

24:04:32um at least go through this docker part.

24:04:34Okay. And try to master the docker. And

24:04:37if you're interested learning entire

24:04:38mlops, this is already available. This

24:04:40is around 12 hours of recording. You can

24:04:41go through that. Okay. And if you like

24:04:43the content, please try to subscribe to

24:04:44my channel. So docker is required. I'm

24:04:47expecting you already familiar with

24:04:48docker. So simply I'll try to add all of

24:04:50the docker related command here. So this

24:04:53is these are my docker related command

24:04:54guys. As you can see first of all I'm

24:04:56taking a beige image 3.11 creating

24:04:58working directory uh adding some

24:05:00environment variable then uh running

24:05:02some commands copying the requirement.xt

24:05:05file then installing the requirement.xt

24:05:07file copying all of my source code then

24:05:10uh this thing I don't need. I'll just

24:05:12try to remove

24:05:14this thing I not did. Then I have to

24:05:17expose the port. Okay, port should be uh

24:05:20port number

24:05:228,000 I think. Right, we are using port

24:05:24number 8,000. So I'll try to add port

24:05:26number 8,000 here.

24:05:29And uh we running the command hicon app

24:05:32file uh local host and port number

24:05:358,000.

24:05:37H So this is my docker file. Okay, I

24:05:39need and for this I need to create

24:05:41another file which is dot

24:05:44docker

24:05:46ignore

24:05:48and here you have to mention all of the

24:05:50uh files and folder you you want to

24:05:53ignore during docker dockerization. So

24:05:55these are the thing I'll try to ignore.

24:05:57Okay, during dockerization. So now let

24:06:00me push the changes again and what I'm

24:06:02going to do I'm going to also update the

24:06:04readmi file. Okay, I already created the

24:06:06uh Redmi file update.

24:06:11So I have added a beautiful Redmi

24:06:13content. Let me show you. So this is the

24:06:15Redmi guys I have added. So I have given

24:06:18the entire um project summary features

24:06:21ST project structure prerequisite

24:06:24environment installation running the

24:06:27endpoint. Okay. So each and everything I

24:06:29have added. So your project should have

24:06:30one beautiful readmi file guys. Okay.

24:06:32This is super important. So read me just

24:06:34try to add uh one more thing I want to

24:06:37add which is uh I will give my project

24:06:40name as it is

24:06:48now it looks good I think now it look

24:06:51[clears throat] it looks good so yeah uh

24:06:54I think we are done now let me commit

24:06:55the changes

24:06:58docker

24:07:01addit

24:07:09Now if I go to my GitHub refresh

24:07:12now see beautifully I have added the

24:07:14readme and each and everything. Okay now

24:07:16it is ready for the deployment. Now what

24:07:18I'm going to do guys I'm going to open

24:07:19up my render cloud.

24:07:31Go to the dashboard.

24:07:35Now I'll create a new web service. Okay.

24:07:40Select this public git repo and copy

24:07:43this GitHub rep. Okay.

24:07:46Copy this URL and paste it here and

24:07:49let's connect.

24:07:52Okay. See automatically it has taken and

24:07:54it is using the docker services. Okay.

24:07:57For the deployment. So everything just

24:07:59keep it as it is. No need to change

24:08:00anything. Simply just create uh select

24:08:02this free instance. Okay. So I'll select

24:08:04the free instance. But if you're doing

24:08:05like actual deployment, just try to take

24:08:07the subscription. Okay. Because free

24:08:08instance has having like very low

24:08:11configuration machine and there is some

24:08:12limitation as well. Okay. Now once

24:08:14everything is fine, you have to add the

24:08:15environment variable. Okay. So what I

24:08:17can do maybe I can add it from myv file.

24:08:21So simply I can copy

24:08:23myv as it is.

24:08:30Okay. And add the variables.

24:08:33Now it has added my GO API key.

24:08:39I can delete this one. Grow API key.

24:08:42This is my GO API key. This is my

24:08:44aviation. This is my default origin.

24:08:47This is my table. This is my database

24:08:49URL. Now this database URL, you have to

24:08:51give the internal database URL. Okay. So

24:08:53again I will go to my render. go to my

24:08:56postgress server

24:08:59and go below and copy this internal URL.

24:09:02Okay, this one. Copy this.

24:09:05Okay, I'll copy this and uh add it here.

24:09:14So I've given my internal one. Okay.

24:09:17Then languid tracing endpoint, languid

24:09:20API key and Langmith project name. Okay.

24:09:23So everything is fine. Now simply uh

24:09:26deploy the web service.

24:09:33Now it should take some time. First of

24:09:35all, it will build the docker image.

24:09:42So we'll wait guys. Okay. Once this uh

24:09:44this is complete, this is live, then

24:09:45we'll be able to access that

24:09:58as it is installing the requirements.

24:10:22See um installation done. Now it is

24:10:25exporting my Docker image as a layer.

24:10:52And if you want to see the AWS

24:10:54deployment guys, this is already

24:10:55available on my YouTube uh on this

24:10:58playlist you can see AWS CI/CD

24:10:59deployment. Okay, you can go through the

24:11:00CI/CD deployment. You can learn how to

24:11:02deploy as a CI/CD. Even this project

24:11:04also I have deployed as a CI/CD on AWS.

24:11:06Okay, you can refer it.

24:11:12And this is also CI/CD. If you push your

24:11:14changes, uh it can upgrade your uh

24:11:18features, okay, automatically.

24:11:21Again, I created another tutorial like

24:11:23this one. Uh render deployment. You can

24:11:25go through that.

24:11:43so guys as you can see our application

24:11:45is live now. Let's copy this URL and

24:11:47paste it here and if I hit enter so it

24:11:50should open your application. Now see

24:11:52our TripMate AI is live right now. Now

24:11:54let's uh test it. So I'll give this

24:11:58prompt. Okay. uh 7 days India trip from

24:12:01Bangladesh. Now let's generate the plan.

24:12:05Now it's generating. Let's wait.

24:12:10Now see this is the entire plan we are

24:12:12getting. Amazing. Right now it is live.

24:12:15Now you can share this with your friends

24:12:17and family. They can also access that

24:12:19and you can tell them just use my multi-

24:12:22aent right now just to prepare your

24:12:24trip. So yes guys this is all about from

24:12:26this implementation. I hope you liked

24:12:28it. Okay guys, we have successfully

24:12:30completed our uh agent AI course with

24:12:33the help of Langraph. We have learned

24:12:35each and everything whatever uh are

24:12:38required to implement this kinds of

24:12:39agentic system. Now u I have uh another

24:12:43plan guys uh actually I have designed

24:12:46some more phases okay for the future and

24:12:50this is available on my channel on DS

24:12:52with Buppy YouTube channel. So this is

24:12:54my channel guys DS with BPY. So here I

24:12:57only completed the langraph right lang

24:12:59graph agentic uh AI orchestration

24:13:01framework and uh we have implemented all

24:13:04of the AI agents with the help of

24:13:06langraph but what about the others

24:13:08framework okay there are some other

24:13:09frameworks are also available on the

24:13:11market uh like krui is there right and

24:13:14then Microsoft autogen is there N8 is

24:13:16there right so if you want to learn

24:13:18these are the framework also so you can

24:13:21subscribe to my channel because in my

24:13:23channel I'll try to publish all of the

24:13:25video related these are the framework

24:13:28like crewi we'll try to master the

24:13:30entire crewi in depth we'll also

24:13:32implement some end to end agentic AI

24:13:34application with the help of crewi we'll

24:13:36be also learning about the Microsoft

24:13:37autogen already I have Microsoft autogen

24:13:39playlist okay uh I will upload all of

24:13:42the recording related autogen okay we'll

24:13:44be also implementing some projects end

24:13:46to end projects then I'll be covering

24:13:48the no code platform as well like n okay

24:13:51this would be also available on my

24:13:52YouTube channel then uh one very

24:13:55interesting ing and important concept

24:13:56which is MCP. So this MCP I didn't cover

24:14:00in this course right uh in this my uh

24:14:02agenti with langraph course because this

24:14:05is already like a very long course we

24:14:08have recorded so far it is around uh 25

24:14:11hours of recording okay so that's why uh

24:14:13all of these uh concept like MCP autogen

24:14:17crew AI okay these are the recording

24:14:19would be available on my YouTube channel

24:14:20okay these are the video would be

24:14:21available on my YouTube channel so

24:14:23please try to refer my YouTube channel

24:14:24you can subscribe to my YouTube channel

24:14:26so I think you'll be enjoying a lot the

24:14:29future phases as well. Okay. So, we'll

24:14:31try to master the entire model context

24:14:33protocol in my YouTube channel. Then

24:14:36phase uh 10, we'll try to cover the AI

24:14:39safety and evaluation. Nowadays, if you

24:14:41are creating any kinds of agent

24:14:43application, this is super important uh

24:14:45to know like how we can add the AI

24:14:47safety evaluation pipeline inside your

24:14:49agents. Uh definitely we have to master

24:14:51the guardrails and safety. We'll try to

24:14:53see prompt injection, security tools,

24:14:55restriction, AI safety patterns. Okay,

24:14:57these are the concept we have to cover

24:14:59and everything would be available on my

24:15:00YouTube channel. Okay, that means these

24:15:02are the future phases would be available

24:15:04on my channel DS with Buppy. And if you

24:15:06want to understand, if you want to learn

24:15:08these are the concept, you just need to

24:15:10subscribe to my channel and all of the

24:15:11content would be available on my YouTube

24:15:13channel. Okay. So yes, uh if you found

24:15:15my content useful guys, please try to

24:15:17subscribe to my channel and support me.

24:15:19If you're supporting me, definitely I

24:15:21can bring this kinds of content more in

24:15:22future and uh yeah, I think uh you'll be

24:15:25learning a lot. And if you want to

24:15:27connect me, so this is my LinkedIn

24:15:29profile bulk bi. Simply you can follow

24:15:31me here. You can connect me here. And if

24:15:34you have any kinds of query, you can ask

24:15:35me. If you need any kinds of guidance,

24:15:37you just uh ping me on my l uh LinkedIn.

24:15:40Definitely I'll try to help you with

24:15:42that. So yes guys, this is all about

24:15:44from this course. I hope you enjoyed a

24:15:46lot. So thank you so much for watching

24:15:48and I will see you next time.

More from freeCodeCamp.org

Recently added transcripts

Browse the whole transcript library

This transcript was generated from the captions YouTube publishes for this video. Get the transcript of any YouTube video atfreeyoutubetranscribe.com, free, unlimited, no sign-up.