← [Раздел](README.md) · [Главная](../README.md)

# Lab 01 — Структурированный промпт

## Цель

Создать **шаблон промпта** для багфикса, применить его в Agent и добиться воспроизводимого результата (тест + исправление) на учебном баге.

## Предварительно

- [03 — Промпты](../03-prompts/README.md)
- [templates-i-snippets.md](../09-templates-i-kontekst/templates-i-snippets.md)
- Репозиторий `ai-labs-demo` из [README практикума](README.md)

## Время

~60–90 минут.

---

## Шаг 1 — Внести учебный баг

Создайте `calc.py` (или `calc.go` / `calc.ts`):

```python
def divide(a, b):
  return a / b  # баг: нет проверки b == 0

def test_divide():
  assert divide(10, 2) == 5
  # тест на zero отсутствует намеренно
```

```bash
git add .
git commit -m "lab01: add calc with intentional bug"
```

---

## Шаг 2 — Шаблон промпта

Создайте `docs/prompts/bugfix-template.md`:

```markdown
# Багфикс (учебный)

## Роль
Инженер: сначала воспроизведение, потом фикс.

## Шаги
1. Найди функцию по симптому: {{СИМПТОМ}}
2. Напиши тест, который падает (RED)
3. Исправь код (GREEN)
4. Кратко объясни причину

## Ограничения
- Не коммить
- Не менять другие файлы
- Язык ответа: русский
```

Замените `{{СИМПТОМ}}` при использовании.

---

## Шаг 3 — Запуск в Agent

```text
Следуй @docs/prompts/bugfix-template.md
Симптом: divide(1, 0) вызывает исключение, нужна понятная ошибка ValueError
Файл: calc.py
```

**Ожидание:** новый тест + проверка `b == 0`.

---

## Шаг 4 — Сравнение с «плохим» промптом

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

```text
почини divide
```

Запишите в `LAB-JOURNAL.md` разницу в:

- наличии теста;
- объяснении;
- лишних правках.

---

## Шаг 5 — Итерация шаблона

Улучшите шаблон:

- добавьте секцию **«Формат ответа»**;
- добавьте **«Самопроверка агента»** (чеклист из 3 пунктов).

Прогоните снова на другом микро-баге (например, отрицательный корень).

---

## Шаг 6 — Commit шаблона

```bash
git add docs/prompts/bugfix-template.md
git commit -m "lab01: add bugfix prompt template"
```

---

## Критерии успеха

- [ ] Шаблон в Git, не только в Notepad
- [ ] Есть падающий тест до фикса (в истории сессии или в diff)
- [ ] Агент не трогал лишние файлы
- [ ] Журнал: сравнение структурированного и плоского промпта

---

## Самопроверка

1. Зачем секция «Ограничения» в шаблоне?
2. Почему новая сессия для сравнения промптов?
3. Что такое RED в шагах?
4. Где хранить шаблон — Notepad или `docs/prompts/`?

---

## Дальше

→ [Lab 02 — Rules](lab-02-rules.md)  
← [Практикум](README.md)
