Упражнение: улучшаем промпт

Чему научитесь

Видео 5:22

К концу упражнения вы сможете:

На странице урока только видео. Ниже — его содержание по субтитрам.

Смотреть урок на Skilljar Exercise on prompting · 5:22

Задача

Короткое упражнение на проверку знаний prompt engineering. Для него автор сделал новый ноутбук 003_exercise. Скачивать его не обязательно: в нём заменены только описание задачи (task_description), спецификация входов (prompt_inputs_spec) и дополнительные критерии. Можно поменять это вручную в своём ноутбуке или скачать 003_exercise и продолжить с того же места, что и автор.

Цель — улучшить существующий промпт всеми приёмами prompt engineering из этого блока.

Датасет уже сгенерирован, стартовый промпт написан — и он очень слабый. Чтобы оценить прогресс, запускайте ячейку оценки: в неё уже добавлены пара дополнительных критериев. После каждого прогона можно открыть 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.