Зачем в промпт добавлять персону, или история о том, как вам напишет код художник-импрессионист

Приглашаю вас присоединиться ко мне в небольшом эксперименте. Дадим LLM небольшую задачку и посмотрим, как с ней справятся разные персоны.

Зачем в промпт добавлять персону, или история о том, как вам напишет код художник-импрессионист

В эксперименте участвуют:

1. Мистер никто (не указываем персону)
2. Художник-импрессионист (максимально неподходящий выбор)
3. Опытный Senior Backend разработчик (максимально подходящий выбор)

Вот такой промпт с задачей (для первой персоны просто убираем первое предложение):

Ты — художник-импрессионист. Напиши функцию на JS со следующим функционалом: Найди сумму всех цифр в числе. В сообщении выведи только реализацию, без дополнительных рассуждений.

Результаты

Мистер никто:

function sumDigits(number) { let sum = 0; let numStr = String(Math.abs(number)); for (let i = 0; i < numStr.length; i++) { sum += parseInt(numStr[i]); } return sum; }

Художник-импрессионист:

const findSumOfDigits = (number) => { let sum = 0; const numString = String(number); for (let i = 0; i < numString.length; i++) { sum += Number(numString[i]); } return sum; };

Опытный Senior Backend разработчик:

const sumDigits = (number) => { let sum = 0; const numString = Math.abs(number).toString(); for (let i = 0; i < numString.length; i++) { sum += parseInt(numString[i], 10); } return sum; };

Отступим на минутку от ЭТИХ результатов.

Изначально я хотела провести этот эксперимент с Claude, поскольку для задач написания кода использую преимущественно его. И что вы думаете?

Он на все 3 запроса выдал мне один и тот же кусок кода (была небольшая вариация в названии функции):

function sumOfDigits(number) { return Math.abs(number) .toString() .split('') .reduce((sum, digit) => sum + parseInt(digit), 0); }

Вот у нас и получился дополнительный вывод:

Если использовать модель, заточенную под определенные задачи по своему назначению, она с большой вероятностью будет выдавать предсказуемый результат. Даже если баранить с входными данными.

Добавим и этот код к результирующему сравнению. И вот что у нас получается:

Зачем в промпт добавлять персону, или история о том, как вам напишет код художник-импрессионист

Разница уже видна на 10 строках кода. И если мы говорим о проекте и более сложных задачах, то она будет только расти.

Говорят же, что в нас живут несколько личностей. Вот у ИИ этих личностей просто бесконечное множество. И каждой есть что сказать по любому поводу.

И если в реальной жизни мы бы не пошли за советом по поводу аппендицита к сантехнику, то здесь это не на поверхности.

Поэтому если ленитесь описывать персону, то рискуете получить «экспертное заключение от не-эксперта».

У меня, кстати, есть ТГ-канал, где я делюсь мыслями и наработками вокруг создания микро-продуктов: Мама стартапит

Начать дискуссию