Промпт-инжиниринг
Материал из MachineLearning.
(Создание статьи о промпт-инжиниринге) |
(Исправлена таблица на вики-разметку wikitable) |
||
| (3 промежуточные версии не показаны) | |||
| Строка 1: | Строка 1: | ||
| - | {{well|Статья написана с использованием LLM '''Claude Sonnet 4''' и проверена участником [[Участник:Emil Petrov|Emil Petrov]] | + | {{well|Статья написана с использованием LLM '''Claude Sonnet 4''' и проверена участником [[Участник:Emil Petrov|Emil Petrov]] 20:15, 14 июля 2026 (MSD) |
Промпт приводится полностью в [[Обсуждение:Промпт-инжиниринг]] | Промпт приводится полностью в [[Обсуждение:Промпт-инжиниринг]] | ||
}} | }} | ||
{{TOCright}} | {{TOCright}} | ||
| - | '''Про́мпт-инжини́ринг''' (англ. prompt engineering) — дисциплина | + | |
| + | '''Про́мпт-инжини́ринг''' (англ. ''prompt engineering'') — дисциплина и практика составления текстовых инструкций ('''промптов'''), управляющих поведением [[Большая языковая модель|больших языковых моделей]] (LLM) и других генеративных систем искусственного интеллекта с целью получения точных, релевантных и полезных ответов<ref name="sahoo2024">{{статья |автор=Sahoo P., Singh A. K., Saha S., Jain V., Mondal S., Chadha A. |заглавие=A Systematic Survey of Prompt Engineering in Large Language Models: Techniques and Applications |издание=arXiv |год=2024 |volume=2402.07927 |ссылка=https://arxiv.org/abs/2402.07927}}</ref>. В отличие от классического программирования, где поведение задаётся кодом и обновлением параметров, промпт-инжиниринг действует на уровне ''входа'': формулировка запроса, примеры, роль и ограничения включаются в контекстное окно модели и меняют распределение генерируемых токенов без изменения весов. | ||
| + | |||
| + | Наглядно: LLM — это чрезвычайно начитанный, но «безвольный» собеседник. Промпт — не магическая заклинательная формула, а ''спецификация задачи'': что считать успехом, в каком формате отвечать, какие шаги допустимы и чего нельзя делать. Хороший промпт снижает неоднозначность; плохой — провоцирует галлюцинации, уход от темы или избыточную осторожность. | ||
== История == | == История == | ||
| - | Понятие «промпт» | + | Понятие «промпт» восходит к режиму дополнения текста (''text completion'') в ранних языковых моделях. Уже GPT-2 (2019) чувствительно реагировала на формулировку начала; GPT-3 (2020) сделала '''few-shot learning''' массовым явлением: несколько демонстраций в контексте резко улучшали качество без градиентного обновления<ref name="brown2020">{{статья |автор=Brown T. B. et al. |заглавие=Language Models are Few-Shot Learners |издание=Advances in Neural Information Processing Systems |год=2020 |том=33 |страницы=1877–1901 |ссылка=https://arxiv.org/abs/2005.14165}}</ref>. |
Ключевые вехи: | Ключевые вехи: | ||
| - | * 2020 — | + | * '''2020''' — few-shot / in-context learning в GPT-3: демонстрации в промпте задают формат и семантику задачи; |
| - | * 2022 — | + | * '''2022''' — ''chain-of-thought'' (CoT): явные промежуточные рассуждения улучшают решение арифметических и логических задач<ref name="wei2022">{{статья |автор=Wei J. et al. |заглавие=Chain-of-Thought Prompting Elicits Reasoning in Large Language Models |издание=Advances in Neural Information Processing Systems |год=2022 |том=35 |ссылка=https://arxiv.org/abs/2201.11903}}</ref>; |
| - | * 2023 — | + | * '''2022–2023''' — InstructGPT и ChatGPT: модели, выровненные через [[Обучение с подкреплением из обратной связи человека (RLHF)|RLHF]], стали ''следовать инструкциям'', из-за чего промпт-инжиниринг превратился из академического трюка в повседневную практику; |
| - | * | + | * '''2023''' — руководства DAIR.AI «Prompt Engineering Guide», распространение ReAct, Tree of Thoughts, RAG-пайплайнов; |
| + | * '''2024–2026''' — автоматическая оптимизация промптов (APE, DSPy), системные промпты корпоративных ассистентов, защита от prompt injection. | ||
| + | |||
| + | Исторически промпт-инжиниринг и дообучение (fine-tuning / RLHF) шли параллельно: первое дёшево и быстро, второе закрепляет поведение в весах. На практике их комбинируют. | ||
== Базовые техники == | == Базовые техники == | ||
| Строка 19: | Строка 25: | ||
=== Zero-shot prompting === | === Zero-shot prompting === | ||
| - | + | Задача формулируется '''без примеров'''. Модель опирается на знания предобучения и (если есть) выравнивание. Пример: «Переведи на французский: …». Zero-shot прост, но уязвим к неоднозначности формата и критериев качества. | |
| - | + | Аналогия: вы просите специалиста решить задачу, не показав ни одного образца отчёта — он может ответить верно по сути, но «не так, как принято у вас». | |
| - | + | === Few-shot prompting === | |
| - | + | В промпт включают <tex>k</tex> пар «вход → выход» (''shots''), задающих желаемый формат и стиль. Если <tex>x</tex> — целевой запрос, а <tex>(x_1,y_1),\ldots,(x_k,y_k)</tex> — демонстрации, промпт строится как конкатенация: | |
:<tex>P = x_1\,\|\,y_1\,\|\,\cdots\,\|\,x_k\,\|\,y_k\,\|\,x,</tex> | :<tex>P = x_1\,\|\,y_1\,\|\,\cdots\,\|\,x_k\,\|\,y_k\,\|\,x,</tex> | ||
| - | и модель максимизирует <tex>p(y\mid P)</tex>. | + | и модель максимизирует <tex>p(y\mid P)</tex>. Эмпирически важен не только ''что'' показано, но и порядок, разнообразие и близость примеров к запросу (retrieval of demonstrations). |
| + | |||
| + | Ловушка: плохо подобранные few-shot примеры могут ''ухудшить'' результат сильнее, чем zero-shot — модель копирует систематическую ошибку демонстраций. | ||
=== Chain-of-Thought (CoT) === | === Chain-of-Thought (CoT) === | ||
| - | + | CoT побуждает модель генерировать промежуточные шаги рассуждения перед финальным ответом. Классический триггер — фраза «Давай думать шаг за шагом» (''Let's think step by step'') в zero-shot CoT; в few-shot CoT демонстрации сами содержат цепочки рассуждений. | |
| + | |||
| + | Формально ответ можно мыслить как: | ||
| - | :<tex> | + | :<tex>y^* = \arg\max_y\, p(y \mid x,\, c),</tex> |
| - | где <tex>c</tex> — цепочка рассуждений ( | + | где <tex>c</tex> — цепочка рассуждений. CoT особенно полезен на задачах, требующих многошаговой декомпозиции (математика, логика, планирование), но увеличивает расход токенов и может «убедительно» обосновывать неверный итог. |
=== Self-consistency === | === Self-consistency === | ||
| - | + | Модель несколько раз генерирует цепочки рассуждений при температуре <tex>T>0</tex>; финальный ответ выбирается большинством голосов (''majority voting'') среди извлечённых ответов. Идея: разные траектории рассуждения сходятся к верному ответу чаще, чем к одному и тому же ошибочному. | |
| + | |||
| + | Цена — <tex>N</tex>-кратный инференс. Метод хорошо сочетается с CoT на закрытых задачах с однозначным ответом и хуже работает там, где «правильный» ответ субъективен. | ||
=== Tree of Thoughts (ToT) === | === Tree of Thoughts (ToT) === | ||
| - | Расширение CoT: вместо линейной цепочки | + | Расширение CoT: вместо одной линейной цепочки строится '''дерево''' кандидатных шагов. На каждом узле модель (или эвристика) оценивает перспективность ветки; далее применяют поиск (BFS/DFS, beam search)<ref name="yao2023tot">{{статья |автор=Yao S., Yu D., Zhao J., Shafran I., Griffiths T. L., Cao Y., Narasimhan K. |заглавие=Tree of Thoughts: Deliberate Problem Solving with Large Language Models |издание=Advances in Neural Information Processing Systems |год=2023 |том=36 |ссылка=https://arxiv.org/abs/2305.10601}}</ref>. ToT ближе к осознанному планированию, чем «однопроходное» мышление, но дорог по compute и требует аккуратной оценки узлов. |
=== ReAct === | === ReAct === | ||
| - | + | '''ReAct''' (Reasoning + Acting) чередует шаги «мысль → действие → наблюдение»<ref name="yao2023react">{{статья |автор=Yao S., Zhao J., Yu D., Du N., Shafran I., Narasimhan K., Cao Y. |заглавие=ReAct: Synergizing Reasoning and Acting in Language Models |издание=International Conference on Learning Representations |год=2023 |ссылка=https://arxiv.org/abs/2210.03629}}</ref>. Модель не только рассуждает, но и вызывает инструменты (поиск, калькулятор, API, код). Это основа многих агентных систем поверх [[Трансформер (модель)|трансформерных]] LLM. | |
| + | |||
| + | Связь с [[Механизм внимания|механизмом внимания]]: инструменты расширяют «контекст» фактами извне, а attention внутри модели распределяет вес между инструкцией, историей и результатами действий. | ||
== Системные промпты и роли == | == Системные промпты и роли == | ||
| - | + | Современные чат-модели обычно различают роли сообщений: | |
| - | * '''system''' — | + | * '''system''' — политика, роль, стиль, запреты, формат (часто скрыт от конечного пользователя); |
* '''user''' — запрос пользователя; | * '''user''' — запрос пользователя; | ||
| - | * '''assistant''' — ответ модели. | + | * '''assistant''' — ответ модели; |
| + | * иногда '''tool''' / '''function''' — результат вызова инструмента. | ||
| - | Системный промпт задаёт | + | Системный промпт задаёт «конституцию» сессии: кто модель, что она умеет, как обрабатывать неоднозначность, когда отказывать. На практике системный промпт — главный рычаг продуктовой безопасности и бренда ассистента, но он не абсолютен: возможны обходы (jailbreak) и конфликты с user-сообщением. |
| + | |||
| + | Хороший системный промпт конкретен (критерии, примеры допустимого/недопустимого), измерим (что считать успехом) и не перегружен противоречивыми правилами. Плохой — длинный список запретов без приоритетов, из-за чего модель либо игнорирует часть инструкций, либо впадает в over-refusal. | ||
== Продвинутые методы == | == Продвинутые методы == | ||
| Строка 64: | Строка 81: | ||
=== Prompt chaining === | === Prompt chaining === | ||
| - | + | Сложная задача разбивается на последовательность промптов: выход одного — вход следующего (извлечение сущностей → проверка → генерация ответа). Chaining упрощает отладку и снижает нагрузку на одно длинное рассуждение, но накапливает ошибки на стыках этапов. | |
=== Retrieval-Augmented Generation (RAG) === | === Retrieval-Augmented Generation (RAG) === | ||
| - | + | RAG динамически подмешивает в промпт фрагменты документов, найденные по запросу. Типичный пайплайн: запрос → [[Нейросетевое встраивание|эмбеддинг]] → поиск ближайших чанков → сборка контекста → генерация. RAG снижает галлюцинации по фактам из корпоративной базы и даёт актуальность без переобучения модели<ref name="lewis2020">{{статья |автор=Lewis P. et al. |заглавие=Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks |издание=Advances in Neural Information Processing Systems |год=2020 |том=33 |ссылка=https://arxiv.org/abs/2005.11401}}</ref>. | |
| - | + | Промпт-инжиниринг в RAG критичен на этапе ''сборки'': как маркировать источники, что делать при пустом retrieval, как запретить выдумывать факты вне контекста. Ошибка retrieval нельзя «заговорить» красивым промптом — нужна диагностика индекса и метрик retrieval/generation по отдельности. | |
| - | + | === Автоматический промпт-инжиниринг (APE) и DSPy === | |
| - | + | '''APE''' (Automatic Prompt Engineer) использует саму LLM для предложения и отбора кандидатных инструкций по метрике на валидации<ref name="zhou2023">{{статья |автор=Zhou Y. et al. |заглавие=Large Language Models Are Human-Level Prompt Engineers |издание=International Conference on Learning Representations |год=2023 |ссылка=https://arxiv.org/abs/2211.01910}}</ref>. Формально ищут | |
| - | где <tex>f_p</tex> — модель с промптом <tex>p</tex>. | + | :<tex>p^* = \arg\max_{p \in \mathcal{P}}\, \mathbb{E}_{(x,y)}\!\left[\mathrm{score}\big(y,\, f_p(x)\big)\right],</tex> |
| + | |||
| + | где <tex>f_p</tex> — модель с промптом <tex>p</tex>, <tex>\mathcal{P}</tex> — пространство кандидатов. | ||
| + | |||
| + | '''DSPy''' предлагает декларативный подход: программа описывает модули (retrieve, reason, answer), а оптимизатор подбирает промпты/демонстрации под метрику. Это сдвиг от «ручного искусства формулировок» к инженерии с тестами и регрессиями. | ||
| + | |||
| + | === Soft prompting и prefix-tuning === | ||
| + | |||
| + | Вместо дискретного текста оптимизируют непрерывные префиксы в пространстве [[Нейросетевое встраивание|встраиваний]] (prompt tuning / prefix-tuning). Это мост между промпт-инжинирингом и параметрической адаптацией: «промпт» становится обучаемым тензором. | ||
=== Prompt injection и защита === | === Prompt injection и защита === | ||
| - | + | '''Prompt injection''' — атака, при которой недоверенный ввод (письмо, веб-страница, документ в RAG) пытается переопределить системные инструкции («игнорируй предыдущие правила…»). Различают прямую инъекцию (в user-сообщении) и косвенную (в retrieved-контенте). | |
| + | |||
| + | Защиты: разделение доверенного/недоверенного контекста, явная разметка источников, фильтрация, отдельная политика для tool-calling, минимизация полномочий агента. Полной гарантии нет: это открытая область безопасности LLM. | ||
| + | |||
| + | == Режимы отказа и когда промпт бесполезен == | ||
| + | |||
| + | Промпт-инжиниринг '''не заменяет''' недостающие знания, инструменты и выравнивание. Типичные случаи, когда «лучший промпт» почти не помогает: | ||
| + | * факт отсутствует в параметрах и в retrieved-контексте — модель будет галлюцинировать или отказываться; | ||
| + | * нужна гарантированная структура/схема — надёжнее constrained decoding / JSON-schema / грамматика, а не «пожалуйста, верни JSON»; | ||
| + | * задача требует свежих данных или точных вычислений — нужны инструменты (ReAct), а не более витиеватая инструкция; | ||
| + | * конфликт целей (полезность vs безопасность) заложен в RLHF/политике — промпт лишь частично смягчает поведение; | ||
| + | * длинный шумный контекст: [[Механизм внимания|attention]] «размазывается», mid-context instructions теряются (''lost in the middle''). | ||
| + | |||
| + | Связь с alignment: промпт — ''поверхностное'' управление; [[Обучение с подкреплением из обратной связи человека (RLHF)|RLHF]] и конституциональные методы задают ''базовые'' предпочтения. Если политика модели противоречит запросу, борьба промптом — признак необходимости продуктового решения (инструменты, дообучение, явные отказы), а не бесконечной полировки формулировок. | ||
| + | |||
| + | Смежные генеративные парадигмы (например, [[Диффузионная модель|диффузионные]] модели изображений и текста) также управляются текстовыми условиями, но пространство «промпта» там иное: чаще речь о conditioning и guidance, чем о ролях system/user. | ||
== Метрики и оценка == | == Метрики и оценка == | ||
| - | + | Оценивают не «красоту промпта», а систему «промпт + модель + (опционально) retrieval/tools»: | |
| - | * | + | * '''точность / Exact Match / F1''' на закрытых бенчмарках (MMLU, GSM8K, HumanEval и доменные наборы); |
| - | * | + | * '''LLM-as-a-judge''' и человеческая оценка полезности/безопасности (с оговоркой о предвзятости судьи); |
| - | * | + | * '''консистентность''' (self-consistency rate, стабильность формата); |
| - | * | + | * '''стоимость''': число входных/выходных токенов, число вызовов при ToT/self-consistency; |
| + | * '''латентность''': TTFT (time to first token), end-to-end latency; | ||
| + | * для RAG — Recall@k / nDCG retrieval и groundedness генерации. | ||
| + | |||
| + | Практическое правило: фиксируйте eval-набор ''до'' творческой правки промпта, иначе легко подогнать формулировку под любимые примеры (prompt overfitting). | ||
| + | |||
| + | == Связь с дообучением и выравниванием == | ||
| - | = | + | {| class="wikitable" |
| + | |- | ||
| + | ! Подход !! Что меняется !! Когда уместен | ||
| + | |- | ||
| + | | Промпт-инжиниринг || только вход || быстрые итерации, разные задачи на одной модели | ||
| + | |- | ||
| + | | Soft prompt / adapters (LoRA) || малая доля параметров || стабильный доменный стиль при ограниченном compute | ||
| + | |- | ||
| + | | SFT / [[Обучение с подкреплением из обратной связи человека (RLHF)|RLHF]] / DPO || веса политики || устойчивое следование инструкциям, безопасность, тон бренда | ||
| + | |} | ||
| - | Промпт | + | Промпт и RLHF дополняют друг друга: RLHF учит модель ''хотеть'' быть полезной и безопасной; промпт уточняет ''конкретную'' задачу сессии. Векторные представления промптов и документов связывают дисциплину с [[Нейросетевое встраивание|нейросетевым встраиванием]] в RAG и soft prompting. |
== Инструменты и фреймворки == | == Инструменты и фреймворки == | ||
| - | * '''LangChain''' | + | * '''LangChain''' / '''LlamaIndex''' — цепочки промптов, агенты, RAG; |
| - | + | * '''DSPy''' — оптимизация программ и промптов под метрики; | |
| - | * '''DSPy''' — | + | * '''PromptFlow''' (Azure), OpenAI Evals, самописные eval-харнессы; |
| - | * '''PromptFlow''' | + | * шаблонизаторы промптов (Jinja и аналоги) для версионирования и A/B-тестов. |
== Применения == | == Применения == | ||
| - | + | * [[Обработка естественного языка|обработка естественного языка]]: суммаризация, перевод, классификация, извлечение информации; | |
| - | * [[Обработка естественного языка|обработка | + | * генерация и объяснение кода; |
| - | * генерация | + | * корпоративные ассистенты на RAG; |
| - | * | + | * агенты с инструментами (ReAct); |
| - | * | + | * творческая генерация и редактура при жёстких бренд-гайдлайнах в system prompt; |
| - | * | + | * управление мультимодальными и генеративными пайплайнами, включая текстовые условия для [[Диффузионная модель|диффузионных моделей]]. |
== См. также == | == См. также == | ||
| - | |||
* [[Большая языковая модель]] | * [[Большая языковая модель]] | ||
| + | * [[Трансформер (модель)]] | ||
* [[Механизм внимания]] | * [[Механизм внимания]] | ||
* [[Нейросетевое встраивание]] | * [[Нейросетевое встраивание]] | ||
* [[Обучение с подкреплением из обратной связи человека (RLHF)]] | * [[Обучение с подкреплением из обратной связи человека (RLHF)]] | ||
| + | * [[Диффузионная модель]] | ||
== Примечания == | == Примечания == | ||
| Строка 124: | Строка 180: | ||
== Литература == | == Литература == | ||
| - | * {{статья|автор=Brown T. B. et al.|заглавие=Language Models are Few-Shot Learners|издание=Advances in Neural Information Processing Systems|год=2020|том=33|страницы=1877–1901}} | + | * {{статья |автор=Brown T. B. et al. |заглавие=Language Models are Few-Shot Learners |издание=Advances in Neural Information Processing Systems |год=2020 |том=33 |страницы=1877–1901 |ссылка=https://arxiv.org/abs/2005.14165}} |
| - | * {{статья|автор=Wei J. et al.|заглавие=Chain-of-Thought Prompting Elicits Reasoning in Large Language Models|издание= | + | * {{статья |автор=Wei J. et al. |заглавие=Chain-of-Thought Prompting Elicits Reasoning in Large Language Models |издание=Advances in Neural Information Processing Systems |год=2022 |том=35 |ссылка=https://arxiv.org/abs/2201.11903}} |
| - | * {{статья|автор=Yao S. et al.|заглавие=ReAct: Synergizing Reasoning and Acting in Language Models|издание= | + | * {{статья |автор=Yao S. et al. |заглавие=ReAct: Synergizing Reasoning and Acting in Language Models |издание=International Conference on Learning Representations |год=2023 |ссылка=https://arxiv.org/abs/2210.03629}} |
| - | * {{статья|автор=Zhou | + | * {{статья |автор=Yao S. et al. |заглавие=Tree of Thoughts: Deliberate Problem Solving with Large Language Models |издание=Advances in Neural Information Processing Systems |год=2023 |том=36 |ссылка=https://arxiv.org/abs/2305.10601}} |
| - | * {{статья|автор=Sahoo P. et al.|заглавие=A Systematic Survey of Prompt Engineering in Large Language Models|издание=arXiv|год=2024|volume=2402.07927}} | + | * {{статья |автор=Zhou Y. et al. |заглавие=Large Language Models Are Human-Level Prompt Engineers |издание=International Conference on Learning Representations |год=2023 |ссылка=https://arxiv.org/abs/2211.01910}} |
| - | * {{книга|автор=Liu P. | + | * {{статья |автор=Lewis P. et al. |заглавие=Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks |издание=Advances in Neural Information Processing Systems |год=2020 |том=33 |ссылка=https://arxiv.org/abs/2005.11401}} |
| + | * {{статья |автор=Sahoo P. et al. |заглавие=A Systematic Survey of Prompt Engineering in Large Language Models: Techniques and Applications |издание=arXiv |год=2024 |volume=2402.07927 |ссылка=https://arxiv.org/abs/2402.07927}} | ||
| + | * {{книга |автор=Liu P., Yuan W., Fu J., Jiang Z., Hayashi H., Neubig G. |заглавие=Pre-train, Prompt, and Predict: A Systematic Survey of Prompting Methods in NLP |издание=ACM Computing Surveys |год=2023 |том=55 |номер=9 |страницы=1–35}} | ||
[[Категория:Машинное обучение]] | [[Категория:Машинное обучение]] | ||
| - | [[Категория:Обработка | + | [[Категория:Обработка естественного языка]] |
[[Категория:Искусственный интеллект]] | [[Категория:Искусственный интеллект]] | ||
Текущая версия
| | Статья написана с использованием LLM Claude Sonnet 4 и проверена участником Emil Petrov 20:15, 14 июля 2026 (MSD)
Промпт приводится полностью в Обсуждение:Промпт-инжиниринг |
|
Про́мпт-инжини́ринг (англ. prompt engineering) — дисциплина и практика составления текстовых инструкций (промптов), управляющих поведением больших языковых моделей (LLM) и других генеративных систем искусственного интеллекта с целью получения точных, релевантных и полезных ответов[1]. В отличие от классического программирования, где поведение задаётся кодом и обновлением параметров, промпт-инжиниринг действует на уровне входа: формулировка запроса, примеры, роль и ограничения включаются в контекстное окно модели и меняют распределение генерируемых токенов без изменения весов.
Наглядно: LLM — это чрезвычайно начитанный, но «безвольный» собеседник. Промпт — не магическая заклинательная формула, а спецификация задачи: что считать успехом, в каком формате отвечать, какие шаги допустимы и чего нельзя делать. Хороший промпт снижает неоднозначность; плохой — провоцирует галлюцинации, уход от темы или избыточную осторожность.
История
Понятие «промпт» восходит к режиму дополнения текста (text completion) в ранних языковых моделях. Уже GPT-2 (2019) чувствительно реагировала на формулировку начала; GPT-3 (2020) сделала few-shot learning массовым явлением: несколько демонстраций в контексте резко улучшали качество без градиентного обновления[1].
Ключевые вехи:
- 2020 — few-shot / in-context learning в GPT-3: демонстрации в промпте задают формат и семантику задачи;
- 2022 — chain-of-thought (CoT): явные промежуточные рассуждения улучшают решение арифметических и логических задач[1];
- 2022–2023 — InstructGPT и ChatGPT: модели, выровненные через RLHF, стали следовать инструкциям, из-за чего промпт-инжиниринг превратился из академического трюка в повседневную практику;
- 2023 — руководства DAIR.AI «Prompt Engineering Guide», распространение ReAct, Tree of Thoughts, RAG-пайплайнов;
- 2024–2026 — автоматическая оптимизация промптов (APE, DSPy), системные промпты корпоративных ассистентов, защита от prompt injection.
Исторически промпт-инжиниринг и дообучение (fine-tuning / RLHF) шли параллельно: первое дёшево и быстро, второе закрепляет поведение в весах. На практике их комбинируют.
Базовые техники
Zero-shot prompting
Задача формулируется без примеров. Модель опирается на знания предобучения и (если есть) выравнивание. Пример: «Переведи на французский: …». Zero-shot прост, но уязвим к неоднозначности формата и критериев качества.
Аналогия: вы просите специалиста решить задачу, не показав ни одного образца отчёта — он может ответить верно по сути, но «не так, как принято у вас».
Few-shot prompting
В промпт включают пар «вход → выход» (shots), задающих желаемый формат и стиль. Если
— целевой запрос, а
— демонстрации, промпт строится как конкатенация:
и модель максимизирует . Эмпирически важен не только что показано, но и порядок, разнообразие и близость примеров к запросу (retrieval of demonstrations).
Ловушка: плохо подобранные few-shot примеры могут ухудшить результат сильнее, чем zero-shot — модель копирует систематическую ошибку демонстраций.
Chain-of-Thought (CoT)
CoT побуждает модель генерировать промежуточные шаги рассуждения перед финальным ответом. Классический триггер — фраза «Давай думать шаг за шагом» (Let's think step by step) в zero-shot CoT; в few-shot CoT демонстрации сами содержат цепочки рассуждений.
Формально ответ можно мыслить как:
где — цепочка рассуждений. CoT особенно полезен на задачах, требующих многошаговой декомпозиции (математика, логика, планирование), но увеличивает расход токенов и может «убедительно» обосновывать неверный итог.
Self-consistency
Модель несколько раз генерирует цепочки рассуждений при температуре ; финальный ответ выбирается большинством голосов (majority voting) среди извлечённых ответов. Идея: разные траектории рассуждения сходятся к верному ответу чаще, чем к одному и тому же ошибочному.
Цена — -кратный инференс. Метод хорошо сочетается с CoT на закрытых задачах с однозначным ответом и хуже работает там, где «правильный» ответ субъективен.
Tree of Thoughts (ToT)
Расширение CoT: вместо одной линейной цепочки строится дерево кандидатных шагов. На каждом узле модель (или эвристика) оценивает перспективность ветки; далее применяют поиск (BFS/DFS, beam search)[1]. ToT ближе к осознанному планированию, чем «однопроходное» мышление, но дорог по compute и требует аккуратной оценки узлов.
ReAct
ReAct (Reasoning + Acting) чередует шаги «мысль → действие → наблюдение»[1]. Модель не только рассуждает, но и вызывает инструменты (поиск, калькулятор, API, код). Это основа многих агентных систем поверх трансформерных LLM.
Связь с механизмом внимания: инструменты расширяют «контекст» фактами извне, а attention внутри модели распределяет вес между инструкцией, историей и результатами действий.
Системные промпты и роли
Современные чат-модели обычно различают роли сообщений:
- system — политика, роль, стиль, запреты, формат (часто скрыт от конечного пользователя);
- user — запрос пользователя;
- assistant — ответ модели;
- иногда tool / function — результат вызова инструмента.
Системный промпт задаёт «конституцию» сессии: кто модель, что она умеет, как обрабатывать неоднозначность, когда отказывать. На практике системный промпт — главный рычаг продуктовой безопасности и бренда ассистента, но он не абсолютен: возможны обходы (jailbreak) и конфликты с user-сообщением.
Хороший системный промпт конкретен (критерии, примеры допустимого/недопустимого), измерим (что считать успехом) и не перегружен противоречивыми правилами. Плохой — длинный список запретов без приоритетов, из-за чего модель либо игнорирует часть инструкций, либо впадает в over-refusal.
Продвинутые методы
Prompt chaining
Сложная задача разбивается на последовательность промптов: выход одного — вход следующего (извлечение сущностей → проверка → генерация ответа). Chaining упрощает отладку и снижает нагрузку на одно длинное рассуждение, но накапливает ошибки на стыках этапов.
Retrieval-Augmented Generation (RAG)
RAG динамически подмешивает в промпт фрагменты документов, найденные по запросу. Типичный пайплайн: запрос → эмбеддинг → поиск ближайших чанков → сборка контекста → генерация. RAG снижает галлюцинации по фактам из корпоративной базы и даёт актуальность без переобучения модели[1].
Промпт-инжиниринг в RAG критичен на этапе сборки: как маркировать источники, что делать при пустом retrieval, как запретить выдумывать факты вне контекста. Ошибка retrieval нельзя «заговорить» красивым промптом — нужна диагностика индекса и метрик retrieval/generation по отдельности.
Автоматический промпт-инжиниринг (APE) и DSPy
APE (Automatic Prompt Engineer) использует саму LLM для предложения и отбора кандидатных инструкций по метрике на валидации[1]. Формально ищут
где — модель с промптом
,
— пространство кандидатов.
DSPy предлагает декларативный подход: программа описывает модули (retrieve, reason, answer), а оптимизатор подбирает промпты/демонстрации под метрику. Это сдвиг от «ручного искусства формулировок» к инженерии с тестами и регрессиями.
Soft prompting и prefix-tuning
Вместо дискретного текста оптимизируют непрерывные префиксы в пространстве встраиваний (prompt tuning / prefix-tuning). Это мост между промпт-инжинирингом и параметрической адаптацией: «промпт» становится обучаемым тензором.
Prompt injection и защита
Prompt injection — атака, при которой недоверенный ввод (письмо, веб-страница, документ в RAG) пытается переопределить системные инструкции («игнорируй предыдущие правила…»). Различают прямую инъекцию (в user-сообщении) и косвенную (в retrieved-контенте).
Защиты: разделение доверенного/недоверенного контекста, явная разметка источников, фильтрация, отдельная политика для tool-calling, минимизация полномочий агента. Полной гарантии нет: это открытая область безопасности LLM.
Режимы отказа и когда промпт бесполезен
Промпт-инжиниринг не заменяет недостающие знания, инструменты и выравнивание. Типичные случаи, когда «лучший промпт» почти не помогает:
- факт отсутствует в параметрах и в retrieved-контексте — модель будет галлюцинировать или отказываться;
- нужна гарантированная структура/схема — надёжнее constrained decoding / JSON-schema / грамматика, а не «пожалуйста, верни JSON»;
- задача требует свежих данных или точных вычислений — нужны инструменты (ReAct), а не более витиеватая инструкция;
- конфликт целей (полезность vs безопасность) заложен в RLHF/политике — промпт лишь частично смягчает поведение;
- длинный шумный контекст: attention «размазывается», mid-context instructions теряются (lost in the middle).
Связь с alignment: промпт — поверхностное управление; RLHF и конституциональные методы задают базовые предпочтения. Если политика модели противоречит запросу, борьба промптом — признак необходимости продуктового решения (инструменты, дообучение, явные отказы), а не бесконечной полировки формулировок.
Смежные генеративные парадигмы (например, диффузионные модели изображений и текста) также управляются текстовыми условиями, но пространство «промпта» там иное: чаще речь о conditioning и guidance, чем о ролях system/user.
Метрики и оценка
Оценивают не «красоту промпта», а систему «промпт + модель + (опционально) retrieval/tools»:
- точность / Exact Match / F1 на закрытых бенчмарках (MMLU, GSM8K, HumanEval и доменные наборы);
- LLM-as-a-judge и человеческая оценка полезности/безопасности (с оговоркой о предвзятости судьи);
- консистентность (self-consistency rate, стабильность формата);
- стоимость: число входных/выходных токенов, число вызовов при ToT/self-consistency;
- латентность: TTFT (time to first token), end-to-end latency;
- для RAG — Recall@k / nDCG retrieval и groundedness генерации.
Практическое правило: фиксируйте eval-набор до творческой правки промпта, иначе легко подогнать формулировку под любимые примеры (prompt overfitting).
Связь с дообучением и выравниванием
| Подход | Что меняется | Когда уместен |
|---|---|---|
| Промпт-инжиниринг | только вход | быстрые итерации, разные задачи на одной модели |
| Soft prompt / adapters (LoRA) | малая доля параметров | стабильный доменный стиль при ограниченном compute |
| SFT / RLHF / DPO | веса политики | устойчивое следование инструкциям, безопасность, тон бренда |
Промпт и RLHF дополняют друг друга: RLHF учит модель хотеть быть полезной и безопасной; промпт уточняет конкретную задачу сессии. Векторные представления промптов и документов связывают дисциплину с нейросетевым встраиванием в RAG и soft prompting.
Инструменты и фреймворки
- LangChain / LlamaIndex — цепочки промптов, агенты, RAG;
- DSPy — оптимизация программ и промптов под метрики;
- PromptFlow (Azure), OpenAI Evals, самописные eval-харнессы;
- шаблонизаторы промптов (Jinja и аналоги) для версионирования и A/B-тестов.
Применения
- обработка естественного языка: суммаризация, перевод, классификация, извлечение информации;
- генерация и объяснение кода;
- корпоративные ассистенты на RAG;
- агенты с инструментами (ReAct);
- творческая генерация и редактура при жёстких бренд-гайдлайнах в system prompt;
- управление мультимодальными и генеративными пайплайнами, включая текстовые условия для диффузионных моделей.
См. также
- Большая языковая модель
- Трансформер (модель)
- Механизм внимания
- Нейросетевое встраивание
- Обучение с подкреплением из обратной связи человека (RLHF)
- Диффузионная модель
Примечания
Литература
- Brown T. B. et al. Language Models are Few-Shot Learners // Advances in Neural Information Processing Systems. — 2020. — Т. 33. — С. 1877–1901.
- Wei J. et al. Chain-of-Thought Prompting Elicits Reasoning in Large Language Models // Advances in Neural Information Processing Systems. — 2022. — Т. 35.
- Yao S. et al. ReAct: Synergizing Reasoning and Acting in Language Models // International Conference on Learning Representations. — 2023.
- Yao S. et al. Tree of Thoughts: Deliberate Problem Solving with Large Language Models // Advances in Neural Information Processing Systems. — 2023. — Т. 36.
- Zhou Y. et al. Large Language Models Are Human-Level Prompt Engineers // International Conference on Learning Representations. — 2023.
- Lewis P. et al. Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks // Advances in Neural Information Processing Systems. — 2020. — Т. 33.
- Sahoo P. et al. A Systematic Survey of Prompt Engineering in Large Language Models: Techniques and Applications // arXiv. — 2024.
- Liu P., Yuan W., Fu J., Jiang Z., Hayashi H., Neubig G. Pre-train, Prompt, and Predict: A Systematic Survey of Prompting Methods in NLP. — ACM Computing Surveys. — 2023 T. 55. — С. 1–35.

