AgentKit vs LangChain: మీ AI ఏజెంట్లకు ఏ ఫ్రేమ్వర్క్ శక్తినివ్వాలి?
త్వరిత సంగ్రహం
మీరు AI ఏజెంట్లను రూపొందించడానికి AgentKit మరియు LangChain మధ్య ఎంచుకుంటుంటే, ఈ విధంగా ఆలోచించండి: LangChain అనేది అనేక డొమైన్లలో LLM అప్లికేషన్లు మరియు ఏజెంట్లను రూపొందించడానికి విస్తృతమైన, అనువైన ఫ్రేమ్వర్క్; AgentKit అనేది అభిప్రాయాత్మక నమూనాలు మరియు నిర్దిష్ట టూల్చెయిన్ల పట్ల బలమైన పక్షపాతంతో పరిమితం చేయబడిన, ఉత్పత్తి-గ్రేడ్ ఏజెంట్ల కోసం దృష్టి సారించిన, పూర్తి-స్టాక్ స్టార్టర్ కిట్. వాస్తవానికి, AgentKitలోని భాగాలు LangChain పైన నిర్మించబడ్డాయి, కాబట్టి నిర్ణయం తరచుగా పరిధి, వేగం మరియు నియంత్రణలకు సంబంధించినది, ఖచ్చితమైన రెండింటిలో ఒకటి కాదు.
మేము వాటిని ఎలా పోల్చుతాము
- ప్రతి ఒక్కటి ఏమిటి (మరియు కాదు)
- కోర్ ఆర్కిటెక్చర్ మరియు బిల్డింగ్ బ్లాక్స్
- టూల్స్, ఇంటిగ్రేషన్లు మరియు ఎకోసిస్టమ్స్
- విశ్వసనీయత, భద్రత మరియు పరిమితులు
- పనితీరు మరియు కార్యకలాపాల పరిశీలనలు
- ధర మరియు లైసెన్సింగ్ సందర్భం
- ఉత్తమంగా సరిపోయే వినియోగ సందర్భాలు మరియు నిర్ణయ మార్గదర్శకం
నేను దీనిని ఆచరణాత్మకంగా మరియు పరిష్కార-ఆధారితంగా ఉంచుతాను, కాంక్రీట్ ఉదాహరణలు మరియు చివరిలో ఒక సాధారణ నిర్ణయ ప్రవాహంతో.
LangChain అంటే ఏమిటి?
LangChain అనేది LLM యాప్లు మరియు ఏజెంట్లను రూపొందించడానికి సాధారణ-ప్రయోజన ఫ్రేమ్వర్క్. ఇది ప్రాంప్ట్లు, మోడల్లు, మెమరీ, టూల్స్ మరియు ఎగ్జిక్యూషన్ స్ట్రాటజీల కోసం సంగ్రహణలను అందిస్తుంది (ఉదా., ReAct, టూల్-కాలింగ్), మరియు గొప్ప ఇంటిగ్రేషన్ కేటలాగ్ను అందిస్తుంది. డెవలపర్లు చాట్బాట్ల నుండి స్వయంప్రతిపత్త మల్టీ-టూల్ ఏజెంట్ల వరకు LLMలు, రిట్రీవల్, వెక్టర్ స్టోర్లు, ఫంక్షన్-కాలింగ్ మరియు టూల్ యూజ్లను బలమైన అప్లికేషన్లలోకి కుట్టడానికి LangChainని ఉపయోగిస్తారు.
- విస్తృతి: మోడల్-అజ్ఞేయవాది, క్లౌడ్/వెండర్-అజ్ఞేయవాది డిజైన్
- కంపోజిబిలిటీ: చైన్స్, ఏజెంట్లు, టూల్స్, మెమరీ మాడ్యూల్స్
- ఎకోసిస్టమ్: విస్తృతమైన డాక్స్, ఉదాహరణలు, సంఘం మరియు ఇంటిగ్రేషన్లు
గమనిక: LangChain ఎకోసిస్టమ్లో అనేక ప్రత్యేకమైన “కిట్లు” మరియు టూల్ ర్యాపర్లు ఉన్నాయి (ఉదా., ఆన్-చైన్ కార్యకలాపాల కోసం CDP Agentkit టూల్కిట్), ఇది ఇతరులు నిర్మించే పునాదిగా దాని పాత్రను చూపుతుంది.
AgentKit అంటే ఏమిటి?
AgentKit అనేది పరిమితం చేయబడిన, ఉత్పత్తికి సిద్ధంగా ఉన్న ఏజెంట్లను రూపొందించడానికి పూర్తి-స్టాక్ స్టార్టర్ కిట్గా స్థానీకరించబడింది—ముఖ్యంగా అభిప్రాయాత్మక నమూనాలు, నియంత్రణలు మరియు వేగవంతమైన సమయం-విలువ అవసరమయ్యే సంస్థలకు. గమనించదగ్గ విషయం ఏమిటంటే, AgentKit కనీసం ఒక పబ్లిక్ విడుదలలో LangChain పైన నిర్మించబడింది, ఇది రెండింటి యొక్క పూరక స్వభావాన్ని నొక్కి చెబుతుంది.
- అభిప్రాయాత్మక స్టాక్: ఏజెంట్ల కోసం బ్యాటరీలు-చేర్చబడిన స్కఫోల్డింగ్
- పరిమితులు-మొదటి: సురక్షితమైన, నియంత్రిత టూల్ యూజ్ మరియు వర్క్ఫ్లోలపై నొక్కి చెప్పడం
- సంస్థాగత దృష్టి: విస్తరణ నమూనాలు, పాలన మరియు టెంప్లేట్లు
LangChain లేదా LangGraphతో నేరుగా ఏజెంట్లను నిర్మించడానికి ప్రత్యామ్నాయంగా AgentKit పరిశ్రమ సంభాషణలలో ఫ్రేమ్ చేయబడడాన్ని కూడా మీరు చూస్తారు, తరచుగా తక్కువ-స్థాయి కూర్పును దాటవేసి, ఉత్పత్తి నమూనాలతో ప్రారంభించాలనుకునే బృందాల కోసం.
ఆర్కిటెక్చర్: సంగ్రహణలు vs. స్టార్టర్ స్కఫోల్డింగ్
- సంగ్రహణలు: ప్రాంప్ట్లు, టూల్స్, రిట్రీవర్లు, మెమరీ, ఏజెంట్లు, చైన్లు
- ఎగ్జిక్యూషన్: ReAct, టూల్ కాలింగ్, ఫంక్షన్ కాలింగ్ మరియు కస్టమ్ ప్లానర్లకు మద్దతు ఇస్తుంది
- మాడ్యులారిటీ: అంతర్లీన LLMలు, వెక్టర్ DBలు, టూల్కిట్లను మార్చుకోండి
- LangGraphతో గ్రాఫ్-శైలి ఆర్కెస్ట్రేషన్ (స్టేట్ఫుల్, మల్టీ-స్టెప్ ఏజెంట్ల కోసం)
- స్కఫోల్డింగ్: నిర్దేశిత ప్రాజెక్ట్ నిర్మాణం, ఉదాహరణ ఏజెంట్లు, ఆప్స్ స్క్రిప్ట్లు
- పరిమితులు: అంతర్నిర్మిత పాలసీలు, పరిమిత చర్య స్థలాలు మరియు సురక్షిత డిఫాల్ట్లు
- LangChainపై నిర్మించబడింది (ప్రజా ఉదాహరణలలో), దాని ఏజెంట్/టూల్ సంగ్రహణలను ఉపయోగించడం
అనువాదం: LangChain మీకు లెగో బ్రిక్స్ మరియు ఒక పెద్ద భాగాల బిన్ను ఇస్తుంది; AgentKit మీకు ఉత్పత్తి-గ్రేడ్ విశ్వసనీయత కోసం ఆప్టిమైజ్ చేయబడిన నియంత్రణలు మరియు సూచనలతో దాదాపు పూర్తయిన మోడల్ను ఇస్తుంది.
టూల్స్ మరియు ఇంటిగ్రేషన్లు
- LangChain యొక్క ఎకోసిస్టమ్ దాని యొక్క అతిపెద్ద బలాలు, LLMలు, వెక్టర్ స్టోర్లు, డేటా సోర్స్లు మరియు టూల్స్లో వందలాది ఇంటిగ్రేషన్లతో ఉన్నాయి. ఉదాహరణ: ఏజెంట్లు ఆన్-చైన్ కార్యకలాపాలను నిర్వహించడానికి CDP SDKని ర్యాప్ చేసే ప్రత్యేకమైన “CDP Agentkit టూల్కిట్”—ప్రత్యేక డొమైన్ల కోసం LangChain ఒక ఇంటిగ్రేషన్ సబ్స్ట్రేట్గా ఎలా పనిచేస్తుందో వివరిస్తుంది.
- AgentKit సాధారణంగా సాధారణ సంస్థాగత పనుల కోసం క్యూరేటెడ్ టూల్స్ మరియు ఉత్తమ-అభ్యాస అమలులను బహిర్గతం చేస్తుంది. ఇది కొన్ని విడుదలలో LangChainని ఉపయోగించడం వలన, మీరు తరచుగా సురక్షితమైన డిఫాల్ట్లతో LangChain యొక్క టూల్ సంగ్రహణలకు ప్రాప్యత పొందుతారు.
మీకు అన్యదేశ లేదా బ్లీడింగ్-ఎడ్జ్ ఇంటిగ్రేషన్లు అవసరమైతే, LangChain యొక్క కేటలాగ్ మరియు కమ్యూనిటీ వేగాన్ని ఓడించడం కష్టం. మీకు ఉత్పత్తి కోసం వివేకం గల, పరిశీలించబడిన ఉపసమితి అవసరమైతే, AgentKit యొక్క క్యూరేటెడ్ విధానం ప్రమాదం మరియు సంక్లిష్టతను తగ్గిస్తుంది.
విశ్వసనీయత, భద్రత మరియు పరిమితులు
- AgentKit: పరిమితం చేయబడిన ఏజెంట్ల కోసం రూపొందించబడింది—గట్టి చర్య స్థలాలు, పాలసీ తనిఖీలు మరియు ఊహించదగిన ప్రవర్తనలు. ఇది ఉత్పత్తిలో భ్రమ-ఆధారిత టూల్ దుర్వినియోగాన్ని తగ్గిస్తుంది మరియు బ్లాస్ట్ రేడియస్ను పరిమితం చేస్తుంది.
- LangChain: విస్తృతమైన అనుకూలత, ReAct, స్పష్టమైన టూల్ స్కీమాలు, ఫంక్షన్-కాలింగ్ వాలిడేషన్ లేదా థర్డ్-పార్టీ భద్రతా లేయర్ల వంటి నమూనాలను మీరు స్వీకరించకపోతే, భద్రత ఎక్కువగా మీ బాధ్యతే. మీరు ఖచ్చితంగా సంస్థాగత-గ్రేడ్ భద్రతను సాధించవచ్చు—కానీ మీరు దానిని సమీకరించాలి.
ఆచరణాత్మక సూచన: పాలన, ఆడిటబిలిటీ మరియు “కనీస ఆశ్చర్యాలు” అత్యధిక ప్రాధాన్యతలు అయితే, AgentKit యొక్క అభిప్రాయాత్మక డిఫాల్ట్లు విలువైనవి. మీకు వినూత్న ప్రవర్తనలు లేదా గొప్ప స్వయంప్రతిపత్తి అవసరమైతే, LangChain యొక్క స్వేచ్ఛ ఒక ఆస్తి—మీరు నియంత్రణలను అమలు చేసేంత వరకు.
పనితీరు మరియు కార్యాచరణ పరిణతి
- లేటెన్సీ మరియు ఖర్చు: రెండు విషయాలు మీరు ఎంచుకున్న LLMలు, టూల్ కాల్లు మరియు ఆర్కెస్ట్రేషన్ వ్యూహంపై ఆధారపడి ఉంటాయి. LangChain ప్రాంప్ట్లు, కాషింగ్, రిట్రీవర్లు మరియు స్ట్రీమింగ్పై చక్కటి నియంత్రణను ఇస్తుంది; AgentKit వివేకవంతమైన డిఫాల్ట్లను త్వరగా అందుబాటులో ఉంచుతుంది.
- పరిశీలనా సామర్థ్యం: LangChain ట్రేసింగ్ మరియు కాల్బ్యాక్లకు పెరుగుతున్న మద్దతును కలిగి ఉంది; AgentKit తరచుగా లాగింగ్, మూల్యాంకనం మరియు విస్తరణ కోసం ఎండ్-టు-ఎండ్ టెంప్లేట్లను కలిగి ఉంటుంది.
- స్కేలింగ్: LangChainతో, మీరు మల్టీ-ఏజెంట్ స్టేట్, రిట్రీలు మరియు సమాంతరీకరణను నిర్వహించడానికి LangGraph లేదా బాహ్య ఆర్కెస్ట్రేటర్ల కోసం చేరుకుంటారు. AgentKit ఈ సమస్యల కోసం అభిప్రాయాత్మక సూచనలను రవాణా చేయవచ్చు.
ధర మరియు లైసెన్సింగ్ సందర్భం
- LangChain: అనుమతించదగిన లైసెన్సింగ్తో ఓపెన్-సోర్స్ ఫ్రేమ్వర్క్; వాణిజ్య ఆఫర్లు మరియు హోస్ట్ చేయబడిన భాగాలు ఎకోసిస్టమ్లో ఉన్నాయి. ఖర్చు కేంద్రాలు ప్రధానంగా మీ ఇన్ఫ్రా (LLMలు, వెక్టర్ DBలు, నిల్వ) మరియు మీరు స్వీకరించే ఏదైనా నిర్వహించబడే సేవలు.
- AgentKit: సాధారణంగా విక్రేతలు లేదా కన్సల్టెన్సీల ద్వారా ప్యాక్ చేయబడిన స్టార్టర్ కిట్గా విడుదల చేయబడుతుంది; లైసెన్సింగ్ మరియు ఖర్చు పంపిణీదారు మరియు బండిల్ చేసిన సేవల ద్వారా మారుతూ ఉంటాయి. కొన్ని AgentKit రుచులు LangChain పైన నిర్మించబడినందున, మీరు ఉత్పత్తి స్కఫోల్డింగ్ మరియు మద్దతు కోసం చెల్లిస్తూ ఓపెన్-సోర్స్ ఆధారాల నుండి ప్రయోజనం పొందవచ్చు.
మీరు మూల్యాంకనం చేస్తున్న నిర్దిష్ట AgentKit పంపిణీని ఎల్లప్పుడూ ధృవీకరించండి, ఎందుకంటే ఫీచర్లు మరియు లైసెన్సింగ్ ప్రచురణకర్తల మధ్య మారవచ్చు.
ఉత్తమంగా సరిపోయే వినియోగ సందర్భాలు
- మీకు అవసరమైనప్పుడు LangChainని ఎంచుకోండి:
- క్రాస్-డొమైన్ ప్రయోగాలు లేదా కస్టమ్ ఏజెంట్ ప్రవర్తనలు
- విస్తారమైన ఇంటిగ్రేషన్ ఎకోసిస్టమ్కు ప్రాప్యత (LLMలు, రిట్రీవర్లు, టూల్స్)
- ప్రాంప్ట్లు, మెమరీ మరియు ప్లానింగ్పై చక్కటి నియంత్రణ
- పరిశోధన, ప్రోటోటైపింగ్ లేదా ప్రత్యేకమైన ఉత్పత్తి IPని నిర్మించడం
- మీకు అవసరమైనప్పుడు AgentKitని ఎంచుకోండి:
- అభిప్రాయాత్మక నియంత్రణలతో ఉత్పత్తికి వేగవంతమైన మార్గం
- ఖచ్చితమైన పాలసీలను అనుసరించాల్సిన పరిమితం చేయబడిన ఏజెంట్లు
- సంస్థాగత నమూనాలు: లాగింగ్, విస్తరణ, మూల్యాంకనం బేక్ చేయబడ్డాయి
- బృందాన్ని ప్రారంభించడం: “యాక్ షేవింగ్”ను తగ్గించే టెంప్లేట్లు
కాంక్రీట్ దృశ్యాలు
- సంగ్రహణ సహాయకుడు (సంస్థ): AgentKit ప్రకాశిస్తుంది. మీకు పరిమిత చర్య స్థలం కావాలి (ఖర్చు DBని ప్రశ్నించండి, సరఫరాదారు సారాంశాన్ని రూపొందించండి, ఆమోదం కోసం అభ్యర్థించండి). నియంత్రణలు అనధికార కార్యకలాపాలను నిరోధిస్తాయి.
- పరిశోధన కోపిలట్ (RAG-భారీ): LangChain అనువైనది. కస్టమ్ ఆర్కెస్ట్రేషన్తో రిట్రీవర్లు, రీ-ర్యాంకర్లు, మూల్యాంకనదారులు మరియు టూల్ యూజ్లను (వెబ్, కోడ్, స్ప్రెడ్షీట్లు) కంపోజ్ చేయండి.
- ఆన్-చైన్ కార్యకలాపాల ఏజెంట్: LangChain యొక్క CDP Agentkit టూల్కిట్తో, మీరు SDK ర్యాపర్లతో జాగ్రత్తగా స్కోప్ చేయబడిన వాలెట్ కార్యకలాపాలను సామర్థ్యం మరియు నియంత్రణను మిళితం చేస్తూ మంజూరు చేయవచ్చు.
- మల్టీ-ఏజెంట్ వర్క్ఫ్లోలు: LangChain + LangGraph స్టేట్ఫుల్, మల్టీ-స్టెప్ డైలాగ్లు మరియు టూల్ యూజ్లను నిర్వచించడానికి మిమ్మల్ని అనుమతిస్తుంది. AgentKit నమూనాలను అందించవచ్చు, కానీ LangChain యొక్క గ్రాఫ్ విధానం మరింత అనుకూలీకరించదగినది.
డెవలపర్ అనుభవం
- LangChain: నేర్చుకోవడానికి ఎక్కువ భావనలు, కానీ అద్భుతమైన డాక్స్ మరియు నమూనాలు.
- AgentKit: వేగవంతమైన ప్రారంభం—క్లోన్, కాన్ఫిగర్, విస్తరించు—వివేకవంతమైన డిఫాల్ట్లతో.
- LangChain: పెద్ద OSS సంఘం, తరచుగా నవీకరణలు, థర్డ్-పార్టీ ట్యుటోరియల్లు.
- AgentKit: మద్దతు విక్రేతపై ఆధారపడి ఉంటుంది; ప్రయోజనాలలో క్యూరేటెడ్ ఉదాహరణలు మరియు బహుశా ప్రత్యేక సహాయం ఉంటాయి.
నిర్ణయ మార్గదర్శకం
వీటికి త్వరగా సమాధానం ఇవ్వండి:
- మీకు గరిష్ట అనుకూలత మరియు ఎకోసిస్టమ్ పరిధి అవసరమా? → LangChain.
- మీకు ఉత్పత్తి నియంత్రణలు మరియు బాక్స్ వెలుపల పరిమితం చేయబడిన ఏజెంట్ అవసరమా? → AgentKit.
- మీకు రెండూ కావాలా? LangChainపై నిర్మించబడిన AgentKitతో ప్రారంభించండి మరియు అవసరమైన చోట LangChain ప్రిమిటివ్లకు తగ్గించండి.
ప్రారంభించడానికి సిఫార్సులు
- మీరు LangChainని ఎంచుకుంటే:
- ఒక సాధారణ ReAct ఏజెంట్ + స్పష్టమైన టూల్ స్కీమాలతో ప్రారంభించండి.
- మీకు ఖచ్చితమైన టూల్ యూజ్ ఉన్న తర్వాత మాత్రమే రిట్రీవల్ను జోడించండి.
- ప్రారంభంలో ట్రేసింగ్ మరియు ఎవాల్స్తో ర్యాప్ చేయండి; స్టేట్ కోసం LangGraphని పరిగణించండి.
- మీరు AgentKitని ఎంచుకుంటే:
- చేర్చబడిన టెంప్లేట్ల నుండి ప్రారంభించండి; చర్య స్థలాన్ని ఇరుకుగా ఉంచండి.
- ప్రతి టూల్ కోసం పాలసీ తనిఖీలను నిర్వచించండి మరియు సున్నితమైన దశల కోసం హ్యూమన్-ఇన్-ది-లూప్ను జోడించండి.
- లాగ్లు మరియు ఖర్చును పర్యవేక్షిస్తూ క్రమంగా సామర్థ్యాలను విస్తరించండి.
గుర్తించదగిన విషయం: మీ బృందం కోడ్-సహాయంతో దృశ్య, చాట్-మొదటి వర్క్ఫ్లోలో నిర్మించడానికి ఇష్టపడితే, Sider.AI ప్రాంప్ట్లను బ్రెయిన్స్టార్మ్ చేయడానికి, టూల్ స్కీమాలను పరీక్షించడానికి మరియు నమూనాలను ఒకే చోట డాక్యుమెంట్ చేయడానికి మిమ్మల్ని అనుమతించడం ద్వారా పునరావృతను వేగవంతం చేస్తుంది. మార్గం ద్వారా, Sider.AI డెవలపర్ యొక్క బ్రౌజర్లో సులభంగా కలిసిపోతుంది, కాబట్టి మీరు సందర్భాన్ని మార్చకుండా మీ ప్రాజెక్ట్ మరియు AI కోపిలట్ మధ్య కోడ్ స్నిప్పెట్లను కాపీ/పేస్ట్ చేయవచ్చు (https://sider.ai/). ముఖ్యమైన విషయాలు
- LangChain = అనుకూలత, ఎకోసిస్టమ్, కూర్పు.
- AgentKit = అభిప్రాయాత్మక, పరిమితం చేయబడిన, ఉత్పత్తికి సిద్ధంగా ఉన్న స్కఫోల్డింగ్.
- అవి పరస్పరం ప్రత్యేకమైనవి కావు; కొన్ని AgentKit పంపిణీలు LangChainలో రన్ అవుతాయి.
- పాలన అవసరాలు, సమయం-విలువ మరియు ఇంటిగ్రేషన్ వెడల్పు ఆధారంగా ఎంచుకోండి.
FAQ
Q1: AgentKit LangChainపై నిర్మించబడిందా లేదా ప్రత్యేక ఫ్రేమ్వర్క్పై నిర్మించబడిందా?
కనీసం AgentKit యొక్క ఒక పబ్లిక్ విడుదల LangChain పైన నిర్మించబడింది, దాని ఏజెంట్ మరియు టూల్ సంగ్రహణలను ఉపయోగించి. అది AgentKitని పూర్తి ప్రత్యామ్నాయం కంటే అనువైన ఆధారంపై నిర్మించబడిన అభిప్రాయాత్మక, ఉత్పత్తి స్టార్టర్గా చేస్తుంది.
Q2: నేను AgentKit కంటే LangChainని ఎప్పుడు ఎంచుకోవాలి?
మీకు గరిష్ట అనుకూలత, పెద్ద ఇంటిగ్రేషన్ ఎకోసిస్టమ్ మరియు కస్టమ్ ఏజెంట్ ప్రవర్తన అవసరమైతే LangChainని ఎంచుకోండి. ఇది పరిశోధన, ప్రోటోటైపింగ్ మరియు ప్రత్యేకమైన ఆర్కెస్ట్రేషన్ లాజిక్ను నిర్మించడానికి గొప్పది.
Q3: నేను LangChain కంటే AgentKitని ఎప్పుడు ఎంచుకోవాలి?
విస్తరణ, లాగింగ్ మరియు మూల్యాంకనం కోసం అభిప్రాయాత్మక నియంత్రణలు మరియు సంస్థాగత నమూనాలతో, పరిమితం చేయబడిన, ఉత్పత్తి-గ్రేడ్ ఏజెంట్లను త్వరగా కోరుకున్నప్పుడు AgentKitని ఎంచుకోండి.
Q4: నేను AgentKit మరియు LangChainని కలిసి ఉపయోగించవచ్చా?
అవును. AgentKit హుడ్ కింద LangChainని ఉపయోగించగలదు కాబట్టి, మీరు AgentKit యొక్క స్కఫోల్డింగ్తో ప్రారంభించవచ్చు మరియు కస్టమ్ లాజిక్ లేదా ఇంటిగ్రేషన్ల కోసం LangChain ప్రిమిటివ్లకు తగ్గించవచ్చు.
Q5: LangChainకి బ్లాక్చెయిన్ వంటి ప్రత్యేక డొమైన్ల కోసం టూల్కిట్లు ఉన్నాయా?
అవును. ఉదాహరణకు, CDP Agentkit టూల్కిట్ LangChain ఏజెంట్లు ర్యాప్ చేయబడిన SDK ద్వారా ఆన్-చైన్ కార్యకలాపాలను నిర్వహించడానికి అనుమతిస్తుంది, ఇది LangChain యొక్క పాత్రను ఇంటిగ్రేషన్ సబ్స్ట్రేట్గా ప్రదర్శిస్తుంది.