¿Qué es BAML?
BAML (Basically A Made-up Language) es un lenguaje de código abierto de Boundary, una start-up de Seattle, para escribir llamadas a LLM como funciones tipadas. Declaras las entradas, el tipo de salida y el prompt en un archivo .baml; un generador escribe un cliente para tu aplicación, y un parser en Rust repara la respuesta del modelo hasta que encaja con el tipo declarado.
El proyecto está en plena división. BAML v0, ahora etiquetado como el DSL heredado, es la herramienta de salida estructurada que conoce la mayoría de usuarios: los paquetes baml-py y @boundaryml/baml, en la 0.226.3, generan clientes para Python, TypeScript, Ruby y Go. BAML v1, publicado como versiones baml-language con compilaciones casi diarias, es un lenguaje de propósito general para agentes, independiente, que la documentación describe como beta pública y la web califica de anterior a la 1.0.
El código es Apache-2.0 y se ejecuta en local. Boundary prevé cobrar por BAML Cloud, un servicio alojado de trazas y controles de equipo, que a 1 de noviembre de 2026 ni se había lanzado ni tenía precios publicados.
¿Merece la pena BAML?
BAML es el mejor argumento para tratar los prompts como código tipado y no como cadenas de texto, y 2026 es un año incómodo para adoptarlo. La idea central se sostiene: una función en un archivo .baml declara su tipo de salida, el cliente generado llama al modelo y el schema-aligned parsing corrige comas finales, comillas que faltan y objetos a medio terminar en lugar de rechazarlos. El benchmark de la propia Boundary, con 1,000 casos del Berkeley Function Calling Leaderboard por modelo, situó a gpt-4o-mini en el 92.4% con el parser frente al 19.8% con function calling nativo. Las cifras son autodeclaradas y usan modelos de la época de 2024, pero explican por qué gusta a los equipos que trabajan con modelos baratos.
Lo incómodo es la división. La versión 0.225.0, a principios de agosto de 2026, rebautizó la línea existente como BAML v0, el DSL heredado, y el esfuerzo de Boundary pasó a BAML v1, un lenguaje aparte con green threads, errores tipados y un framework de tests integrado. v0 sigue publicándose (baml-py 0.226.3 salió el 28 de octubre), pero el README, el quickstart y las compilaciones nocturnas apuntan todos a v1. La herramienta de v1 pasó de la 0.21.0 el 8 de octubre a la 0.23.0 el 26 de octubre, y solo las notas de la 0.21.0 enumeran 13 cambios incompatibles, desde claves de mapa entre comillas hasta APIs de trazas eliminadas. v1 también cambia el paquete de Python, de baml-py a baml-bridge, y Boundary mantiene un repositorio aparte de kit de migración.
En el día a día, el atractivo son las herramientas. La extensión de VS Code regenera el cliente al guardar y abre un playground donde ejecutas un prompt con entradas de prueba antes de escribir código de la aplicación; promptfiddle.com hace lo mismo en el navegador. v0 habla de forma nativa con Anthropic, OpenAI (incluida la Responses API), Azure OpenAI, Google AI, Vertex AI y AWS Bedrock, y con Ollama, vLLM, OpenRouter, Groq y otros a través de un cliente compatible con OpenAI, con políticas de fallback, round-robin y reintentos declaradas junto al prompt. Frente a Pydantic AI, Instructor u Outlines, que te mantienen en Python, el precio es un tipo de archivo nuevo, un paso de generación de código y un lenguaje que tus compañeros tienen que aprender.
Los ajustes de privacidad por defecto merecen una lectura atenta. La página de precios de Boundary dice que la herramienta no contacta con sus servidores, pero la CLI envía por defecto analíticas de uso anónimas: el nombre del comando, la versión de BAML, el sistema operativo y datos de la CPU, un ID aleatorio de la máquina y un hash con sal de la raíz del proyecto, aunque no prompts, código ni claves. baml telemetry disable o DO_NOT_TRACK=1 lo desactiva. El trazado en tiempo de ejecución es un interruptor aparte, viene en medium por defecto y graba los cuerpos HTTP en local; solo los sube a Boundary cuando inicias sesión o defines BOUNDARY_API_KEY.
Un equipo con pipelines de extracción en v0 que ya funcionan tiene poco que ganar migrando antes de que v1 llegue a la 1.0. Un proyecto nuevo afronta la apuesta más difícil: v1 es donde un equipo que se describe como pequeño pone su atención, el repositorio acumula 366 issues y pull requests abiertos, y BAML Cloud, la parte de pago, no tenía precio publicado a 1 de noviembre de 2026, así que nadie puede presupuestar todavía la observabilidad alojada.
Dónde se gana su sitio
Un equipo de datos en Python de una correduría de seguros
Extraer campos tipados de miles de correos de siniestros al día
Define el siniestro como una clase BAML, crea tests a partir de correos reales en el playground y llama al cliente Pydantic generado desde el pipeline existente. El parser recupera respuestas que una validación JSON estricta rechazaría, lo que hace viable un modelo más barato; el coste son los tokens del modelo y mantener baml-py fijado a una versión.
Un equipo de producto en TypeScript que añade funciones de IA a una app SaaS
Mantener los prompts revisables y el modelo intercambiable
Los prompts viven en archivos .baml que se revisan como cualquier otro código, y un cliente de fallback pasa de OpenAI a Anthropic cuando una llamada falla. El client registry puede enviar una parte del tráfico, por ejemplo el 10%, a un modelo candidato. Sin coste de licencia; el riesgo es que el desarrollo de Boundary se centra ahora en v1.
Una responsable de ingeniería en una start-up de 20 personas que elige su stack de agentes
Decidir si construir agentes nuevos sobre BAML v1
Hay que presupuestar un lenguaje anterior a la 1.0: la herramienta de v1 publicó tres versiones menores en octubre de 2026 (0.21.0, 0.22.0 y 0.23.0) y su paquete de Python, baml-bridge, sustituye a baml-py. El trazado alojado no tiene precio publicado, así que las trazas locales son hoy la única opción que se puede presupuestar.
Antes de decidirte
- Puesta en marcha
- v0: pip install baml-py (o npm @boundaryml/baml) y después baml-cli generate escribe una carpeta baml_client; la extensión de VS Code la regenera al guardar. v1: brew install baml o el script de instalación, baml init y luego baml run main; baml agent install añade instrucciones para Claude Code y Codex.
- Integraciones
- Proveedores de v0: Anthropic, OpenAI y OpenAI Responses, Azure OpenAI, Google AI, Vertex AI y AWS Bedrock, además de Ollama, vLLM, LM Studio, OpenRouter, Groq, LiteLLM y otros mediante openai-generic. v0 genera clientes para Python, TypeScript, Ruby y Go; v1 se llama desde Python y TypeScript, con repositorios iniciales de SDK para Go y Swift.
- Datos y privacidad
- Los prompts solo van a los proveedores que configuras. La CLI envía analíticas anónimas por defecto (comando, versión, datos de la máquina, un ID aleatorio); se desactivan con baml telemetry disable o DO_NOT_TRACK=1. Las trazas en tiempo de ejecución, cuerpos HTTP incluidos, se graban en local y solo se suben con una sesión de Boundary o BOUNDARY_API_KEY. El nivel de log info por defecto de v0 imprime cada prompt y cada respuesta en bruto en la terminal. No hay avisos de seguridad publicados en GitHub.
- Coste a escala
- El lenguaje y la herramienta son gratuitos bajo Apache-2.0, así que la factura son los tokens del modelo, y la reparación del parser puede permitir que un modelo más barato haga el trabajo. BAML Cloud, para observabilidad alojada y controles de equipo, está anunciado pero sin precio.
- Límites
- 366 issues y pull requests abiertos; v1 es anterior a la 1.0 y tiene cambios incompatibles frecuentes; la documentación de v0 está marcada como heredada; el benchmark del parser de Boundary es autodeclarado y usa modelos de la época de 2024.
Lo bueno
- El schema-aligned parsing convierte JSON mal formado en valores tipados
- El playground ejecuta prompts con tests dentro de VS Code
- Políticas de fallback, round-robin y reintentos declaradas por cliente
- Apache-2.0; se ejecuta en local sin cuenta
Lo malo
- División entre v0 heredado y v1 anterior a la 1.0
- Solo las notas de v1 0.21.0 enumeran 13 cambios incompatibles
- Analíticas anónimas de la CLI activadas por defecto
- Un lenguaje nuevo y un paso de codegen para todo el equipo
- BAML Cloud sin lanzar y sin precio
Ideal para
Equipos que extraen datos tipados de LLM a gran volumen, a menudo con modelos más baratos, y que asumirán un paso de generación de código y una herramienta que cambia deprisa.
Alternativas a BAML
BAML: preguntas frecuentes
- ¿Merece la pena BAML?
- BAML hace que la salida de un LLM tenga tipos fiables, pero hoy eliges entre un DSL heredado y un lenguaje nuevo que todavía se rompe cada pocas semanas. Le damos un 3.8 sobre 5.
- ¿Cuánto cuesta BAML?
- Gratuito y de código abierto bajo Apache-2.0; la herramienta se ejecuta en local sin cuenta. BAML Cloud (observabilidad alojada y controles de equipo) está anunciado, pero no tiene precios publicados.
- ¿Qué inconvenientes tiene BAML?
- División entre v0 heredado y v1 anterior a la 1.0; solo las notas de v1 0.21.0 enumeran 13 cambios incompatibles; analíticas anónimas de la CLI activadas por defecto; un lenguaje nuevo y un paso de codegen para todo el equipo; bAML Cloud sin lanzar y sin precio.
- ¿Para quién es BAML?
- Equipos que extraen datos tipados de LLM a gran volumen, a menudo con modelos más baratos, y que asumirán un paso de generación de código y una herramienta que cambia deprisa.
- ¿Cuánto cuesta BAML para un equipo o en producción?
- El lenguaje y la herramienta son gratuitos bajo Apache-2.0, así que la factura son los tokens del modelo, y la reparación del parser puede permitir que un modelo más barato haga el trabajo. BAML Cloud, para observabilidad alojada y controles de equipo, está anunciado pero sin precio.
- ¿Es BAML seguro para los datos de la empresa?
- Los prompts solo van a los proveedores que configuras. La CLI envía analíticas anónimas por defecto (comando, versión, datos de la máquina, un ID aleatorio); se desactivan con baml telemetry disable o DO_NOT_TRACK=1. Las trazas en tiempo de ejecución, cuerpos HTTP incluidos, se graban en local y solo se suben con una sesión de Boundary o BOUNDARY_API_KEY. El nivel de log info por defecto de v0 imprime cada prompt y cada respuesta en bruto en la terminal. No hay avisos de seguridad publicados en GitHub.
- ¿Cuáles son las mejores alternativas a BAML?
- Las alternativas más cercanas que hemos analizado son Pydantic AI, Guardrails AI y LangChain.
Respuestas comprobadas el 1 nov 2026.
