DanLevy.net

Il est temps d'adopter les chaînes de connexion LLM

Simplifiez la configuration des modèles et fournisseurs avec les URLs llm://

Mise à jour : Cet article a conduit à la rédaction d’un Internet-Draft pour le schéma d’URI llm://.

Vous souvenez-vous de cette époque où se connecter à une base de données signifiait jongler avec un fourre-tout de variables d’environnement ?

C’était une tour de configuration délicate. DB_HOST, DB_PORT, DB_USER, DB_PASSWORD, DB_NAME… ou attendez, c’était DB_USERNAME ? Est-ce DB_PASS ou DB_PWD ? Dois-je utiliser les préfixes PG_* cette fois-ci ? Et où diable passe le paramètre de timeout ?

C’était un château de cartes fragile, prêt à faire s’effondrer votre build en production parce que vous aviez oublié de mettre HOST en majuscules.

Puis, quelqu’un a eu l’idée brillante d’utiliser simplement une URL¹ :

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

Une seule chaîne. Tout ce qu’il faut. Universellement analysable. Portable. Oserais-je dire… belle ?

Alors pourquoi traitons-nous les LLM comme si nous étions en 1999 ?

L’explosion des variables d’environnement

Actuellement, mon fichier .env ressemble à un cimetière de clés API abandonnées. OPENAI_API_KEY, ANTHROPIC_API_KEY, MISTRAL_API_KEY, GROQ_API_KEY. Et ne me lancez pas sur Azure — il faut un endpoint, un nom de déploiement, une version d’API et une clé juste pour dire « bonjour ».

Ce n’est pas seulement laid ; c’est une friction. Chaque fois que je veux changer de modèle ou tester un nouveau fournisseur, je dois réécrire le code d’initialisation, chercher la documentation pour les noms de paramètres spécifiques, et ajouter trois lignes de configuration supplémentaires.

Et si on… volait empruntait simplement l’idée des URLs de base de données ?

Présentation des chaînes de connexion LLM

Imaginez configurer toute votre interface de modèle avec une seule ligne :

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


Anatomie d’une chaîne de connexion LLM

les parties d'une chaîne de connexion LLM

Le schéma est llm://. L’hôte est l’URL de base de l’API du fournisseur. Le chemin est le nom du modèle. Et les paramètres de requête gèrent toutes les options d’exécution qui encombrent habituellement votre code.

Besoin d’authentification ? Parfait, ajoutez-la.

Tout comme postgres://, nous pouvons intégrer l’authentification directement :

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

Note : Oui, mettre des identifiants dans des URLs peut présenter un risque de sécurité si vous les collez dans des logs publics. Mais les services de logging modernes sont plutôt bons pour masquer ces motifs, et honnêtement, traitez-vous votre fichier .env beaucoup mieux ? Vérifiez, assainissez et utilisez avec précaution.

Résilience ? Pourquoi diable pas.

De nombreuses bibliothèques de bases de données supportent le basculement round-robin en spécifiant plusieurs hôtes. Pourquoi nos agents IA n’auraient-ils pas la même fiabilité ?

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

Ce s dans llms:// n’est pas une typo. C’est un pluriel. Si primary.gpt se bloque, le client réessaie automatiquement avec backup.gpt. Aucune logique de router complexe requise.

Une seule chaîne avec tout, de votre authentification à votre endpoint en passant par vos hyperparamètres.

Formats alternatifs

Je ne suis pas marié à llm://. Le schéma exact importe moins que le standard lui-même.

Je pourrais imaginer un monde où nous utilisons des schémas spécifiques au fournisseur pour la brièveté, tout en conservant la structure standard :

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

Quelle que soit la syntaxe exacte, les avantages fondamentaux sont indéniables :

  1. Portabilité : Copiez et collez toute votre configuration d’un script local à un worker cloud.
  2. Ami du CLI : Passez un seul argument à vos scripts. my-agent --model "llm://..." bat my-agent --model gpt-4 --temp 0.7 --key $KEY --host ....
  3. Agnostique au langage : Chaque langage de programmation possède un analyseur d’URL robuste. Nous obtenons la validation, l’analyse et l’assainissement gratuitement.
Le monde des bases de données a mis des décennies à comprendre ça.
Bonne nouvelle, dans les timelines de l’IA, ça ne fait que la moitié d’une vibe-année.

Le verdict

Nous n’avons pas besoin d’un autre standard de configuration complexe ou d’un nouveau fichier manifeste basé sur YAML. Nous avons juste besoin d’utiliser l’outil qui fonctionne pour le reste d’Internet depuis 30 ans.

Cessons de réinventer la roue et commençons à traiter nos connexions LLM avec le même respect que nous accordons à nos bases de données. Votre fichier .env (et votre santé mentale) vous remerciera.

un tiroir de variables d'environnement en désordre