paint-brush
लाइटएलएलएम कॉन्फ़िगरेशन: विश्वसनीय रूप से 100+ एलएलएम पर कॉल करेंद्वारा@krrish
2,951 रीडिंग
2,951 रीडिंग

लाइटएलएलएम कॉन्फ़िगरेशन: विश्वसनीय रूप से 100+ एलएलएम पर कॉल करें

द्वारा Krrish Dholakia3m2023/09/22
Read on Terminal Reader

बहुत लंबा; पढ़ने के लिए

लाइटएलएलएम ओपनाई-पायथन एसडीके के लिए एक ड्रॉप-इन प्रतिस्थापन है। आपको 100+ एलएलएम पर कॉल करने की सुविधा देता है। कॉन्फ़िगरेशन फ़ाइलों के साथ, यह अब आपको किसी भी सर्वर-साइड कोड को बदले बिना, उत्पादन में नए मॉडल जोड़ने की सुविधा दे सकता है।
featured image - लाइटएलएलएम कॉन्फ़िगरेशन: विश्वसनीय रूप से 100+ एलएलएम पर कॉल करें
Krrish Dholakia HackerNoon profile picture


समस्या

एकाधिक एलएलएम को कॉल करने में प्रदाता/मॉडल-विशिष्ट कॉन्फ़िगरेशन शामिल होते हैं। भले ही आप I/O को एकीकृत कर दें, फिर भी आपको मॉडल/प्रदाता-विशिष्ट एज-केसों को संभालने का एक तरीका चाहिए।


हमें पिछले सप्ताह इसका सामना करना पड़ा जब एंथ्रोपिक ने हमें बताया कि हमने उनकी सामग्री नीति का उल्लंघन किया है। चूंकि, हम अपने ओपन-सोर्स प्रॉक्सी सर्वर के माध्यम से अपने समुदाय को क्लाउड-2 आदि जैसे एलएलएम तक पहुंच प्रदान करते हैं।


OpenAI मॉडरेशन एंडपॉइंट के माध्यम से क्वेरीज़ की जाँच करने से क्वेरीज़ धीमी हो जाएंगी, इसलिए हम इसे केवल एंथ्रोपिक के मॉडल पर चलाना चाहते थे।


 if model in ["claude-instant-1", "claude-2"]: # run moderations check return litellm.completion(model, messages)


लेकिन इस तरह के सशर्त तर्क से बग पैदा होते हैं। हमने पहले भी इस सटीक समस्या का सामना किया था, और हमारे लिए इस समस्या को हल करने के लिए लाइटएलएलएम का निर्माण किया था (अमूर्त लाइब्रेरी जिसने एलएलएम एपीआई कॉल को सरल बनाया था)।


tldr;

  • हम अपने सर्वर पर सशर्त तर्क नहीं चाहते थे।
  • हमें यह नियंत्रित करने का एक तरीका चाहिए था कि किन मॉडलों/प्रदाताओं के लिए यह जांच की जाए।

समाधान: कॉन्फ़िग फ़ाइलें

हमारा समाधान यह था कि लाइटएलएलएम हमारे लिए इसे संभाले , और एक कॉन्फ़िगरेशन फ़ाइल के माध्यम से इसके तर्क को नियंत्रित करे। इसने हमारे सर्वर कोड से सशर्त तर्क को हटा दिया , और फिर भी हमें प्रदाता/मॉडल विशिष्ट विवरणों को नियंत्रित करने की अनुमति दी।


इसने हमें अन्य परिदृश्यों जैसे संदर्भ विंडो त्रुटियों, अधिकतम टोकन आदि को संभालने में भी सक्षम बनाया।


यहां हमारा पूरा कोड है:


 import litellm import os config = { "default_fallback_models": ["gpt-3.5-turbo", "claude-instant-1", "j2-ultra"], "model": { "claude-instant-1": { "needs_moderation": True }, "gpt-3.5-turbo": { "error_handling": { "ContextWindowExceededError": {"fallback_model": "gpt-3.5-turbo-16k"} } } } } # set env var os.environ["OPENAI_API_KEY"] = "sk-litellm-5b46387675a944d2" # [OPTIONAL] replace with your openai key os.environ["ANTHROPIC_API_KEY"] = "sk-litellm-5b46387675a944d2" # [OPTIONAL] replace with your anthropic key sample_text = "how does a court case get to the Supreme Court?" * 1000 messages = [{"content": sample_text, "role": "user"}] response = completion_with_config(model="gpt-3.5-turbo", messages=messages, config=config) print(response) # should be gpt-3.5-turbo-16k


कॉन्फ़िग फ़ाइलें वर्तमान में प्रबंधित होती हैं:

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


समय के साथ, यह अन्य मॉडल-विशिष्ट मापदंडों को संभाल लेगा जैसे अधिकतम टोकन सेट करना, त्वरित फ़ॉर्मेटिंग इत्यादि। विचारों/सुझावों का स्वागत है!

निष्कर्ष

ओपनएआई चैटकंप्लीशन के एंडपॉइंट के लिए ड्रॉप-इन प्रतिस्थापन के साथ, लाइटएलएलएम ने पहले से ही एलएलएम प्रदाताओं को कॉल करना सरल बना दिया है।


कॉन्फ़िगरेशन फ़ाइलों के साथ, यह अब आपको किसी भी सर्वर-साइड कोड को बदले बिना, उत्पादन में नए मॉडल जोड़ने की सुविधा दे सकता है।


कुल मिलाकर, लाइटएलएलएम उन लोगों के लिए एक उत्कृष्ट विकल्प है जो गैर-ओपनएआई मॉडल को जल्दी और आसानी से उत्पादन में जोड़ना चाहते हैं।


हम सक्रिय रूप से इस परियोजना को आगे बढ़ाने की कोशिश कर रहे हैं, इसलिए आपके कौशल स्तर पर कोई फर्क नहीं पड़ता, हम योगदान का स्वागत करते हैं! यदि आपको अनुपलब्ध सुविधाएँ/बग मिलते हैं या मौजूदा समस्याओं में योगदान होता है, तो एक समस्या खोलें। यदि आप नए अपडेट आने पर हमारी प्रगति का अनुसरण करना चाहते हैं तो हमें GitHub पर स्टार करें