किचन नाइटमेयर्स: LangChain एजेंट्स एडिशन

मैंने रेसिपीज़ को पार्स करने और मील प्लान बनाने के लिए एक हेल्थ ऐप बनाया।

मैंने वेब ऐप के लिए FastAPI और React का उपयोग किया। मैंने एजेंट्स के लिए LangChain का उपयोग किया। मेरे एजेंट्स क्या कर रहे हैं, यह देखने के लिए मैंने LangSmith का उपयोग किया।

लक्ष्य सरल था। एक यूजर URL प्रदान करता है। ऐप रेसिपी को फेच करता है और उसे मेन कोर्स (mains), साइड्स और सॉस जैसे कंपोनेंट्स में विभाजित करता है। इसके बाद यूजर्स भोजन बनाने या कैलोरी ट्रैक करने के लिए इन्हें मिक्स और मैच कर सकते हैं।

मुझे एजेंट की विश्वसनीयता (reliability) के साथ एक बड़ी समस्या का सामना करना पड़ा।

शुरुआत में, मैंने रेसिपी को ग्रुप करने और आउटपुट को फॉर्मेट करने के लिए एक ही एजेंट का उपयोग किया। यह लगातार फेल हो रहा था। यह डुप्लिकेट आइटम बना रहा था। यह निर्देशों (instructions) को छोड़ रहा था। यह सब कुछ एक ही बड़े ब्लॉक में मिला देता था।

इसे ठीक करने के लिए मैंने ड्यूल एजेंट सेटअप (dual agent setup) आज़माया:

  • एजेंट 1 (Grouping): विभिन्न रेसिपी कंपोनेंट्स को ढूंढता है और सामग्री (ingredients) और निर्देशों को व्यवस्थित करता है।
  • एजेंट 2 (Structuring): उस व्यवस्थित टेक्स्ट को लेता है और उसे एक साफ JSON फॉर्मेट में बदल देता है।

यह एक दिन तक चला। अगले दिन, त्रुटियां वापस आ गईं। स्ट्रक्चरिंग एजेंट ऐसा JSON देने लगा जिसमें सभी सामग्री और निर्देश गायब थे।

मैंने प्रिंट स्टेटमेंट्स का उपयोग करना बंद कर दिया और LangSmith का उपयोग करना शुरू कर दिया।

LangSmith मुझे लेटेंसी (latency), टोकन उपयोग और लागत दिखाता है। सबसे महत्वपूर्ण बात यह है कि यह मुझे ठीक-ठीक दिखाता है कि चेन कहाँ टूट रही है।

मेरे मामले में, ग्रुपिंग एजेंट बिल्कुल सही काम कर रहा था। इसने सभी विवरणों के साथ बेहतरीन मार्कडाउन (markdown) तैयार किया। विफलता दूसरे एजेंट में हुई। ट्रांसफॉर्मेशन के दौरान डेटा खो रहा था।

अब मैं तीन सुधारों पर काम कर रहा हूँ:

  • एजेंट की विश्वसनीयता में सुधार: मैंने देखा कि स्ट्रक्चरिंग एजेंट एक ऐसे 'cuisine' फ़ील्ड का अनुमान लगाने की कोशिश करता है जो मूल प्रॉम्प्ट में नहीं था। इस भ्रम के कारण त्रुटियां होती हैं।
  • वैलिडेशन जोड़ना: मैं आउटपुट की जांच करने के लिए Python फ़ंक्शंस का उपयोग करूँगा। मैं यह सुनिश्चित करना चाहता हूँ कि मार्कडाउन सही हो और कोई डुप्लिकेट न हो।
  • बेहतर ऑब्जर्वेबिलिटी (observability): मैं आसान ट्रेसिंग के लिए हर एजेंट निष्पादन (execution) को एक विशिष्ट यूजर रिक्वेस्ट से जोड़ना चाहता हूँ।

एजेंट्स के साथ निर्माण करना कोई एक बार का काम नहीं है। यह टेस्टिंग और सुधार का एक निरंतर लूप है।

Source: https://dev.to/kristianroopnarine/kitchen-nightmares-langchain-agents-edition-45co

Optional learning community: https://t.me/GyaanSetuAi