Невидимые герои. Почему профессия промпт-инженера действительно важна для ML-сферы
Всем привет. Я Игорь Филатов, ML-разработчик в компании MTS AI, до этого я около полугода работал промпт-инженером. Сегодня я расскажу вам о том, из чего состоит работа промпт-инженера, можно ли назвать ее тяжелым трудом, и как попасть в эту сферу. И заодно признаюсь, почему я все же решил сменить эту профессию.
В чем суть промпт-инжиниринга?
Обычно промпт-инжиниринг понимают в широком смысле — это процесс написания промптов для решения той или иной задачи. Правда, здесь подразумеваются не только бытовые запросы, когда пользователь хочет получить что-то конкретное — например, рецепт лазаньи или текст для публикации в соцсетях. промпт-инженер также решает более стратегические задачи — например, как с помощью более оптимального использования нейросетей тратить меньше времени и ресурсов на выполнение тех или иных бизнес-задач, получая стабильный и качественный результат.
В узком смысле промпт-инжиниринг — это про оптимизацию запросов к языковым моделям. Этот процесс не похож на бытовое написание промптов, он ближе к научно-исследовательским подходам. Чтобы добиться нужного результата. специалисты применяют специальные техники — например, Chain of Thought, когда при решении задачи модель последовательно объясняет полную цепочку своих размышлений, тем самым повышая качество ответа и интерпретируемость данных.
У промпт-инжиниринга и генеративных нейросетей в целом есть одно ключевое преимущество — работать с ними быстро и просто. Это позволяет условному продакт-менеджеру или маркетологу протестировать гипотезу или составить Proof-of-Concept, для этого не нужно быть классным ML-специалистом и тратить много часов на получение первичного результата.
Однако в работе с LLM есть свои секреты. Несмотря на то, что порой говорят, что с большой языковой моделью следует говорить как с человеком, это не так. промпт-инженеры часто указывают специальные инструкции, выделяют какой-то контент, который необходимо обработать, используют специфичную орфографию. Это не похоже на естественный язык, это скорее похоже на какую-то разметку — хотя от этого запрос не становится менее читаемым для человека.
На мой взгляд, читаемость — одно из самых главных в промпт-инжиниринге. Она важна не только для тех, кто этим занимается — она важна и для коллег, и для самого заказчика, который хочет видеть, что происходит с задачей и что конкретно делает модель. И когда я как инженер тюню промпт, я тоже хорошо понимаю, что и как мне поправить.
Отчего зависит качество промпта?
промпт-инжиниринг — это про метод проб и ошибок. Ты очень много раз проводишь эксперименты, используешь разные подходы и смотришь, насколько качественным получился результат. Спустя некоторое время после активной работы с моделями я понимаю, как писать промпт, как ведут себя конкретные модели, но это трудно формализовать и объяснить — примерно как составить инструкцию, как нужно общаться с другим человеком.
Однозначной формулы для оценки идеального промпта не существует. Если речь идет о классических задачах, таких как NER и бинарная классификация, то можно использовать для оценки методы, основанные на Accuracy, Precision, Recall и F-мере. Однако на практике такие задачи часто оцениваются специалистами на ходу: опытный промпт-инженер может быстро на глаз определить, насколько хорошо промпт и модель справляются с конкретной задачей.
При работе над конкретной задачей промпт-инженеру необходимо понимать результат, к которому хочет прийти заказчик. От этого сильно зависит и выбор самой модели, и необходимые для этого ресурсы, и варианты оценки эффективности того или иного решения.
Нужно понимать, что у каждой модели есть свой предел. Если задача априори очень сложная, но у заказчика хватает ресурсов только на маленькую модель, то хороший промпт-инженер, конечно, перепробует разные подходы, но в результате определит, что ничего больше от модели он не добьется, и вовремя остановится. Как правило, по модели видно, что ей не хватает контекстного окна для обработки данных.
Например, у нас есть несколько версий большой языковой модели Сotype. И я знаю, что Cotype PRO — это скорее про околокогнитивные способности для решения сложных задач. При этом Cotype Plus 16K или 32K хорошо подойдут для классификации, выделения сущностей, поиска каких-то особенностей. И это понимание приходит с опытом, когда ты активно работаешь со множеством моделей на протяжении долгого времени.
Как написать идеальный промпт?
Конечно, вы можете найти множество примеров оптимальных промптов на Хабре в других статьях. Но никто не гарантирует, что они будут воспроизводимы в вашем конкретном случае и дадут ощутимый эффект в решении ваших задач. В реальности это большая задача — понять, как работает идеальный промпт, почему нейросеть так или иначе реагирует на тот или иной запрос. На это не у всех есть ресурсы — многие ограничены или финансово, или доступными моделями.
Однако можно выделить несколько общих тенденций в работе нейросетей. Например, для более эффективного результата необходимо подать наиболее важную информацию в начале или конце промпта. Кроме того, генеративные нейросети пока хуже справляются с ответами в цифровом виде.
При этом еще не до конца исследованы механизмы внимания генеративных моделей. К примеру, исследования на малоресурсных языках показывают, что LLM фокусируются на тех словах и данных, на которых живой человек не делал бы такой сильный акцент. Почему именно те или иные слова вызывают такую реакцию у моделей — большой вопрос, требующий длительных исследований. Без преувеличения можно сказать, что все, кто работает с LLM, ждут исследований, которые разгадают эту особенность.
Также нужно учитывать, что в основном нейросети обучаются на данных на английском языке. Если во время запроса на другом языке проследить аутпуты модели по промежуточным слоям, то будет видно, что модель до какого-то момента «думает» на английском, и только в конце переключается на целевой язык. Иногда модель выдает ответ на английском языке, даже если изначально запрос был на русском.
Поэтому при решении строгой логической задачи лучше писать промпт на английском, чтобы повысить качество генерации. Однако в более творческих задачах лучше работает запрос на русском, потому что в таком случае смена языка при ответе может негативно сказаться на качестве результата.
Чем занимается промпт-инженер?
Важно сказать, что профессия промпт-инженера не такая простая, как кажется. Конечно, многие ML-инженеры и другие специалисты иногда подшучивают, потому что эта сфера напрямую не связана с математикой, однако они тоже понимают, что у промпт-инженеров своя важная роль в создании продуктов. Ты используешь навыки, чтобы подготовить бенчмарк качества модели и обеспечить наиболее высокий результат при выполнении конкретных задач.
В работе промпт-инженера много рутины, которая состоит в основном из задач на тестирование моделей, сбор датасетов, подготовку бенчмарков. Например, для бизнес-заказчиков под их уникальные кейсы создаются отдельные watermark-модели, и промпт-инженеру необходимо проверить, что такая модель перформит не хуже оригинала.
Но кроме того есть и множество разнообразных задач, в которых приходится выкручиваться и придумывать новые подходы для решения проблемы. То есть иногда тебе необходимо немного закопаться в новой области знаний, чтобы написать хороший промпт. К примеру, однажды я искал в интернете конкретные адреса, чтобы использовать их в работе с нейросетью.
Мне больше всего нравилось писать промпты для задач, в которых необходимо получить конкретный ответ: та же бинарная классификация. В этих кейсах видишь, что LLM-ки действительно эффективны. Это не просто какие-то творческие задачи вроде «суммаризируй» или «что-то напиши» — от этого видишь реальную пользу для человека.
Среди самых сложных на старте моей работы был кейс для службы поддержки МТС. Чтобы получить данные на внутреннем портале, ранее им было нужно заполнить множество полей — фильтры, категории и так далее. Вместо этого они могли бы просто написать по-человечески свой вопрос — например, мне нужна информация о таких-то клиентах за последние два дня.
Нам нужно было написать промпт, который мог бы преобразовать это сообщение в JavaScript-like запрос и распарсить его по внутренней системе. Мы смогли реализовать это на нашей самой маленькой модели Cotype, но тюнить ее пришлось несколько дней.
При этом у промпт-инженера зачастую сильно замыливается взгляд. Иногда приходят заказчики с задачей, о которой думаешь — вы могли бы и сами такой промпт написать. Но на самом деле это специалисту кажется очень простым делом, но всем остальным, кто не использует LLM каждый день, это не кажется такой банальной задачей.
Как стать промпт-инженером?
Сейчас промпт-инжинирингом отчасти считается легким входом в ML. В большинстве случаев это правда, потому что требования там в среднем ниже, чем к другим ML-специалистам. Для промпт-инжиниринга необходимо знание компьютерной лингвистики, а также базовые навыки английского и питона. Поэтому в этой сфере работают люди с разным образованием — у кого-то оно ближе к филологии, у кого-то более техническое. Затем, когда у человека нарабатывается база работы с нейросетями, при желании можно перейти в более практические направления ML-разработки.
При этом отсутствие математики в промпт-инжиниринге не делает эту профессию белой вороной в ИТ-сфере. Это все еще компьютерно-лингвистическая область, которая многим нравится даже больше, чем разработка, потому что в целом она более творческая. И честно говоря, это очень хлебное место — поскольку ребята работают на острие новой технологии.
Почему же я ушел из промпт-инжиниринга? Возможно, у меня и есть талант писать промпты, но давалось мне это очень тяжело. При этом я по-прежнему решаю часть своих бытовых задач с помощью LLM, потому что, как уже говорил — иногда от этого видна реальная польза для человека.
Больше информации о работе промпт-инженера, а также в целом об ML-технологиях и самых актуальных разработках можно узнать в нашем подкасте «ИИнсайт».