Is Your AI Hallucinating? — Telluvian
10 August 2026<br>Is Your AI Hallucinating?
We ship an API that returns a hallucination score for every token that a frontier language model generates. Before describing how it works, here is the most important thing about it: the percentage score that we return is not actually the probability that the token is wrong.
The obvious problem is that frontier models do not expose the hidden states that we would need to probe to reveal their thoughts. Hmmm...
You cannot probe GPT or Claude. Their APIs return only text. There is no layer to read, no residual stream to inspect, and no amount of prompting changes that. Every technique in this space has to route around the same wall.
Our answer is a white-box proxy model. We run an open-weight model we can control end to end, which means we have full access to its activations at every layer. The probe is trained on and reads from this proxy model.
To be clear then, our API actually returns information about a proxy model rather than the model you have called.
We took a dataset of hundreds of thousands of input/output pairs from GPT-5.4 Nano, containing a mixture of both reliable and hallucinated claims. Averaged across the dataset, 3% of Nano's claims were hallucinated. We then replayed Nano's outputs through Gemma-4 and trained our probes against those labels on Gemma-4's hidden states.
We scored the probe on an unseen validation set, counting a case as accurate when the probe's verdict matched that of the judge LLM. Agreement exceeded 95%.
So what does our API actually return?
What our scores measure is the likelihood that the proxy model is confused while producing the output generated by your called model. A high score means that, as the proxy model processed that token, its internal state closely resembled the internal states it typically exhibits when it is confused.
The upshot is that our API works with black box frontier models. Point your base URL at us and swap the API key. We handle the model call from there. You get back the usual response from your model of choice along with two extra fields.See an example below:
">{<br>"choices": [{ "message": { "content": "Cardinal Robert Prevost was elected pope after a conclave attended by 135 cardinals." } }],<br>"tokens": ["Cardinal", " Robert", " Prevost", " was", " elected", " pope", " after", " a", " conclave", " attended", " by", " 135", " cardinals", "."],<br>"scores": { "hallucination": [0.01, 0.02, 0.03, 0.02, 0.01, 0.04, 0.02, 0.01, 0.03, 0.05, 0.08, 0.72, 0.31, 0.01] }<br>Scores stream and each span carries its own number, so we can highlight a suspect span while the model is still writing.
Here, the model correctly identifies Cardinal Robert Prevost as the newly elected pope, but is confused about how many cardinals attended the conclave (2 of the 135 total couldn’t make it). For more examples, have a play with the demo that’s up on our website.
Why white-box proxy?
Earlier in this piece the use of a more 'intelligent' frontier LLM as a judge was described. Using an LLM as a judge actually has a slightly higher accuracy rate than this white box model interpretability approach. So why not just use LLM as a judge in all cases?
It boils down to cost, measured both in money and time.
The first problem is that models are categorically bad at marking their own homework for the same reason the mistake was made in the first place. So using an LLM as a judge is ineffective if it's just a second pass in the same model. It has to be a second model, of at least equal intelligence, running over everything the first one wrote. So now you’re paying for two frontier models. Not ideal.
By way of contrast, our approach runs a small open-weights proxy instead, and we use a number of inference tricks to keep costs low. The result is a fraction of the compute spend of a second frontier model. We pass the model costs through at zero margin, so the only thing you pay us for is the probe itself.
Then there is the time cost of the LLM as a judge. A judge has to read a finished response before it can rule on it, which means it has to be run sequentially. You have to wait for both models to finish. Our probe scores each token as it is produced, so a suspect claim is flagged while the sentence is still being written.
Our approach amounts to a sensible trade. You give up a few points of accuracy in exchange for a fraction of the cost and real time operation.
Yeah, but Anthropic’s next model will fix this, right?
Well we can’t rule it out, but probably not, no. Newer models hallucinate less but a system whose core operation is "generate plausible text" will also generate more convincing falsehoods.
The other thing is that a hallucination isn't truly a failure of training. It is actually a result of how the loss / reward function is designed.
Pretraining scores you on predicting the next token. A fabricated citation scores well, because it's what a document like that would plausibly say...