Always a good question! My thoughts:
A. ever since the first JSON mode, that tension has existed, and we haven’t really seen a degradation in the utility of schema aligned parsing vs. tool calling APIs, even for the big models. With SAP you’re free to mix JSON outputs with whatever other text you want. B. we continue to be a big reliability boost for small models. Empirically we haven’t reached the point where tool use APIs can replace SAP,
C. Things you mentioned like semantic streaming are never going to be natively supported in the model, BAML gives you that uniformly for all models.
D. Even if small models get good at structured outputs, BAML could give you comparable performance in even smaller models.
E. DX, iteration and testing loop
Those factors get weighed against the costs of BAML - awkward setup, leaving your host language, version management, deployment complexity. We continue to change the calculus on the costs side, too.
I’d be curious about how the pros & cons play out for different projects according to their schema complexity, reliability needs, base model, streaming needs, dev team size etc, maybe there is a clear decision boundary.