ai-agents-for-beginners

AI एजेंट्स के लिए कॉन्टेक्स्ट इंजीनियरिंग

Context Engineering

(इस पाठ का वीडियो देखने के लिए ऊपर छवि पर क्लिक करें)

उस एप्लीकेशन की जटिलता को समझना जिसके लिए आप AI एजेंट बना रहे हैं, एक विश्वसनीय एजेंट बनाने के लिए महत्वपूर्ण है। हमें ऐसे AI एजेंट बनाने हैं जो जटिल आवश्यकताओं को पूरा करने के लिए प्रभावी ढंग से जानकारी प्रबंधित कर सकें, जो केवल प्रॉम्प्ट इंजीनियरिंग से परे हों।

इस पाठ में, हम देखेंगे कि कॉन्टेक्स्ट इंजीनियरिंग क्या है और AI एजेंट्स के निर्माण में इसकी भूमिका क्या है।

परिचय

यह पाठ निम्नलिखित विषयों को कवर करेगा:

कॉन्टेक्स्ट इंजीनियरिंग क्या है और यह प्रॉम्प्ट इंजीनियरिंग से कैसे अलग है।

प्रभावी कॉन्टेक्स्ट इंजीनियरिंग के लिए रणनीतियाँ, जिसमें जानकारी को लिखने, चुनने, संपीड़ित करने और पृथक करने के तरीके शामिल हैं।

सामान्य कॉन्टेक्स्ट विफलताएं जो आपके AI एजेंट को अव्यवस्थित कर सकती हैं और उन्हें कैसे ठीक किया जाए।

सीखने के लक्ष्य

इस पाठ को पूरा करने के बाद, आप समझ पाएंगे कि:

कॉन्टेक्स्ट इंजीनियरिंग को परिभाषित करना और इसे प्रॉम्प्ट इंजीनियरिंग से अलग करना।

बड़ी भाषा मॉडल (LLM) एप्लीकेशंस में कॉन्टेक्स्ट के प्रमुख घटकों की पहचान करना

एजेंट के प्रदर्शन को बेहतर बनाने के लिए कॉन्टेक्स्ट को लिखने, चुनने, संपीड़ित करने और पृथक करने की रणनीतियाँ लागू करना

सामान्य कॉन्टेक्स्ट विफलताओं जैसे पॉइज़निंग, डिस्ट्रैक्शन, कन्फ्यूजन और क्लैश को पहचानना और उनका मुकाबला करने की तकनीकों को लागू करना।

कॉन्टेक्स्ट इंजीनियरिंग क्या है?

AI एजेंट्स के लिए, कॉन्टेक्स्ट वह चीज है जो एजेंट की योजना को निर्देशित करती है कि वह क्या कार्रवाई करेगा। कॉन्टेक्स्ट इंजीनियरिंग इस बात का अभ्यास है कि AI एजेंट के पास अगला कार्य पूरा करने के लिए सही जानकारी हो। कॉन्टेक्स्ट विंडो का आकार सीमित होता है, इसलिए एजेंट बिल्डरों के रूप में हमें ऐसी प्रणालियाँ और प्रक्रियाएं बनानी होती हैं जो जानकारी जोड़ने, हटाने और संक्षिप्त करने का प्रबंधन करें।

प्रॉम्प्ट इंजीनियरिंग बनाम कॉन्टेक्स्ट इंजीनियरिंग

प्रॉम्प्ट इंजीनियरिंग एक स्थिर निर्देशों के सेट पर केंद्रित होती है जो AI एजेंट्स को नियमों के माध्यम से प्रभावी रूप से निर्देशित करती है। कॉन्टेक्स्ट इंजीनियरिंग एक गतिशील जानकारी सेट का प्रबंधन करना है, जिसमें प्रारंभिक प्रॉम्प्ट भी शामिल है, ताकि यह सुनिश्चित किया जा सके कि AI एजेंट के पास समय के साथ वह सब कुछ हो जो उसे चाहिए। कॉन्टेक्स्ट इंजीनियरिंग का मुख्य विचार इस प्रक्रिया को पुनरावृत्ति योग्य और विश्वसनीय बनाना है।

कॉन्टेक्स्ट के प्रकार

Types of Context

यह याद रखना जरूरी है कि कॉन्टेक्स्ट केवल एक चीज नहीं है। AI एजेंट को जो जानकारी चाहिए वह विभिन्न स्रोतों से आ सकती है, और यह हमारी जिम्मेदारी है कि हम सुनिश्चित करें कि एजेंट को इन स्रोतों तक पहुंच हो:

एक AI एजेंट को प्रबंधित करने के लिए जिन प्रकार के कॉन्टेक्स्ट की आवश्यकता हो सकती है, उनमें शामिल हैं:

निर्देश: ये एजेंट के “नियमों” जैसे हैं – प्रॉम्प्ट्स, सिस्टम संदेश, फ्यू-शॉट उदाहरण (AI को कुछ करना सिखाने के लिए) और जिन उपकरणों का उपयोग कर सकता है उनके विवरण। इसी जगह प्रॉम्प्ट इंजीनियरिंग का फोकस कॉन्टेक्स्ट इंजीनियरिंग के साथ जुड़ता है।

ज्ञान: इसमें तथ्य, डेटाबेस से प्राप्त जानकारी या एजेंट द्वारा संग्रहित दीर्घकालिक यादें शामिल हैं। इसमें Retrieval Augmented Generation (RAG) सिस्टम को एकीकृत करना भी शामिल हो सकता है यदि एजेंट को विभिन्न ज्ञान भंडारों और डेटाबेस तक पहुंच की आवश्यकता हो।

उपकरण: ये बाहरी फंक्शंस, APIs और MCP सर्वर की परिभाषाएं हैं जिन्हें एजेंट कॉल कर सकता है, साथ ही उनके उपयोग से प्राप्त प्रतिक्रिया (परिणामों) के साथ।

संवाद इतिहास: उपयोगकर्ता के साथ जारी संवाद। समय के साथ इन संवादों की लंबाई बढ़ती है और वे अधिक जटिल हो जाते हैं, जिसका अर्थ है कि वे कॉन्टेक्स्ट विंडो में जगह लेते हैं।

उपयोगकर्ता प्राथमिकताएं: समय के साथ उपयोगकर्ता की पसंद या नापसंद के बारे में सीखी गई जानकारी। इन्हें संग्रहीत किया जा सकता है और महत्वपूर्ण निर्णय लेते समय उपयोगकर्ता की मदद के लिए बुलाया जा सकता है।

प्रभावी कॉन्टेक्स्ट इंजीनियरिंग के लिए रणनीतियाँ

योजना बनाने की रणनीतियाँ

Context Engineering Best Practices

अच्छी कॉन्टेक्स्ट इंजीनियरिंग अच्छी योजना बनाकर शुरू होती है। यहां एक तरीका है जो आपको कॉन्टेक्स्ट इंजीनियरिंग की अवधारणा को लागू करने के बारे में सोचने में मदद करेगा:

  1. स्पष्ट परिणाम परिभाषित करें - AI एजेंट्स को सौंपे जाने वाले कार्यों के परिणाम स्पष्ट रूप से परिभाषित होने चाहिए। सवाल का जवाब दें - “जब AI एजेंट अपना कार्य पूरा कर लेगा तो दुनिया कैसी दिखेगी?” दूसरे शब्दों में, उपयोगकर्ता को AI एजेंट के साथ इंटरैक्ट करने के बाद क्या बदलाव, जानकारी, या प्रतिक्रिया मिलनी चाहिए।
  2. कॉन्टेक्स्ट को मैप करें - एक बार जब आपने AI एजेंट के परिणाम निर्धारित कर लिए, तो आपको यह सवाल पूछना होगा कि “AI एजेंट को इस कार्य को पूरा करने के लिए किस जानकारी की आवश्यकता है?” इस तरह आप उस जानकारी के स्रोत का नक्शा बना सकते हैं।
  3. कॉन्टेक्स्ट पाइपलाइन बनाएं - अब जब आप जानते हैं कि जानकारी कहां है, तो आपको यह सवाल पूछना होगा “एजेंट इस जानकारी को कैसे प्राप्त करेगा?” इसे विभिन्न तरीकों से किया जा सकता है, जिसमें RAG, MCP सर्वर और अन्य उपकरणों का उपयोग शामिल है।

व्यावहारिक रणनीतियाँ

योजना बनाना महत्वपूर्ण है लेकिन जब जानकारी हमारे एजेंट की कॉन्टेक्स्ट विंडो में आना शुरू हो जाती है, तो हमें इसे प्रबंधित करने के लिए व्यावहारिक रणनीतियाँ अपनानी चाहिए:

कॉन्टेक्स्ट प्रबंधन

जबकि कुछ जानकारी स्वचालित रूप से कॉन्टेक्स्ट विंडो में जोड़ी जाएगी, कॉन्टेक्स्ट इंजीनियरिंग इस जानकारी के अधिक सक्रिय प्रबंधन के बारे में है, जिसे कुछ रणनीतियों के माध्यम से किया जा सकता है:

  1. एजेंट स्क्रैचपैड यह AI एजेंट को वर्तमान कार्यों और उपयोगकर्ता इंटरैक्शन के संबंध में प्रासंगिक जानकारी नोट करने की अनुमति देता है। यह कॉन्टेक्स्ट विंडो के बाहर फाइल या रनटाइम ऑब्जेक्ट में होना चाहिए जिसे एजेंट बाद में उसी सत्र में पुनः प्राप्त कर सकता है यदि जरूरत हो।

  2. स्मृतियाँ स्क्रैचपैड एक सत्र की कॉन्टेक्स्ट विंडो के बाहर जानकारी प्रबंधित करने के लिए अच्छे हैं। स्मृतियाँ एजेंट्स को कई सत्रों में प्रासंगिक जानकारी संग्रहीत करने और पुनः प्राप्त करने में सक्षम बनाती हैं। इसमें सारांश, उपयोगकर्ता प्राथमिकताएं और सुधार के लिए प्रतिक्रिया शामिल हो सकती है।

  3. कॉन्टेक्स्ट संपीड़न जैसे ही कॉन्टेक्स्ट विंडो बढ़ती है और सीमा के करीब पहुंचती है, संक्षेपण और ट्रिमिंग जैसी तकनीकों का उपयोग किया जा सकता है। इसमें केवल सबसे प्रासंगिक जानकारी रखना या पुराने संदेशों को हटाना शामिल है।

  4. मल्टी-एजेंट सिस्टम्स मल्टी-एजेंट सिस्टम का विकास एक प्रकार की कॉन्टेक्स्ट इंजीनियरिंग है क्योंकि प्रत्येक एजेंट की अपनी कॉन्टेक्स्ट विंडो होती है। यह योजना बनानी होती है कि यह कॉन्टेक्स्ट कैसे साझा और विभिन्न एजेंट्स को पास किया जाएगा।

  5. सैंडबॉक्स वातावरण यदि एजेंट को कुछ कोड चलाना है या किसी दस्तावेज़ में बड़ी मात्रा में जानकारी संसाधित करनी है, तो यह परिणामों को संसाधित करने के लिए बहुत सारे टोकन ले सकता है। कॉन्टेक्स्ट विंडो में इसे संग्रहीत करने के बजाय, एजेंट एक सैंडबॉक्स वातावरण का उपयोग कर सकता है जो इस कोड को चला सकता है और केवल परिणाम और अन्य प्रासंगिक जानकारी पढ़ सकता है।

  6. रनटाइम स्टेट ऑब्जेक्ट्स यह उन स्थितियों को प्रबंधित करने के लिए जानकारी के कंटेनर बनाकर किया जाता है जब एजेंट को किसी विशेष जानकारी तक पहुंच रखने की आवश्यकता होती है। एक जटिल कार्य के लिए, यह एजेंट को प्रत्येक उपकार्य के परिणाम को चरण-दर-चरण संग्रहीत करने में सक्षम बनाता है, जिससे कॉन्टेक्स्ट केवल उस विशेष उपकार्य से जुड़ा रहता है।

कॉन्टेक्स्ट की जांच करना

इन रणनीतियों में से कोई एक लागू करने के बाद, यह जांचना उपयोगी होता है कि अगली मॉडल कॉल ने वास्तव में क्या प्राप्त किया। एक उपयोगी डिबगिंग प्रश्न है:

क्या एजेंट ने बहुत अधिक कॉन्टेक्स्ट, गलत कॉन्टेक्स्ट लोड किया, या आवश्यक कॉन्टेक्स्ट को मिस कर दिया?

इस प्रश्न का उत्तर देने के लिए आपको कच्चे प्रॉम्प्ट्स, उपकरण आउटपुट्स, या मेमोरी सामग्री लॉग करने की आवश्यकता नहीं है। प्रोडक्शन में, छोटे कॉन्टेक्स्ट निरीक्षण रिकॉर्ड्स का उपयोग करें जो गिनती, आईडी, हैश, और नीति लेबल को कैप्चर करते हैं:

लक्ष्य अधिक कॉन्टेक्स्ट रखने का नहीं है। बल्कि इतना सबूत छोड़ना है कि एक डेवलपर बता सके कि कौन सी कॉन्टेक्स्ट रणनीति चली और क्या उसने अगली मॉडल कॉल को इच्छित तरीके से बदला।

कॉन्टेक्स्ट इंजीनियरिंग का उदाहरण

मान लीजिए हम एक AI एजेंट से कहना चाहते हैं, “मेरे लिए पेरिस की यात्रा बुक करें।”

• केवल प्रॉम्प्ट इंजीनियरिंग का उपयोग करने वाला एक साधारण एजेंट बस उत्तर दे सकता है: “ठीक है, आप पेरिस कब जाना चाहेंगे?” इसके समय पर उसने केवल आपके सीधे प्रश्न को संसाधित किया।

• कॉन्टेक्स्ट इंजीनियरिंग रणनीतियाँ अपनाने वाला एजेंट इससे कहीं अधिक करेगा। प्रतिक्रिया देने से पहले, इसका सिस्टम संभवतः:

  ◦ उपलब्ध तिथियों के लिए आपका कैलेंडर जांचे (रीयल-टाइम डेटा प्राप्त करना)।

 ◦ पिछले यात्रा प्राथमिकताओं को याद करे (दीर्घकालिक स्मृति से) जैसे आपकी पसंदीदा एयरलाइन, बजट, या आप सीधे उड़ानों को प्राथमिकता देते हैं या नहीं।

 ◦ उड़ान और होटल बुकिंग के लिए उपलब्ध उपकरणों की पहचान करें

सामान्य कॉन्टेक्स्ट विफलताएं

कॉन्टेक्स्ट पॉइज़निंग

क्या है: जब एक भ्रम (LLM द्वारा उत्पन्न गलत जानकारी) या त्रुटि कॉन्टेक्स्ट में प्रवेश करती है और बार-बार संदर्भित की जाती है, जिससे एजेंट असंभव लक्ष्य का पीछा करता है या बेतुकी रणनीतियाँ विकसित करता है।

क्या करें: कॉन्टेक्स्ट सत्यापन और क्वारंटाइन लागू करें। दीर्घकालिक स्मृति में जानकारी जोड़ने से पहले उसकी सत्यता जांचें। संभावित पॉइज़निंग पाए जाने पर, खराब जानकारी के फैलने से रोकने के लिए ताजा कॉन्टेक्स्ट थ्रेड्स शुरू करें।

यात्रा बुकिंग उदाहरण: आपका एजेंट एक छोटे स्थानीय हवाई अड्डे से दूरस्थ अंतरराष्ट्रीय शहर के लिए प्रत्यक्ष उड़ान का भ्रम पैदा करता है, जो वास्तव में अंतरराष्ट्रीय उड़ानें नहीं प्रदान करता। यह अस्तित्वहीन उड़ान विवरण कॉन्टेक्स्ट में सेव हो जाता है। बाद में, जब आप एजेंट से बुकिंग के लिए कहते हैं, तो यह इस असंभव मार्ग के लिए टिकट खोजने की कोशिश करता रहता है, जिससे लगातार त्रुटियाँ होती हैं।

समाधान: एक चरण लागू करें जो उड़ान की मौजूदगी और मार्गों को रीयल-टाइम API से सत्यापित करे पहले कि उड़ान विवरण एजेंट के कार्यशील कॉन्टेक्स्ट में जोड़ा जाए। यदि सत्यापन विफल रहता है, तो त्रुटिपूर्ण जानकारी “क्वारंटाइन” की जाती है और आगे उपयोग नहीं की जाती।

कॉन्टेक्स्ट डिस्ट्रैक्शन

क्या है: जब कॉन्टेक्स्ट इतना बड़ा हो जाता है कि मॉडल एकत्रित इतिहास पर बहुत अधिक ध्यान केंद्रित करता है, बजाय इसके कि वह प्रशिक्षण के दौरान सीखी गई चीजों का उपयोग करे, जिससे दोहराव या अनुपयोगी क्रियाएं होती हैं। मॉडल तब भी त्रुटियां करना शुरू कर सकते हैं जब कॉन्टेक्स्ट विंडो पूरी नहीं हुई हो।

क्या करें: कॉन्टेक्स्ट सारांशण का उपयोग करें। नियमित रूप से एकत्रित जानकारी को संक्षिप्त सारांशों में संपीड़ित करें, महत्वपूर्ण विवरण रखते हुए पुनरावृत्ति इतिहास हटा दें। इससे फोकस “रीसेट” हो जाता है।

यात्रा बुकिंग उदाहरण: आप पिछले लंबे समय से विभिन्न सपनों के यात्रा गंतव्यों पर चर्चा कर रहे हैं, जिसमें दो साल पहले की आपकी बैकपैकिंग यात्रा का विस्तृत विवरण भी शामिल है। जब आप अंत में कहते हैं, “मुझे अगले महीने के लिए सस्ती उड़ान ढूंढो,” तो एजेंट पुराने और अप्रासंगिक विवरणों में उलझ जाता है और बार-बार आपके बैकपैकिंग गियर या पिछले योजनाओं के बारे में पूछता रहता है, आपकी वर्तमान अपील की अनदेखी करते हुए।

समाधान: कुछ टर्न्स के बाद या जब कॉन्टेक्स्ट बहुत बड़ा हो जाए, तो एजेंट को सबसे हाल की और प्रासंगिक बातचीत का सारांश बनाना चाहिए – आपकी वर्तमान यात्रा तिथियों और गंतव्य पर ध्यान केंद्रित करते हुए – और अगली LLM कॉल के लिए उस संक्षिप्त सारांश का उपयोग करना चाहिए, कम प्रासंगिक ऐतिहासिक चैट को हटा देना चाहिए।

कॉन्टेक्स्ट कन्फ्यूजन

क्या है: जब अनावश्यक कॉन्टेक्स्ट, अक्सर बहुत सारे उपलब्ध उपकरणों के रूप में, मॉडल को खराब प्रतिक्रियाएं उत्पन्न करने या अप्रासंगिक उपकरणों को कॉल करने का कारण बनता है। छोटे मॉडल विशेष रूप से इसके लिए प्रवण होते हैं।

क्या करें: राग तकनीकों का उपयोग करते हुए उपकरण लोडआउट प्रबंधन लागू करें। उपकरण विवरणों को एक वेक्टर डेटाबेस में स्टोर करें और प्रत्येक विशिष्ट कार्य के लिए केवल सबसे प्रासंगिक उपकरण चुनें। शोध से पता चलता है कि उपकरण चयन 30 से कम रखने चाहिए।

यात्रा बुकिंग उदाहरण: आपके एजेंट के पास दर्जनों उपकरण उपलब्ध हैं: book_flight, book_hotel, rent_car, find_tours, currency_converter, weather_forecast, restaurant_reservations आदि। आप पूछते हैं, “पेरिस के आसपास घूमने का सबसे अच्छा तरीका क्या है?” उपकरणों की संख्या इतनी अधिक है कि एजेंट भ्रमित हो जाता है और पेरिस के अंदर book_flight कॉल करने की कोशिश करता है, या rent_car करता है जबकि आप सार्वजनिक परिवहन पसंद करते हैं, क्योंकि उपकरण विवरण ओवरलैप हो सकते हैं या एजेंट सबसे अच्छा विकल्प पहचान नहीं पाता।

समाधान: उपकरण विवरणों पर RAG का उपयोग करें। जब आप पेरिस के आसपास घूमने के बारे में पूछते हैं, तो सिस्टम आपके प्रश्न के आधार पर केवल सबसे प्रासंगिक उपकरण जैसे rent_car या public_transport_info को गतिशील रूप से पुनः प्राप्त करता है, LLM को एक फोकस्ड “लोडआउट” प्रदान करता है।

कॉन्टेक्स्ट क्लैश

क्या है: जब कॉन्टेक्स्ट के भीतर विरोधाभासी जानकारी होती है, जिससे असंगत तर्क या खराब अंतिम प्रतिक्रियाएं होती हैं। यह अक्सर तब होता है जब जानकारी चरणों में आती है, और प्रारंभिक, गलत अनुमान कॉन्टेक्स्ट में बने रहते हैं।

क्या करें: कॉन्टेक्स्ट प्रूनिंग और ऑफलोडिंग का उपयोग करें। प्रूनिंग का अर्थ है जब नई जानकारी आती है तो पुरानी या विरोधाभासी जानकारी को हटाना। ऑफलोडिंग मॉडल को एक अलग “स्क्रैचपैड” कार्यक्षेत्र देती है ताकि वह जानकारी को मुख्य कॉन्टेक्स्ट को गंदा किए बिना संसाधित कर सके।

यात्रा बुकिंग उदाहरण: आप अपने एजेंट से शुरू में कहते हैं, “मैं इकॉनोमी क्लास में उड़ान भरना चाहता हूँ।” बाद में बातचीत में, आप अपना मन बदलते हैं और कहते हैं, “वास्तव में, इस यात्रा के लिए, चलो बिजनेस क्लास में चलते हैं।” यदि दोनों निर्देश संदर्भ में रहते हैं, तो एजेंट को विरोधाभासी खोज परिणाम मिल सकते हैं या यह भ्रमित हो सकता है कि कौनसी प्राथमिकता को वरीयता देनी है।

समाधान: संदर्भ छंटाई लागू करें। जब एक नया निर्देश पुराने के विपरीत हो, तो पुराने निर्देश को संदर्भ से हटा दिया जाता है या स्पष्ट रूप से अधिलेखित किया जाता है। वैकल्पिक रूप से, एजेंट निर्णय लेने से पहले विरोधाभासी प्राथमिकताओं को सुलझाने के लिए एक स्क्रैचपैड का उपयोग कर सकता है, सुनिश्चित करते हुए कि केवल अंतिम, संगत निर्देश ही उसके कार्यों का मार्गदर्शन करे।

संदर्भ इंजीनियरिंग के बारे में और प्रश्न हैं?

अन्य शिक्षार्थियों से मिलने, ऑफिस आवर्स में भाग लेने और अपने AI एजेंट्स के प्रश्नों के उत्तर पाने के लिए Microsoft Foundry Discord से जुड़ें।

पिछला पाठ

Agentic Protocols

अगला पाठ

Memory for AI Agents


अस्वीकरण: इस दस्तावेज़ का अनुवाद AI अनुवाद सेवा Co-op Translator का उपयोग करके किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या अशुद्धियाँ हो सकती हैं। मूल दस्तावेज़ अपनी मूल भाषा में ही प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।