Like the how many r’s in strawberry. It took off as an Internet meme and was fixed, but how did that fix happen?
Sadly there is no answer for you available because many of the processes around this are hidden.
I can only chime in from my own amateur experiments and there are answer is a clear “depends”. Most adjustments are made either via additional training data. This simply means that you take more data and feed it indi an already trained LLM. The result is again an LLM black box with all its stochastic magic.
The other big way are system prompts. Those are simply instructions that already get interpreted as a part of te request and provide limitations.
These can get white fancy by now, in the sense of “when the following query asks you to count something run this python script with whatever you’re supposed to count as input, the result will be a json that you can take then and do XYZ with it.”
Or more simple: you tell the model to use other programs and how to use them.
For both approaches I don’t need to maintain list: For the first one I have no way of knowing what it’s doing in detail and I just need to keep the documents themselves.
For the second one it’s literally a human readable text.
foggy@lemmy.world 15 hours ago
The how many rs in strawberry breaks it because it doesnt read your question. It tokenized it. So it seems (straw)(berry) and knows contextually that when berry follows straw with no whitespace it means a different set of things that if there were white space.
The tokens have, basically, numeric value. So it doesn’t read your characters. That’s why that’s hard for it.
Ideas that recurse in themselves tend to fail as well. i.e. “say banana 142 times” will not produce the expected result.
As to how they fix them I’m not positive. There’s a bunch of ways to work around issues like these.
FaceDeer@fedia.io 12 hours ago
I'm not a deep expert on LLMs, but I've been following their development and write code that uses them so I can think of two systemic approaches to "solving" the strawberry problem.
One is chain-of-thought reasoning, where the LLM does some preliminary note-taking (essentially talking to itself) before it gives a final answer. I've seen it tackle problems like this by saying "okay, how is strawberry spelled?", listing out the individual letters (presumably because somewhere in its training data was information that let it memorize the spellings of common tokens) and then counting them.
Another is the "agentic" approach, where it might be explicitly provided with functions that allow it to send the problem to specialized program code. Eg, there could be a count_letters(string, letter_to_count) function that it's able to call. I expect that sort of thing would only be present for an LLM that's working in a framework where that sort of question is known to be significant, though, and I'm not sure what that might be in the real world. Something helping users fill out forms, perhaps? Or a "language tutor" that's expected to be able to figure out whatever weird incorrect words a student might type?
There are also LLMs that don't tokenize and feed the literal string of characters into the neural network, but as far as I'm aware none of the commonly-used ones are like that. They're just research models for now.