DanLevy.net

LLM कनेक्शन स्ट्रिंग्स का समय आ गया है

llm:// URLs से मॉडल और प्रोवाइडर कॉन्फ़िग को सरल बनाएं

अपडेट: इस लेख के बाद llm:// URI स्कीम के लिए एक Internet-Draft तैयार हुआ।

याद है वो बुरे दिन जब डेटाबेस से कनेक्ट करने का मतलब था पर्यावरण वैरिएबल्स के एक ढेर को संभालना?

यह एक नाज़ुक कॉन्फ़िग का महल था। DB_HOST, DB_PORT, DB_USER, DB_PASSWORD, DB_NAME… या रुको, क्या यह DB_USERNAME था? क्या यह DB_PASS है या DB_PWD? क्या मुझे इस बार PG_* प्रीफ़िक्स की ज़रूरत है? और टाइमआउट सेटिंग कहाँ जाती है?

यह पत्तों का एक नाज़ुक घर था, जो आपके प्रोडक्शन बिल्ड को तोड़ने के लिए तैयार था क्योंकि आपने HOST को बड़े अक्षरों में लिखना भूल गए।

फिर, किसी को यह शानदार विचार आया कि बस एक URL का उपयोग करें¹:

Terminal window
postgres://user:pass@host:5432/dbname

एक स्ट्रिंग। सब कुछ जो आपको चाहिए। सार्वभौमिक रूप से पार्स करने योग्य। पोर्टेबल। क्या मैं कहूं… सुंदर?

तो हम LLMs के साथ 1999 की तरह व्यवहार क्यों कर रहे हैं?

Env Var विस्फोट

अभी, मेरी .env फ़ाइल त्यागे गए API कुंजियों के कब्रिस्तान जैसी दिखती है। OPENAI_API_KEY, ANTHROPIC_API_KEY, MISTRAL_API_KEY, GROQ_API_KEY। और Azure की बात तो मत करो—सिर्फ “हैलो” कहने के लिए आपको एक एंडपॉइंट, एक डिप्लॉयमेंट नाम, एक API वर्जन और एक कुंजी चाहिए।

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

क्या अगर हम बस… DB URL विचार को उधार लें?

LLM कनेक्शन स्ट्रिंग्स का परिचय

कल्पना करें कि आप अपने पूरे मॉडल इंटरफ़ेस को एक ही लाइन से कॉन्फ़िगर कर रहे हैं:

Terminal window
llm://api.openai.com/gpt-5.2?reasoning_effort=none&temp=0.7&max_tokens=1500
llm://api.z.ai/glm-4.7?top_p=0.9&cache=true


LLM कनेक्शन स्ट्रिंग की संरचना

एक LLM कनेक्शन स्ट्रिंग के हिस्से

स्कीम llm:// है। होस्ट प्रोवाइडर की API बेस URL है। पथ मॉडल का नाम है। और क्वेरी पैरामीटर उन सभी रनटाइम विकल्पों को संभालते हैं जो आमतौर पर आपके कोड को अव्यवस्थित करते हैं।

ऑथ की ज़रूरत है? बढ़िया, इसे जोड़ें।

बिल्कुल postgres:// की तरह, हम ऑथेंटिकेशन को सीधे अंदर बना सकते हैं:

Terminal window
llm://app-name:sk-proj-123456@api.openai.com/gpt-5.2?reasoning_effort=none&temp=0.7

नोट: हाँ, URLs में क्रेडेंशियल डालना एक सुरक्षा जोखिम हो सकता है यदि आप उन्हें सार्वजनिक लॉग में पेस्ट कर रहे हैं। लेकिन आधुनिक लॉगिंग सेवाएं इन पैटर्न को स्क्रब करने में काफी अच्छी हैं, और ईमानदारी से, क्या आप अपनी .env फ़ाइल को इससे बेहतर संभाल रहे हैं? सत्यापित करें, सावधानी से उपयोग करें।

रेज़िलिएंसी? क्यों नहीं।

कई डेटाबेस लाइब्रेरीज़ कई होस्ट्स निर्दिष्ट करके राउंड-रोबिन फ़ेलओवर को सपोर्ट करती हैं। हमारे AI एजेंट्स को भी वही विश्वसनीयता क्यों नहीं मिलनी चाहिए?

Terminal window
llms://primary.gpt,backup.gpt/gpt-6?temp=0.9

यह llms:// में s टाइपो नहीं है। यह बहुवचन है। यदि primary.gpt हैंग हो जाता है, तो क्लाइंट स्वचालित रूप से backup.gpt को रिट्राई करता है। किसी जटिल राउटर लॉजिक की आवश्यकता नहीं।

एक स्ट्रिंग जिसमें आपकी ऑथ से लेकर आपके एंडपॉइंट तक आपके हाइपरपैरामीटर्स तक सब कुछ है।

वैकल्पिक प्रारूप

मैं llm:// से बंधा नहीं हूं। विशिष्ट स्कीम से ज़्यादा महत्वपूर्ण है स्वयं मानक।

मैं एक ऐसी दुनिया की कल्पना कर सकता हूं जहाँ हम संक्षिप्तता के लिए प्रोवाइडर-विशिष्ट स्कीम का उपयोग करते हैं, जबकि मानक संरचना को बनाए रखते हैं:

Terminal window
ollama://localhost:11434/llama3
vercel://anthropic/sonnet-4.5?temp=0.8&web_search={"maxUses":3}
bedrock://us-west-2.aws/anthropic/sonnet-4.5?temp=0.8&cacheControl=ephemeral

सटीक सिंटैक्स चाहे जो भी हो, मूल लाभ अस्वीकार्य हैं:

  1. पोर्टेबिलिटी: अपने पूरे कॉन्फ़िग को लोकल स्क्रिप्ट से क्लाउड वर्कर तक कॉपी और पेस्ट करें।
  2. CLI फ्रेंडली: अपनी स्क्रिप्ट्स को एक सिंगल आर्गुमेंट पास करें। my-agent --model "llm://..." बेहतर है my-agent --model gpt-4 --temp 0.7 --key $KEY --host ... से।
  3. लैंग्वेज एग्नोस्टिक: हर प्रोग्रामिंग लैंग्वेज में एक मज़बूत URL पार्सर होता है। हमें वैलिडेशन, पार्सिंग और सैनिटाइज़ेशन मुफ़्त में मिलता है।
डेटाबेस दुनिया को यह समझने में दशकों लग गए।
अच्छी खबर, AI टाइमलाइन में, यह केलगबी आधा वाइब-साल पहले है।

निष्कर्ष

हमें एक और जटिल कॉन्फ़िगरेशन मानक या एक नई YAML-आधारित मेनिफ़ेस्ट फ़ाइल की ज़रूरत नहीं है। हमें बस उस एक टूल का उपयोग करने की ज़रूरत है जो पिछले 30 वर्षों से इंटरनेट के बाकी हिस्सों के लिए काम कर रहा है।

आइए पहिए को फिर से खोजने के बजाय अपने LLM कनेक्शन्स के साथ उसी सम्मान का व्यवहार करना शुरू करें जो हम अपने डेटाबेस को देते हैं। आपकी .env फ़ाइल (और आपकी मानसिक शांति) आपकी धन्यवाद देगी।

एक अव्यवस्थित env var ड्रॉअर