Упражнение: улучшаем промпт
Чему научитесь
Видео 5:22
К концу упражнения вы сможете:
- читать отчёт оценки и находить общую причину низких баллов;
- последовательно применять приёмы блока и проверять эффект каждого.
На странице урока только видео. Ниже — его содержание по субтитрам.
Смотреть урок на Skilljar Exercise on prompting · 5:22Задача
Короткое упражнение на проверку знаний prompt engineering. Для него автор сделал новый ноутбук 003_exercise. Скачивать его не обязательно: в нём заменены только описание задачи (task_description), спецификация входов (prompt_inputs_spec) и дополнительные критерии. Можно поменять это вручную в своём ноутбуке или скачать 003_exercise и продолжить с того же места, что и автор.
Цель — улучшить существующий промпт всеми приёмами prompt engineering из этого блока.
- Датасет — набор отрывков текста из научных статей.
- Промпт должен взять отрывок и извлечь из него все темы в JSON-массив строк. «Тема» — о чём говорится в статье: если статья о солнечных панелях, в массиве должно быть «solar panels» и другие упомянутые темы.
- Единственный вход промпта — свойство
content: один абзац текста.
Датасет уже сгенерирован, стартовый промпт написан — и он очень слабый. Чтобы оценить прогресс, запускайте ячейку оценки: в неё уже добавлены пара дополнительных критериев. После каждого прогона можно открыть HTML-отчёт и разобраться, что происходит. Со стартовым промптом средний балл — 2.8; цель — поднять его хотя бы до 7.
Здесь в ролике предлагают поставить видео на паузу и попробовать самим.
Решение
1. Читаем отчёт
Вся работа — в переменной с промптом. Сначала запустите оценку хотя бы раз, чтобы появился HTML-отчёт, откройте его и посмотрите обоснования низких оценок. Общая причина видна сразу: грейдеру не нравится, что ответ — не JSON-массив строк.
2. Ясно и прямо
Раз нужен JSON-массив строк со всеми темами из текста, нужно просто и прямо сказать Claude, чего мы хотим. Первая строка промпта становится такой — максимально простой и прямой:
Extract key topics mentioned from a passage of text from a scholarly journal into a JSON array of strings.
Уже после этой правки оценка подскакивает до 9.5 — автор сам не ожидал такого. В отчёте теперь JSON со всеми упомянутыми темами, и грейдер очень доволен.
3. XML-теги
Останавливаться на этом не хочется — есть и другие приёмы. Следующий — структура: подставляемое содержимое оборачивается в теги. Автор называет их просто text, потому что в первой строке промпта говорится о «passage of text» — так появляется явная связь между упоминанием текста и самим текстом.
4. Конкретные шаги
Ещё одно улучшение — конкретно сказать, что делать, списком шагов:
Follow these steps: 1. Closely examine the provided text 2. Identify each topic mentioned 3. Add each topic to a JSON array 4. Respond with the JSON array. Do not provide any other text or commentary.
Можно добавить и пример (one-shot или multi-shot), но баллы уже высокие, так что автор на этом останавливается. После повторной оценки снова 9.5 — это сильный промпт, которому можно доверить извлечение списка тем из статьи.
Итоговый промпт целиком (собран по объяснению автора):
prompt = f"""
Extract key topics mentioned from a passage of text from a scholarly journal into a JSON array of strings.
<text>
{prompt_inputs["content"]}
</text>
Follow these steps:
1. Closely examine the provided text
2. Identify each topic mentioned
3. Add each topic to a JSON array
4. Respond with the JSON array. Do not provide any other text or commentary.
"""
Дальше
Блок пройден. В оригинале после этого урока идёт официальный квиз Skilljar — Quiz on prompt engineering techniques (5 вопросов, проходится на Skilljar). Проверить себя можно и нашим пробным экзаменом по приёмам промптинга.
Оригинал урока: Exercise on prompting.