आपका AI एजेंट सात तरीकों से tokens बर्बाद कर रहा है, और यहाँ इसके बजाय क्या करना है
AI एजेंट token अपशिष्ट आमतौर पर संदर्भ को स्थिति के रूप में व्यवहार करने से आता है, ओवरसाइज़्ड टूल पेलोड्स, संपूर्ण-फ़ाइल पुनर्प्राप्ति, फुलाए हुए स्कीमा, अनकैप्ड लूप्स, खराब कैशिंग प्लेसमेंट और large model रूटिंग। फिक्स में सारांशों के साथ स्लाइडिंग कॉन्टेक्स्ट, डिटर्मिनेस्टिक स्टेट स्टोर्स, मिडलवेयर पेलोड कंप्रेशन, एएसटी-जागरूक पुनःप्राप्तिकरण, योजना छंटाई, सर्किट ब्रेकर, स्थिर-पहले गतिशील संकेत और छोटे मॉडल रूटिंग शामिल हैं।
मुख्य जानकारी
- AI एजेंटों में token अपशिष्ट अक्सर context window को टिकाऊ अवस्था के रूप में व्यवहार करने से आता है, जिससे प्रत्येक मोड़ के साथ संकेत बढ़ जाते हैं; स्थायी स्थिति से क्षणिक संदर्भ अलग करें और सारांश के साथ स्लाइडिंग विंडो का उपयोग करें।
- मॉडल में प्रवेश करने से पहले टूल आउटपुट और पुनर्प्राप्ति पेलोड को संपीड़ित किया जाना चाहिए, क्योंकि कच्चे API JSON, लॉग्स और संपूर्ण-फ़ाइल कोड पुनः प्राप्ति हजारों अनावश्यक tokens का उपभोग कर सकते हैं।
- बड़ी एजेंट प्रणालियों को संदर्भ-जागरूक उपकरण छंटाई और मॉडल रूटिंग की आवश्यकता होती है, छिपे हुए संकेत और अनुमान लागतों को कम करने के लिए केवल प्रासंगिक योजनाओं और कार्यों को उचित आकार वाले मॉडलों में भेजना।
- कैशिंग, सारांश और फ़िल्टरिंग ट्रेड-ऑफ पेश करते हैं, जैसे कि खोए हुए सटीक पहचानकर्ता, टूटी हुई पृष्ठांकन, पुरानी अनुक्रमण या कम कैश हिट, इसलिए प्रत्येक अनुकूलन को गार्डरेल के साथ जोड़ा जाना चाहिए।
मेटा विवरणः उत्पादन AI एजेंट प्रणालियों में सात token अपशिष्ट पैटर्न सीखेंः केवल अनुलग्नक संदर्भ, उपकरण पेलोड ब्लोट, योजना लागत, रूटिंग, कैशिंग और आउटपुट गार्डरेल।
टैगः token अपशिष्ट, AI एजेंटों, उत्पादन
विशेष रुप से प्रदर्शित छवि: (अंग्रेज़ी में) ">"</string> संकुचित token बजट और संरचित डेटा ब्लॉक का अमूर्त, मैत्रीपूर्ण चित्रण, कोई वास्तविक लोग नहीं हैं, कोई लोगो नहीं है, कोई पाठ नहीं है।
उत्पादन में AI एजेंट चलाने वाली टीमों के लिए, संदर्भ हैंडलिंग, टूल इंजेक्शन, रिकवरी, स्कीमा, कैशिंग, लूप्स और रूटिंग में token अपशिष्ट पैटर्न एक सप्ताहांत प्रोटोटाइप को मासिक बिल में बदल सकता है जो हर अनुरोध के साथ बढ़ता है। यह गाइड सात पैटर्न और वास्तुशिल्प फिक्स की व्याख्या करता है जो प्रत्येक को संबोधित करते हैं। एक व्यावहारिक रोलआउट ऑर्डर हैः 1. राज्य से संदर्भ अलग करें। 2. उपकरण परिणाम संपीड़ित करें। 3. पूरी फ़ाइल पुनर्प्राप्ति को प्रतिस्थापित करें। 4. उपकरण योजनाओं का छंटाई करें। 5. सर्किट ब्रेकर जोड़ें। 6. गतिशील सामग्री से पहले स्थैतिक सामग्री रखें। 7. छोटे मॉडलों के लिए सरल कार्यों को मार्ग दें।
संदर्भ राज्य नहीं है
एक एजेंट का प्रोटोटाइप बनाना आसान है; तीसरे महीने तक लागत को स्थिर रखना कठिन है। एक सामान्य विफलता प्रत्येक उपयोगकर्ता संदेश, टूल अवलोकन और आंतरिक प्रतिक्रिया को अंतहीन रूप से बढ़ती प्रॉम्प्ट सरणी में जोड़ती है। वह पैटर्न ध्यान देता है और अनुमान विलंबता लागत चौगुनी वृद्धि होती है, जबकि token की लागत प्रत्येक कॉल पर रैखिक रूप से बढ़ जाती है। मूल त्रुटि रिकॉर्ड के सिस्टम के रूप में context window का इलाज कर रही है।
संदर्भ प्रत्येक अनुरोध के साथ भेजा गया अस्थायी पेलोड है। राज्य एजेंट की प्रगति का टिकाऊ क्रमबद्ध रिकॉर्ड है। यदि वे मिश्रित हैं, तो मॉडल हर अनुमान कॉल पर डेटाबेस-जैसे इतिहास के लिए भुगतान करता है।
फिक्स सिमेंटिक रोलिंग सारांश के साथ एक स्लाइडिंग context window है। अंतिम एन मोड़ को शाब्दिक रूप से रखें, पुराने वार्तालापों को घने पृष्ठभूमि में संपीड़ित करें और स्ट्रक्चरल एजेंट स्टेट को SQLite या Redis जैसे डिटर्मिस्ट स्टोर में स्थानांतरित करें बजाय इसे प्रॉम्प्ट में फिर से इंजेक्ट करने के लिए। सारांश हानिकारक हैः Universally Unique Identifier सटीक मान, क्रिप्टोग्राफिक हैश या शुरुआती कोड स्निपेट्स का भ्रम हो सकता है। जब परिशुद्धता मायने रखती है तो सटीक तारों के लिए सख्त कुंजी-मूल्य लुकअप टूल के साथ इस पैटर्न की जोड़ी बनाएं। लंबे समय तक चलने वाले बातचीत एजेंटों या पुनरावर्ती रीजनिंग लूप्स के लिए यह डिफ़ॉल्ट आर्किटेक्चर बनाएँ कि पांच से दस मोड़ों से अधिक होने की उम्मीद है।
उपकरण और पुनर्प्राप्ति पेलोड oversized हैं
कच्चे तृतीय-पक्ष उपकरण परिणाम एक और टालने योग्य नाली हैं। APIs मशीनों के लिए डिज़ाइन किया गया अक्सर गहराई से नेस्टेड JavaScript Object Notation पेलोड लौटाता है; एक एकल स्ट्राइप वेबहुक या वर्बोस AWS API प्रतिक्रिया हजारों tokens का उपभोग कर सकती है, जिनमें से अधिकांश में कुछ भी नहीं होता है जिसके बारे में एजेंट तर्क देगा। टूल निष्पादन और संदर्भ इंजेक्शन के बीच एक मिडलवेयर परिवर्तन परत डालें। शून्य मूल्यों को पट्टी करें, गैर-आवश्यक कुंजी फ़िल्टर करें, और गहरे डेटा को घने YAML या संरचित मार्कडाउन में पुनः प्रारूपित करें। लॉग के लिए, मॉडल द्वारा डेटा देखने से पहले टाइमस्टैम्प्स, थ्रेड आईडी और बॉयलरप्लेट को हटाने के लिए निर्णायक प्रीप्रोसेसिंग का उपयोग करें।
पकड़ यह है कि आक्रामक फ़िल्टरिंग आवश्यक मेटाडेटा को हटा सकता है, जैसे पेजिंग कर्सर। यदि एजेंट को परिणामों की एक सूची के माध्यम से पृष्ठ करना पड़ता है, तो कुछ tokens को बचाने के लिए next_ token फ़ील्ड को हटाना चुपचाप पुनर्प्राप्ति लूप को तोड़ सकता है। जब भी स्ट्राइप, जिरा AWS या इसी तरह के तृतीय-पक्ष APIs को एकीकृत करते हैं जो भाषा मॉडल तर्क के बजाय मशीन खपत के लिए अनुकूलित वर्बोस पेलोड लौटाता है।
सरल पाठ मिलान कोडिंग एजेंटों और पुनर्प्राप्ति संवर्धित पीढ़ी प्रणालियों में लागत भी बढ़ा सकता है। यदि एजेंट को एक एकल फ़ंक्शन की आवश्यकता होती है, तो ऑर्केस्ट्रेटर पूरी 4,000-पंक्ति फ़ाइल प्राप्त कर सकता है जहां वह कार्य रहता है। यह एक प्रश्न का उत्तर देने के लिए पूरे विश्वकोश को पढ़ने के बराबर है।
ट्री-सिटर भाषा-जागरूक पार्सर्स बनाने में मदद करता है जो इन संरचनात्मक इकाइयों को सटीक रूप से निकालते हैं। पकड़ यह है कि ग्राफ-जागरण प्राप्त करने के लिए निरंतर, अतुल्यकालिक अनुक्रमण पाइपलाइनों की आवश्यकता होती है। यदि वेक्टर इंडेक्स रिपॉजिटरी की मुख्य शाखा से पीछे रहता है, तो एजेंट स्थिर स्थिति के बारे में आत्मविश्वास से तर्क दे सकता है, उन कार्यों को कॉल करने का प्रयास कर सकता है जो अब मौजूद नहीं हैं और परिणामी त्रुटियों के माध्यम से आउटपुट tokens जला सकते हैं। इस पैटर्न का उपयोग कोड पुनर्प्राप्ति एजेंटों, संवर्धित कोड पीढ़ी समर्थन बॉट्स या किसी भी प्रणाली के लिए करें जो तेजी से उत्परिवर्तित, अत्यधिक संरचित कोडबेस के साथ बातचीत करती है।
योजना और रूटिंग विकल्प छिपी हुई लागत जोड़ते हैं
अधिकांश एजेंट फ्रेमवर्क उपकरण योजनाओं को एक बार परिभाषित करते हैं और प्रत्येक LLM कॉल पर उन सभी का इंजेक्शन देते हैं। छोटे टूल रजिस्ट्री के लिए यह हानिरहित है। 30 या 50 उपकरणों वाले एजेंट के लिए, मॉडल हर अनुरोध पर हजारों tokens स्कीमा परिभाषाएं पढ़ता है, जिसमें वर्तमान कार्य चरण से अप्रासंगिक उपकरणों की योजना भी शामिल है।
फिक्स एक परिमित राज्य मशीन द्वारा शासित संदर्भ-जागरूक उपकरण छंटाई है। एजेंट की वर्तमान ऑपरेशनल स्थिति बताती है कि कौन से टूल इंजेक्ट किए जाते हैं। डिस्कवरी स्टेट में एक एजेंट केवल खोज और पढ़ने के उपकरण प्राप्त करता है। एक बार जब यह निष्पादन पर जाता है, तो इसे केवल उत्परिवर्तन और लेखन उपकरण मिलता है। अप्रासंगिक योजनाएं कभी भी tokens का उपभोग नहीं करती हैं। पकड़ यह है कि गतिशील टूल स्कीमा प्रॉम्प्ट कैशिंग में हस्तक्षेप करते हैं। हर बार जब टूल सबसेट सरणी बदल जाती है,LLM प्रदाता प्रभावित प्रीफिक्स प्रोमोट के लिए कुंजी-मूल्य कैश को फिर से गणना कर सकता है, जिससे उच्च विलंबता और याद किया गया कैश हिट छूट होती है। इससे कैश प्लेसमेंट के साथ तनाव पैदा होता है। विशेष रूप से मल्टी-एजेंट आर्किटेक्चर या बड़े टूल एजेंट रजिस्ट्री वाले एकल बजट संदर्भों में लगभग 1,500 tokens से अधिक होने पर छँटाई लागू करें।
मोनोलिथिक रूटिंग मॉडल चयन के साथ एक ही समस्या को दोहराता है। फ्रंटियर मॉडलों, जिसमें ओपस-टियर या GPT-4 -क्लास विकल्प शामिल हैं, की कीमत छोटे विकल्पों पर महत्वपूर्ण प्रीमियम है। बुनियादी JavaScript Object Notation का विश्लेषण करने के लिए उनका उपयोग करना, इरादों को वर्गीकृत करना या सरल एप्लिकेशन लॉग्स को सारांशित करना कागजी कार्रवाई दर्ज करने में वरिष्ठ वास्तुकार को काम पर रखने जैसा है। कार्य किया जाता है, लेकिन लागत से आउटपुट अनुपात पैमाने पर अलग हो जाता है।
open-source रूटिंग लाइब्रेरी जैसे LiteLLM प्रत्येक मॉडल के लिए कॉल स्कैफोल्डिंग को फिर से लिखे बिना प्रदाता-अज्ञेय रूटिंग तर्क का समर्थन कर सकते हैं। पकड़ यह है कि छोटे मॉडल जटिल या ओवरलैपिंग टूल स्कीमा के साथ सामना करते समय नाजुक होते हैं। यदि वर्गीकरण परत अपर्याप्त तर्क क्षमता के कारण एक अनुरोध को गलत तरीके से भेजती है, तो वह सीमावर्ती मॉडल में कचरा पैरामीटर भेज सकती है, जिससे तत्काल विफलता होती है और उस कॉल के लिए token खर्च करती है। कार्य स्थान जहां वास्तविक रूप से जटिलता अलग हो जाती है। इस प्रणाली में अनुमानित उप-वॉल्यूम के साथ, जहां संरचनात्मक इनपुट स्पष्ट रूप से बाउंड किए जाते हैं, इसे दोहरे इरादे वाले इंजन की तुलना में अधिक अस्पष्ट रूप से साफ किया जा सकता है।
लूप और कैश प्लेसमेंट खर्च पर हावी हो सकते हैं
स्वायत्त एजेंट फंस सकते हैं। एक उपकरण कॉल विफल हो जाता है, एजेंट फिर से प्रयास करता है, पुनः प्रयास उसी अंतर्निहित कारण के लिए असफल होता है, और एजेंट अनिश्चित काल तक तर्क और पुनः प्रयासों को उत्पन्न करना जारी रखता है। कठोर सीमाओं के बिना, एक एकल अटक कार्य हजारों आउटपुट tokens का उपभोग कर सकता है , जो अधिकांश प्रदाता इनपुट की तुलना में उच्च दर पर बिल करते हैं।
फिक्स एक ऑर्केस्ट्रेटर-स्तरीय सर्किट ब्रेकर है। उपकरण विफलताओं पर सख्त अधिकतम पुनः प्रयास गिनती लागू करें और प्रति कार्रवाई आउटपुट token बजट को कैप करें। जब एजेंट थ्रेसहोल्ड से टकराता है, तो आर्केस्टर को लूप को इंटरसेप्ट करना चाहिए, डिटेर्मिनेटिस्टिक फ़ॉलबैक का आह्वान करना चाहिए या आगे की पीढ़ी की अनुमति देने के बजाय लूप में किसी इंसान तक बढ़ना चाहिए। LangChain और LlamaIndex जैसे फ्रेमवर्क अंतर्निहित पुनरावृत्ति और कॉलबैक हुक प्रदान करते हैं जो इस तर्क के लिए नींव के रूप में काम कर सकते हैं। पकड़ यह है कि सर्किट्स ब्रेकर्स वास्तव में जटिल कार्यों पर झूठा सकारात्मक हो सकता है। एक वैध आठ चरण योजना अनुक्रम की आवश्यकता होती है, मल्टी-स्टेप खोज अंतिम संश्लेषण से ठीक पहले सीमा को ट्रिगर कर सकती है। वास्तविक एजेंट निशान द्वारा रिट्यून थ्रेसहॉल्ट्स कदम, अग्रिम में अनुमान लगाकर नहीं।
की-वैल्यू कैश और प्रॉम्प्ट प्रीफिक्सिंग को अनदेखा करने से बजट भी बर्बाद हो जाता है। AI प्रदाताओं ने पहले ही संसाधित सामग्री पर ध्यान देने से बचने के लिए प्रांप्ट प्रीफ़िक्स के कुंजी-मूल्य प्रतिनिधित्वों को कैश किया है। यह सार्थक विलंबता में कमी लाता है और, उन प्रदाता जो उपयोगकर्ताओं को बचत देते हैं, वास्तविक लागत में कटौती करते हैं। कई एजेंट गलती से गतिशील चर, जैसे टाइमस्टैम्प्स, उपयोगकर्ता आईडी या अल्पकालिक मेमोरी स्नैपशॉट इंजेक्ट करके इसे पराजित करते हैं, स्टैटिक सामग्री से पहले प्रोमोट के शीर्ष पर।
Anthropic प्रॉम्प्ट कैशिंग और OpenAI प्रोम्प्ट केशींग प्रलेखन कवर कैसे संरचना अनुरोधों को अधिकतम करने के लिए कैश हिट उनके संबंधित APIs . पकड़ यह है कि सभी प्रदाताओं का समर्थन नहीं करते हैं कुंजी-मूल्य कैचिंग, और जो लोग निष्पादन समाप्ति लागू करते हैं, आम तौर पर पांच से पंद्रह मिनट के बीच, विंडो द्वारा प्रदाता भिन्न होते हैं. यदि एजेंट सोचता है कि चक्र धीमा है या सिस्टम कम ट्रैफ़िक है, तो कैश समाप्त हो सकता है और आप पूरी कीमत के लिए भुगतान करेंगे। प्रीफिक्स टूल के साथ तनाव को ध्यान में रखेंः गतिशील रूप से स्कीमा pruning उपकरण सीमाओं के माध्यम से चला जाता है और प्रति घंटे आउटपुट की दर अधिक होती है।
आम गलतियाँ
आउटपुट token अपशिष्ट को अक्सर याद किया जाता है क्योंकि पहले के पैटर्न इनपुट कचरे पर ध्यान केंद्रित करते हैं, लेकिन आउटपुट tokens आमतौर पर उच्च दर से बिल किए जाते हैं। जब एक एजेंट को संरचित डेटा निकालने के लिए कहा जाता है, जैसे कि नाम और email , बिना किसी प्रतिबंधित आउटपुट प्रारूप के, मॉडल अक्सर वास्तविक मूल्यों से पहले वार्तालाप प्रस्तावना उत्पन्न करता है। हजारों कॉलों में, वह प्रस्तावना जोड़ती है। प्रदाता-देशी संरचित आउटपुट मोड या टूल-यूज स्कीमा का उपयोग करना जहां भी वांछित आउटपुट प्रोसा की बजाय संरचित डाटा होता है, इस श्रेणी के अपशिष्ट का उन्मूलन करता है.
एक अन्य चेतावनी अतिरंजित संदर्भ इंजेक्शन है. सिस्टम प्रॉम्प्ट और हाल ही में उपयोगकर्ता-टर्न अनुस्मारक सहित कई स्थानों पर समान जानकारी को इंजेक्ट किया जा सकता है; कोई अन्य स्थान निर्दिष्ट नहीं है। डुप्लिकेट इंजेशन को क्लीनअप लक्ष्य के रूप में मानें, क्योंकि दोहराए गए संदर्भ से token लागत बढ़ जाती है और परस्पर विरोधी निर्देश बन सकते हैं।

Comments (0)