Qu’est-ce que BAML ?
BAML (Basically A Made-up Language) est un langage open source de Boundary, une start-up de Seattle, qui sert à écrire des appels à des LLM sous forme de fonctions typées. Vous déclarez les entrées, le type de sortie et le prompt dans un fichier .baml ; un générateur écrit un client pour votre application, et un parser en Rust répare la réponse du modèle jusqu'à ce qu'elle corresponde au type déclaré.
Le projet est en pleine scission. BAML v0, désormais présenté comme le DSL historique, est l'outil de sortie structurée que connaissent la plupart des utilisateurs : les paquets baml-py et @boundaryml/baml, en version 0.226.3, génèrent des clients pour Python, TypeScript, Ruby et Go. BAML v1, distribué sous forme de versions baml-language avec des builds presque quotidiens, est un langage généraliste distinct pour les agents, que la documentation décrit comme en bêta publique et que le site qualifie d'antérieur à la 1.0.
Le code est sous Apache-2.0 et s'exécute en local. Boundary prévoit de facturer BAML Cloud, un service hébergé de traces et de contrôles d'équipe qui, au 1er novembre 2026, n'était ni lancé ni doté de tarifs publiés.
BAML vaut-il le coup ?
BAML est le meilleur argument pour traiter les prompts comme du code typé plutôt que comme des chaînes, et 2026 est une année malcommode pour l'adopter. L'idée centrale tient : une fonction dans un fichier .baml déclare son type de sortie, le client généré appelle le modèle, et le schema-aligned parsing corrige les virgules finales, les guillemets manquants et les objets inachevés au lieu de les rejeter. Le benchmark de Boundary elle-même, sur 1,000 cas du Berkeley Function Calling Leaderboard par modèle, plaçait gpt-4o-mini à 92.4% avec le parser contre 19.8% avec le function calling natif. Les chiffres sont autodéclarés et portent sur des modèles de l'époque 2024, mais ils expliquent pourquoi les équipes qui utilisent des modèles bon marché l'apprécient.
Le problème, c'est la scission. La version 0.225.0, début août 2026, a rebaptisé la ligne existante BAML v0, le DSL historique, et l'effort de Boundary s'est déplacé vers BAML v1, un langage à part avec green threads, erreurs typées et framework de tests intégré. v0 continue de sortir (baml-py 0.226.3 est paru le 28 octobre), mais le README, le quickstart et les builds nocturnes renvoient tous vers v1. La chaîne d'outils v1 est passée de la 0.21.0 le 8 octobre à la 0.23.0 le 26 octobre, et les notes de la 0.21.0 à elles seules listent 13 changements incompatibles, des clés de map entre guillemets aux API de traçage supprimées. v1 change aussi de paquet Python, de baml-py à baml-bridge, et Boundary tient un dépôt distinct de kit de migration.
Au quotidien, ce sont les outils qui attirent. L'extension VS Code régénère le client à l'enregistrement et ouvre un playground où vous lancez un prompt sur des entrées de test avant d'écrire le code de l'application ; promptfiddle.com fait de même dans le navigateur. v0 dialogue nativement avec Anthropic, OpenAI (y compris la Responses API), Azure OpenAI, Google AI, Vertex AI et AWS Bedrock, et avec Ollama, vLLM, OpenRouter, Groq et d'autres via un client compatible OpenAI, avec des politiques de fallback, de round-robin et de nouvelle tentative déclarées à côté du prompt. Face à Pydantic AI, Instructor ou Outlines, qui vous laissent en Python, le prix est un nouveau type de fichier, une étape de génération de code et un langage que vos collègues doivent apprendre.
Les réglages de confidentialité par défaut méritent une lecture attentive. La page de tarifs de Boundary affirme que la chaîne d'outils ne contacte pas ses serveurs, pourtant la CLI envoie par défaut des statistiques d'usage anonymes : le nom de la commande, la version de BAML, le système d'exploitation et des informations sur le processeur, un identifiant de machine aléatoire et un hash salé de la racine du projet, mais ni prompts, ni code, ni clés. baml telemetry disable ou DO_NOT_TRACK=1 les désactive. Le traçage à l'exécution est un réglage distinct, réglé sur medium par défaut, qui enregistre les corps HTTP en local ; il ne les envoie à Boundary qu'une fois que vous vous connectez ou définissez BOUNDARY_API_KEY.
Une équipe dont les pipelines d'extraction en v0 fonctionnent a peu à gagner à migrer avant que v1 n'atteigne la 1.0. Un nouveau projet fait face au pari le plus difficile : c'est sur v1 qu'une équipe qui se dit petite concentre son attention, le dépôt compte 366 issues et pull requests ouvertes, et BAML Cloud, la partie payante, n'avait pas de prix publié au 1er novembre 2026, si bien que personne ne peut encore chiffrer l'observabilité hébergée.
Là où il fait la différence
Une équipe data Python chez un courtier en assurance
Extraire des champs typés de milliers d'e-mails de sinistres par jour
Définir le sinistre comme une classe BAML, construire des tests à partir de vrais e-mails dans le playground et appeler le client Pydantic généré depuis le pipeline existant. Le parser récupère des réponses qu'une validation JSON stricte rejetterait, ce qui rend viable un modèle moins cher ; le coût se résume aux tokens du modèle et à l'épinglage de baml-py.
Une équipe produit TypeScript qui ajoute des fonctions d'IA à une application SaaS
Garder les prompts relisibles et le modèle interchangeable
Les prompts vivent dans des fichiers .baml relus comme n'importe quel autre code, et un client de fallback passe d'OpenAI à Anthropic quand un appel échoue. Le client registry peut envoyer une part du trafic, par exemple 10%, vers un modèle candidat. Aucun coût de licence ; le risque est que le développement de Boundary se concentre désormais sur v1.
Une responsable de l'ingénierie dans une start-up de 20 personnes qui choisit sa pile d'agents
Décider s'il faut construire les nouveaux agents sur BAML v1
Prévoir un langage antérieur à la 1.0 : la chaîne d'outils v1 a publié trois versions mineures en octobre 2026 (0.21.0, 0.22.0 et 0.23.0) et son paquet Python, baml-bridge, remplace baml-py. Le traçage hébergé n'a pas de prix publié, donc les traces locales sont aujourd'hui la seule option chiffrable.
Avant de vous engager
- Mise en route
- v0 : pip install baml-py (ou npm @boundaryml/baml), puis baml-cli generate écrit un dossier baml_client ; l'extension VS Code le régénère à l'enregistrement. v1 : brew install baml ou le script d'installation, baml init, puis baml run main ; baml agent install ajoute des consignes pour Claude Code et Codex.
- Intégrations
- Fournisseurs v0 : Anthropic, OpenAI et OpenAI Responses, Azure OpenAI, Google AI, Vertex AI et AWS Bedrock, plus Ollama, vLLM, LM Studio, OpenRouter, Groq, LiteLLM et d'autres via openai-generic. v0 génère des clients pour Python, TypeScript, Ruby et Go ; v1 s'appelle depuis Python et TypeScript, avec des dépôts de SDK naissants pour Go et Swift.
- Données et confidentialité
- Les prompts ne vont qu'aux fournisseurs que vous configurez. La CLI envoie par défaut des statistiques anonymes (commande, version, informations sur la machine, un identifiant aléatoire) ; désactivation avec baml telemetry disable ou DO_NOT_TRACK=1. Les traces d'exécution, corps HTTP compris, sont enregistrées en local et envoyées seulement avec une connexion Boundary ou BOUNDARY_API_KEY. Le niveau de log info par défaut de v0 affiche chaque prompt et chaque réponse brute dans le terminal. Aucun avis de sécurité n'est publié sur GitHub.
- Coût à grande échelle
- Le langage et la chaîne d'outils sont gratuits sous Apache-2.0 : la facture se limite aux tokens du modèle, et la réparation par le parser peut permettre à un modèle moins cher de faire le travail. BAML Cloud, pour l'observabilité hébergée et les contrôles d'équipe, est annoncé mais sans prix.
- Limites
- 366 issues et pull requests ouvertes ; v1 est antérieur à la 1.0 avec des changements incompatibles fréquents ; la documentation v0 est marquée historique ; le benchmark du parser de Boundary est autodéclaré et porte sur des modèles de l'époque 2024.
Les points forts
- Le schema-aligned parsing transforme du JSON mal formé en valeurs typées
- Le playground exécute les prompts sur des tests dans VS Code
- Politiques de fallback, de round-robin et de nouvelle tentative déclarées par client
- Apache-2.0 ; s'exécute en local sans compte
Les points faibles
- Scission entre v0 historique et v1 antérieur à la 1.0
- Les notes de v1 0.21.0 à elles seules listent 13 changements incompatibles
- Statistiques anonymes de la CLI activées par défaut
- Un nouveau langage et une étape de codegen pour toute l'équipe
- BAML Cloud ni lancé ni tarifé
Idéal pour
Les équipes qui extraient des données typées de LLM en volume, souvent avec des modèles moins chers, et qui acceptent une étape de génération de code et une chaîne d'outils qui évolue vite.
Alternatives à BAML
BAML : questions fréquentes
- BAML vaut-il le coup ?
- BAML rend la sortie des LLM fiablement typée, mais aujourd'hui vous choisissez entre un DSL historique et un nouveau langage qui casse encore toutes les quelques semaines. Nous lui donnons 3.8 sur 5.
- Combien coûte BAML ?
- Gratuit et open source sous Apache-2.0 ; la chaîne d'outils s'exécute en local sans compte. BAML Cloud (observabilité hébergée et contrôles d'équipe) est annoncé, sans tarifs publiés.
- Quels sont les inconvénients de BAML ?
- Scission entre v0 historique et v1 antérieur à la 1.0; les notes de v1 0.21.0 à elles seules listent 13 changements incompatibles; statistiques anonymes de la CLI activées par défaut; un nouveau langage et une étape de codegen pour toute l'équipe; bAML Cloud ni lancé ni tarifé.
- À qui s’adresse BAML ?
- Les équipes qui extraient des données typées de LLM en volume, souvent avec des modèles moins chers, et qui acceptent une étape de génération de code et une chaîne d'outils qui évolue vite.
- Combien coûte BAML pour une équipe ou en production ?
- Le langage et la chaîne d'outils sont gratuits sous Apache-2.0 : la facture se limite aux tokens du modèle, et la réparation par le parser peut permettre à un modèle moins cher de faire le travail. BAML Cloud, pour l'observabilité hébergée et les contrôles d'équipe, est annoncé mais sans prix.
- BAML est-il sûr pour les données de l’entreprise ?
- Les prompts ne vont qu'aux fournisseurs que vous configurez. La CLI envoie par défaut des statistiques anonymes (commande, version, informations sur la machine, un identifiant aléatoire) ; désactivation avec baml telemetry disable ou DO_NOT_TRACK=1. Les traces d'exécution, corps HTTP compris, sont enregistrées en local et envoyées seulement avec une connexion Boundary ou BOUNDARY_API_KEY. Le niveau de log info par défaut de v0 affiche chaque prompt et chaque réponse brute dans le terminal. Aucun avis de sécurité n'est publié sur GitHub.
- Quelles sont les meilleures alternatives à BAML ?
- Les alternatives les plus proches que nous avons testées sont Pydantic AI, Guardrails AI et LangChain.
Réponses vérifiées le 1 nov. 2026.
