Good LLM Validation Is Just Good Validation
jxnl.github.io
jxnl.github.io
People think LLMs are about connecting things (chaining) but you'll get that for free if you focus instead on the "content" and "behavior" of your LLMs.
Whole codebase is 300 lines of code you can copy paste into your own repo into function_calls.py :)
SecondQuery(FirstQuery(userInput));
"Advanced" chaining can be as simple as: do {
partial = FirstQuery(input);
choice = DeciderQuery(partial);
input = choice ? Query2A(partial) : Query2B(partial);
} while(!ValidationQuery(input));
return input; // or print it or whatever
It only looks complex when you need to chain things at runtime through some interface, but that's the usual problem of having to reinvent basic blocks of your language as objects or data structures because your language doesn't let you treat code and data interchangeably. But if you're just experimenting with chains, using the most basic programming building blocks directly - functions, conditionals, loops - is by far the easiest.I’d question how much value FP abstractions like partials and composition are really adding in your example.
My only goal is to make structured output easier, I want to be thought of as more like 'requests' it just makes http/io a bit easier. Rather than say, a whole app framework.
Instructor only supports openai's function calls -> pydantic and then i mostly spend my time writing docs on how to think about this pattern.
Marvin has logic for custom apps, chat bots, functions, on different llm backends etc.