←back to thread

169 points constantinum | 1 comments | | HN request time: 0.221s | source
Show context
resiros ◴[] No.40717267[source]
I expected to read about the methods used by the libraries to get the structured output and not a comparison of the language compatibility for each.

Fortunately the same author have a blog post (https://www.boundaryml.com/blog/type-definition-prompting-ba...) explaining how their approach works and how it compares to instructor (https://github.com/jxnl/instructor).

Basically these libraries provide two things: 1. A way to prompt the LLM 2. A way to get a valid JSON

For 1. instructor does it through the json schema definition, BAML's innovation is that they use a simplified lossless schema definition that uses less tokens.

For 2. instructor does it through reprompting until they receive a valid JSON. BAML's innovation is a fuzzy parser able to to parse non-perfect JSON.

Personally I think that there is no need to all these abstractions to get structured outputs from LLMs. A simple .to_prompt() function that takes a pydantic and translate it into some prompt block you can add to your prompt and a retry is sufficient to get the same results.

replies(1): >>40717685 #
Jayakumark ◴[] No.40717685[source]
Will you be able to share an example code or gist ?
replies(2): >>40719010 #>>40720535 #
vladsanchez ◴[] No.40719010[source]
https://agenta.ai/
replies(1): >>40720463 #
resiros ◴[] No.40720463[source]
Thanks for sharing the link, but no agenta is not a library that can help with getting structured outputs from LLMs (at least not in the way discussed in the parent comment). It's a prompt management, evaluation and observability platform for LLM apps.
replies(1): >>40805638 #
1. vladsanchez ◴[] No.40805638[source]
Just stumbled with https://controlflow.ai/ today. Perhaps it serves to structure outputs as "agentic" workflows in pursuit of LLM autonomy.

Let us know your opinion.