- Mozilla AI टीम द्वारा बनाई गई Python लाइब्रेरी, जो 20 से अधिक LLM providers को एक ही फ़ंक्शन से इस्तेमाल करने देती है
- OpenAI, Anthropic, Google, Mistral, AWS Bedrock आदि के बीच मॉडल बदलते समय सिर्फ
provider_id/model_id बदलना होता है
- आधिकारिक provider SDKs को प्राथमिकता देकर compatibility समस्याओं को न्यूनतम करती है, और अलग से proxy/gateway server इंस्टॉल करने की ज़रूरत नहीं होती, इसलिए pip install के बाद तुरंत उपयोग किया जा सकता है
- developer-friendly तरीके से पूर्ण IDE type hints, सहज exception handling, custom exceptions, documentation और quick guide प्रदान करती है
- हल्का router होने के कारण यह framework-agnostic है, और अलग proxy/gateway server की ज़रूरत नहीं (सिर्फ API Key हो तो तुरंत उपयोग)
- मौजूदा solutions की समस्याओं को हल करते हुए, सक्रिय maintenance जारी है : Mozilla के any-agent जैसे वास्तविक products में उपयोग हो रहा है
- LiteLLM: आधिकारिक SDK के बजाय direct implementation → compatibility/bug की आशंका
- AISuite: modular structure है, लेकिन management और typing कमज़ोर
- framework-dependent: हर project में फिर से fragmentation
- proxy-only: अलग server की ज़रूरत, complexity बढ़ती है
संबंधित दस्तावेज़
3 टिप्पणियां
हर LLM provider के लिए key अलग से मैनेज करनी पड़ेगी।
Hacker News टिप्पणियाँ
text API में मैंने कोई बड़ा compatibility issue अनुभव नहीं किया, और अलग-अलग API को standardize करने के लिए अपना interface implement करना पड़े, यह समझ में आता है
किसी खास router को बनाने के लिए यह प्रक्रिया ज़रूरी है
मैंने इसे प्रयोग के तौर पर library की तरह इस्तेमाल किया था, लेकिन आखिर में Simon का llm पर चला गया। Simon को धन्यवाद
फर्क ज़्यादा edge cases में दिखता है, जैसे streaming behavior, timeout handling, और नए features की शुरुआत
हम भी API normalization के लिए interfaces दोबारा बना रहे हैं, इसलिए SDK का इस्तेमाल करना या न करना असल में इस बात का फर्क है कि layer कहाँ बाँटी जाए
SDK अपनाना ज़्यादातर maintenance preference का मामला है, LiteLLM के approach में किसी बुनियादी खामी की वजह से नहीं
Together के SDK में Apache Arrow जैसी 60MB की dependency शामिल थी, और मैंने उसे खुद patch करके optional बनाया
अगर dependency versions को ज़बरदस्ती pin कर दिया जाए, तो वह मेरे project से टकराव पैदा कर सकता है
बहुत सारी dependencies खींचने वाली library की बजाय सिर्फ OpenAPI/REST इस्तेमाल करना बेहतर लगता है
सिर्फ आधिकारिक SDK इस्तेमाल करने से सारे compatibility issues हल नहीं हो जाते, और any_llm को भी आखिरकार आधिकारिक SDK के साथ compatibility बनाए रखने का काम करना पड़ेगा
साफ़-साफ़ कहना मुश्किल है कि कौन-सा तरीका बेहतर है
user के नज़रिए से proxy में आधिकारिक SDK इस्तेमाल हो या नहीं, real-world usage में कोई फर्क नहीं पड़ता
proxy developers के लिए कुछ फायदे हो सकते हैं
उदाहरण के लिए, हाल ही में Litellm में Deepseek Reasoning handling को लेकर issue था, और sync/streaming दोनों responses में reasoning हिस्सा गायब हो गया था
मेरे अनुभव में LiteLLM वास्तव में बहुत robust तरीके से काम करता है
providers आमतौर पर API changes के समय पहले से अच्छी सूचना देते हैं, और LiteLLM मेरे लिए इस वजह से कभी समस्या नहीं बना
LLM से जुड़ी नकारात्मक काल्पनिक कमियाँ मुझे सिर्फ इसी लेख में दिखीं
proxy/gateway solution के रूप में OpenRouter और Portkey का भी ज़िक्र हुआ, लेकिन वास्तव में OpenRouter में user को खुद server खड़ा करने की ज़रूरत नहीं होती, बस endpoint पर सीधे API call करनी होती है
इस लेख में OpenRouter को self-hosted proxy समझने की गलती की गई
और AISuite, Andrew NG का बनाया हुआ product है, लेकिन blog में लिखा गया कि यह “दिसंबर 2024 के बाद से unmaintained” है; जबकि असल में release tags नहीं होने का मतलब यह भी हो सकता है कि छोटे community projects में tagging नियमित न हो
बिना fact-checking के ऐसी बातें blog में डालना मुझे समस्या लगता है
अगर Mozilla brand न होता, तो मैं इसे scam या malware समझ बैठता
नाम भी Anything-LLM से बहुत मिलता-जुलता है, इसलिए भ्रम होता है
अब तक मैं LiteLLM इस्तेमाल करता रहा हूँ, लेकिन इसकी अंदरूनी implementation देखने पर यह काफ़ी जटिल और समस्याग्रस्त लगी
उदाहरण के लिए, पिछले कुछ महीनों से Ollama entry का Structured Output पूरी तरह टूटा हुआ पड़ा था, और documentation भी बिल्कुल व्यवस्थित नहीं थी
Python चुनने की वजह शायद यह है कि ज़्यादातर SDK Python-based हैं
लेकिन अगर यह interpreter के बिना कई भाषाओं में portable होता, तो सच में revolutionary होता
सचमुच universal solution बनाने के लिए model runtime और language को पूरी तरह अलग करना होगा, और यह कहीं ज़्यादा कठिन समस्या है, लेकिन बड़ा कदम भी
Mozilla वाला project (LiteLLM सहित) पहले से कई interfaces support करता है, इसलिए इसकी ताकत यह है कि तुरंत कई models इस्तेमाल किए जा सकते हैं
अलग proxy/gateway server के बिना सीधे कई LLM providers से connect किया जा सकता है। LiteLLM से तुलना पर मैं ज़्यादा नहीं कह सकता क्योंकि मेरा अनुभव कम है
अपने research role की ज़रूरत के कारण मैंने इसे विकसित करना शुरू किया
मौजूदा projects से ideas लेकर इसे ज़्यादा general-purpose use के लिए बनाया
https://github.com/proxai/proxai
https://proxai.co/
मैंने भी हाल ही में ऐसा ही LLM abstraction layer launch किया है
इसे pip install से आसानी से इस्तेमाल किया जा सकता है, और Langchain compatibility पर ध्यान देकर बनाया गया है ताकि मौजूदा systems में आसानी से replace किया जा सके
साथ ही rate limit exceed होने पर virtual providers के ज़रिए automatic failover भी संभव है
Usage/Logs feature वास्तविक LLM usage को visualise करता है, और Cache feature बार-बार testing के दौरान लागत कम करने में बहुत मदद करता है
अच्छा लेख है, धन्यवाद। संयोग से मैं भी आज 27वीं बार refactoring कर रहा था।
पहले C++ में कर रहा था, फिर javascript में, और अब फिर से rust में...