Logo
Overview

Продвинутый промпт-инжиниринг: chain-of-thought, few-shot, паттерны для аналитика

August 22, 2026
10 min read

Вы написали промпт. LLM выдала ерунду. Вы дописали «пожалуйста, будь точнее». Стало чуть лучше. Потом вы потратили полчаса на перебор формулировок и получили сносный результат. Знакомо?

Базовый промпт-инжиниринг — это умение спросить так, чтобы тебя поняли. Об этом мы уже говорили подробно. А продвинутый — это когда вы не спрашиваете, а управляете когнитивным процессом модели. Вы говорите ей не «что сделать», а «как думать над ответом». Разница примерно как между «нарисуй кота» и «нарисуй кота: начни с контура головы, потом уши, потом глаза с учётом перспективы — и объясняй каждый шаг». Результат во втором случае будет на порядок точнее.

В этой статье разберём три техники, которые превращают LLM из гадалки в надёжный инструмент аналитика: chain-of-thought, few-shot prompting и структурные паттерны промптов. Всё с примерами под наши задачи, без абстрактных «напиши стихотворение».

Анатомия продвинутого промпта

Продвинутый промпт — не просто инструкция. Это многослойная конструкция, каждый слой которой управляет определённым аспектом поведения модели. Давайте посмотрим на неё целиком, а потом разберём каждый компонент.

100%
graph TD
  A["Системный промпт
(роль + контекст)"] --> B["Основной запрос
(задача аналитика)"]
  B --> C["Few-shot примеры
(2-3 образца)"]
  C --> D["Chain-of-Thought
(пошаговое рассуждение)"]
  D --> E["Формат ответа
(JSON/таблица/текст)"]
  E --> F["Результат LLM
(структурированный ответ)"]
  A --> G["Ограничения
(что НЕ делать)"]
  G --> F
  B --> H["Входные данные
(контекст задачи)"]
  H --> F

  style A fill:#4a90d9,stroke:#2c5f8a,color:#fff
  style B fill:#4a90d9,stroke:#2c5f8a,color:#fff
  style C fill:#f0a500,stroke:#c88400,color:#fff
  style D fill:#f0a500,stroke:#c88400,color:#fff
  style E fill:#7b68ee,stroke:#5a4db2,color:#fff
  style F fill:#50c878,stroke:#3a9a5c,color:#fff
  style G fill:#e0e0e0,stroke:#999,color:#333
  style H fill:#e0e0e0,stroke:#999,color:#333

На диаграмме — полная структура промпта. Системный промпт задаёт роль и общий контекст, основной запрос формулирует задачу. Few-shot примеры демонстрируют ожидаемый результат на образцах, а chain-of-thought заставляет модель рассуждать по шагам. Ограничения отсекают нежелательное поведение. Входные данные — это контекст задачи. Всё вместе поступает в LLM и даёт структурированный ответ. Теперь — подробно по каждому слою.

Chain-of-Thought: заставляем модель рассуждать

Chain-of-Thought (CoT) — это техника, при которой вы просите модель показать ход рассуждений перед тем, как дать финальный ответ. Не «дай ответ», а «подумай вслух шаг за шагом, потом дай ответ».

Почему это работает? LLM — это не база данных, которая ищет ответ по индексу. Это генератор наиболее вероятного продолжения текста. Если вы просите ответ сразу — модель «стреляет» одним наиболее вероятным токеном. Если вы просите рассуждение — модель генерирует цепочку промежуточных выводов, и каждый следующий опирается на предыдущий. Финальный ответ получается более обоснованным просто потому, что модель «прошла» через логические шаги, а не прыгнула сразу к выводу.

Базовый CoT: «давай подумаем шаг за шагом»

Простейшая форма — добавить в промпт фразу Давай подумаем шаг за шагом (или Let's think step by step — на английских моделях работает стабильнее). Пример для задачи аналитика:

Задача: определить, какие REST-эндпоинты нужны для функции «корзина покупок» в интернет-магазине.

Промпт без CoT: «Перечисли REST-эндпоинты для корзины покупок интернет-магазина»

Промпт с CoT: «Мне нужно спроектировать REST API для корзины покупок интернет-магазина. Давай подумаем шаг за шагом: какие операции пользователь может совершать с корзиной? Для каждой операции определи HTTP-метод, URL и пример тела запроса/ответа. Сначала перечисли все операции, потом для каждой дай спецификацию».

Разница в качестве ответа колоссальная. Без CoT модель может выдать 3 эндпоинта. С CoT — 5–7, с обоснованием каждого и учётом граничных случаев вроде «объединить корзины после логина».

Zero-shot CoT vs Manual CoT

Есть два подхода к CoT:

ПодходСутьКогда применять
Zero-shot CoTПросто добавляем «давай подумаем шаг за шагом» в промптПростые задачи, быстрый прототип
Manual CoTПишем пошаговую инструкцию рассуждения вручнуюСложные задачи, где важен контроль над логикой

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

Практический пример CoT для аналитики требований

Допустим, нужно выявить нефункциональные требования к платёжному шлюзу. Вот как может выглядеть Manual CoT-промпт:

Ты — системный аналитик. Проанализируй описание платёжного шлюза
и выяви нефункциональные требования.
Рассуждай по следующему плану:
1. Определи, с какими внешними системами взаимодействует шлюз
2. Для каждого взаимодействия определи требования к
производительности (таймауты, пропускная способность)
3. Выяви требования к безопасности для каждого канала связи
4. Определи требования к отказоустойчивости (что делать при
недоступности платёжного провайдера)
5. Сформулируй требования к аудиту и логированию
6. На основе шагов 1–5 составь итоговый список НФТ в
формате: ID | Категория | Требование | Критерий проверки
Описание платёжного шлюза:
[текст описания]

Обратите внимание: план рассуждения написан за модель. Вы не говорите «придумай, как анализировать» — вы даёте готовый мыслительный каркас, а модель наполняет его содержанием. Это и есть суть Manual CoT.

Few-shot prompting: показываем, а не объясняем

Few-shot prompting — это включение в промпт нескольких примеров того, какой результат вы ожидаете. Модель учится на лету: она видит паттерн в примерах и продолжает его для вашего нового входа.

Это не про «объясни на словах, что мне нужно» — это про «покажи 3 раза, что мне нужно, а теперь сделай так же для вот этого».

Сколько примеров нужно?

Для большинства аналитических задач достаточно 2–3 примеров. Один пример — это скорее подсказка, чем демонстрация паттерна. Пять и больше — риск перегрузить промпт и выйти за эффективную длину контекста (модель начинает «забывать» начало промпта). Оптимум — 2–3 качественных примера, покрывающих разные грани задачи.

Пример: форматирование пользовательских историй

Без few-shot:

«Напиши user story для функции восстановления пароля»

С few-shot:

Напиши user story для функции восстановления пароля по тому же шаблону,
что и примеры ниже.
Пример 1:
**Заголовок:** Просмотр баланса счёта
**Как:** клиент банка
**Я хочу:** видеть текущий баланс своего счёта в мобильном приложении
**Чтобы:** контролировать расходы без звонка в поддержку
**Критерии приёмки:**
- Баланс обновляется не позже чем через 5 секунд после входа
- Отображается валюта счёта
- При недоступности сервиса показывается последний известный баланс
с пометкой «данные могут быть неактуальны»
Пример 2:
**Заголовок:** Фильтр заказов по статусу
**Как:** менеджер интернет-магазина
**Я хочу:** фильтровать список заказов по статусу (новый/в обработке/отправлен)
**Чтобы:** быстро находить заказы, требующие внимания
**Критерии приёмки:**
- Фильтр поддерживает множественный выбор статусов
- Список обновляется без перезагрузки страницы
- Выбранные фильтры сохраняются в URL для возможности поделиться ссылкой

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

Few-shot + CoT: комбо

Самое мощное — это объединение обеих техник. Вы даёте примеры, в которых показан ход рассуждения, а потом просите модель повторить тот же мыслительный процесс для новой задачи:

Вот два примера анализа интеграционных точек между системами.
Обрати внимание на структуру рассуждения: сначала определяем
направление потока данных, потом протокол, потом требования
к надёжности.
Пример 1:
[полный пример с рассуждением и итоговой таблицей]
Пример 2:
[полный пример с рассуждением и итоговой таблицей]
Теперь проанализируй интеграцию между CRM и биллингом по той же схеме.

Это работает в разы лучше, чем любой из методов по отдельности. По моему опыту, комбинация CoT + 2–3 примера даёт стабильно высокое качество там, где одиночные техники мажут.

Паттерны промптов для типовых задач аналитика

Теперь соберём конкретные шаблоны под наши рабочие ситуации. Каждый паттерн — это готовая структура промпта, которую можно копировать и адаптировать.

Паттерн 1: «Декомпозиция требования»

Задача: разложить крупное функциональное требование на атомарные.

Структура промпта:

Роль: ты — системный аналитик, который специализируется на
декомпозиции функциональных требований.
Задача: разложи требование ниже на атомарные составляющие.
План рассуждения (CoT):
1. Выдели ключевые сущности, которые фигурируют в требовании
2. Определи действия пользователя для каждой сущности
3. Выяви предусловия и постусловия для каждого действия
4. Определи возможные состояния и переходы между ними
5. Сгруппируй атомарные требования по функциональным блокам
Формат ответа: для каждого атомарного требования укажи
- ID (ФТ-XX)
- Заголовок
- Действующее лицо
- Предусловие
- Основной поток
- Альтернативные потоки (если есть)
Требование для анализа:
[текст требования]

Паттерн 2: «Выявление противоречий»

Задача: найти логические нестыковки в спецификации.

Структура промпта:

Роль: ты — ревьюер требований с фокусом на выявление противоречий.
Задача: проанализируй спецификацию и найди противоречия.
План рассуждения (CoT):
1. Составь список всех утверждений из спецификации
2. Для каждой пары утверждений проверь, могут ли они быть
истинны одновременно
3. Проверь согласованность терминологии: используется ли
один и тот же термин в одном значении во всём документе
4. Проверь числовые значения: не противоречат ли они
друг другу (например, таймаут A < таймаут B, но A зависит от B)
5. Для каждого противоречия сформулируй вопрос к автору
Формат ответа: таблица
| # | Утверждение 1 | Утверждение 2 | Суть противоречия | Вопрос |
Ограничения:
- Не указывай стилистические замечания — только логические противоречия
- Если противоречий нет, так и напиши — не выдумывай
Спецификация:
[текст спецификации]

Паттерн 3: «API-контракт из сценария»

Задача: превратить текстовый сценарий использования в черновик OpenAPI-спецификации.

Эту задачу мы разбирали и в контексте проектирования REST API через LLM, но сейчас посмотрим на неё через призму продвинутого промптинга.

Структура промпта:

Роль: ты — системный аналитик, проектирующий REST API.
Задача: на основе пользовательского сценария составь спецификацию
эндпоинтов в формате OpenAPI-совместимой таблицы.
Пример (few-shot):
Сценарий: «Менеджер просматривает список заказов за период,
фильтрует по статусу и экспортирует в CSV»
Результат:
| Метод | URL | Описание | Параметры | Ответ 200 | Ошибки |
| GET | /orders | Список заказов | ?date_from, date_to, status | Order[] | 400, 401 |
| GET | /orders/export | Экспорт в CSV | ?date_from, date_to, status | file(CSV) | 400, 401 |
Теперь сделай то же самое для сценария ниже.
План рассуждения (CoT):
1. Выдели все действия пользователя из сценария
2. Для каждого действия определи HTTP-метод
3. Спроектируй URL согласно REST-принципам
4. Определи query-параметры для фильтрации
5. Определи коды ответов для успешного и ошибочных сценариев
Сценарий:
[текст сценария]

Паттерн 4: «Граничные случаи и негативные сценарии»

Задача: дополнить спецификацию граничными и негативными кейсами.

Роль: ты — системный аналитик, специализирующийся на тест-дизайне.
Задача: для каждого функционального требования ниже предложи
граничные случаи и негативные сценарии.
План рассуждения (CoT):
1. Для каждого входного параметра определи граничные значения
(пустое, нуль, максимальное, на единицу больше максимума)
2. Для каждого действия определи, что происходит при:
- Отсутствии обязательного поля
- Некорректном формате данных
- Истечении таймаута зависимого сервиса
- Повторном выполнении действия (идемпотентность)
3. Проверь состояния гонки: что будет при двух одновременных запросах
4. Для каждого сценария предложи ожидаемое поведение системы
Формат ответа: таблица
| ID ФТ | Тип сценария | Входные данные | Ожидаемое поведение |
Требования:
[текст требований]

Когда промпт-инжиниринг не спасает

Примечательно, что есть класс задач, где даже самый изощрённый промпт не поможет. Это не серебряная пуля, и вот когда честнее выбрать другой подход:

  • Задача требует точных вычислений. LLM не калькулятор. Если нужно посчитать налоги с точностью до копейки для 10 000 транзакций — используйте код, а не промпт.
  • Контекст превышает окно модели. Можно разбить на части и скормить через RAG, но если нужен целостный анализ 500-страничного документа — промпт-инжиниринг бессилен. Тут нужен контекст-инжиниринг и правильный чанкинг.
  • Задача требует гарантированной детерминированности. LLM вероятностна по природе. Один и тот же промпт может дать чуть разный результат. Для жёстко детерминированных операций используйте код.

Сравнение техник: шпаргалка

ТехникаЧто делаетКогда братьОграничение
Zero-shotПрямой запрос без примеров и инструкцийПростые вопросы, первый прототипНизкое качество на сложных задачах
Few-shot2–3 примера ожидаемого результатаКогда важны формат и стиль выводаПримеры должны быть релевантны домену
Chain-of-ThoughtПошаговая инструкция рассужденияСложный анализ, где важен ход мыслиТребует ручного проектирования плана
CoT + Few-shotПримеры с демонстрацией рассуждения + новый входСамый надёжный вариант для ответственных задачСамый затратный по токенам

Стоит отметить: выбор модели тоже влияет на эффективность техник. Подробно о разных моделях и о том, какую выбрать под задачу аналитика, я рассказывал в отдельной статье.

Заключение

Продвинутый промпт-инжиниринг — это не магия и не подбор «правильных слов». Это инженерия: вы проектируете мыслительный процесс модели и подкрепляете его примерами. Инвестиция в качественный промпт окупается: 15 минут на написание Manual CoT + 2–3 few-shot примера экономят час ручной доработки ответа.

Начните с малого. Возьмите одну повторяющуюся задачу — например, декомпозицию требований — и напишите под неё один CoT-промпт с парой примеров. Отладьте на 3–4 реальных кейсах. А когда увидите результат — масштабируйте на остальные рабочие сценарии.

P.S. Модели становятся умнее, но принцип «что посеешь в промпте, то и пожнёшь в ответе» пока никто не отменял.