Часть 2. Промпт-инжиниринг · Глава 4

Что такое промпт

Цели раздела

3 пункта

К концу раздела вы сможете:

  1. Изучить и научиться применять фундаментальную структуру эффективного запроса.
  2. Понимать каждый компонент метода RTCCO.
  3. Создавать предсказуемые и воспроизводимые промпты.

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

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

Аббревиатура RTCCO: Role → Task → Context → Constraints → Output

Компоненты RTCCO

Нажмите на компонент — увидите описание и шаблоны

R:Роль→T:Задача→C:Контекст→C:Ограничения→O:Формат вывода

Заполните блоки — итоговый промпт появится ниже. Черновик сохраняется автоматически.

Итоговый промпт

Заполните хотя бы один блок, чтобы увидеть итоговый промпт.

КомпонентОписаниеНазначениеПримеры для QA-задач
R (Role) — РольКто отвечаетПрофессия, уровень, специализация«Ты — Senior QA Engineer с 10-летним опытом в финтехе»
T (Task) — ЗадачаЧто делатьКонкретное действие, глагол в повелительном наклонении«Сгенерируй 8-12 тест-кейсов для валидации полей формы регистрации»
C (Context) — КонтекстНа основе чегоТребования, данные, предысторияТребования в тегах <requirements>, код в блоках, логи с метками
C (Constraints) — ОграниченияЧто запрещено/обязательноФормат, объём, запреты«Не генерируй тест-кейсы для функциональности, не описанной в требованиях»
O (Output) — Формат выводаКак оформить результатСтруктура, примеры, форматMarkdown-таблица с указанными столбцами, JSON с определённой схемой

R (Role) — Роль

Компонент Role задаёт профессиональную рамку, в которой модель должна функционировать. Указание роли активирует соответствующий «сегмент» обучающих данных модели.

Шаблоны Role:

Текст
Ты — Senior QA Engineer со специализацией в автоматизации на Python/Pytest
Ты — QA-аналитик в финтехе, эксперт по платёжным системам
Ты — специалист по исследовательскому тестированию с фокусом на usability
Ты — Staff QA Engineer с экспертизой в REST API тестировании

T (Task) — Задача

Компонент Task содержит чёткую, конкретную, разбитую на пункты инструкцию. Шаблоны Task (глаголы для чёткости):

  • ❌ «Посмотри...» → ✅ «Проанализируй и выяви...»
  • ❌ «Сделай тестирование...» → ✅ «Сгенерируй набор тест-кейсов, покрывающих...»
  • ❌ «Напиши отчёт...» → ✅ «Сформируй баг-репорт, включающий...»

C (Context) — Контекст

Компонент Context предоставляет структурированные входные данные. Критически важно визуально отделять контекст от инструкций. Шаблоны Context (разделители):

Текст
--- ТРЕБОВАНИЯ ---
[текст]

--- ИСТОРИЯ ИЗМЕНЕНИЙ ---
[текст]

--- ИЗВЕСТНЫЕ ОГРАНИЧЕНИЯ ---
[текст]

Или с XML-тегами:

XML
<requirements>
[текст требований]
</requirements>

<code>
[фрагмент кода]
</code>

C (Constraints) — Ограничения

Компонент Constraints устанавливает границы допустимого поведения модели.

Критические ограничения:

Текст
- НЕ выдумывай API-эндпоинты, которых нет в документации
- НЕ предполагай бизнес-логику, не описанную явно
- НЕ используй плейсхолдеры [ДАННЫЕ] — если данных нет, запроси
- Если информации недостаточно, укажи это явно
- Каждый кейс должен ссылаться на конкретное требование

O (Output) — Формат вывода

Компонент Output специфицирует желаемую структуру, формат и характеристики генерируемого ответа.

Шаблоны Output (форматы):

Текст
JSON с полями: id, title, preconditions, steps, expected_result, priority
CSV с заголовками: Test_ID, Description, Input_Data, Expected_Output
Markdown-таблица для Confluence/Notion
Gherkin-сценарии (Given/When/Then) для BDD

Пошаговое построение промпта "от нуля до результата"

Задача: тест-кейсы для «2FA через SMS» — нажмите шаг, чтобы развернуть промпт

🚀

Шаг 1 → Шаг 5 = на 80% конкретнее

Каждый добавленный компонент RTCCO делает ответ предсказуемее и ценнее

🧪 Пример для QA: Ниже — как из размытого запроса («напиши тест-кейсы для 2FA») шаг за шагом получается конкретный, воспроизводимый промпт.

Задача: Сгенерировать тест-кейсы для "двухфакторной аутентификации через SMS"

Шаг 1: Только роль (результат: слишком общий)

Текст
Ты — QA-инженер. Напиши тест-кейсы для 2FA.

Результат: Общие кейсы, не учитывающие специфику SMS

Шаг 2: Роль + Task

Текст
Ты — QA-инженер с опытом в security-тестировании.
Задача: Сгенерируй тест-кейсы для 2FA через SMS, включая:
- Позитивные сценарии (успешная верификация)
- Негативные (неверный код, истёкший код)
- Граничные значения (длина кода, формат)
- Отказоустойчивость (недоступность SMS-шлюза)

Результат: Лучше, но всё ещё без привязки к реализации

Шаг 3: + Context

Текст
[Предыдущий текст]

Контекст реализации:
- Код: 6 цифр, время жизни — 5 минут
- Максимум 3 попытки, затем блокировка на 30 минут
- SMS-шлюз: сторонний сервис, SLA 99.9%, таймаут 10 сек
- Регионы: РФ, Казахстан, Беларусь
- Резервный канал: голосовой звонок при недоставке за 60 сек

Результат: Специфичные кейсы, но непредсказуемый формат

Шаг 4: + Constraints

Текст
[Предыдущий текст]

Ограничения:
- Не выдумывай функциональность вне контекста
- Если информации недостаточно, укажи это явно
- Каждый кейс должен ссылаться на конкретное требование

Результат: Почти готово

Шаг 5: + Output (финальный промпт)

Текст
[Все предыдущие блоки]

Формат: Markdown-таблица с колонками:
| ID | Название | Предусловия | Шаги | Ожидаемый результат | Приоритет | Ссылка на требование |

Сравните: Шаг 1 → Шаг 5 = на 80% конкретнее!

  • ❌ Плохо: «Напиши тесты»
  • ✅ Хорошо: «Ты — QA. Задача: сгенерировать 5 тест-кейсов для поля «Email» формы регистрации. Контекст: поле обязательное, формат email. Ограничения: не придумывать другие поля. Формат: таблица с колонками ID, Шаги, Ожидаемый результат.»

Полный промпт по RTCCO

Текст
[R] Ты — Senior QA Engineer с опытом тестирования финансовых систем.

[T] Сгенерируй полный набор тест-кейсов для функции "Перевод средств 
    между счетами".

[C] Вот требования:
    - Пользователь может переводить средства между своими счетами
    - Минимальная сумма перевода: 100₽
    - Максимальная сумма перевода: 500 000₽
    - Комиссия: 0% для внутренних переводов, 1% для внешних
    - Перевод подтверждается SMS-кодом

    Технологии: Java Spring Boot, PostgreSQL, REST API

[C] Ограничения:
    - Не выдумывай эндпоинты API, не указанные в требованиях
    - Укажи [НЕДОСТАТОЧНО ДАННЫХ], если чего-то не хватает
    - Каждый тест-кейс должен иметь уникальный ID (TF-001, TF-002...)

[O] Выведи результат в виде Markdown-таблицы:
    | ID | Сценарий | Предусловия | Шаги | Ожидаемый результат | Приоритет |

Библиотека RTCCO-шаблонов

🔍
Анализ требованийАналитика
R
Role

Ты — QA-аналитик с опытом выявления неоднозначностей.

T
Task

Проанализируй требования и найди проблемы тестируемости.

C
Context

Требования: [вставить]

C
Constraints

Не предлагай решения, только идентифицируй проблемы.

O
Output

Таблица: Тип проблемы | Место | Описание | Вопрос к аналитику

Чек-лист качества промпта

Самопроверка перед отправкой

Отметьте пункты по мере проверки (0/6).

Материалы к главе