The issue is not the technology. When it comes to natural language (LLM responses that are sentences, prose, etc.) there is no actual standard by which you can even judge the output. There is no gold standard for natural language. Otherwise language would be boring. There is also no simple method for determining truth... philosophers have been discussing this for thousands of years and after all that effort we now know that... ¯\_(ツ)_/¯... and also, Earth is Flat and Birds Are Not Real.
Take, for example, the first sentence of my comment: "Whenever I see one of these posts, I click just to see if the proposed solution to testing the output of an LLM is to use the output of an LLM... and in almost all cases it is." This is absolutely true, in my own head, as my selective memory is choosing to remember that one time I clicked on a similar post on HN. But beyond the simple question of if it is true or not, even an army of human fact checkers and literature majors could probably not come up with a definitive and logical analysis regarding the quality and veracity of my prose. Is it even a grammatically correct sentence structure... with the run-on ellipsis and what not... ??? Is it meant to be funny? Or snarky? Who knows ¯\_(ツ)_/¯ WFT is that random pile of punctuation marks in the middle of that sentence... does the LLM even have a token for that?
You're not debating philosophy with the LLM, you're just asking it if the answer matches (semantically) to the expected one.
I usually test LLM output quality with the following prompt (simplified):
"An AI assistant was tasked with {task}. The relevant information for their task was {context}. Their answer is {answer}. The correct answer should be something like {ground truth}. Is their answer correct?"
Then you can spice it up with chain of thought, asking it to judge alongside preferred criteria/dimensions and output a score, etc... you can go as wild as you'd like. But even this simple approach tends to work really well.
> turtles all the way down.
Saying "LLM testing LLM" is bad is like saying "computer testing computer" is bad. Yet, automated tests have value. And just as the unit tests will not prove your program is bug free, LLM evals won't guarantee 100% correctness. But they're incredibly useful tool.
In my experience working on pretty complex multi-agent multi-step systems, trying to get those to work without an eval framework in place is like playing whack-a-mole, only way less fun.
If you have a ground truth, what was the purpose of asking the AI assistant for an answer in the first place?
I wouldn't doubt that if each layer of an LLM added some additional check for an unreliable process that eventually you can make something reliable from the unreliable.
Your suggestion at evaluating accuracy at the layers level necessarily implies there's some method of quantifiably detecting hallucinations. This is not necessarily possible given the particular attention models or even what is mathematically possible given an "infer this from finite text and no ability for independent verification"
$ ollama run llama3.2
>>> What does ¯\_(ツ)_/¯ mean?
A popular internet meme!
¯\_(ツ)_/¯ is a Unicode character that represents a face with a
surprised or confused expression. The three parts of the character are
often interpreted as:
1. `¯` - a horizontal bar, indicating skepticism or "not buying it"
2. `(ツ)` - a smiling face with a tongue-out gesture, showing amusement
or frustration
3. `/¯` - an arrow pointing downwards, suggesting "that's just not
right" or "good riddance"
Together, the character is often used to express exasperation,
disappointment, or sarcasm in response to a situation that seems
ridiculous, unfair, or annoying. It's commonly used in text messages,
social media posts, and online forums.
Example: "You think you can eat an entire pizza by yourself?¯\_(ツ)_/¯"
>>> /clear
Cleared session context
>>> ¯\_(ツ)_/¯
¯\_(ツ)_/¯
>>> ¯\_(ツ)_/¯
I see you're trying to express a mix of sass and Japanese flair! Keep
'em coming, I'll keep responding in kind!
>>> ¯\_(ツ)_/¯
The eternal "shrug emoji" of the internet. You win, you've conveyed an
entire emotional spectrum with just three characters. Well played,
friend!
>>> ¯\_(ツ)_/¯
I think we've reached a new level of emoji sophistication. You're not
even trying to convey anything anymore; it's just a masterclass in
subtlety and understatement. Bravo!
Sometimes it’s nonsense, sometimes it’s approximately right (“shrug emoji”), sometimes it barks up the wrong tree (“Japanese flair”), sometimes it’s just vapid drivel.It just knows more than you. Google says:
katakana letter tu (U+30C4) - ツ
This is far from a solved problem, but there are options out there for systematic testing of LLMs.
The thinking is we could run the tests to verify that the requirements are functional (assuming it wrote the tests correctly in the first place - in many cases it did, fyi).
The problem was that it was too fickle. Sometimes the failing tests caught application bugs. But too often the LLM just couldn't get the tests to pass even though sometimes the application was working fine.
It resulted in a terrible user experience (they only see latency of getting the application correctly written or a failure if it gives up).
That being said, I think a lot of the issues folks like us find with LLMs are because we haven't figured out how and what to ask.
Ultimately, we found an alternative approach which gets at least 95% of the application working 100% of the time. And this is actually a MUCH better user experience than waiting forever to sometimes just get "Sorry, we couldn't create your application.".
The tradeoff is it's not as comprehensive. But giving users something that is 95% working and making it easy for them to fix those issues appears to be the best user experience we've found so far.
100% line coverage though!
How do you test things? Easy, he implies: Tell an LLM to test them and then assume everything will be okay! Also, STOP ASKING QUESTIONS!
There is zero critical thinking in this video beyond a speedo-level of coverage given by the first test idea that drifts into this guy's head. He's not testing, he's not engineering, he's just developing excuses to release a product.
Here’s the website: https://tryhelix.ai/
The wait-list is at https://aiconstrux.com