DanLevy.net

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

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

अपडेट: इस लेख ने llm:// URI स्कीम के लिए एक Internet-Draft को जन्म दिया।

क्या आपको वे पुराने बुरे दिन याद हैं जब डेटाबेस कनेक्ट करने के लिए environment variables के एक अव्यवस्थित समूह को जुगाड़ करना पड़ता था?

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

यह कार्डों का एक नाज़ुक महल था, जो आपकी प्रोडक्शन बिल्ड को गिरा सकता था क्योंकि आप HOST को capitalize करना भूल गए।

फिर, किसी के दिमाग में एक शानदार विचार आया — सिर्फ एक URL¹ इस्तेमाल करो:

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

एक स्ट्रिंग। वह सब कुछ जो आपको चाहिए। सब जगह parse हो सकता है। Portable। मैं कहूँ… सुंदर?

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

Environment Variables का विस्तार

अभी, मेरी .env फ़ाइल छोड़े गए API keys की कब्रगाह जैसी दिखती है। OPENAI_API_KEY, ANTHROPIC_API_KEY, MISTRAL_API_KEY, GROQ_API_KEY। और Azure की बात शुरू करो तो — आपको एक endpoint, एक deployment name, एक API version, और एक key चाहिए सिर्फ “hello” कहने के लिए।

यह सिर्फ बदसूरत नहीं है; यह friction है। हर बार जब मैं model swap करना चाहता हूँ या नया provider टेस्ट करना चाहता हूँ, मैं initialization code फिर से लिख रहा हूँ, specific parameter names की documentation खोज रहा हूँ, और अपने environment config में तीन और लाइनें जोड़ रहा हूँ।

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

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

कल्पना करो अपनी पूरी model interface को एक लाइन से configure करना:

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 कनेक्शन स्ट्रिंग के भाग

Scheme है llm://। Host है provider का API base URL। Path है model name। और query parameters सब runtime options को handle करते हैं जो आमतौर पर आपके code में clutter करते हैं।

Auth चाहिए? बढ़िया, जोड़ दो।

जैसे postgres://, हम authentication सीधे bake कर सकते हैं:

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

नोट: हाँ, credentials URLs में रखना security risk हो सकता है अगर आप उन्हें public logs में paste कर रहे हैं। लेकिन modern logging services इन patterns को scrub करने में काफ़ी अच्छे हैं, और सच कहूँ तो, क्या आप अपनी .env फ़ाइल से बहुत बेहतर व्यवहार कर रहे हैं? Verify करो, sanitize करो, और सावधानी से इस्तेमाल करो।

Resiliency? क्यों नहीं।

कई डेटाबेस libraries multiple hosts specify करके round-robin failover support करती हैं। हमारे AI agents को भी यही reliability क्यों नहीं मिलनी चाहिए?

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

llms:// में वह s typo नहीं है। यह plural है। अगर primary.gpt hang करता है, client automatically backup.gpt retry करता है। कोई complex router logic ज़रूरी नहीं।

एक स्ट्रिंग में सब कुछ — आपकी auth से आपके endpoint तक आपके hyperparameters तक।

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

मैं llm:// के साथ बँधा नहीं हूँ। Specific scheme standard से कम important है।

मैं एक दुनिया की कल्पना कर सकता हूँ जहाँ हम brevity के लिए provider-specific schemes इस्तेमाल करते हैं, standard structure रखते हुए:

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

Exact syntax कुछ भी हो, core benefits अकाट्य हैं:

  1. Portability: अपनी पूरी config local script से cloud worker तक copy & paste करो.
  2. CLI Friendly: अपने scripts में एक argument pass करो। my-agent --model "llm://..." बेहतर है my-agent --model gpt-4 --temp 0.7 --key $KEY --host ... से।
  3. Language Agnostic: हर programming language में robust URL parser है। हमें validation, parsing, और sanitization free में मिलती हैं।
डेटाबेस दुनिया ने इसे समझने में decades लगाए।
ख़ुशी की बात, AI timelines में, यह सिर्फ लगभग आधा vibe-year पहले था।

निष्कर्ष

हमें एक और complex configuration standard या नया YAML-based manifest file नहीं चाहिए। हमें सिर्फ वह tool चाहिए जो पिछले 30 साल से internet के बाकी हिस्से के लिए काम कर रहा है।

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

एक गंदा env var ड्रॉयर