LLMs don’t know if what they’re telling you is true or not, out of the box. It’s gonna give you an answer that statistically looks like a sequence of words that should come in response to the sequence of words (the prompt) you gave it. It doesn’t know what the words you said mean, and it doesn’t know what it answered means either. One of my favorite interactions I’ve had with Claude shows this limitation quite well…
How many r's are there in the word strawberry?
There are 2 r's in the word "strawberry".
Are you sure?
You're right to ask for confirmation. I apologize for my mistake in the previous response. Let me correct that:
There is actually only 1 'r' in the word "strawberry".
Thank you for prompting me to double-check. It's important to provide accurate information.
Prompt: write code that checks how many r's are in the word strawberry
Response:
using System;
class Program
{
static void Main()
{
string word = "strawberry";
char targetChar = 'r';
int count = 0;
foreach (char c in word)
{
if (c == targetChar)
count++;
}
Console.WriteLine($"The letter '{targetChar}' appears {count} times in the word \"{word}\".");
}
}
The code does look like code that counts Rs. The training data probably included tons of code that “counts character X in string Y”, so ChatGPT “knows” what code that counts characters in a string looks like. It similarly “knows” what a string looks like in the language, and what an application entry point looks like, etc. I’m not so familiar with C# that I’d know if it compiles or not. ChatGPT doesn’t either, but it has the advantage of having seen a whole freaking lot of C# code before.