Упражнение: prefill

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

Видео 4:57

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

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

Смотреть урок на Skilljar Structured data exercise · 4:57

Задача

Быстрое упражнение, чтобы окончательно разобраться со стоп-последовательностями и prefill. В ячейке ноутбука знакомый код, а промпт такой: «Generate three different sample AWS CLI commands».

messages = []

add_user_message(messages, "Generate three different sample AWS CLI commands")

text = chat(messages)

Если запустить его как есть, придёт примерно такой ответ: три разные команды, но вокруг много комментариев — заголовок и нумерация перед каждой командой.

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

Подсказка автора: prefill не ограничен символами вроде обратных кавычек — туда можно положить любой текст ответа.

Здесь в ролике предлагают поставить видео на паузу и попробовать самим.

Решение по шагам

1. Смотрим на исходный ответ

Сначала стоит посмотреть ответ без prefill и стоп-последовательностей. Каждая из трёх команд обёрнута в три обратные кавычки. Значит, хорошее начало — prefill из трёх обратных кавычек (сразу переходи к командам, без вступления) и стоп-последовательность из трёх кавычек.

add_user_message(messages, "Generate three different sample AWS CLI commands")
add_assistant_message(messages, "```")

text = chat(messages, stop_sequences=["```"])

Результат уже неплох, но не идеален: три команды есть, но в самом начале появилось слово bash.

2. Откуда взялось «bash»

Три обратные кавычки означают начало блока кода в markdown. После них можно указать идентификатор языка — тогда при отображении содержимое блока подсветится синтаксисом этого языка. Claude решил подставить bash, чтобы команды подсвечивались как bash. Нам это слово не нужно, поэтому дописываем bash в prefill сами — так Claude сразу ясно, что он уже внутри блока кода с командами bash.

add_assistant_message(messages, "```bash")

Стало лучше.

3. Направляем ответ фразой в prefill

Осталось две возможные проблемы:

Тут и пригождается подсказка: prefill может не только задавать символы разметки, но и сильно направлять ответ. Добавляем фразу «Here are all three commands in a single block without any comments», затем двоеточие и перевод строки — чтобы markdown начинался со следующей строки:

add_user_message(messages, "Generate three different sample AWS CLI commands")
add_assistant_message(
    messages,
    "Here are all three commands in a single block without any comments:\n```bash"
)

text = chat(messages, stop_sequences=["```"])

Теперь результат гораздо надёжнее: сколько ни запускай, почти всегда получается именно то, что нужно.

Дальше

Блок пройден. В оригинале после этого урока идут опрос удовлетворённости и официальный квиз Skilljar — Quiz on accessing Claude with the API (8 вопросов, проходится на Skilljar). Опрос здесь пропущен: в нём нет учебного материала. Проверить себя можно и нашим пробным экзаменом по этому блоку.

Оригинал урока: Structured data exercise.