Kitchen Nightmares: LangChain Agents Edition
రెసిపీలను విశ్లేషించడానికి (parse) మరియు మీల్ ప్లాన్లను రూపొందించడానికి నేను ఒక హెల్త్ యాప్ను రూపొందించాను.
వెబ్ యాప్ కోసం నేను FastAPI మరియు React ఉపయోగించాను. ఏజెంట్ల కోసం LangChain ఉపయోగించాను. నా ఏజెంట్లు ఏమి చేస్తున్నాయో చూడటానికి LangSmith ఉపయోగించాను.
లక్ష్యం చాలా సరళమైనది. వినియోగదారు ఒక URLని అందిస్తారు. యాప్ ఆ రెసిపీని తీసుకుని, దానిని మెయిన్స్ (mains), సైడ్స్ (sides), మరియు సాస్ల (sauces) వంటి భాగలుగా విభజిస్తుంది. వినియోగదారులు వీటిని కలిపి మీల్స్ను తయారు చేసుకోవచ్చు లేదా క్యాలరీలను ట్రాక్ చేయవచ్చు.
ఏజెంట్ విశ్వసనీయత (reliability) విషయంలో నేను ఒక పెద్ద సమస్యను ఎదుర్కొన్నాను.
మొదట, రెసిపీని గ్రూప్ చేయడానికి మరియు అవుట్పుట్ను ఫార్మాట్ చేయడానికి నేను ఒకే ఏజెంట్ను ఉపయోగించాను. అది నిరంతరం విఫలమవుతోంది. అది డూప్లికేట్ ఐటమ్స్ను సృష్టించింది. సూచనలను (instructions) వదిలేసింది. అన్నింటినీ కలిపి ఒకే పెద్ద బ్లాక్గా మార్చేసింది.
దీనిని పరిష్కరించడానికి నేను డ్యూయల్ ఏజెంట్ సెటప్ను ప్రయత్నించాను:
- ఏజెంట్ 1 (Grouping): వివిధ రెసిపీ భాగాలను కనుగొని, పదార్థాలు (ingredients) మరియు సూచనలను (instructions) క్రమబద్ధీకరిస్తుంది.
- ఏజెంట్ 2 (Structuring): ఆ క్రమబద్ధీకరించిన టెక్స్ట్ను తీసుకుని, దానిని క్లీన్ JSON ఫార్మాట్లోకి మారుస్తుంది.
ఇది ఒక రోజు మాత్రమే పనిచేసింది. మరుసటి రోజు, మళ్ళీ లోపాలు (errors) వచ్చాయి. స్ట్రక్చరింగ్ ఏజెంట్ పదార్థాలు మరియు సూచనలు లేని JSONని అందించడం ప్రారంభించింది.
నేను ప్రింట్ స్టేట్మెంట్లను (print statements) వాడటం ఆపివేసి, LangSmith ఉపయోగించడం ప్రారంభించాను.
LangSmith నాకు లేటెన్సీ (latency), టోకెన్ వినియోగం మరియు ఖర్చును చూపుతుంది. అన్నిటికంటే ముఖ్యంగా, చైన్ (chain) ఎక్కడ విచ్ఛిన్నమవుతుందో ఇది ఖచ్చితంగా చూపుతుంది.
నా విషయంలో, గ్రూపింగ్ ఏజెంట్ ఖచ్చితంగా పనిచేస్తోంది. అది అన్ని వివరాలతో అద్భుతమైన మార్క్డౌన్ను (markdown) అందించింది. వైఫల్యం రెండవ ఏజెంట్లో జరిగింది. ట్రాన్స్ఫర్మేషన్ (transformation) సమయంలో అది డేటాను కోల్పోతోంది.
ఇప్పుడు నేను మూడు పరిష్కారాలపై పని చేస్తున్నాను:
- ఏజెంట్ విశ్వసనీయతను మెరుగుపరచడం: స్ట్రక్చరింగ్ ఏజెంట్ అసలు ప్రాంప్ట్లో లేని 'cuisine' ఫీల్డ్ను ఊహించడానికి ప్రయత్నిస్తోందని నేను గమనించాను. ఈ గందరగోళం వల్ల లోపాలు ఏర్పడుతున్నాయి.
- వాలిడేషన్ను జోడించడం: అవుట్పుట్ను తనిఖీ చేయడానికి నేను Python ఫంక్షన్లను ఉపయోగిస్తాను. మార్క్డౌన్ సరిగ్గా ఉందని మరియు డూప్లికేట్లు లేవని నేను నిర్ధారించుకోవాలనుకుంటున్నాను.
- మెరుగైన అబ్జర్వబిలిటీ (observability): సులభంగా ట్రేసింగ్ (tracing) చేయడానికి ప్రతి ఏజెంట్ ఎగ్జిక్యూషన్ను ఒక నిర్దిష్ట యూజర్ రిక్వెస్ట్తో లింక్ చేయాలనుకుంటున్నాను.
ఏజెంట్లతో నిర్మించడం అనేది ఒకేసారి చేసే పని కాదు. ఇది నిరంతర పరీక్షలు మరియు పరిష్కారాల ప్రక్రియ (loop).
Source: https://dev.to/kristianroopnarine/kitchen-nightmares-langchain-agents-edition-45co
Optional learning community: https://t.me/GyaanSetuAi
