165 karma · joined September 2, 2021
We have been building BAML for around 3 years -- originally it was a DSL for getting structured outputs from llms using what we call 'llm functions'
Our users told us they wanted to do more, so we made it an actual turing-complete language, still with a focus on people building AI workflows and calling nondeterministic models. This is why we added very flexible testing capabilities into BAML itself for test parameterization, dynamic tests, etc.
As we were building it, we realized humans weren't going to be the ones writing the code, so we started researching what we could do on this front. This led us to design BAML to use all fully-qualified-names for everything (classes, enums,functions etc) to name one example. We found in some cases AI agents saved 30% tokens navigating baml codebases vs TypeScript ones. There's no imports to track down, etc.
We do aim to keep humans in the loop, and we'll do some more deep dives that tackle each feature.
It is a language that is embeddable in other programming languages, with the type system similar to typescript, and a runtime that is similar to Go.
People use it currently for structured outputs with llms but soon we will support orchestration and more.
We are letting some users have an early access preview! Let me know if you are interested in hacking with it!
I'll add it in!
We are building a new programming language (BAML) to build AI agents -- the "typescript" for LLMs. We are open source: https://github.com/BoundaryML/baml
A big part of this language is all the tooling around visualizing non-deterministic code, visualizing code, and getting great observability (e.g. our language has type information at runtime unlike TS).
We are looking for engineers with experience with Rust, programming languages, and/or compilers. Any amount of experience is fine.
To apply: send an email to aaron@boundaryml.com with your resume and mention you came from HN
the prompt.yaml format (which this project uses) suffers from the fact that it doesn't address the structured outputs problem. Writing schemas in yaml/xml is insanely painful. But BAML just feels like writing typescript types.
I'm one of the developers!
- Created by an AWS team but aws logo is barely visible at the bottom.
- Actually cute logo and branding.
- Focuses on the lead devs front and center (which HN loves). Makes it seem less like a corporation and more like 2 devs working on their project / or an actual startup.
- The comment tone of "hey ive been working on this for a year" also makes it seem as if there weren't 10 6-pagers written to make it happen (maybe there weren't?).
- flashy landing page
Props to the team. Wish there were more projects like this to branch out of AWS. E.g. Lightsail should've been launched like this.
Here's the cursor rules file we give folks: gist.github.com/aaronvg/b4f590f59b13dcfd79721239128ec208
I'm one of the developers of BAML.
Then again, I wonder -- if a benchmark is way too hard from the beginning, would it make it much harder for people to test new solutions that actually have real-world impact, even if the new results on the hard benchmark only increased the score by 1%?
We also have several users that have anecdotally told us they get worse results using constrained grammar solutions.
Will incorporate this feedback.
I’m genuinely curious since if we can convince someone like you that BAML is amazing we’re on a good track.
We’ve helped people remove really ugly concatenated strings or raw yaml files with json schemas just by using our prompt format (which uses jinja2!)
We took this kind of concept all the way to making a DSL called BAML, where prompts look like literal functions, with input and output types.
Playground link here https://www.promptfiddle.com/
https://github.com/BoundaryML/baml
(tried pasting code but the formatting is completely off here, sorry).
We think we could run some optimizers on this as well in the future! We'll definitely use DSPy as inspiration!
There's just so many questions: Will videogames eventually just be a single prompt (or a series of prompts / a general script) into a transformer model?
Would services like stadia be making a comeback if the value prop is that even though you have some latency, the possibilities for videogames will be endless?
Would microsoft want a piece of the $$ if the transformer was trained on Minecraft clips?
We really are in an acceleration phase
People have used it to do anything from simple classifications to extracting giant schemas.
For our DSL (BAML https://github.com/BoundaryML/baml ) we found that adding a VSCode playground to visualize LLM function inputs and outputs was a massive win in terms of debuggability and testability, so I can see why langraph is going this way.
You can take a look at our BFCL results on that site or the github: https://github.com/BoundaryML/baml
We'll be publishing our comparison against OpenAI structured outputs in the next 2 days, and a deeper dive into our results, but we aim to include this kind of constrained generation as a capability in the BAML DSL anyway longterm!
We just need a bit better testing flow within BAML since we do not support adding assertions just yet.
- retry the request, which may take 30+ secs (if your LLM outputs are really long and you're using something like gpt4)
- fix the parsing issue
In our library we do the latter. The conversion from BAML types to Pydantic ones is a compile-time step unrelated to the problem above. That doesn't happen at runtime.
We instead had to write a parser to catch small mistakes like missing commas, quotes etc, and parse content even if there's things like reasoning in the response, like here: https://www.promptfiddle.com/Chain-of-Thought-KcSBh