𝗜 𝗧𝗿𝗶𝗲𝗱 𝗧𝗼 𝗔𝗱𝗱 𝗔𝗜 𝗖𝗵𝗮𝘁 𝗧𝗼 𝗠𝘆 𝗔𝗽𝗽 𝗔𝗻𝗱 𝗛𝗶𝘁 𝗔 𝗪𝗮𝗹𝗹

मी माझ्या प्रोजेक्ट मॅनेजमेंट टूलमध्ये एक AI चॅट असिस्टंट जोडण्याचा प्रयत्न केला. मला वापरकर्त्यांना प्रलंबित कामे (overdue tasks) किंवा मीटिंग नोट्सबद्दल प्रश्न विचारता यावेत असे वाटत होते. हे सोपे वाटत होते. मला वाटले की मी फक्त एक API कॉल करेन आणि काम संपेल. मी चुकीचा होतो.

१५ मेसेजनंतर, AI संथ आणि विसंगत झाले. संभाषण खूप मोठे झाल्यामुळे API एरर्स (errors) देऊ लागला. मी 8k टोकन लिमिटसह GPT-4 वापरले होते. प्रत्येक मेसेजमध्ये लांब वर्णने आणि नोट्स होत्या. हिस्ट्री खूप वेगाने वाढत होती.

मी तीन वेगवेगळ्या उपायांचा प्रयत्न केला:

  • हिस्ट्री ट्रंकेटिंग (Truncating history): मी फक्त शेवटचे काही मेसेज ठेवले. यामुळे वेग वाढला पण AI बाकी सर्व काही विसरले.
  • समरायझेशन (Summarization): मी दर ५ मेसेजनंतर चॅटचा सारांश काढण्यासाठी AI ला सांगितले. यामुळे मेमरीमध्ये मदत झाली पण खर्च आणि लॅटन्सी (latency) वाढली.
  • रिलेव्हन्स स्कोअरिंग (Relevance scoring): मी फक्त सर्वात संबंधित मेसेज ठेवण्याचा प्रयत्न केला. यासाठी वेक्टर स्टोअरची (vector store) गरज होती आणि यामुळे गुंतागुंत खूप वाढली.

मला जाणवले की मला अधिक चांगल्या रणनीतीची गरज आहे. मी दोन पद्धतींवर शिक्कामोर्तब केले: स्ट्रीमिंग (streaming) आणि एक फिक्स्ड कॉन्टेक्स्ट विंडो (fixed context window).

स्ट्रीमिंगमुळे ॲप जलद वाटते. पूर्ण उत्तराची वाट पाहण्याऐवजी वापरकर्त्यांना मजकूर त्वरित दिसू लागतो. मजकूर आल्यावर त्याचे तुकडे (chunks) पाठवण्यासाठी मी Server-Sent Events वापरले.

मी माझा कॉन्टेक्स्ट देखील तीन भागांमध्ये विभागला:

  • सिस्टम प्रॉम्प्ट (System prompt): सूचनांचा एक निश्चित संच.
  • डायनॅमिक कॉन्टेक्स्ट (Dynamic context): अलीकडील प्रोजेक्ट अपडेट्स आणि टास्कची स्थिती.
  • कन्वर्सेशन हिस्ट्री (Conversation history): अलीकडील मेसेजची एक स्लाइडिंग विंडो (sliding window).

मी प्रत्येक वेळी संपूर्ण हिस्ट्री पाठवत नाही. मी फक्त सध्याच्या प्रश्नाचे उत्तर देण्यासाठी आवश्यक तेवढाच डेटा पाठवतो. यामुळे माझ्या पेलोडचा आकार (payload size) ४०% कमी झाला. यामुळे माझे पैसे वाचले आणि वेगही सुधारला.

जर तुम्ही AI फीचर्स बनवत असाल, तर लक्षात ठेवा: स्ट्रीमिंगमुळे तुम्हाला वेग मिळतो. एक चांगली कॉन्टेक्स्ट रणनीती तुम्हाला बुद्धिमत्ता देते.

तुम्ही तुमच्या ॲप्समध्ये कन्वर्सेशन मेमरी कशी मॅनेज करता? तुम्ही स्लाइडिंग विंडोज वापरता की समरायझेशन?

स्त्रोत: https://dev.to/__c1b9e06dc90a7e0a676b/i-tried-to-add-ai-chat-to-my-app-and-hit-a-wall-with-context-tokens-459b