AWS सेजमेकर जंपस्टार्ट फाउंडेशन मॉडल का उपयोग करके टूल-उपयोग वाले एलएलएम एजेंटों को बनाने और तैनात करने का तरीका जानें


बड़े भाषा मॉडल (एलएलएम) एजेंट ऐसे प्रोग्राम हैं जो स्टैंडअलोन एलएलएम की क्षमताओं का विस्तार करते हैं 1) बाहरी उपकरणों (एपीआई, फ़ंक्शन, वेबहुक, प्लगइन्स, और इसी तरह) तक पहुंच, और 2) स्वयं में कार्यों की योजना बनाने और निष्पादित करने की क्षमता। -निर्देशित फैशन. अक्सर, एलएलएम को जटिल कार्यों को पूरा करने के लिए अन्य सॉफ्टवेयर, डेटाबेस या एपीआई के साथ बातचीत करने की आवश्यकता होती है। उदाहरण के लिए, एक प्रशासनिक चैटबॉट जो बैठकें शेड्यूल करता है, उसे कर्मचारियों के कैलेंडर और ईमेल तक पहुंच की आवश्यकता होगी। उपकरणों तक पहुंच के साथ, एलएलएम एजेंट अतिरिक्त जटिलता की कीमत पर अधिक शक्तिशाली बन सकते हैं।

इस पोस्ट में, हम एलएलएम एजेंटों का परिचय देते हैं और प्रदर्शित करते हैं कि अमेज़ॅन सेजमेकर जम्पस्टार्ट और एडब्ल्यूएस लैम्ब्डा का उपयोग करके ई-कॉमर्स एलएलएम एजेंट कैसे बनाया और तैनात किया जाए। एजेंट नई क्षमताएं प्रदान करने के लिए टूल का उपयोग करेगा, जैसे कि रिटर्न के बारे में सवालों के जवाब देना ("क्या मेरा रिटर्न है)। rtn001 संसाधित?") और ऑर्डर के बारे में अपडेट प्रदान करना ("क्या आप मुझे बता सकते हैं कि क्या ऑर्डर है)। 123456 भेज दिया गया है?")। इन नई क्षमताओं के लिए एलएलएम को कई डेटा स्रोतों से डेटा लाने की आवश्यकता होती है (आदेश, रिटर्न) और पुनर्प्राप्ति संवर्धित पीढ़ी (आरएजी) निष्पादित करें।

एलएलएम एजेंट को सशक्त बनाने के लिए, हम इसका उपयोग करते हैं फ़्लान-UL2 मॉडल को सेजमेकर एंडपॉइंट के रूप में तैनात किया गया है और एडब्ल्यूएस लैम्ब्डा के साथ निर्मित डेटा पुनर्प्राप्ति टूल का उपयोग किया गया है। एजेंट को बाद में अमेज़ॅन लेक्स के साथ एकीकृत किया जा सकता है और वेबसाइटों या एडब्ल्यूएस कनेक्ट के अंदर चैटबॉट के रूप में उपयोग किया जा सकता है। हम एलएलएम एजेंटों को उत्पादन में तैनात करने से पहले विचार करने योग्य वस्तुओं के साथ पोस्ट को समाप्त करते हैं। एलएलएम एजेंटों के निर्माण के लिए पूरी तरह से प्रबंधित अनुभव के लिए, AWS अमेज़ॅन बेडरॉक सुविधा (पूर्वावलोकन में) के लिए एजेंट भी प्रदान करता है।

एलएलएम एजेंट आर्किटेक्चर का संक्षिप्त अवलोकन

एलएलएम एजेंट ऐसे प्रोग्राम हैं जो जटिल कार्यों को पूरा करने के लिए आवश्यक उपकरणों का उपयोग कब और कैसे करना है, यह तय करने के लिए एलएलएम का उपयोग करते हैं। उपकरण और कार्य योजना क्षमताओं के साथ, एलएलएम एजेंट बाहरी प्रणालियों के साथ बातचीत कर सकते हैं और एलएलएम की पारंपरिक सीमाओं, जैसे ज्ञान कटऑफ, मतिभ्रम और सटीक गणना को दूर कर सकते हैं। उपकरण विभिन्न प्रकार के रूप ले सकते हैं, जैसे एपीआई कॉल, पायथन फ़ंक्शन, या वेबहुक-आधारित प्लगइन्स। उदाहरण के लिए, एक एलएलएम प्रासंगिक संदर्भ लाने और आरएजी निष्पादित करने के लिए "पुनर्प्राप्ति प्लगइन" का उपयोग कर सकता है।

तो एलएलएम के लिए उपकरण चुनने और कार्यों की योजना बनाने का क्या मतलब है? अनेक दृष्टिकोण हैं (जैसे प्रतिक्रिया, एमआरकेएल, टूलफॉर्मर, हगिंगजीपीटी, और ट्रांसफार्मर एजेंटएस) उपकरणों के साथ एलएलएम का उपयोग करने के लिए, और प्रगति तेजी से हो रही है। लेकिन एक आसान तरीका यह है कि एलएलएम को उपकरणों की एक सूची के साथ संकेत दिया जाए और उसे यह निर्धारित करने के लिए कहा जाए कि 1) क्या उपयोगकर्ता की क्वेरी को संतुष्ट करने के लिए किसी उपकरण की आवश्यकता है, और यदि हां, तो 2) उपयुक्त उपकरण का चयन करें। ऐसा संकेत आम तौर पर निम्नलिखित उदाहरण जैसा दिखता है और इसमें सही टूल चुनने में एलएलएम की विश्वसनीयता में सुधार करने के लिए कुछ-शॉट उदाहरण शामिल हो सकते हैं।

'''आपका कार्य उपयोगकर्ता के प्रश्न का उत्तर देने के लिए एक टूल का चयन करना है। आपके पास निम्नलिखित टूल तक पहुंच है. खोजें: FAQ क्रम में उत्तर खोजें: आइटम ऑर्डर करें noop: किसी टूल की आवश्यकता नहीं है {कुछ शॉट उदाहरण} प्रश्न: {इनपुट} टूल: '''

अधिक जटिल दृष्टिकोण में एक विशेष एलएलएम का उपयोग करना शामिल है जो सीधे "एपीआई कॉल" या "टूल उपयोग" को डिकोड कर सकता है, जैसे गोरिल्ला एलएलएम. निर्देश के आधार पर एपीआई कॉल को पहचानने और भविष्यवाणी करने के लिए ऐसे परिष्कृत एलएलएम को एपीआई विनिर्देश डेटासेट पर प्रशिक्षित किया जाता है। अक्सर, इन एलएलएम को टूल इनवोकेशन को आउटपुट करने के लिए उपलब्ध टूल (विवरण, yaml, या उनके इनपुट पैरामीटर के लिए JSON स्कीमा) के बारे में कुछ मेटाडेटा की आवश्यकता होती है। यह दृष्टिकोण अमेज़ॅन बेडरॉक और के एजेंटों द्वारा अपनाया गया है OpenAI फ़ंक्शन कॉल. ध्यान दें कि उपकरण चयन क्षमता दिखाने के लिए एलएलएम को आम तौर पर पर्याप्त रूप से बड़ा और जटिल होना चाहिए।

विशिष्ट एलएलएम एजेंट आर्किटेक्चर

यह मानते हुए कि कार्य योजना और उपकरण चयन तंत्र चुने गए हैं, एक विशिष्ट एलएलएम एजेंट प्रोग्राम निम्नलिखित क्रम में काम करता है:

  1. उपयोगकर्ता अनुरोध - प्रोग्राम उपयोगकर्ता से इनपुट लेता है जैसे "मेरा ऑर्डर कहां है।" 123456?” कुछ क्लाइंट एप्लिकेशन से.
  2. अगली कार्रवाई की योजना बनाएं और उपयोग करने के लिए उपकरण चुनें - इसके बाद, प्रोग्राम एलएलएम को अगली कार्रवाई उत्पन्न करने के लिए एक संकेत का उपयोग करता है, उदाहरण के लिए, "ऑर्डर तालिका का उपयोग करके देखें" आदेशएपीआई।” एलएलएम को एक टूल नाम सुझाने के लिए कहा जाता है जैसे आदेशएपीआई उपलब्ध उपकरणों और उनके विवरणों की पूर्वनिर्धारित सूची से। वैकल्पिक रूप से, एलएलएम को इनपुट पैरामीटर जैसे सीधे एपीआई कॉल उत्पन्न करने का निर्देश दिया जा सकता है आदेशएपीआई(12345).
    1. ध्यान दें कि अगली कार्रवाई में टूल या एपीआई का उपयोग शामिल हो भी सकता है और नहीं भी। यदि नहीं, तो एलएलएम टूल से अतिरिक्त संदर्भ शामिल किए बिना उपयोगकर्ता इनपुट का जवाब देगा या बस एक डिब्बाबंद प्रतिक्रिया लौटाएगा, जैसे कि, "मैं इस प्रश्न का उत्तर नहीं दे सकता।"
  3. पार्स टूल अनुरोध - इसके बाद, हमें एलएलएम द्वारा सुझाए गए टूल/एक्शन पूर्वानुमान को पार्स करने और सत्यापित करने की आवश्यकता है। यह सुनिश्चित करने के लिए सत्यापन की आवश्यकता है कि टूल नाम, एपीआई और अनुरोध पैरामीटर भ्रमित न हों और उपकरण विनिर्देश के अनुसार ठीक से लागू हों। इस विश्लेषण के लिए एक अलग एलएलएम कॉल की आवश्यकता हो सकती है।
  4. उपकरण का आह्वान करें - एक बार वैध टूल नाम और पैरामीटर सुनिश्चित हो जाने के बाद, हम टूल को लागू करते हैं। यह एक HTTP अनुरोध, फ़ंक्शन कॉल इत्यादि हो सकता है।
  5. पार्स आउटपुट - टूल से प्राप्त प्रतिक्रिया के लिए अतिरिक्त प्रसंस्करण की आवश्यकता हो सकती है। उदाहरण के लिए, एक एपीआई कॉल के परिणामस्वरूप लंबी JSON प्रतिक्रिया हो सकती है, जहां फ़ील्ड का केवल एक सबसेट एलएलएम के लिए रुचिकर होता है। एक साफ़, मानकीकृत प्रारूप में जानकारी निकालने से एलएलएम को परिणाम की अधिक विश्वसनीय व्याख्या करने में मदद मिल सकती है।
  6. आउटपुट की व्याख्या करें - टूल से आउटपुट को देखते हुए, एलएलएम को इसे समझने और यह तय करने के लिए फिर से प्रेरित किया जाता है कि क्या यह उपयोगकर्ता को अंतिम उत्तर वापस दे सकता है या क्या अतिरिक्त कार्रवाइयों की आवश्यकता है।
  7. चरण 2 को समाप्त करें या जारी रखें - त्रुटियों या टाइमआउट के मामले में या तो अंतिम उत्तर या डिफ़ॉल्ट उत्तर लौटाएं।

अलग-अलग एजेंट फ्रेमवर्क पिछले प्रोग्राम प्रवाह को अलग-अलग तरीके से निष्पादित करते हैं। उदाहरण के लिए, प्रतिक्रिया टूल चयन और उत्तर निर्माण के लिए अलग-अलग संकेतों का उपयोग करने के विपरीत, उपकरण चयन और अंतिम उत्तर निर्माण को एक ही संकेत में संयोजित करता है। साथ ही, इस तर्क को एक ही पास में चलाया जा सकता है या थोड़ी देर के स्टेटमेंट ("एजेंट लूप") में चलाया जा सकता है, जो अंतिम उत्तर उत्पन्न होने, एक अपवाद फेंके जाने या टाइमआउट होने पर समाप्त हो जाता है। जो स्थिर रहता है वह यह है कि एजेंट कार्य समाप्त होने तक योजना और टूल आमंत्रण को व्यवस्थित करने के लिए एलएलएम को केंद्रबिंदु के रूप में उपयोग करते हैं। आगे, हम दिखाते हैं कि AWS सेवाओं का उपयोग करके एक सरल एजेंट लूप कैसे लागू किया जाए।

समाधान सिंहावलोकन

इस ब्लॉग पोस्ट के लिए, हम एक ई-कॉमर्स समर्थन एलएलएम एजेंट लागू करते हैं जो टूल द्वारा संचालित दो कार्यक्षमताएं प्रदान करता है:

  • वापसी स्थिति पुनर्प्राप्ति उपकरण - रिटर्न की स्थिति के बारे में सवालों के जवाब दें जैसे, "मेरे रिटर्न का क्या हो रहा है।" rtn001?”
  • ऑर्डर स्थिति पुनर्प्राप्ति उपकरण - ऑर्डर की स्थिति को ट्रैक करें जैसे, "मेरे ऑर्डर की स्थिति क्या है।" 123456?”

एजेंट एलएलएम को क्वेरी राउटर के रूप में प्रभावी ढंग से उपयोग करता है। एक प्रश्न दिया गया ("आदेश की स्थिति क्या है)। 123456?”), एकाधिक डेटा स्रोतों (अर्थात, रिटर्न और ऑर्डर) में क्वेरी करने के लिए उपयुक्त पुनर्प्राप्ति उपकरण का चयन करें। हम कई पुनर्प्राप्ति उपकरणों के बीच एलएलएम को चुनकर क्वेरी रूटिंग को पूरा करते हैं, जो डेटा स्रोत के साथ बातचीत करने और संदर्भ लाने के लिए जिम्मेदार हैं। यह सरल RAG पैटर्न का विस्तार करता है, जो एकल डेटा स्रोत मानता है।

दोनों पुनर्प्राप्ति उपकरण लैम्ब्डा फ़ंक्शन हैं जो एक आईडी लेते हैं (आदेश कामतत्व या रिटर्नआईडी) इनपुट के रूप में, डेटा स्रोत से एक JSON ऑब्जेक्ट लाता है, और JSON को एक मानव अनुकूल प्रतिनिधित्व स्ट्रिंग में परिवर्तित करता है जो LLM द्वारा उपयोग के लिए उपयुक्त है। वास्तविक दुनिया के परिदृश्य में डेटा स्रोत DynamoDB जैसा अत्यधिक स्केलेबल NoSQL डेटाबेस हो सकता है, लेकिन यह समाधान सरल पायथन को नियोजित करता है हुक्म डेमो प्रयोजनों के लिए नमूना डेटा के साथ।

पुनर्प्राप्ति उपकरण जोड़कर और तदनुसार संकेतों को संशोधित करके एजेंट में अतिरिक्त कार्यक्षमताएँ जोड़ी जा सकती हैं। इस एजेंट का एक स्टैंडअलोन सेवा का परीक्षण किया जा सकता है जो HTTP पर किसी भी यूआई के साथ एकीकृत होता है, जिसे अमेज़ॅन लेक्स के साथ आसानी से किया जा सकता है।

समाधान अवलोकन

यहां प्रमुख घटकों के बारे में कुछ अतिरिक्त विवरण दिए गए हैं:

  1. एलएलएम अनुमान समापन बिंदु - एक एजेंट प्रोग्राम का मूल एलएलएम है। आसानी से तैनात करने के लिए हम सेजमेकर जंपस्टार्ट फाउंडेशन मॉडल हब का उपयोग करेंगे फ़्लान-UL2 नमूना। सेजमेकर जम्पस्टार्ट एलएलएम अनुमान समापन बिंदुओं को समर्पित सेजमेकर इंस्टेंसेस पर तैनात करना आसान बनाता है।
  2. एजेंट ऑर्केस्ट्रेटर - एजेंट ऑर्केस्ट्रेटर एलएलएम, टूल्स और क्लाइंट ऐप के बीच इंटरैक्शन को व्यवस्थित करता है। हमारे समाधान के लिए, हम इस प्रवाह को चलाने के लिए AWS लैम्ब्डा फ़ंक्शन का उपयोग करते हैं और निम्नलिखित को सहायक कार्यों के रूप में नियोजित करते हैं।
    • कार्य (उपकरण) योजनाकार - टास्क प्लानर 1) रिटर्न पूछताछ, 2) ऑर्डर पूछताछ, या 3) कोई टूल नहीं में से किसी एक का सुझाव देने के लिए एलएलएम का उपयोग करता है। हम केवल प्रॉम्प्ट इंजीनियरिंग का उपयोग करते हैं फ़्लान-UL2 बिना फाइन-ट्यूनिंग के मॉडल जस का तस है।
    • टूल पार्सर - टूल पार्सर यह सुनिश्चित करता है कि टास्क प्लानर से टूल सुझाव मान्य है। विशेष रूप से, हम यह सुनिश्चित करते हैं कि एकल आदेश कामतत्व या रिटर्नआईडी पार्स किया जा सकता है. अन्यथा, हम एक डिफ़ॉल्ट संदेश के साथ जवाब देते हैं।
    • टूल डिस्पैचर - टूल डिस्पैचर वैध मापदंडों का उपयोग करके टूल (लैम्ब्डा फ़ंक्शन) को आमंत्रित करता है।
    • आउटपुट पार्सर - आउटपुट पार्सर JSON से प्रासंगिक आइटम को मानव-पठनीय स्ट्रिंग में साफ और निकालता है। यह कार्य प्रत्येक पुनर्प्राप्ति उपकरण के साथ-साथ ऑर्केस्ट्रेटर के भीतर भी किया जाता है।
    • आउटपुट दुभाषिया - आउटपुट दुभाषिया की जिम्मेदारी है 1) टूल इनवोकेशन से आउटपुट की व्याख्या करना और 2) यह निर्धारित करना कि क्या उपयोगकर्ता के अनुरोध को संतुष्ट किया जा सकता है या अतिरिक्त कदमों की आवश्यकता है। यदि उत्तरार्द्ध, एक अंतिम प्रतिक्रिया अलग से उत्पन्न होती है और उपयोगकर्ता को लौटा दी जाती है।

अब, आइए प्रमुख घटकों के बारे में थोड़ा गहराई से जानें: एजेंट ऑर्केस्ट्रेटर, टास्क प्लानर और टूल डिस्पैचर।

एजेंट ऑर्केस्ट्रेटर

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

#.. imports ..
MAX_LOOP_COUNT = 2 # stop the agent loop after up to 2 iterations
# ... helper function definitions ...
def agent_handler(event):
    user_input = event["query"]
    print(f"user input: {user_input}") 
    
    final_generation = ""
    is_task_complete = False
    loop_count = 0 

    # start of agent loop
    while not is_task_complete and loop_count < MAX_LOOP_COUNT:
        tool_prediction = task_planner(user_input)
        print(f"tool_prediction: {tool_prediction}")  
        
        tool_name, tool_input, tool_output, error_msg = None, None, "", ""

        try:
            tool_name, tool_input = tool_parser(tool_prediction, user_input)
            print(f"tool name: {tool_name}") 
            print(f"tool input: {tool_input}") 
        except Exception as e:
            error_msg = str(e)
            print(f"tool parse error: {error_msg}")  
    
        if tool_name is not None: # if a valid tool is selected and parsed 
            raw_tool_output = tool_dispatch(tool_name, tool_input)
            tool_status, tool_output = output_parser(raw_tool_output)
            print(f"tool status: {tool_status}")  

            if tool_status == 200:
                is_task_complete, final_generation = output_interpreter(user_input, tool_output) 
            else:
                final_generation = tool_output
        else: # if no valid tool was selected and parsed, either return the default msg or error msg
            final_generation = DEFAULT_RESPONSES.NO_TOOL_FEEDBACK if error_msg == "" else error_msg
    
        loop_count += 1

    return {
        'statusCode': 200,
        'body': final_generation
    }

कार्य योजनाकार (उपकरण भविष्यवाणी)

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

टूल_सिलेक्शन_प्रॉम्प्ट_टेम्पलेट = "" आपका कार्य उपयोगकर्ता इनपुट को संतुष्ट करने के लिए उपयुक्त टूल का चयन करना है। यदि किसी टूल की आवश्यकता नहीं है, तो "no_tool" चुनें। उपलब्ध टूल हैं: रिटर्न_इंक्वायरी: किसी विशिष्ट रिटर्न की स्थिति के बारे में जानकारी का डेटाबेस, चाहे वह लंबित हो, संसाधित हो, आदि। order_inquiry: किसी विशिष्ट ऑर्डर की स्थिति के बारे में जानकारी, जैसे शिपिंग स्थिति, उत्पाद, राशि, आदि। no_tool: उपयोगकर्ता इनपुट का उत्तर देने के लिए किसी टूल की आवश्यकता नहीं है। आप अल्पविराम से अलग करके कई टूल का सुझाव दे सकते हैं। उदाहरण: उपयोगकर्ता: " आपके व्यवसाय के घंटे क्या हैं? रिटर्न_इनक्वायरी उपयोगकर्ता: "ऑर्डर 38745 के लिए कुल ऑर्डर क्या था?" टूल: ऑर्डर_इंक्वायरी उपयोगकर्ता: "क्या मैं स्टोर नीति के आधार पर अपना ऑर्डर 38756 वापस कर सकता हूं?" टूल: ऑर्डर_इंक्वायरी उपयोगकर्ता: "हाय" टूल: नो_टूल उपयोगकर्ता: "क्या आप एआई हैं ?" टूल: no_tool उपयोगकर्ता: "मौसम कैसा है?" टूल: no_tool उपयोगकर्ता: "ऑर्डर 12347 की रिफंड स्थिति क्या है?" टूल: order_inquiry उपयोगकर्ता: "रिटर्न ret172 की रिफंड स्थिति क्या है?" टूल: return_inquiry उपयोगकर्ता इनपुट : {} औजार: """

टूल डिस्पैचर

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


def tool_dispatch(tool_name, tool_input):
    #...
     
    tool_response = None 

    if tool_name == "returns_inquiry":
        tool_response = lambda_client.invoke(
            FunctionName=RETURNS_DB_TOOL_LAMBDA,
            InvocationType="RequestResponse",
            Payload=json.dumps({
              "returnId": tool_input  
            })
        )
    elif tool_name == "order_inquiry":
        tool_response = lambda_client.invoke(
            FunctionName=ORDERS_DB_TOOL_LAMBDA,
            InvocationType="RequestResponse",
            Payload=json.dumps({
                "orderId": tool_input
            })
        )
    else:
        raise ValueError("Invalid tool invocation")
        
    return tool_response

समाधान तैनात करें

महत्वपूर्ण शर्तें - परिनियोजन आरंभ करने के लिए, आपको निम्नलिखित शर्तें पूरी करनी होंगी:

  • एक उपयोगकर्ता के माध्यम से AWS प्रबंधन कंसोल तक पहुंच जो AWS क्लाउडफॉर्मेशन स्टैक लॉन्च कर सकता है
  • नेविगेट करने से परिचित एडब्ल्यूएस लैम्ब्डा और अमेज़न लेक्स शान्ति
  • फ़्लान-UL2 एक की आवश्यकता है ml.g5.12xबड़ा तैनाती के लिए, जिसके लिए समर्थन टिकट के माध्यम से संसाधन सीमा बढ़ाने की आवश्यकता हो सकती है। हमारे उदाहरण में, हम उपयोग करते हैं हमें-पूर्व-1 क्षेत्र के रूप में, इसलिए कृपया सेवा कोटा (यदि आवश्यक हो) बढ़ाना सुनिश्चित करें हमें-पूर्व-1.

CloudFormation का उपयोग करके परिनियोजन करें - आप समाधान को तैनात कर सकते हैं हमें-पूर्व-1 नीचे दिए गए बटन पर क्लिक करके:

स्टैक लॉन्च करें

समाधान को तैनात करने में लगभग 20 मिनट लगेंगे और एक तैयार हो जाएगा एलएलएमएजेंटस्टैक ढेर, जो:

  • का उपयोग करके सेजमेकर एंडपॉइंट को तैनात करता है फ़्लान-UL2 सेजमेकर जम्पस्टार्ट से मॉडल;
  • तीन लैम्ब्डा फ़ंक्शन तैनात करता है: एलएलएमएजेंटऑर्केस्ट्रेटर, एलएलएमएजेंटरिटर्न्सटूल, एलएलएमएजेंटऑर्डरटूल; और
  • एक तैनात करता है एडब्ल्यूएस लेक्स बॉट जिसका उपयोग एजेंट का परीक्षण करने के लिए किया जा सकता है: सेजमेकर-जम्पस्टार्ट-फ़्लान-एलएलएम-एजेंट-फ़ॉलबैक-बॉट.

समाधान का परीक्षण करें

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

विचार करने योग्य नमूना परीक्षण मामले इस प्रकार हैं:

  • वैध आदेश पूछताछ (उदाहरण के लिए, "किस वस्तु के लिए ऑर्डर किया गया था 123456?")
    • ऑर्डर "123456" एक वैध ऑर्डर है, इसलिए हमें उचित उत्तर की उम्मीद करनी चाहिए (उदाहरण के लिए "हर्बल हैंडसोप")
  • वैध वापसी पूछताछ वापसी के लिए (उदाहरण के लिए, "मेरी वापसी कब है।" rtn003 संसाधित?")
    • हमें रिटर्न की स्थिति के बारे में उचित उत्तर की उम्मीद करनी चाहिए।
  • रिटर्न या ऑर्डर दोनों के लिए अप्रासंगिक (उदाहरण के लिए, "अभी स्कॉटलैंड में मौसम कैसा है?")
    • रिटर्न या ऑर्डर के लिए एक अप्रासंगिक प्रश्न, इस प्रकार एक डिफ़ॉल्ट उत्तर लौटाया जाना चाहिए ("क्षमा करें, मैं उस प्रश्न का उत्तर नहीं दे सकता।")
  • अमान्य आदेश पूछताछ (उदाहरण के लिए, "किस वस्तु के लिए ऑर्डर किया गया था 383833?")
    • आईडी 383832 ऑर्डर डेटासेट में मौजूद नहीं है और इसलिए हमें शालीनतापूर्वक विफल होना चाहिए (उदाहरण के लिए, "ऑर्डर नहीं मिला। कृपया अपना ऑर्डर आईडी जांचें।")
  • अमान्य वापसी पूछताछ (उदाहरण के लिए, “मेरी वापसी कब है।” rtn123 संसाधित?")
    • इसी प्रकार, आई.डी rtn123 रिटर्न डेटासेट में मौजूद नहीं है, और इसलिए शालीनता से विफल होना चाहिए।
  • अप्रासंगिक वापसी पूछताछ (उदाहरण के लिए, "रिटर्न का क्या प्रभाव पड़ता है rtn001 विश्व शांति पर?")
    • यह प्रश्न, हालांकि यह एक वैध आदेश से संबंधित प्रतीत होता है, अप्रासंगिक है। एलएलएम का उपयोग अप्रासंगिक संदर्भ वाले प्रश्नों को फ़िल्टर करने के लिए किया जाता है।

इन परीक्षणों को स्वयं चलाने के लिए, यहां निर्देश दिए गए हैं।

  1. अमेज़न लेक्स कंसोल पर (AWS कंसोल > अमेज़न लेक्स), शीर्षक वाले बॉट पर नेविगेट करें सेजमेकर-जम्पस्टार्ट-फ़्लान-एलएलएम-एजेंट-फ़ॉलबैक-बॉट. इस बॉट को कॉल करने के लिए पहले से ही कॉन्फ़िगर किया गया है एलएलएमएजेंटऑर्केस्ट्रेटर लैम्ब्डा फ़ंक्शन जब भी फ़ॉलबैकइंटेंट शुरू हो रहा है।
  2. नेविगेशन फलक में, चुनें इंटेंट.
    इरादा नेविगेशन
  3. चुनना निर्माण शीर्ष दाएँ कोने पर
    लेक्स बॉट का निर्माण शुरू
  4. 4. निर्माण प्रक्रिया पूरी होने तक प्रतीक्षा करें। जब यह पूरा हो जाता है, तो आपको एक सफलता संदेश मिलता है, जैसा कि निम्नलिखित स्क्रीनशॉट में दिखाया गया है।
    पूर्ण स्थिति बनाएं
  5. परीक्षण मामलों को दर्ज करके बॉट का परीक्षण करें।
    एमएल 15042 बॉट स्क्रीनशॉट का आकार बदलें

साफ - सफाई

अतिरिक्त शुल्क से बचने के लिए, इन चरणों का पालन करके हमारे समाधान द्वारा बनाए गए संसाधनों को हटा दें:

  • पर एडब्ल्यूएस क्लाउडफॉर्मेशन कंसोल, नामित स्टैक का चयन करें एलएलएमएजेंटस्टैक (या आपके द्वारा चुना गया कस्टम नाम)।
  • चुनना मिटाना
  • जांचें कि स्टैक क्लाउडफॉर्मेशन कंसोल से हटा दिया गया है।

महत्वपूर्ण: यह सुनिश्चित करके दोबारा जांचें कि स्टैक सफलतापूर्वक हटा दिया गया है फ़्लान-UL2 अनुमान समापनबिंदु हटा दिया गया है।

  • जाँच करने के लिए, पर जाएँ AWS कंसोल > सेजमेकर > समापन बिंदु > अनुमान पृष्ठ।
  • पृष्ठ में सभी सक्रिय समापनबिंदु सूचीबद्ध होने चाहिए।
  • सुनिश्चित करें एसएम-जंपस्टार्ट-फ्लान-बॉट-एंडपॉइंट नीचे दिए गए स्क्रीनशॉट की तरह मौजूद नहीं है।

सेजमेकर की सफ़ाई

उत्पादन के लिए विचार

एलएलएम एजेंटों को उत्पादन में तैनात करने के लिए विश्वसनीयता, प्रदर्शन और रखरखाव सुनिश्चित करने के लिए अतिरिक्त कदम उठाने की आवश्यकता होती है। उत्पादन में एजेंटों को तैनात करने से पहले यहां कुछ विचार दिए गए हैं:

  • एजेंट लूप को पावर देने के लिए एलएलएम मॉडल का चयन करना: इस पोस्ट में चर्चा किए गए समाधान के लिए, हमने एक का उपयोग किया फ़्लान-UL2 कार्य योजना या उपकरण चयन करने के लिए फाइन-ट्यूनिंग के बिना मॉडल। व्यवहार में, एलएलएम का उपयोग करना जो सीधे आउटपुट टूल या एपीआई अनुरोधों के लिए ठीक-ठीक है, विश्वसनीयता और प्रदर्शन को बढ़ा सकता है, साथ ही विकास को सरल बना सकता है। हम टूल चयन कार्यों पर एलएलएम को ठीक कर सकते हैं या ऐसे मॉडल का उपयोग कर सकते हैं जो टूलफॉर्मर जैसे टूल टोकन को सीधे डीकोड करता है।
    • फाइन-ट्यून किए गए मॉडल का उपयोग किसी एजेंट के लिए उपलब्ध टूल को जोड़ने, हटाने और अपडेट करने को भी सरल बना सकता है। केवल-प्रॉम्प्ट आधारित दृष्टिकोण के साथ, टूल को अपडेट करने के लिए एजेंट ऑर्केस्ट्रेटर के अंदर प्रत्येक प्रॉम्प्ट को संशोधित करने की आवश्यकता होती है, जैसे कि कार्य योजना, टूल पार्सिंग और टूल डिस्पैच के लिए। यह बोझिल हो सकता है, और यदि एलएलएम के संदर्भ में बहुत सारे उपकरण प्रदान किए जाते हैं तो प्रदर्शन ख़राब हो सकता है।
  • विश्वसनीयता और प्रदर्शन: एलएलएम एजेंट अविश्वसनीय हो सकते हैं, विशेष रूप से जटिल कार्यों के लिए जिन्हें कुछ लूप के भीतर पूरा नहीं किया जा सकता है। आउटपुट सत्यापन जोड़ना, पुनः प्रयास करना, LLM से आउटपुट को JSON या yaml में संरचित करना, और लूप में फंसे एलएलएम के लिए एस्केप हैच प्रदान करने के लिए टाइमआउट लागू करना विश्वसनीयता बढ़ा सकता है।

निष्कर्ष

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


लेखक के बारे में

जॉन ह्वांगजॉन ह्वांग एडब्ल्यूएस में एक जनरेटिव एआई आर्किटेक्ट है, जो बड़े भाषा मॉडल (एलएलएम) अनुप्रयोगों, वेक्टर डेटाबेस और जेनरेटिव एआई उत्पाद रणनीति पर विशेष ध्यान देता है। उन्हें एआई/एमएल उत्पाद विकास और एलएलएम एजेंटों और सह-पायलटों के भविष्य में कंपनियों की मदद करने का शौक है। AWS में शामिल होने से पहले, वह एलेक्सा में एक उत्पाद प्रबंधक थे, जहां उन्होंने मोबाइल उपकरणों में संवादी एआई लाने में मदद की, साथ ही मॉर्गन स्टेनली में एक डेरिवेटिव व्यापारी भी थे। उन्होंने स्टैनफोर्ड यूनिवर्सिटी से कंप्यूटर साइंस में बीएस की डिग्री हासिल की है।



स्रोत लिंक

उत्तर छोड़ दें

आपकी ईमेल आईडी प्रकाशित नहीं की जाएगी। आवश्यक फ़ील्ड चिह्नित हैं *

आप इन HTML टैग और विशेषताओं का उपयोग कर सकते हैं: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

hi_INHindi